The XFree / X.Org fork and open source governance

Why a history of the X.org fork?

Forks are experiments in open-source management (1).

Management in open-source can be mysterious. In our technical world, we would rather believe that anything important must be technical, and management seems soft and poorly defined. We want to believe that all you need is good code, and that management is for corporate types, whom we despise.

A fork is interesting because it usually comes about when one group of developers thinks that they can do a better job managing a project than the current group in charge.

The group doing the fork takes a risk, because forking is violation of the code of honor. The group will probably have to start under a new project and package name, and then compete with the old project for users.

If the fork fails and the old project succeeds, it is difficult to draw conclusions about which project had better management, because of the inertia bias against the fork. If both fail, the project may have already been doomed by bad code or changes in fashion. If both succeed, the forkers were right enough about the management to survive the resistance to forking. The most interesting outcome is where the fork succeeds and the original project fails. In this case we may be able to conclude that there really was a problem with the old management that has been fixed by the fork.

The X.org fork of XFree86 is particularly interesting because, after the fork, XFree86 went into steep decline and died, to be fully replaced by X.org. There may be interesting lessons we can learn from why the fork happened.

I've set out the background in some detail because I think it is important to be able to understand motivations and arguments of the actors in the fork drama. The royalist defenders of the status quo and the revolutionaries behind the fork make the same kind of arguments that I have seen often and recently. Maybe seeing these arguments together with their outcome will help make our own discussions easier to think about and better informed.

A sketch of early X history with some dramatis personae

2 attributes the original idea for X to Jim Gettys and Bob Scheifler at MIT in 1984.

MIT released version X10R3 under what later became known as the MIT license in 1986.

MIT handed over stewardship to a newly formed MIT X consortium in 1988. The consortium hired Jim Fulton, Keith Packard in early 1988, with others joining later in the year.

The development of XFree86 itself started as a fork. Thomas Roell developed the first X implementation for the Intel 386 chip, called X386. He donated the code to the X consortium and this code was part of the X11R5 release in 1991 (23). Roell then took a job with a company called SGCS and further versions of his X386 code were not open source (45). A group of programmers found they were maintaining the original open-source version of X386 and joined together to form a fork of X386 called "XFree86" (13). XFree86 was a joke from the X386 name. The original team for XFree86 was David Dawes, Glenn Lai, Jim Tsillas and David Wexelblat (13).

In order to get access to the development versions of the reference X-consortium code, XFree86 needed to be a member of the X-consortium. To do this, XFree86 formed a corporation called "XFree86 inc" in January 1994. XFree86 inc then asked for donations for X-consortium membership, and joined (3).

At least by May 1994, XFree86 had a BSD-like governance, with a core group and a board of directors. The board of directors was David Dawes, Glenn Lai, Dirk Hohndel, Rich Murphey, Jon Tombs, Jim Tsillas, and David Wexelblat (6). The core group was the same as or similar to the board of directors at this stage (7).

In November 1994 David Wexelblat handed over the XFree86 board presidency to David Dawes (8). Dawes continued as president at least until 2015 (9).

In 1997, the X-consortium handed over X stewardship to a vendor group called "The Open Group". In April 1998, the Open Group changed the X license to require commercial entities to pay a license fee:

Although [XFree86] may be able to claim several million users, the net contribution to the development of the X Window System, as embodied by specs, protocols or cash is a flat zero.

XFree86 decided to continue development without using any new code from the Open Group reference implementation, in order to avoid the new license. At the same time, the Open Group X development stalled (3) leaving XFree86 to become the de-facto reference implementation. The Open Group reverted to the old license in September 1998, and formed a new consortium for X stewardship called X.Org in 1999 (210). X.Org (the consortium) went on to supervise the releases of the X reference implementation. XFree86 joined the X.Org consortium as an honorary member in the same year.

An article in 2001 said "Today, XFree86 is considered to be among the most successful open source projects in existence." (3).

By 1999 the board of directors was unchanged apart from the additions of Robin Cutshaw and Marc Evans (11).

By February 2003 the "core" group was 16 people, of which 7 were also on the board of directors (at least as of 1999) (1215).

Now we're ready for the events around the fork.

Background to the fork

Although XFree86 had a development CVS repository, it was only available to those granted "membership" of the project. The development mailing lists were also not public (16). This had been forced on the project because of the initial contract with the X consortium. After the Open Group had tried and failed to change the license, it appears that this was no longer necessary, but nevertheless continued to be the case until Keith Packard joined the project (16).

