Tuesday, October 19, 2010

Mamnuts and PyTalker are dead, long live TZMud!

This is a cross-posting on my own blog, since PyTalker's website is down for a long time, and on Mamnuts' website.

If you don't know what a talker is, this is a blog post that you probably don't want to read. If you do, please check that link, which points to wikipedia. Once upon a time, there were plenty of talker codebases - which, like "web servers", were used to "serve" a talker (or a website, in the case of web servers). Most of the talker codebases are nowadays unmaintained, even if there are quite lots of talkers. But the bad part of that is that there's still interest - I find myself talking with new people several times a year regarding the fact that they're looking for a talker codebase. There are many problems associated with choosing a talker base nowadays: the biggest being that the only that was still maintained - until now - was Mamnuts. I say "maintained", but the only thing that I've been doing on it for the last couple of years is actually giving some support to its users, and I'm surely dissatisfied with its state. In particular, Mamnuts is insecure. PyTalker, which used to be my pet project of building a talker base from scratch is pretty much abandoned, and never really got into a state where I could happily recommend it as a viable alternative to Mamnuts. What about the unmaintained codebases? Well, don't get me even started with those: there's not a single one that isn't buggy, flawed and - the worst of all - insecure. Really: if you're looking at NUTS 3.3.3 or AmNUTS, even the CVS branch, don't. Sucks, heh? Well, not any more.

I had several choices, really. I could choose to undertake the huge task of fixing Mamnuts (actually throwing away most of the underlying NUTS-inherited code), but it was simply too much work. Or I could take PyTalker by the horns and just make its idea work - which had an estimated amount of man-hours quite inferior to the first option. But... what about maintaining and expanding it afterwords? One of the issues with PyTalker would be that, as soon as a working version was released, I would have to work on implementing each feature Mamnuts had, to be able to have a convincing argument against the usage of Mamnuts, leaving to the side the only unarguable preference: the common "but I prefer C to Python!" (and, really, there's lots of people saying that in the talkers world, imagine that!). I hoped to find a good team to do the job with me, but others would find even less time than me to dedicate to the job. It wouldn't work. Sigh. Well, I would have to do it by myself... with the use of nice Python frameworks. And, while looking at those and who contributed to what, I just saw that there was a third, quite more interesting option: get back to the origins - now without configurability limitations - and assume once and for all that a talker is a kind of MUD with certain particularities. And so, the best way to deal with my issue was, really, find out the best configurable, well-maintained, clean, active, secure, with a nice community MUD codebase, and try to just add the configurable options needed to turn a MUD codebase into a "MUD/Talker codebase", or, in fact, a MUD with a configuration option that would let you set it up to behave like your typical talker, with just something like
allow_utf8 = True
speechmode_default = True
talkmode = True
Now, guess what... that's exactly what you need to do to turn the MUD codebase "TZMud" into a talker. That's right: TZMud is a server to host a multi-user domain (MUD) in the tradition of LPMud, but implemented in the Python programming language, and, since it's 0.9 version, with a configurable option to turn it into a NUTS-like talker.

This is also, obviously, the time to say goodbye to PyTalker and Mamnuts. Don't be sad: you'll be probably able to find me lurking on the TZMud project. And, most importantly, if you're planning on running a talker (or running one already), switch to TZMud. It lacks lot's of features, that's for sure, but that is easily fixed: just open a ticket asking for what you're missing. Feel free to contribute with code, if you can, the project maintainers are quite open and happy to review/accept your code.

This is the last blog post on Mamnuts' website.

Labels: , , , ,