Maintaining open source software can be quite a chore. The bigger something becomes, the greater the chances are that people find bugs in it and that those bugs interfere with their user experience. After a while, you end up with so much work to do – often for free – that you start to wonder if it was even worth embarking on that endeavour in the first place.
Now, what I am about to talk about is my own experience as an open source game developer. The magic of OSS manifests in wildly different ways depending on what the software’s purpose is, but I think some of these feelings are relatable for those who work on anything meant for use by a non-technical audience, such as desktop environment components and apps, image editors, media players, and so on.
So, let me tell you about immortality.
Humans, as we all know, tend to live around 70-90 years on average before naturally fading away. The flesh and bone suits we pilot are not exactly made to last, and break down sooner or later. No matter what your beliefs are, the absolute truth is that once you are dead, you are dead; nobody in this realm will ever be able to interact again with you in a direct and tangible fashion because your body has ceased to function. Your material form is gone. Lost forever.
But the thing is, humans came up with this wonderful invention called civilization. From civilization sprang methods to transmit all manners of knowledge across space and time. By encoding information about a single person into a longer-lasting form, be it oral tradition, written works, paintings, sculptures, photographs, and films, other people can continue to interact with a tangible piece of that individual’s existence in some way long after they are gone. New memories can be constructed without the original person’s direct participation.
By “written works”, I don’t mean just literature. You see, information takes on many aspects. For a while we were content with merely carving spoken words into hard surfaces to recount a story or build intricate allegories of the mysteries of nature; but now, we even use information to build machines to perform many tasks for us — and one of those tasks is to provide entertainment.
Yes, I’m obviously talking about video games. They constitute a particularly fascinating form of human communication because these days they often combine many different aspects into a single package:
- Construction of virtual entertainment machines through programming — a computer is being programmed to present the player with a small virtual realm that they can interact with and manipulate following a set of rules dictated by the source code.
- Reproduction of digitally-encoded music and sounds — rhythms and patterns that one or more people working on the game enjoyed at some point are played back to the player to enhance the experience.
- Visualisation of pictures — artworks guide players through the virtual experience.
- Re-enacting of a written story — if the game has some kind of narrative, the player is invited to perform actions following a pre-determined sequence, similar to an actor performing a theatrical script and immersing themselves into the fictional universe presented to them.
Of course, it all depends on the game genre, and I’m oversimplifying things a bit by omitting all the formal roles you would find in a professional game studio, but generally speaking these are the four main pillars of creation for a story-driven game. All these can be explicitly tailored for the purpose of provoking emotions from the players, but this is optional and often the emotions that result from the experience are simply a by-product of the circumstances of the player, such as having a good time with new friends, distracting themselves after a particularly bad breakup with a partner, or enjoying some time off work after a stressful crunch.
At its core, the world of Free and open source software is utilitarian — a large majority of people’s creations released under permissive or copyleft licenses were made to “scratch an itch”. Someone had a need/problem, and someone — maybe not the same person — set out to create a software solution to satisfy that need. And in many cases, the solution was created by one or more people in their spare time, without pay, and not under a business contract.
These days it’s easier to point out software that does not incorporate Free or open source components, honestly, because almost everything people use has a present or distant tie to a Free or open source software project:
- Google Chrome, Microsoft Edge, Apple Safari: the Chromium engine is based on Apple’s Safari browser engine called WebKit. In turn, WebKit incorporates large amounts of KHTML, the browser engine used by Konqueror, a web browser originally created for the KDE desktop environment, which is one of the two most popular desktop enviroments in the Linux ecosystem.
- Browsers and a lot of other software tend to incorporate libpng, an open source reference implementation of the PNG image format, which was in turn created by an ad hoc group who weren’t happy with GIF being covered by patents at the time.
- Lots of instant messaging services have a distant relation to Internet Relay Chat (IRC), created in the late 80s as a simple messaging protocol that could be used over wide-area networks, the reference implementation being Free software. The popular streaming platform Twitch even uses a custom IRC solution, probably because they realised early on packets full of JSON would cause too much congestion when dealing with as many as 200,000 viewers on a single channel. 😄
- macOS, iOS, iPadOS: Darwin and the XNU kernel are at the core of the Apple operating systems and they contain parts derived from FreeBSD, an important open-source Unix operating system.
- Android: Google’s mobile operating system kernel is a fork of Linux, an operating system kernel originally written by some Finnish CS student who wasn’t happy with the licensing model for an educational version of Unix called MINIX.
Community-driven development helps lift some weight off people’s shoulders. Should they be unable to complete a task for any reason ranging from lack of experience to physical inability (including death), someone else can pick up the slack. Or so the theory goes, anyway, because this doesn’t work in practice when your software is sufficiently obscure and/or complex — but I digress.
Open-source games like Wesnoth are special. Instead of the game being developed behind closed doors by a studio and having the source code released at a later time once the publisher is no longer interested in holding exclusive rights to its use and distribution, Wesnoth and other community-driven games came to be because someone wanted to scratch an itch and published a cool proof-of-concept on the Internet under a permissive or copyleft license, and other people saw potential in the idea and started contributing their own ideas in the form of code, art, and more.
In the year 2003, David White published Wesnoth 0.1, a completely different piece of work compared to the version 1.0 we ended up with, and especially the modern version 1.16, 19 years later. The itch he wanted to scratch originally? He wanted to make a turn-based strategy game with a decent artificial intelligence that only needed to follow a few very simple game rules. The rest is history.
Wesnoth is probably one of the open source games that has seen the largest number of developers come and go, including the founding lead himself, who has not been active in the community since around 2008 (Wesnoth 1.4). All these people invested their time and energy into this game for free, some out of passion, and others out of interest in building up their CVs. With the game being copyleft under version 2+ of the GNU General Public License, it could be both said that all the contributors own the game, and none do. Technically, everyone is free to take the code and start a new “Wesnoth” in the event of a disagreement with the direction taken by the core developers, but of course maintaining a game of this calibre is a monumental undertaking that nobody wants to do alone. Thus, the game is instead developed through consensus and a limited pseudo-democracy.
19 years is actually a lot of time for a game to be in active continuous development. Although the first complete version 1.0 was published in 2005, the game continues to receive major version updates periodically.
- 1.2 (2006)
Pixel art and engineering update, Under the Burning Suns storyline
- 1.4 (2008)
Terrain system overhaul; Son of the Black Eye, Northern Rebirth, Descent into Darkness, An Orcish Incursion storylines
- 1.6 (2009)
Character illustrations and dialog UI update, Legend of Wesmere storyline, single-player campaign balancing changes
- 1.8 (2010)
Pixel art and game lore update, music expansion, Lua scripting part 1, Delfador’s Memoirs storyline
- 1.10 (2012)
Planning Mode update, Lua scripting part 2, Dead Water storyline
- 1.12 (2014)
Add-on management and content creation quality-of-life changes, Lua scripting part 3, Khalifate (now Dunefolk) multiplayer faction addition
- 1.14 “New Horizons” (2018)
Steam Store debut, SDL 2 update, general UI update, Lua scripting part 4, Under the Burning Suns character designs and balancing overhaul, Secrets of the Ancients storyline added, Dunefolk faction overhaul part 1
- 1.16 “Dune Conquests” (2021)
Add-on management quality-of-life changes, wild animals for content creators, Lua API overhaul/scripting part 5, storyline gameplay and lore updates, Dunefolk faction overhaul part 2
During the time it took for us to get here, people were born, grew up, and even got their driving licenses! The more time goes on, the greater the chances are that the game was played at some point by kids that are now adults with memories of having played the game. Even if many developers and artists and translators have left the development team since 2003, their work has continued to exist in one form or another all this time, and it has been experienced by countless people, for many of whom Wesnoth may have even become part of their childhood. And the thing is, this is not just speculation on my part — people who actually grew up playing the game do occasionally pop into our forums and Discord and IRC and tell us about how they are surprised that Wesnoth is still around after all these years!
The fact that people have played a creation of which I have also been part for over 14 years, and that this creation is bound to become part of current and future archives of Free and open source software created in our time, is a very strange thing to think about. Our effort is out there, part of this software creation that’s ended up in the hands of so many people, most of whom will never tell us about their experience or the memories they created while playing it.
A sad aspect of volunteer-driven efforts like this is that people can stop contributing any time without notice, and in a lot of cases the contributor just drops off the face of the earth. This is particularly so with people whose only known name is a Wesnoth-specific user handle. In some cases you know the people in question prefer to keep their real world identity a secret from the Internet, so it would probably be a violation of their privacy to find out more details about their sudden disappearance if it were even possible to do that in the first place. In these situations, you are left to assume that they simply lost interest in contributing, which is a fair thing to do given, again, the amount of work that needs to be done all the time for no pay.
But it’s always worth keeping the worst-case scenario in mind, since it could really happen to any of us any day. In the event that any of us dies, part of us lives on as code, prose, art, music, or sounds integrated into an open source video game, still being passed around and being played by lots of people all over the world, some of whom eventually become contributors as well.
Still, while Wesnoth is without a doubt an important part of my life, it is not as important as the things it has enabled me to do over the years thanks to its potential as a creative platform in and of itself. I intend to go over this, more personal facet of my work on Wesnoth in part two of this post.