Keith Packard started to work on XFree86 at the end of 1999 as an employee of SuSE. He became a member of the XFree86 core in the same year (15). He moved to the Cambridge Research Laboratory to work for Compaq / HP at the end of 2001 and continued to work on XFree86. Among his contributions were the Render extension, (with Jim Gettys) the XRandR extension(18), (with Carl Worth) the Cairo rendering library and the fontconfig library (17).

Packard successfully lobbied for open read access to the CVS repository, and moving at least some of the development discussion to public mailing lists. He said that some of the development discussion continued to be on private mailing lists (16).

Over a period of years before 2003 there seems have been considerable frustration at the slow pace of XFree86 development, and the difficulty of getting patches accepted. Mike Harris was a Redhat developer working on XFree86. He complained in a blog post of very slow or completely failed patch review, even from vendors like ATI, and the very small number of developers with CVS write access given the size of the project (19). In a follow-up post he records his surprise at the level of support he had got for his blog post by email (20). A KDE developer agreed later that there was a widespread impression of XFree86 as a slow and unresponsive project (21). Others had similar complaints (2223).

Packard felt that he had been gradually excluded from XFree86 management:

My ability to contribute to the project was severely curtailed in stages, first administration of the public server, next permission to represent XFree86 to other groups, then administration of the public mailing lists, and finally CVS access. (16)

He lost CVS access when he committed the XFIXES extension to CVS in November 2002:

I've stuck these features into a new XFIXES extension and included that in XFree86 CVS so that others might see the code and specification and test whether they solve the issues they're supposed to. This does not represent any endorsement by the XFree86 project or it's [sic] members (other than me), nor any assurance that the extension will be included in future XFree86 releases. (24)

The extension appears to have been disabled by default (25).

It seems the commit of XFIXES was just before a release feature freeze. Some process occurred by which Packard lost his CVS commit rights on the basis that he should have discussed the changes before committing (28). David Dawes refers to a rumor that Packard did this in order to cause a crisis (29). There does not appear to be any public record of this decision at the time.

The forking fighting

In March 2003, David Dawes used an email asking for public discussion of XFree86 to announce that the XFree86 board of directors had expelled Keith Packard from the core group (26):

It has been brought to the attention of the XFree86 Core Team that one of its members, Keith Packard, has been actively (but privately) se)eking out support for a fork of XFree86 that would be led by himself. He is also in the process of forming a by-invitation-only group of vested interests to discuss privately concerns he has about XFree86 and the future of X. He has consistently refused to even disclose these concerns within the context of the XFree86 Core Team, which makes his membership of that team unviable. As a consequence, Keith Packard is no longer a member of the XFree86 Core Team.

The board claimed to have email evidence of Packard's intentions, but that they were unable to release this evidence because the emails were private and Packard had asked for them not to be released (30). Packard responded with permission to release the mails (31) and David Wexelblat, for the board, said that they would release some version of the emails soon after (32). I could find no evidence that this happened. It's possible that the email enclosed in (33) is an example of the discussion leading to Packard's expulsion.

Packard didn't reply directly to the thread expelling him from the core, but instead posted an appeal for open governance of XFree86 (27). He lists four problems:

  • Limited development resources
  • Slow release schedules
  • Lack of cooperation with other projects
  • Opacity of development processes

Packard thought that this was a problem of governance:

While the XFree86 Board of Directors is nominally in charge of XFree86, they have absented themselves from governing the project and left that to the XFree86 Core Team. The community is left wondering who is actually in charge of XFree86. As a result, community trust in XFree86 leadership has suffered. Decisions appear to be arbitrary and are not seen to reflect the will of the community. The leadership has no accountability to the community: thus community members have no ability to change project direction and the Board has little incentive to do so. In addition, the lack of clear formal policies has made it difficult to resolve disputes when the usual consensus breaks down.

He appealed to the board of directors for a change in governance:

There are many ways to move from our current position to one of community control, but for XFree86 to make the transition, the current Board of Directors must have a desire to do so. I encourage the X community to support a community government for X development and hope the XFree86 Board will adopt this model.

The subsequent discussion was often bad-tempered.

An early reply by Alan Hourihane blamed 'limited development resources' on the difficulty of the codebase, and emphasized the previous work of David Dawes:

As for the rest of the above. I'd urge people to think of how XFree86 has got were it has - under the directive of the current team, headed by David Dawes. David has worked tirelessly in his own time to bring XFree86 where it is today. And I applaud him for that devotion. (34)

David Dawes' employer, the CEO of Tungsten graphics (36) saw problems in the organization of XFree86:

We are seeing Keith Packard, a loyal and dedicated XFree86 contributor, publicly express his frustration with an organization in which he has more personal control than the vast majority of other people whose livelihood depends on XFree86's continued success. David Dawes has turned to that constituency to assist him in resolving this situation. Both of these actions imply there is an organizational problem within XFree86 itself.

