One of the most valuable resources for folks learning an authoring system is source code for existing games, so they can see how others have solved problems similar to the ones they’ve faced. Publicly-available source is also nice to have for folks who appreciate a game and want to learn more about the nuts and bolts of implementation, and it also helps satisfy the archival impulse that animates many parts of our community.
There are a bunch of great examples of public IF source code out there – I’m most familiar with Inform 7, where Emily Short and others have put out the source for big games with really clever mechanics, and of course pretty much all Twine code is public by virtue of the format. Still, there are far more games without release source code than games with it, and for many of the smaller authoring systems, there may only be a handful of worked examples out there.
The main reason for this is not exactly a mystery, of course – it’s the reason I haven’t released the source for my two games: the average author looks at the elegantly-conceived, deeply-commented stuff that the leading authors have put out, then looks at the regurgitated pile of dog sick that constitutes their barely-working game, and wonders what possible value there could be in inflicting such horrors on an unsuspecting public.
That’s all quite understandable. And yet, isn’t there something to be learned from an averagely-implemented game, or even a poorly-implemented one, just as much as from a well-crafted one? Isn’t it possible that creating a positive norm of releasing one’s source, regardless of the shape it’s in, would be an overall benefit for the community? Might it be the case that the current aura of shame many of us feel could be lifted if we realized that we’re all the metaphorically-naked emperor?
@mathbrush has been making this case for a while, and he’s convinced me: we have nothing to lose but our chains – and our perhaps-delusional attachment to things like “coherent coding practices”, “minimally-adequate commenting”, and “implementation that isn’t just a rapidly-collapsing tower of one-off special cases piled atop each other.”
That’s why I’m proposing that April 1 be denominated Source Code Amnesty Day: a day when we can all show our dirty laundry to the world, confident that if we all do it at once no one person’s awful awful coding will come in for special attention or derision. Marking it to April Fool’s Day also hopefully indicates the degree of seriousness with which folks should take proceedings.
To this end, I’m going to be publishing the source of the final releases of my two games on IFDB this April 1st, allowing myself an hour or so apiece to add some comments highlighting some of the biggest howlers and missteps. I hope it will be instructive, or at least entertaining, and I hope, if any of the above resonates, some of y’all will join me. I’ll bump this post on April 1 once the source is live, and if others would like to also post your stuff, please piggyback on the thread – or just quietly update IFDB or upload to the IF Archive so as not to draw attention to yourself, that works too.
I hope to see you then, if only to distract from the atrocity that is the Eleusinian Miseries source code (Sting is only marginally better)!