Log on:
Powered by Elgg

Raesanos :: Blog :: MUDs and OSS

January 14, 2008

http://feeds.feedburner.com/~r/mudreading/~3/216631336/muds-and-oss

Over the years I’ve written a lot of MUD related code. So far, all of it has been unreleased code used by one MUD for one purpose. As work for the engine of a MUD I work on has gone open source, I’ve been thinking about what other projects can be given back to the community.



MUD software being free to use is nothing new. One of the most well-known MUD engines, DikuMUD, is free software. Technically it is not Open Source Software (OSS) because it is not free to use for any purpose. DikuMUD cannot be used for commercial purposes. The definition of OSS is described here.



I haven’t heard much about MUD-related code other than engine code being shared, though. A SMAUG world editor for Windows by Nick Gammon has a true OSS license, and I’d like to see more tools like this one. This is the kind of thing can help established MUDs as well as new ones.



I have a tool that is analogous to Nick’s called RMBT. It is a web-based tool for world editing that can be configured to use different MUD engines that are backed by MySQL. This I think will be my first foray into the world of releasing MUD tools as OSS.



My first consideration has been licensing. I’m no lawyer, but I do know enough about OSS licensing that I thought it’d be an easy decision. I was wrong.



The first issue is this: Do I want my code to be copyleft ? Copyleft code means that modified versions must have the same license as the original. This makes sure that all changes to the code are given back to the community, even if they aren’t made by the original author.



It sounds like a good deal to me. But there is a problem with code that is used as part of a larger program. Specifically, I want to make sure people who make MUDs with RMBT don’t suddenly have to release their MUD’s code to the community due to my license.



At first, I considered the LGPL which doesn’t have the restriction that when its used as part of a larger program, the whole program must be released. This seemed fine at first. However, this does allow other people to interface directly with RMBT code rather than just using the same database, integrating more closely with RMBT and possibly using RMBT code for display logic in their game. This isn’t really in the spirit of what I intend.



Eventually the question came of if sharing a database (the only interaction between RMBT and the MUD it builds for) even counts for this restriction. I have seen no clear answer to this question, though my research so far suggests that no, it does not. Thus, a ubiquitous OSS license such as the GPL is probably appropriate.



The concern that I’m currently working on is creating a releasable version of the code. Right now RMBT has no “default” configuration, so I need to make one that doesn’t contain details on the schemata of the MUD that it is currently being used with. The license, once finalized, needs to be attached to each RMBT source file. Lastly, the whole code needs a once-over to remove esoteric comments and embarrassing mistakes.



Its been a learning experience, but I’m pretty close to releasing my first open-source MUD software. It’ll be really interesting to see if anything comes of it. There is a good chance that other people might want to use it if they hear about it. I have a feeling that hearing about people that find it helpful will make the whole thing worthwhile.

Posted by Raesanos


Comments

  1. From personal preference, I'd go with something like a BSD license. It's simple, to the point, and poses no restrictions on interfacing with other modules, or your database. It also has no issues with the no-profit clause in Diku based MUDs.

    Every time I've ever read through the GPL I've always found something that seems weasley. Which I suppose is why there's always so much argument over what you can and can't do with code licensed by it.

    SamsonSamson on Wednesday, 16 January 2008, 08:23 MST # |

You must be logged in to post a comment.