He asked for greater democracy in governing the project:

The best organizational model I know of that adequately addresses both the need to have managers who are the most knowledgeable and willing to work, and the need to have a mechanism for all interested parties to voice their concerns, is a representative democracy. XFree86 has historically resisted that model. The increasing ubiquity of XFree86 has widened the discrepancy between the desires of its constituency and those of its managing cadre. Under those circumstances, a fork was inevitable. There is currently no way for dissenting voices to have an opportunity to fairly affect the direction of XFree86, no matter what percentage of interested parties agree. (35).

In reply, David Wexelblat denied there were organizational problems, blaming Packard:

Well, I'm not convinced that's true. The organizational problem was Keith.

There are PROCESS problems, but I don't accept (at face value) that there are organizational problems.

Wexelblat was clearly angry with Packard:

But what Keith is doing, at least how he's handled it, is just flat out wrong. It's literally dishonest, and morally repugnant. Doesn't mean that there aren't some valid issues to work, or that there is no need for branching, but (a) it remains to be proven, and (b) I'll be damned if I'll quietly accept it being done by someone who is lying to my face.

and didn't see a need for fully open governance:

But there are things that don't need to change:

  • There is no reason for XFree86 BOD matters to be public. The XFree86 Project, Inc is a privately-held corporation.
  • There is no reason for Core Team matters to be public. This is the leadership forum, not a public forum. (37)

David Dawes saw his opponents as trying to take over the hard work of others:

Some of those really old X guys (pre XFree86) left X for dead in the early '90s. Now that they've seen that their attitudes then were short-sighted, they want to come back and take over where they left off. If we'd listened to them, we'd have abandoned it too. And they want us all to follow their lead now? "Thanks for keeping it alive guys, but we'll take it from here," is the attitude. (38)

Rich Murphey could not see the point of governance discussions:

You seem to have an obsession with governing, leading, the will of the community and democracy.

Why are any of these critical to development success? They have nothing to do with what motivates open-source developers.

The lack of direction for the core group was an advantage:

Core has very much to do, and as all-volunteer developers they pretty much decide whatever they do themselves. There is a remarkable degree of consensus, in part because there is no one imposing a direction or mandate on them.

Developers are leaders and should not be accountable to any 'community':

The developers are the leaders. And yes, they have no accountability to you because they are volunteers. They code whatever they damn well please when the want to.

I wish you luck in holding everyone accountable to the will of the community and imposing formal policies on everyone. I can imagine how many developers that will attract (39)

Alan Cox thought the problem was one of resistance to change:

This isnt about voting, governance and dictatorship IMHO, its about change. XFree86 is hard to get involved with usefully, resistant to cool ideas and strongly wedded to an occasional not rolling regular release model.

He insisted that change was essential to the project:

X has to evolve, X has to do cool stuff, X has to let people break stuff, X has to delegate trust to driver maintainers far more. To me it doesn't matter if Keith and friends spin off an "Xperimental" or XFree itself changes, but that change is vital to the future of X11.

If the XFree BOD doesn't want to be the evolving at high rate and really believes the current plodding progress is the right path, don't harass Keith work with him, endorse an Xperimental project and see what it produces. If it works the community wins, if it fails you get both to smirk, and to take the good bits and the lessons it learned. (40)

Packard and other interested developers held a series of teleconferences in late March / early April to discuss what to do next (414243). They decided to set up a new site for collaboration on X windows work, xwin.org:

xwin.org is a forum for community participation in X, not a development project. The X development community needs to work together to form a government. The hope is that community governance will encourage rapid advances in the X window system

Packard explained his reasons for acting in a Linux Weekly News interview (16).

The highest priority should be to create an environment where people are encouraged to participate to whatever extent they are able, and where these contributors feel ownership of their code and pride in the community in which they work.

Xouvert fork

In August xouvert.org announced a fork of the XFree86 project. Xouvert did a first release in December 2003, but the main XFree96 developers were not involved, and the project slowed and folded relatively quickly thereafter (44).

Cygwin loses patience

In October 2003, Cygwin publicly announced it would no longer contribute to XFree86 development because they had been unable to persuade David Dawes to give them CVS commit access (45).

Egbert Eich commented as an XFree86 core member:

I understand that the level of frustration among contributors has risen to a point that people are starting to use bad words. I've tried to get support from individual core team members for giving you commit rights. After I was unable to do so (maybe I asked the wrong ones) I decided to no longer persue [sic] the issue. None of the initiatives I've made so far have been accepted.

