With great code comes great responsibility

I think I rarely discuss the more subjective/emotional aspects of working with the crazy folks at the Battle for Wesnoth Project, so this might be a good opportunity to do so given we are currently on the threshold of the first release in the new stable series, 1.10.

Since a while after joining the project, I’ve been wanting to make deeper changes to the add-ons server software (campaignd, by legacy). Some of those desired changes would benefit me directly as a user-made add-ons maintainer myself (previously Invasion from the Unknown, now After the Storm); other changes simply seem very convenient to have, such as some kind of authentication support and the ability to ban people without dirty system admin hacks.

Yesterday, I unveiled aspects of my not-so-modest proposal to replace campaignd with new code. You can find the pastebin link within my post to the developers mailing list.

Even though I have some of the basic ideas and I’m still collecting previous information (such as Mordante’s proposal), I am terribly hesitant to proceed with the larger project because it will take time and dedication I cannot really promise at this point. But why?

Part of my worries stem from previous experience working on one-man projects. After the Storm is no small example — started in 2008, finished in early 2012 after many long breaks, and still ongoing. I don’t consider myself to be the most adequate person to work on large tasks alone, because of motivational issues. If I feel no-one is really using or approving of my work, I’ll quickly feel frustrated and seek new projects with different goals to distract myself for any amount of time. (In AtS’ case, the most significant one was Frogatto’s level design, which is partly why I ended up trading helping with Frogatto for finishing AtS.)

campaignd (or its potential replacement, umcd) is a particularly dangerous target for me because of the inherently minuscule audience to which I’ll have to cater: the Wesnoth.org system administrators. But not only is this audience composed of approximately four people (including myself), but it’s also a very exigent one at that.

The client-side audience is larger, but just as exigent, if not even more. You can’t really just throw half-baked changes at them and call it a day—and that wouldn’t be polite, in either case—and since these things have to be done within the project’s development cycle to ensure excellent compatibility and proper migration paths, I don’t really have a choice of schedule — it simply has to be completely done before the next stable series if it is to be done at all.

It could be said it all boils down to a personal sense of competence. I’m pretty sure I’m not the most competent people for this task, but the people who are don’t have the time to do it either, so unless someone comes forward, we’ll be stuck with the same stagnating piece of old crap forever. That isn’t to say there haven’t been any candidates before — I have previously mentioned Ilor was working on an add-ons server replacement, but RL ultimately claimed its bill and the branch in SVN is currently abandoned.

Taking over this project would also get me stuck forever with it, unable to move on to more interesting things, especially if the worst case scenario presents itself before the end of the development cycle. I most certainly don’t want to be permanently required to answer every single question or implement every single approved idea for the server software. I’m pretty sure I can still be more useful doing UI usability assurance work or making more Wesnoth campaigns not-for-mainline. I know from other development areas that this “only competent authority” concept appears quite often, to the point of actually frustrating the targeted people.

For this reason, I really doubt I’ll actually undertake the server replacement, and just concentrate on the very specific points presented in my mailing list post. For better or for worse, people will have to bear with less significant changes until someone more capable and more willing appears.