    Patches?!?

    For the impatient, you may skip down to the "Summary"
    section at the bottom of this post.

    The Disclaimer
    The first thing to understand is that I don't profit
    from DS, and I'm the only guy developing the core lib.
    I'm not saying this because I want sympathy. I'm
    saying it because this makes me have a very tight
    focus on what I can and can't do within the short
    time I've been granted here on Earth.

    My goal is to make Dead Souls the best, most kick-ass
    LPC lib ever. I interpret this to mean that when I
    see a flaw, or someone else points one out, I want
    it fixed. And, well, the fixing falls to me.

    The History
    Over the past year, what this has meant is that I
    fix a given version, and after a while of fixes
    accumulating, I declare it to be a new release and
    off it goes, into the world. At first this caused a
    lot of grumbling, because it meant people had to
    reinstall from scratch every time I made a release,
    and this was a bit much for many people.

    It occurred to me that I could compile a package that
    had only the files that changed between releases. I
    put this together, and people seemed to really like
    being able to upgrade from one release to another,
    without a full reinstall. Over time, this system
    has been tweaked and refined somewhat, but in the
    end, it's roughly the same type of thing it was back
    when I produced the first one: a bunch of files.

    The Mechanics
    The patching process is just as primitive as it
    sounds. You uncompress these files and copy them
    over your existing mud. Simple. Efficient.

    Player files, directories, and domains that are
    created by you are left untouched.

    For some people this system is problematic. Some folks
    are proficient at modifying lib code, and if they
    just overwrite their mud with the contents of a patch,
    they might find that their lib work has been clobbered. This
    would be bad. That is why my patch instructions
    strenuously remind people to back up the current mud
    before patching it.

    There is no practical solution for this problem that
    I can see. Because I am just one guy, and my goal
    is lib code, and not patch-process-design, I have
    decided to leave things as they are. In theory I could
    write code that would analyze and modify files as
    needed, rather than simply have the owner overwrite.
    However, this is a lot more complicated than it sounds
    to implement in LPC within the lib, and it is also
    non-trivial to implement this at the OS level, given
    that the process would have to work on multiple different
    platforms.

    It's my opinion that people sophisticated enough to
    need a more specialized patching system are
    sophisticated enough to work around my shortcomings
    in this area. Indeed, I've heard of folks who just
    download the complete new version, run diffs against the
    old one, and then pick and choose what to add.

    For now and the foreseeable future, upgrades are just
    a Big Dumb Ball of Files...with one exception.

    Each patch includes a file called /secure/daemon/update.c
    which carries out special functions that are not dealt
    with by just overwriting files. When you reboot the mud,
    update.c will do things like remove broken/dangerous files,
    rename files with incorrect names, and modify text in
    files (such as config.h) which should not be overwritten
    but need to be changed.

    The Philosophy and Controversy
    Believe it or not, I've had people become irrationally
    angry at how often I make releases. Not just "That darn
    Crat is driving me crazy", but actual, unhinged flaming
    well beyond any reasonable context.

    Don't believe me? Check it out for yourself:

    http://www.justrage.com/article.php?story=cratylus_dead_souls_mudlib

    It *is* true that I'm averaging a release every week
    or two. The person is correct in that there are a lot
    of bugs to fix, and that releases happen much, much
    more often than they do for other muds.

    I have no defense against this charge. All I can do
    is explain the reason for it, and hope it is justification
    enough.

    When someone tells me Dead Souls has a bug, I want to
    help them. I want to fix it. I feel responsible to the
    mud community to do what I can to fix whatever problems
    they've run into because they've adopted the lib I
    wanted them to. This is probably irrational on my part,
    and if I'm lucky, I'll stop feeling this way sometime
    soon. But until I do, I feel driven to be a responsive
    lib coder, and I fix stuff. And I release it.

    The question is, "If Dead Souls is so lame it needs
    constant patching, shouldn't you kill it?"

    The thing is, Dead Souls is the best LPmud lib out
    there that I know of, *right now*. If the standard is
    going to be perfection, then there's no lib out there
    that should be available. There's no LPC mudlib
    out there that you can download that is as featured,
    solid, widely adopted, and supported as Dead Souls. If
    the criteria for killing a lib is that it's not
    perfect, and if Dead Souls is among the libs to be killed,
    then just about everything needs a good flush.

    It should be noted that Dead Souls doesn't *need*
    constant patching. With the exception of security
    fixes, any patch, upgrade, or hotfix is entirely
    optional. You can stop patching and upgrading at
    any time, and strike out in your own direction with
    the lib. And as a matter of fact, I'd be tickled
    pink if you did. The sprouting of evolutionary branches
    off Dead Souls would delight me, because it would be
    good evidence that I have begun something that's
    going to continue beyond what I've done with my own
    little brain.

    Summary

    * Yes, I'm a bit defensive on this topic. To me, "there
    are too many updates" sounds a lot like "stop working on
    the lib", which (I think, understandably) makes me testy.

    * Dead Souls is fine just the way it is. If you don't
    want to update, don't. As it is, right now, it's better
    than any other LP lib I know of that you can download.

    * If you do update, make sure you back up your mud.

    * If you have ideas about how I can make the update
    process less painful, KEEP THEM TO YOURSELF. I am not in
    the business of patch/upgrade design, and, I'm sorry,
    but I am not going to spend more time on it. All I
    want to do is make DS the best ever.

    * If you want to design and write a less painful upgrade method
    that I can implement on DS, that's great. Let me know
    about it so that I can avoid doing anything that makes
    your work more difficult. Just don't expect me to work on
    it *with* you.

    I know this sounds a bit harsh...I hope you folks know
    me well enough that you'll forgive a bit of the rudeness.

    What it boils down to is a decision on where my time is
    spent, and I'm pretty much sticking to my original plan.

    For what it's worth, the vast majority of upgraders that
    follow the patch install instructions report nothing
    but a smooth process.

    Dead Souls Homepage