I don't understand why people cannot deal with issues on the pragmatic level by looking at how one can best distribute the workload so that the burdeon [sic] on each individual volunteer is reduced. The discussion always turns to who owes what to whom. This is the wrong question. All or most of us are volunteers. Therefore noone owes anything to anybody (46).

XFree86 core team disbands

David Dawes successfully proposed disbanding the XFree86 core team in December 2003:

I'm very pleased to announce that a majority of the XFree86 core team has voted in favour of my proposal to disband the core team.

I believe that this is an acknowlegement [sic] that the core team was no longer representative of the active, experienced and skilled XFree86 developers, or a place where technical discussion happens (47)

The bare announcement caused considerable confusion, with some taking it to mean that the XFree86 project was closing down (48). There was no indication of any other structure to replace the core. An ex-member of the core team explained it as a way of avoiding potential complaint:

I think it doesn't really mean anything at all, so it's hard to say much about it. The core team was basically an honor role, which outsiders assumed was a kabal [sic] of some sort despite the core and bod [board of directors] repeatedly explaining that it wasn't. Now it's gone, so people will have to find something else to complain about. (49)

Start of the X.org foundation

In January 2004, many of those involved in the discussion formed a new company called the X.Org foundation (as distinct from the previous X.Org consortium). A presentation to the Linux World Expo on 22nd January (50) gave the mission statement as:

To promote a proactive and participatory community for Open Source X Window System and desktop development

The same presentation records that a development tree had been established.

The interim board of directors (51) was composed of representatives from industry and free software organizations:

  • Stuart Anderson, Free Standards Group
  • Egbert Eich - SuSe
  • Mattais Ettrich - KDE
  • Jim Gettys - Hewlett Packard
  • Georg Greve - FSF Europe
  • Stuart Kreitman - SUN Microsystems
  • Kevin Martin - Red Hat
  • Jim McQuillan - Linux Terminal Server Project
  • Leon Shiman - Shiman Associates
  • Jeremy White - Code Weavers

License change and collapse of XFree86

On 29th January 2004, David Dawes announced a change to the base XFree86 license (53).

The new license added a non-standard clause that required any derived work to include a specified acknowledgment of XFree86 in the documentation or "in the software itself":

