

Show HN: A MUD-server using lua coroutines - endgame

I recently finished a round of tweaks on my barebones mud-server and thought HN might be interested.<p>https://github.com/endgame/MudCore<p>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.<p>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.<p>(Someone posted this 248 days ago, but it generated no discussion: http://news.ycombinator.com/item?id=2707979, I hope the repost is OK.)
======
tonyarkles
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.

~~~
endgame
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.

~~~
tonyarkles
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..."

