Got a License for That?
by Noah Gibbs
Certain commercial or private efforts (not unlike Skotos) have done their parts to leave excellent footnotes on the pages of MUD history. These groups and companies have, to be fair, left people with good memories of beautifully-run games. But the best efforts have been almost entirely closed-source. In the end, they've disappeared without a trace when they failed, or stopped advancing when their funding dried up, or otherwise languish in obscurity. Free MUDs, by contrast, just haven't advanced very fast. When opensource is making leaps and bounds in so many other areas, and when source has been available for so many MUD servers for so many years, why is free MUD development lagging?
MUDs are strange beasts. Parser technology that was standard in MUD2 and Zork still isn't common in most current common codebases. A few genuinely new MUD codebases appear on the scene, but they tend to gain acceptance slowly, if at all. The codebases that a new MUD administrator will hear about are old, even if there's still some small amount of new development. CircleMUD, Smaug, ROM, Lima, DiscWorld, TinyMUSH. These are not new, and they're pretty static. The occasional new feature wanders into some of them, but they don't change a lot, and they don't improve frequently. There are very popular codebases that have made no more than a bugfix in years. And it's not because they're already too perfect to improve.
MUDs had been on the internet for many years when the boom happened. Yet they're still not on 'internet time' the way that successful Linux projects are. A few, like CircleMUD, make reasonable use of the 'net. But among the others, few even keep an informative website. None are making significant overhauls of their codebases. None of the old standby codebases are adding large new features, not even to match each other.
In the LPMUD world, almost all the current features were available in TMI-2 in 1994. The design wasn't pretty, but it had features like good parsing and support for FTP, finger and HTTP. The LPMUD state of the art has barely advanced since then. That's ten years, well before the internet boom and the massive influx of new players and new programmers. That's a long time. CircleMUD has been slowly advancing in the same time, but overall it's inching forward, not growing by leaps and bounds. Smaug, ROM, the various MUSH and MOO codebases all have similar stories.
Lost in the Noise
One reason is that existing information is hard to find. I worked on a custom C/Perl server architecture for over a year before I found a codebase that already did what I wanted. I wound up throwing away a year of work when I switched to the new server. That's demoralizing, to say the least. MUD information is indexed poorly, and many projects don't maintain a web site with even a basic description of what they're doing. Finding information about MudOS on the MudOS site, or the PernMUSH code on any of the various PernMUSH sites, is surprisingly difficult.
Hey! You Can't Touch That!
Another reason is licensing. The Diku license is poorly understood and shoddily enforced. It has had several ugly scandals, most prominently the mess with Medivia's flagrant license violations. All the major Diku-derived codebases (Smaug, ROM, Merc, Circle) labor under the same conditions, with the same problems. The few opensource Diku-style MUDs, like ScryMUD, tend to be poorly documented with fewer features, and aren't advancing quickly. They're also not as popular as the codebases bearing the old Diku license, even among people starting new MUDs.
LPMUDs aren't much better. The original LPMUD license absolutely prevents making money off any MUD derived from the same codebase. It's not entirely clear what that disallows, and problems similar to Diku have arisen among LPMUDs as well. All the major LPMUDs labor under that license, or some variation on it -- Lima, CDLib, Amylaar, DiscWorld. DGD is slightly better, but a commercial license is prohibitively expensive for hobbyist MUDs, except potentially through Skotos. Shattered World, which is GPL'd, is the only exception I'm aware of among LP-style MUDs. Shattered might help things eventually, but currently it labors in obscurity.
MUD Licensing has had several ugly chapters, such as the vast number of MUDs breaking Diku license by not acknowledging the authors, and the smaller number selling in-game items or soliciting donations in flagrant violation of the Diku license. There is very little respect to be found for the work of codebase authors in the forums and mailing lists of MUD development web sites. There are only a scant handful of good MUD codebases under an OSI-approved opensource license. It's no wonder that codebases advance so slowly, or that principled and fiery young authors will usually start from nothing, hoping to build a better codebase.
Unfortunately, duplicating the functionality of an existing codebase is a huge task. Such authors usually fail. Since they never release their efforts, they leave the world no richer for their attempt. While most plan to release source 'when it's done', it never gets done and so they never release anything at all.
Why Not GNU to the Rescue?
Opensource MUDs don't accumulate features the way that other opensource projects tend to. The GNU General Public License (GPL) is hated by many because if you make a modified version of a GPL application, you have to give away the source. If you add a cool new feature, you have to let other people have the source to that feature, and you have to let them use it. That's also the GPL's strongest feature since it makes many people grit their teeth and give away the source. The features they just added are often pretty nice... And that makes using and modifying the application even more attractive. As a result, the body of GPL-licensed code gets constantly stronger as new people make contributions. That's the 'viral' feature of the GPL that Microsoft hates so much, and that Richard Stallman touts so highly. Well, it doesn't touch MUD servers -- and we can all watch the consequences of that. Even a GPL'd MUD server simply doesn't work that way. But why?
MUD servers, unfortunately, break the usefulness of the GPL on a technicality. You can simply run a MUD server at home and let other people connect to it. That means you're not giving away a binary of your MUD server. The GPL only requires you to give source to the same people you give a binary to. You never have to give away a binary, so you never give away source. The GPL's intended purpose is foiled. There is no existing license that does for MUD servers what the GPL does for applications. That grudging spread of features has never happened for MUD servers the way it has for GPL-licensed applications and libraries. And so GPL-licensed MUD servers like Shattered World and ScryMUD have languished.
Keep Your Chin Up
I could go on about what holds back free MUD development for another column, or another three. I could talk about the schisms between Diku and LPMUD developers, MUD or MUSH, simulation or gameplay. I could talk about the Balkanization of MUD development efforts, the lack of compatibility and the various other obstacles holding it back. I could probably talk for a full article about how much current MUD development is like old Unix development, the wildly unsuccessful kind that happened before Linux.
It can wait. You've probably heard enough about the obstacles for now. Let's talk about what you should do, what existing codebases are doing right, and what you should consider imitating. Let's talk about the obstacles that you can fix easily. Let's talk about the ones that don't require you to worry about developer holy wars, or whose codebase is better.
Those issues are out there. There's a lot that you can do to keep your own code good, and to reverse the bad trends just by ignoring them. But those are topics for another column. See you in two weeks, when I'll talk about labor-saving code, and why you might not need to write a novel's worth of text for your MUD!