Show HN: A MUD-server using lua coroutines

9 points by endgame ↗ HN
I recently finished a round of tweaks on my barebones mud-server and thought HN might be interested.

https://github.com/endgame/MudCore

It sits somewhere between socketmud and a full mud like tbamud in that it handles all the socket work and telnet negotiation, but it makes no assumptions about anything else. The other interesting thing is that it can talk to other services using ZeroMQ.

I'm interested in reactions, particularly in terms of coding style, documentation quality and so on. It's my main "presentation piece" so far, in that it's some of the first code I actually feel proud to have on the internet.

(Someone posted this 248 days ago, but it generated no discussion: http://news.ycombinator.com/item?id=2707979, I hope the repost is OK.)

3 comments

[ 3.3 ms ] story [ 16.5 ms ] thread
I love the concept; I used to play a lot of MUDs back in the day, and this brings back all kinds of awesome memories.

So... you're looking for reactions. That's my first one :). Now for the constructive ones.

The documentation may be fantastic, but it's relatively unapproachable for me; not because of the content, but because of the format. Before I download a project like this (that is likely to consume a bunch of my time), I want to flip through the API documentation and get a good feel for what I'm getting into. Github will automagically format Markdown documents; browsing through that is a lot simpler than trying to install texinfo on my Mac, especially if I'm not yet convinced that I want to sink time into your project.

As far as the code goes, this looks very similar to my own personal C style, which means I approve :). Not much to comment on here, it seems reasonably modular and straightforward to follow. I wouldn't call myself either a ZMQ or a Lua master (although I have dabbled in both), and I find this pretty easy to understand.

A final thought relates again to the "barrier to entry" I mentioned regarding the documentation. Looking at the source, it runs the source from boot.lua after starting up. This file, though, is completely empty. It might be worth it to spend a few hours making a few examples; this can significantly lower the amount of effort required to get started with the project.

While making it easier to get started with it, you get an additional benefit (and responsibility) from having example code; the style and the patterns you use in your example code will set the "standard" for code that others will write. I've had to explain this time and again to friends and co-workers: example code is documentation, and often it's the only documentation anyone will ever read.

Anyway, hope that's helpful :) This looks like a really neat project, and I wish I had time to actually noodle around with it more.

Your points about documentation are sound and something I haven't thought of before. I'll have to set up a post-commit hook or something to keep some generated documentation up to date.

Putting something useful into boot.lua and developing some examples are both very good ideas and a bit easier to set up. I'll have to do that.

Thanks for the detailed response.

No problem! It took me a long time to realize how important the examples are, both the positive side (that it makes it way easier for people to get rolling with a library) and the negative side (that your example code is probably going to end up being a template for 99% of your users).

Mostly, those realizations came from conversations with co-workers:

Me: "Why on earth did you write that code that way?" Coworker: "That's how the example showed..."