Over the years I've taken, if I recall correctly, at least 5 attempts at writing MUD engines over the years: forking SMAUG, writing from scratch in C, writing from scratch in C++, and two PHP attempts. If you would've asked me even just 2 years ago if writing a MUD engine in Javascript was possible, let alone feasible I probably would've laughed. Not only was is feasible, I did it in a week and holy crap was it fun. It's the most fun I've had programming in a long time.
RanvierMUD, or just Ranvier for short, is a Javascript MUD engine written using nodejs. You can see the code and documentation (Yes, the documentation) here: http://ranviermud.com.
Node made this fun for two reasons. Firstly, sockets. Holy hell sockets. If I was writing this in C/C++ as I have before just the sockets would've taken me a week and it just works in nodejs. In thanks in no small part to Wez Furlong and his telnetjs project which I only had to add one small patch to. Secondly, it's new and shiny and I like new and shiny things. Javascript on the backend? Don't mind if I do.
A lot of things. It was my first Project Mustang project and I wanted to see just how much I could get done in a week to set the pace. I don't think I'd do a project as big as Ranvier every week otherwise I'd be permanently burnt-out and have to become a construction worker or something. I wanted to finish a MUD engine. As I mentioned I've taken numerous attempts at it over the years and I finally felt like now was when I had the excuse and the motivation to get it done. The major MUD codebases are also ancient: SMAUG is almost 20 years old and DikuMUD is old enough to drink, so I wanted a fresh go at it with modern design principles.
There's a tie. Firstly, skills and affects. They were the last part of the project but without a doubt the most elegant solution that I think I implemented in the whole codebase, they're just pretty to look at and fun to implement and experiment with. Secondly, documentation. From the first day I really wanted to make sure it was well documented, Herne's SMAUG Building Guide is undoubtedly a factor in what made SMAUG such a popular codebase to work with.
There were a couple real WTF moments about halfway through when I had a friend test it and he connected using MUSHclient and doing so crashed the server. That was not at all fun to debug. Thankfully there are good debugging tools built into both nodejs and MUSHclient.
Well unlike SMAUG or some of the other large codebases I want to keep it lean. I don't want RanvierMUD to be a "download this, you have a 30,000 room MUD to work with." I wanted it to be somewhere in between SocketMUD and SMAUG, that is, have well-defined examples of all the available functionality with pointers to the documentation saying: "Now go make this your own." With that said, I do have plans to run a fork of it side-by-side which will be the 30,000 room bloated Ron Popeil codebase.