TAKKARIA.org

Angband and its licence: a history (beta)

Angband has a long history and a lot of contributors. Here I hope to offer a brief history of how the open-source movement has affected the Angband world as well as providing technical details on what parts of the collected code found in Angband and its variants are GPL-clean. This is a beta-release of this document and is in no way final.8

Since 1985, Moria and its derivatives have been distributed under a licence which simply states:

This software may be copied and distributed for educational, research, and not for profit purposes provided that this copyright and statement are included in all such copies. Other copyrights may also apply.

A lot has changed since that licence was first written and the code under it first distributed. In the mid-80s, there were no such things as a standard licences used by everyone; the GPL did not even exist back then, and free software as a movement had only just come into being [1]. All these changes mean that the Moria licence has not stood the test of time. These days, there is a whole movement around Free and open source software, and there are a number of widely-accepted licences that cover most things people want to do with software. There are companies using these licences and some of them have been tested repeatedly in court. The Moria licence is not one of these licences.

Copyright

Copyright is what you might call "absolute" by default; the creator has sole control over who gets copies, what terms they can redistribute or sell them on, and suchlike. As a result, open–source licences must make explicit everything they want to allow. Now, re-read the Moria licence again, and notice that whilst it allows redistribution not-for-profit, it doesn't allow any kind of alteration. This is something of a problem, given that Angband is a direct descendant of Moria.

It is also something of a problem since one of the core tenets of open-source software is the ability to modify the programs you are using, which makes the Moria licence pretty definitely not an open-source licence, even if Angband-the-game is in practice. This wouldn't be so much of an issue if there wasn't a movement around open source software and infrastructure supporting it; for example, code hosting websites like SourceForge and Google Code only accept projects with certain open-source licences, and most Linux distributions distribute only open-source software.

These various concerns are what motivated Robert Rühlmann to start up the "Angband Open Source Initiative" in 2000. His plan was to start relicencing the game such that it could be distributed either under the GPL, or under the traditional Moria/Angband licence. He choose this dual-licence arrangement because:

Moving Angband to the GPL would also force all variant maintainers to switch to the new license if they want to use parts of Angband in their variant. That's why I decided to use a "dual license" that allows the code to be released under both the GPL and the Angband license. This way no variant maintainer is forced to switch to the new license since they can decide to continue to use the Angband license. [2]

Dual-licencing does not mean that the game is released under both licences simultaneously. Rather, it is a way of saying that the game can be redistributed under either licence at any given time. Robert went about this dual-licencing simply by allowing people to opt into it if they wanted to, and by publishing a list of all of the initiative's supporters on the Angband website. Two months after starting, this list had fourteen names [3], and around thirty by late 2005 [4]. The idea was that eventually, all the contributors to the game would turn up and a relicence could successfully complete.