The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by The XFree86 Project, Inc (http://www.xfree86.org/) and its contributors", in the same place and form as other third-party acknowledgments. Alternately, this acknowledgment may appear in the software itself, in the same form and location as other such third-party acknowledgments.

It later turned out that the board of directors had unanimously agreed to this change in a private meeting (56).

Most people considered that the new license did not allow derived code to use the GPL license, because the GPL says that a GPL or derived work "may not impose any further restrictions on the recipients' exercise of the rights granted herein." (52). Here the further restriction is the requirement to acknowledge XFree86 in documentation or "in the software itself".

Dawes appeared unmoved by concerns about this change, suggesting that the GPL ought to change instead:

Has anyone considered modifying the GPL to be more compatible with other Open Source licences rather than trying to force all Open Source licences to be a subset of the GPL? (54)

The long email threads that followed were mostly against the license change - e.g. (58, 55).

Richard Stallman joined the discussion to see if he could help restore GPL compatibility (59) but Dawes was not ready to compromise:

However, I also believe that all of that is irrelevant, and that anyone who writes software should have the freedom to set conditions on what others may do with it(*). The choice for others is then either to accept the conditions (legally enforcable or not), or to avoid said software.

(*) Providing of course that the act of setting the conditions is not itself illegal. (60)

Dawes was clearly surprised that others on the board did not support his unmoving position on the license:

I can't speak for why the XFree86 board that voted unanimously for the change, (and some of whom were advocating more radical changes), have hung me out to dry on this. I also can't speak for why some developers have privately supported the change, but won't do so publicly. But then taking the heat on things like this comes with the job. And I have very thick asbestos undies, but boy do they itch :-) (56)

X.org releases fork of X

In April 2004, the new X.Org foundation released their own fork of X Windows (57):

The new X.Org release, called X Window System Version 11 Release 6.7 (X11R6.7), builds on the work of the X.Org X11R6.6 and XFree86TM Project Inc. V4.4RC2 releases to combine many of the latest developments from a large number of the participants and companies working with the X Window community ...

The announcement quotes Jim Gettys:

This release marks the return to community development of the X Window System under governance open to all contributors for the first time since the founding of the X Consortium in 1988.

Among other endorsements in that announcment, Branden Robinson of Debian writes:

We're also delighted that the X.Org Foundation is dedicated to retaining the licensing model that has made the X Window System an enduring success.

The decline and fall of XFree86

The license change appears to have been the last straw in forcing adoption of X.org instead of XFree86 (61). In a page dated from May 2004, XFree86 lists the Linux and BSD distributions supporting the first release of XFree86 that contained the license change (62). The list does not include SUSE, Redhat or Debian among many others.

The page at (61) gives a vivid summary of the almost complete collapse of XFree86 at this point, with all significant developer and packager interest switching to X.org.


  1. http://www.dwheeler.com/oss_fs_why.html#forking 

  2. http://en.wikipedia.org/wiki/X_Window_System#History 

  3. http://www.linux-mag.com/id/922 

  4. Glynn Moody "Rebel Code: Linux and the Open Source Revolution" 2002, p63. Perseus Publishing. 

  5. http://en.wikipedia.org/wiki/X386 

  6. http://web.archive.org/web/20030101005232/http://www.xfree86.org/legal/org_minutes.html 

  7. http://ftp.x.org/R5contrib/XFree86-2.1.Announce 

  8. http://www.informatica.co.cr/linux-desktops/research/1994/1116.html 

  9. https://web.archive.org/web/20140910005646/http://www.xfree86.org/legal/bod.html 

  10. http://web.archive.org/web/20030402160332/http://www.x.org/XOrg_background.html 

  11. http://www.xfree86.org/3.3.6/README7.html 

  12. http://www.xfree86.org/4.3.0/XFree86.1.html 

  13. https://groups.google.com/forum/#!original/comp.unix.bsd/vQZnxPoIYEA/G0B0hyz0iYgJ 

  14. http://old.lwn.net/lwn/1998/0409/xstate.html 

  15. http://web.archive.org/web/20020906035319/http://www.xfree86.org/coreteam.html 

  16. http://lwn.net/Articles/27673 

  17. http://keithp.com/keithp/resume 

  18. http://www.xfree86.org/4.3.0/Xrandr.3.html 

  19. http://web.archive.org/web/20030304041751/http://advogato.org/person/mharris/diary.html?start=5 

  20. http://web.archive.org/web/20030304041751/http://advogato.org/person/mharris/diary.html?start=6 

  21. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002018.html 

  22. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/000476.html 

  23. http://lists.debian.org/debian-x/2003/11/msg00285.html 

  24. http://www.mail-archive.com/xpert@xfree86.org/msg11266.html 

  25. http://www.mail-archive.com/xpert@xfree86.org/msg11290.html 

  26. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/001997.html 

  27. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002165.html 

  28. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002105.html 

  29. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002121.html 

  30. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002461.html 

  31. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002525.html 

  32. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002545.html 

  33. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-April/003139.html 

  34. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002168.html 

  35. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002040.html 

  36. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-April/003357.html 

  37. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002124.html 

  38. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002208.html 

  39. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002286.html 

  40. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2003-March/002077.html 

  41. http://web.archive.org/web/20030607004252/http://fontconfig.org/~keithp/teleconference/minutes-2003-03-27.txt 

  42. http://web.archive.org/web/20030815144605/http://fontconfig.org/~keithp/teleconference/minutes-2003-04-03.txt 

  43. http://web.archive.org/web/20030420065828/http://fontconfig.org/~keithp/teleconference/telecon-2003-04-10.txt 

  44. http://www.osnews.com/story/6157/X_Marks_the_Spot_Looking_back_at_X11_Developments_of_Past_Year/page2/ 

  45. http://cygwin.com/ml/cygwin-xfree/2003-10/msg00328.html 

  46. http://cygwin.com/ml/cygwin-xfree/2003-10/msg00360.html 

  47. http://www.mail-archive.com/devel%40xfree86.org/msg04639.html 

  48. http://www.mail-archive.com/devel@xfree86.org/msg04658.html 

  49. http://www.mail-archive.com/devel@xfree86.org/msg04888.html 

  50. https://web.archive.org/web/20040616015847/http://www.x.org/XOrg_Foundation_22Jan04.pdf 

  51. https://web.archive.org/web/20040418234209/http://www.x.org/XOrg_Foundation_Board.html 

  52. http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 

  53. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2004-January/001892.html 

  54. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2004-January/003907.html 

  55. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2004-February/004035.html 

  56. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2004-February/004039.html 

  57. http://lwn.net/Articles/79302 

  58. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2004-February/003945.html 

  59. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2004-February/003974.html 

  60. https://web.archive.org/web/20140910005646/http://www.xfree86.org/pipermail/forum/2004-February/004021.html 

  61. http://www.dwheeler.com/essays/gpl-compatible.html#xfree86 

  62. http://web.archive.org/web/20040531203819/http://www.xfree86.org/distro-support.html 

blogroll

social