When the idea of going dual-licenced was first mooted by Robert on the newsgroup, there was something of a furore over it, with several hundred-post-plus threads. Plenty of people objected to it; some on the grounds that old authors would be impossible to get ahold of, some because the current situation was fine, and others because they felt their code should not have money made off it, something which is theoretically possible with the GPL but in practice does not happen. There were also some fairly bizarre reactions, such as not wanting people to redistribute the game too widely, else it might get too many new players, and at one point there was paranoia that a commercial game developer might come along, fork the game and turn it into some kind of 3D realtime shoot-em-up with aliens and feminists. (I made some of that up, but not anywhere near as much as you'd think.)

A Second Try

In December 2006, I came along fresh-faced from releasing my own patched version of the game, and thought it would be fun, or good, or some combination of the two, to try and move the project on a bit. To that end, I posted [5] to the newsgroup asking for anyone who was around to post publicly their willingness to relicence any code they had in the game. This time round, there was a different tone to the replies; they were generally on-board with the idea and optimistic.

Sometime around here I started collecting a list of names of people who had ever been involved in Angband. This required trawling through all the old release archives for changelogs [6] and noting who had been credited and where. Eventually I had a comprehensive list of all the people who had been thanked or acknowledged, and put them on a wiki page [7] to keep track of. Then came the long-winded task of tracking each individual down and gaining their consent. We were signifcantly helped in this by a companion project, free-moria, which was engaging in the same relicencing work for Moria, and completed in 2007.

Surprisingly, some of the oldest contributors were the easiest to find. All the original maintainers were trivially reachable, for one reason or another. One of the most fun people to reach was Johnathan Sari, who I could only find an amazon wishlist for, so I bought him a book with a gift note asking him to contact me, which he did. Some people were only available via post, so I posted letters to them and got replies via email. It'd be nice if I could remember just how some of the more obscure people were found, but it's been too long since I did the tracking for that.

It is an interesting idea that back in 2000 when the idea of contacting previous contributors was first mooted, people were far less easily trackable on the internet than they are now. We now have Google and really pretty astounding search technology that makes tracking people down based on their name and an old email address really very easy.

Two theories

I will be declaring Angband 3.1.1 GPL-clean upon its release, but this is reliant upon two general theories about the copyrightability of code and a host of small details. I am not a lawyer, and nor have I spoken to lawyers directly about it, but these theories seem fairly sound baed on some Web research.

The first theory is that simple bugfixes are not copyrightable. This assumption has to be made in order to even consider the possibility that Angband is GPLable in theory. If bugfixes were copyrightable, then the hundreds of people who have pointed out simple one-line errors and suggested fixes, whose names are not noted anywhere, would be blocking a GPL release. The majority of these people's changes were made pre-source control, and the emails which suggested the changes are long lost; this would make GPLing the game an impossibility.

The second theory is that where there is code that is mechanical and obvious, copyright does not apply. By this I mean that code that the implementor basically had no choice but to implement in the way that they did. An example of this is code which externalises data structures into the lib/edit files and follows the existing template for doing so. It could be rewritten from scratch and there would be no difference from the current implementation.

Luckily, it appears both these theories are reasonable ones to hold. Again I must state that I'm not a lawyer, and you should do your own due dilligence before relying on this information. However, with that caveat, here are the details that have made a release of a GPL'd Angband possible.

Technical Details

The majority of non-free code in the various Angbands now resides in the main-xxx.c files. Angband 3.1.x ships with OS X, Curses, Nintendo DS, RISC OS, SDL, Windows, and X11 ports, all of which, in the versions present from 3.1 onwards are GPL-clean. The SDL port was written from scratch as dual-licenced, so poses no problems, and neither do the Windows, Curses, or RISC OS ports in any release. Howeer, the OS X port has been rewritten substantially from 2003–2008, to the point where none of Ron Anderson's original code remains, and as such the current port is GPL-clean. The X11 port's graphics support is non-free (by Torbjörn Lindgren), and in recent versions of Angband, the port featured clipboard copy support (by Kieron Dunbar) which was also non-free. With the removal of these features, the port is GPL-clean.

Other ports have been removed since they are no longer relevant to the world today, and for the most part they contained non-free parts. These ports included main-xaw, main-lsl, main-vmx, and main-ibm, but I highly recommend removing any ports from your variant that are not currently maintained, since it simplifies life considerably.

The table below lists the various contributors to the game over time. It is not yet complete with full details on who did what, but there is no-one who I have record of as giving permission to dual-licence who is not listed. In particular, there are people there whose permission has been gathered but it is not yet clear exactly what they contributed, when, or where.

There are five people listed who cannot be found. Three of the five have no impact on the modern game; they all made changes in the pre-Ben era and he has rewritten or torn out their code. Torjbörn Lindgren wrote the Xaw port, which is why Angband no longer includes it. Prfnoff is a slightly more complex case; he wrote code that was included in the game from his variant, but which I believe is not significant enough to warrant copyright protection under the second theory outlined above. However, he also wrote the character death menu which can be found in versions of Angband prior to 3.1, inspired by a patch by Ed Cogburn. In 3.1, I rewrote it to use the new menu functions and as such his code is no longer present.

A final note before the table: the fonts normally distributed with the Windows, IBM and SDL ports are also subject to copyright. The situation regarding these fonts can be found in the lib/xtra/font/copyright.txt file in Angband 3.1. When I compiled the information in there, there were some fonts I could not find licencing information for, so 3.1 no longer distributes them.

Name Releases Details
Maintainers
Moria folks see http://free-moria.sourceforge.net/
Alex Cutler 2.4.fk creator
Andy Anstrand 2.4.fk creator
Sean Marsh 2.4.fk
Geoff Hill 2.4.fk
Charles Teague 2.4.fk PCAngband maintainer
Charles Swiger 2.5–2.6
Ben Harrison 2.7–2.8.3 last release 2.8.5-BETA
Robert Rühlmann 2.9.0–3.0.6
A Sidwell 3.0.7s–
From the original list: [4]
Aram Harrow
Dr. Andrew White APW Borg
Billy Tanksley
Chris Weisiger 2.9.1 new Angband vaults
Chris Ang 2.5.3–.5 HPUX support, artifact/unique browser
Dennis van Es BorgBand, DvEband
Dean Anderson CthAngband)
Daniel Nash
Dave Blackston squelch patch
Eytan Zweig EyAngband (PD)
Greg Wooledge 2.9.1–.2 random artifact generation, autoconf support, rebalanced spells
Greg Flint
Heino Vander Sanden QAngband
John I'anson-Holton many bugfixes and patches
Jonathan Ellis 3.0.0 edit files patch with new monsters/artifacts/etc. and rebalancing
Julian Lighton Sangband, a few minor changes in 3.0.8
Keldon Jones improved monster AI
Leon Marrick
Mark Kvale labyrinthine room patch
Matthias Kurzke 2.9.1 PsiAngband, ego-item patch
Shayne Steele
Sheldon Simms random artifact names
Steven Fuerst 2.9.1+ improved X11, XAW and GTK code
Tim Baker 2.9.0 the "easy" patch
Topi Ylinen 2.5.3, .4, .6, 2.6.0 bugfixes, targetting, better platform support, creator Zangband, Angband--
William Tanksley main-ibm.c
From the December 2006 thread on r.g.r.a: [5]
Antony Sidwell
Andrew Doull
Christer Nyfalt
Diego Gonzalez
Eddie Grove
Gileba
Hugo Kornelis 3.0.8 UI patch ('b'rowse spell info, improved pluralisation support, bugfixes)
Jeff Greene
Joshua Middendorf aka camlost
Nick McConnell
Tom Demuyt aka konijn, Hellband maintainer
Timo Pietila 3.0.4 various gameplay tweaks
Obtained through private correspondance:
Alexander Ulyanov 3.0.6 x11/gcu/vcs frontend improvements
Alexander Malmberg 2.9.3 Linux VCS display driver
Arcum Dagsson 2.9.1, 3.0.8+ aka. Shanoah Alkire; configurable artifact activations, work on Mac-enhanced Angband
Chris Carr 3.1.1 randart patch
Chris R Martin 2.7.9v4 main-win.c
Chris Herborth 2.5.4–.6, .9 Atari support, targetting, tweaks
Craig Oliver 3.0.6 sound patch
DarkGod 3.0.4 HTML screendump, ToME
David Boeren 2.7.9v4 possibly earlier; Watcom C/C++ support in main-ibm
David B DeLaney 2.5.5–.6, .8–2.6.0 bugfixes
David G Kahane 2.5.3, .5 bugfixes, FAngband maintainer
David Grabiner 2.5.x patches
Dennis Payne 2.9.0 main-lsl
Ekkehard Kraemer 2.7.4 main-emx.c
Eugene Hung 2.5.3, .7 Ultrix support, bugfixes
Hallvard Furuseth 3.0.0+ improved autoconf support, lots of cleanup/bugfixing
Hans-Joachim Baader 2.9.0 main-sla
Heiko Herold 2.6.1 monster fear of high-level players, '-' in get_item(), fixes
Iain McFall monster list?, NPP/Pern squelch
Ilya Bely bugfixes
John Rauser monster list patch
Jonathan Sari 2.6.0 bugfixes
Joseph Hall los() in cave.c; licence statement
John M Kewley 2.5.3, .8–.9, 2.6.1 bugfixes, gameplay tweaks
Jurriaan Kalkman also Angband/64
Ken Wigle 2.6.0–.1 bugfixes, maintainer KAngband
Keith H Randall 2.6.0–.1 Mac code (used as base for 2.7.0), multiple windows, colour
Kevin Bracey Acorn support code
Mark Howson 2.9.1 improvements to the Amiga code
Mike Marcelais Windows and main-ibm.c
Maarten Hazewinkel 2.7.4 code in main-mac.c; possibly contributed earlier
Musus Umbra 2.9.1+ RISC OS code
Takeshi Mogami 3.0.2+ bigtile, Gervais tileset support, more understandable pref files
Nikodemus
Peter Ammon Mac support
Peter Seebach (PD)
Pelpel 3.0.1 Curses/Mac fixes, various bugfixes
Randy Hutson 2.6.0–.1 bugfixes, RNG reworking
Ross E Becker 2.7.9v4 main-win
Sébastien Desvignes x11 support code
Scott Holder
Scott Egashira DJGPP support
Skirmantas Kligys 2.7.7 Windows port (possibly earlier than 2.7.7)
Steve Linberg Mac-enhanced port, USE_SFL_CODE
Silas Dunsmore some of main-emx
Tom Harris some RISC OS code
Tom Morton DrAngband
Wei-Hwa Huang
Given permission, but no code in V
Chris Kern
Joseph William Dixon ex-Gumband (GPLv2 only)
Not found
Peter Berger 2.5.6, 2.6 Linux support (2.5.6), OS/2 support, BSD support (2.6)
Michael Pope 2.5.8 "Fixed another shop price bug"
"hmj" 2.5.9–2.6.0 "Added a case insensitive string comp for deficient systems", "Fixed a bug generating treasure in vaults that resulted in slightly worse treasure then intended"
Torbjörn Lindgren 2.5.x, 2.7+ main-xaw, support for more Unixes, other fixes
Prfnoff 2.9.1 customisable player races/history/shop owners, character death menu

References

  1. Stallman, Richard (1982) Announcement of the GNU project
  2. Rühlmann, Robert (2005) "Angband OpenSource Initiative"
  3. Rühlmann, Robert (2000) "Angband OpenSource Initiative" (at web.archive.org)
  4. Rühlmann, Robert (2005) "Angband OpenSource Initiative" (at web.archive.org)
  5. Sidwell, A (2006) "Angband OpenSource Initiative"
  6. A full history of the game is now available starting at http://rephial.org/release/2,4.fk
  7. now http://rephial.org/wiki/OpenSource