|
|
Subscribe / Log in / New account

A discussion with Keith Packard

The XFree86 project is important enough that the current discussions over how the project should be governed deserve continued attention. To that end, we had a conversation with Keith Packard, who was recently removed from the XFree86 core team as a result of his efforts to bring about a change in the project. Without further ado...

LWN: Could you describe the role you have played in XFree86 until now?

Since joining XFree86 a bit over three years ago, I've been working hard to rebuild X as a window system capable of supporting modern applications. Designed in 1987, X11 hasn't seen any significant architectural work in well over a decade, and it really shows.

Dirk Hohndel (while we were both at SuSE) encouraged me to build an extension that could expose the capabilities in modern graphics hardware to 2D applications, most notably anti-aliased graphics and image compositing. The Render extension is the result of that work.

This work was not done in a vacuum. Help from many people was critical in the design and implementation of all parts of the extension and supporting libraries. I've become deeply involved in KDE, Gnome, Mozilla and many other minor X projects. I've also been fortunate to have the assistance of people from the OpenGL community, the application community and one of the leading experts in computational geometry: Lyle Ramshaw.

LWN: Your "call for open governance" points out a few problems you see with the status quo. The first is "limited development resources" - XFree86 has a relatively small developer base for a project of its size. Why do you think that is, and what would you like to see done to change it?

Part of it is undeniably the steep learning curve for working within the X codebase; the project currently consists of more than 17 million lines of code, and a lot of the documentation necessary for writing device drivers is not available.

However, we cannot ignore the historical closed nature of XFree86 as another influence. Until I started at XFree86, the developer mailing lists and even the development version of the release in CVS was open only to people granted membership within the project, and such membership was granted only after demonstrating an ability to work with the code.

A certain amount of this was originally forced upon the project by the X.org contracts, but after the great licensing fiasco around X11R6, that reason disappeared and yet XFree86 remained a members-only project.

I pushed for changes in this policy, the result was a public CVS and some public mailing lists that I managed for quite some time. The old members-only developer mailing list remained, ostensibly for the purpose of discussions concerning non-public material, but in reality it was difficult to wean the existing members from a list not carrying traffic from new developers.

Another hurdle for new developers is the lack of any technical road-map for the project; releases are scheduled with no idea of what they will contain or even what people are working on. A new developer interested in helping out faces a difficult task in locating other developers even before attempting to learn the internals of the code. I attempted to suggest mechanisms to address this issue and was met with stiff opposition within the core team.

LWN: You cite slow release schedules; how is the XFree86 release schedule determined now? What would you change to speed it up?

The XFree86 release schedule is entirely determined by the availability of the release manager. Because XFree86 is released monolithically, minor driver updates like support for new versions of existing chips wait for the next release rather than being made available separately.

I would like to see each library, driver and application released individually. X has a history of strong interface specifications and this should be leveraged in the release process. Much like Gnome or KDE is done today, occasional packaged releases could be done that look much like the current releases but which would be built by collecting releases of the individual packages together rather than attempting a unified release process.

Separating the release schedule of each module would make frequent updates possible where necessary while not burdening the downstream maintainers with huge volumes of complete X releases; areas of rapid progress would see rapid releases while stable code could be released more slowly.

Possibly even more importantly, splitting the release into modules would permit each module to be separately maintained and replaced; the project would be able to effectively leverage many more people in the management of changes. Many other projects do this today to allow scaling beyond the ability of a single individual to incorporate changes into the project.

LWN: There are some interesting parallels with the kernel project, which also must manage large numbers of independent modules to provide support for the latest hardware and such. Splitting the kernel into multiple distributions is often suggested, but the idea never gets that far. The fear is that splitting the pieces apart will make it harder to keep the whole thing in sync, especially when APIs change. I take it you don't think that would be a problem with XFree86?

There are several interfaces within the current X architecture:
  • Protocol interfaces. These should be treated in much the same way as kernel/glibc interfaces where extrememly strong compatibility requirements ensure cross version interoperabilty.

  • Library interfaces. These are the same as the application/library interfaces present today and require the same level of interoperability as glibc versions do.

  • Driver interfaces. Because XFree86 encourages binary-only graphics card drivers, it should support that with strong binary compatibility guarantees. These are possible given the module loading mechanism in place, but are essentially untested by the development community as the whole system is built monolithically.

The only new interoperability requirement here is that the driver interface provide cross version compatibility, and this is already required to support binary graphics card drivers. Having it a regular part of the X environment will ensure that the interface is tested by all developers instead of only those few who produce the binary drivers.

LWN: Lack of cooperation: did GNOME and KDE approach XFree86 in search of cooperative development opportunities? How do you think XFree86 should work with the developer communities for X client projects?

I don't believe either KDE or Gnome have approached the XFree86 project as collective units, but individual developers from each project have interacted with XFree86 developers. One significant failing in X management today is the area of standardization. XFree86 plays little or no role in the maintenance of standards supported by the code, instead that role is left to the moribund X.org group. For KDE and Gnome, the result has been no progress in interoperability standards, most notably the inter-client communications conventions which form the basis for cooperation among applications, window managers and session managers.

KDE and Gnome ended up starting a new organization (freedesktop.org) to extend published X standards. Clearly, the responsibility for maintaining and extending that standard should lie within some X project, but the lack of a standards process within XFree86 has caused developers to take their ideas elsewhere.

X design must be done in a public venue with input from the projects layered on top. The current driver architecture within the server is a model of efficiency and performance when executing X protocol as presented by the x11perf benchmark. However, real applications take little advantage of that code as the X drawing model fits very poorly into modern graphical applications. X architecture should follow from application requirements, rather than benchmark racing.

One obvious first step is for X developers to start using modern applications; many key X developers wear the badge of 'twm' or 'fvwm' with pride. I switched to a mixture of KDE and Gnome desktops several years ago so that problems with those environments would be immediately evident as I changed code underneath them.

LWN: Opacity of the development process: is there anything there that a little documentation wouldn't solve? Is it matter of finding somebody to do that work, or is there a deeper problem which must be overcome.

Documentation about active projects and developers would help new contributors locate appropriate groups; splitting into many separate projects would limit the size of the codebase in which individual contributions could be made and publication of release schedules along with intended content would all help make the development process less opaque. Perhaps the most important thing of all would be an active participation by the key developers in conferences, mailing lists and IRC channels to make their contributions more visible and understandable.

LWN: There has been a lot of third-hand talk of what you were trying to do before the situation blew up, but not much from you personally. What were you trying to accomplish prior to your removal from the core team? Why do you think they responded in the way they did?

Over the last year or so, I have become convinced that XFree86 is headed for a success disaster -- widespread adoption of Linux on the desktop will cause a catastrophe for X development given the current lack of resources and inability to scale the project beyond its current bounds.

An urgent need to open up development and invite in new contributors while changing processes to make the existing contributors more effective seemed critical. I believed then that fixing the processes would avoid the impending disaster. However, my attempts to work within the existing structure have proven less than effective.

As I've attempted to open up the development process and prepare for a significant increase in Linux desktop deployments, I've run afoul of the current XFree86 leadership. 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.

I don't blame the current leadership for this problem; there are no guidelines or processes in place to deal with conflict in the development community. As the project has grown, it has failed to adapt to that growth by building formal structures necessary to govern a large and diverse group of people.

However, with my ability to effectively contribute severely restricted, I was forced to consider how to resolve the problems I faced. I discussed my dilemma both with members of the XFree86 core team and outside interests. I first learned that I was not alone in my views on XFree86 leadership; several prominent voices in the wider X community agreed with my assessment and encouraged me to find solutions.

The conclusions from this process were clear -- effective cooperation within the development community would require a government sanctioned by that community to run the X project as there was no other way to restore trust between the community and the leaders. The XFree86 by-laws provided no mechanism to force such a change on the project, and I was not sanguine that the XFree86 leaders would accept such change willingly, and hence I was forced to consider alternatives, even as I worked to find resolutions within the project.

Upon learning of my discussions, the XFree86 leaders were angry that I could privately disagree with their leadership while publicly supporting the project itself. The result was that I was summarily removed from the core team and subjected to censure on public mailing lists and web sites.

LWN: Is it your intent to create a fork of the XFree86 code base?

My goal is to promote development of the X window system. Right now, I don't believe it is possible for me to effectively do this within the structure of the XFree86 project. I have asked that they seriously consider changes that I feel necessary to restore public confidence in the project leadership and provide an environment where people can work together on the technical challenges facing the window system even if their individual goals are not identical.

LWN: Do you see any signs that XFree86 may be moving toward a more open system? Or does the status quo look likely to remain for some time?

The XFree86 leaders have only publicly discussed minor procedural changes which don't address the fundamental questions of authority, trust and governance. I hope they seriously consider these underlying issues instead of making only superficial changes in the project.

I held a conference call last Thursday with representatives from many projects and representatives from the XFree86 core team to discuss these issues. I'll be publishing detailed minutes of that call soon, pending agreement from the participants. The messages from that call have been taken to the XFree86 leaders and I expect to hear back from them shortly.

LWN: In your opinion, what should be XFree86's highest development priorities?

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.

Actual projects should, as always, be directed by the contributors themselves. Personally, I will be working on ensuring that X applications have the support they need within the window system to provide the best user experience possible, and that the window system is a good citizen in the overall Linux environment.



to post comments

A discussion with Keith Packard

Posted Apr 3, 2003 8:06 UTC (Thu) by ortalo (guest, #4654) [Link] (1 responses)

IMHO, a major achievement of the XFree86 project is the fact that
they support multiple operating systems, not only Linux (and this is
not so straightforward for a piece of software that directly deals
with critical *hardware*).
With the current trend of Linux gaining a dominant voice, don't you
think that a community driven development process could favor Linux
up to the point that other OSes support becomes of inferior quality?

Rodolphe

A discussion with Keith Packard

Posted Apr 3, 2003 9:11 UTC (Thu) by james (subscriber, #1325) [Link]

With the current trend of Linux gaining a dominant voice, don't you think that a community driven development process could favor Linux up to the point that other OSes support becomes of inferior quality?

It's possible—but unlikely. It's been my experience that the Free Software/Open Source communities are extremely good at supporting the interests of other platforms, much more so than companies. Take, for example, the range of Unices that most prominent open source packages support, or the range of obsolete platforms that Linux or NetBSD work with.

I suspect that this is partly because most hackers find themselves in a "minority group" compared to Windows too often. It's largely because hackers believe that they should write to standards, therefore failure to cope with standards-compliant implementations is a bug. And it's partly because very few hackers started with Linux and have stayed there. Most still remember with affection their old SysV / Sun / Amiga / Mac / Atari / (whatever) systems. They're likely to view a 68030 with 6 MB of RAM with a certain amount of respect, not for what it is now, but because they remember that it once was a very desirable system.

End ESR mode.

Time for X12?

Posted Apr 3, 2003 9:50 UTC (Thu) by MathFox (guest, #6104) [Link] (5 responses)

First I'ld like to say that, despite its age, X is a great piece of software engineering. As Keith notices, it shows its age: the extensions to the X11 protocol have grown in importance over the X11 core protocol. If we would have the chance of redesigning the X11 protocol, without having to worry about backwards compatability, what new features would we include and which obsolete features would we drop.

The first things to include would be vector (OpenGL-style?) graphics and scalable, anti-aliassed fonts. I see this as a step towards a resolution-independent graphical protocol. A shift to a global RGBα color model would be logical looking at font anti-aliassing.

If you provide anti-aliassed fonts, it makes sense to drop the current font mechanism. I think the pixel-oriented operations should remain in X12, to allow for emulation of the X11 interface; make them depricated so that we could drop them in X13.

Overall my proposals would favour the TrueColor over the PseudoColor (paletted) displays. It's a price I don't mind to pay considering the advance in graphics hardware over the last decade.


Peter Roozemaal

Time for X12?

Posted Apr 3, 2003 14:47 UTC (Thu) by jamesh (guest, #1159) [Link] (2 responses)

Why on earth would you need to break compatibility with all existing X applications to implement any of those features?

We already have antialiased fonts (through Xft2), and will be getting a good 2D vector API soon (the Xr/Xc client libraries that use the RENDER extension). Further more, the RENDER extension allows you to composite images in RGBA space. All this is possible without breaking every existing X application.

As fontconfig and Xft become more popular, the legacy core X font system will fall into disuse (currently there is only one or two applications on my desktop using core fonts). At that point core fonts may even get switched over to use fontconfig to find fonts, in which case you wouldn't even need to bother configuring the legacy font support.

Time for X12?

Posted Apr 3, 2003 21:47 UTC (Thu) by spitzak (guest, #4593) [Link] (1 responses)

You don't have to "break compatability". What is needed (and is missing
from X right now) is a clear decision that the new interface is the
STANDARD, not an "extension", and THE OLD INTERFACE SHOULD BE EMULATED
ATOP IT.

For instance, multiple visuals and pseudo color are easily emulated
without breaking any applications. Any applications that expect a
"visual" must list the available ones, and they will be told there is
only one (a 32-bit rgba truecolor visual). And a vast chunk of horrid
code can be DELETED from X.

The problem with Xft and so on is that it is an "extension" only. They
should have written things so ALL applications got the same set of
anti-aliased fonts and all ran through the same new code at the bottom.
This could be done by changing Xlib to use the Xft interface. The legacy
system would not "fall into disuse", it would be DELETED IMMEDIATELY,
without breaking any existing programs.

As I have said several times, the X developers should be ASHAMED of the
fact that MicroSoft managed to change their GDI32 interface to use
anti-aliased fonts in a way that all programs could use them without
being rewritten, yet they could not do the same feat.


Time for X12?

Posted Apr 4, 2003 13:54 UTC (Fri) by jamesh (guest, #1159) [Link]

If it didn't break backward compatibility, it wouldn't be X12. The fact that it is possible to build all the features people expect in a modern windowing system without breaking old apps is a _good_ thing.

There is nothing inherently bad about using X11 extensions -- you will probably find that all/almost all of the apps on your desktop are using at least one extension. They allow an application to query whether the X server supports a certain piece of functionality. If the extension is not available, the app can decide to either use some fallback code or simply die.

The extension mechanism is the reason that things like the RENDER extension to be added with minimal impact, and remove functionality that turned out not to be such a great idea (ever heard of the PEX, XIE or Zoid extensions? If not, that proves my point).

In your reply, you seem to have been mixing up interface and implementation quite often. As new functionality gets implemented in the X server, there is no reason why the implementation of the old interface has to stay around -- it could very well be reimplemented in terms of new code.

On the subject of fonts, it is true that the old core fonts API was inadequate which is why a new API needed to be developed. If the old API had been sufficient, then it probably _would_ have been updated (remember that the core X11 protocol is a fair bit older than GDI32). On the bright side, the font configuration portion of Xft (which is now in a separate library since Xft 2.0) is generic enough that it could be used to configure the selection of fonts available through the core protocol which would allow an administrator to configure the same set of fonts for both APIs.

Time for X12?

Posted Apr 3, 2003 18:59 UTC (Thu) by iabervon (subscriber, #722) [Link] (1 responses)

I agree with dropping visuals from the protocol (the library could tell you about your visual, if you asked, but you'd always get the same one). Just have 32-bit rgba colors with no indexing.

The old font interface should remain, since programs use it. Furthermore, the best fonts are really the non-anti-aliased bitmap fonts which were hand-crafted at the resolution you're using. It's just for applications which want a range of fonts, sizes, and effects that scaled anti-aliased fonts make sense. Of course, like the rest of the core protocol, the old font code should support blending when using a semi-transparent color.

Time for X12?

Posted Apr 4, 2003 13:40 UTC (Fri) by IkeTo (subscriber, #2122) [Link]

> best fonts are really the non-anti-aliased bitmap fonts
> which were hand-crafted at the resolution you're using.
> It's just for applications which want a range of fonts,
> sizes, and effects that scaled anti-aliased fonts make
> sense.

Definitely not the case. Antialiasing is needed whether or not your fonts are tuned to a particular number of pixels. It fixes one primary issue: the screen resolution is far from enough for human not to notice the artifacts. When the screen shows you a slash, you see a staircase instead. The problem is there unless your screen resolution is in the order of 1200dpi, which for a regular notebook screen it is something like 14000x10000 resolution. Until that kind of resolution becomes available at low cost, anti-aliasing reduces the problem by changing pixels that should be partially filled to a color partially black. The actual improvement is within the brain, not on the paper or any physical phenomenon. The brain process the greyscales into in indication that the character is smooth. If you enlarge it you'll find the character not as clear as a carefully engineered character, but at a reading distance you perceive a better quality character.

Even the printers use such techniques: larger and smaller dots at the edges and corners of the characters it prints improve dramatically the perceived beauty of the fonts. And we are talking about 600dpi there. Screen fonts are definitely not an exception.

A discussion with Keith Packard

Posted Apr 3, 2003 17:20 UTC (Thu) by Baylink (guest, #755) [Link]

For what it's worth -- and I've been active on the net since about 1984 -- I thought this was a very good interview, and it doesn't seem at all to paint Keith as a whack-job, as some people are suggesting.

I especially liked "a success catastrophe"; I think that's a delightful capsulization of a fairly common problem -- and as long as X has been around, I believe he's right: it hasn't reached the tipping point climbing it's popularity curve yet.. at least, not on a *consumer* scale.

For all that we like to rave about Micro$oft, it's well to remember that there are over *100 million* copies of various Windows based OSen out there -- it's not *quite* as bad as we give it credit for. Will X scale to 100 million copies?

Not if the development process is what he says it is.

There's a common error that's made in management, and makes itself in projects like this: assuming that someone who is good at X will be good at *managing* X.

This is rarely true; management is a different skillset almost entirely.

In most cases, it's just the joy of X that makes people do it; this doesn't transfer well to management tasks.

But who knows; I could be wrong; maybe it's just me.

So many things are just me.

Traditional environments

Posted Apr 3, 2003 21:31 UTC (Thu) by Ross (guest, #4065) [Link] (1 responses)

> One obvious first step is for X developers to start using
> modern applications; many key X developers wear the badge
> of 'twm' or 'fvwm' with pride.

What's wrong with those? I also do not like these "modern"
applications. I use tvtwm because it works the way I work.
X is nice because it lets people choose different environments.
That's why we can have GNOME and KDE. Telling people to use a
specific desktop because it is modern is not compatible with
that model.

The real problem is that they aren't letting new developers
who prefer KDE or GNOME to participate. They should have
a say just as the users/developers of the "old" interfaces.

Traditional environments

Posted Apr 4, 2003 0:01 UTC (Fri) by melauer (guest, #2438) [Link]

>> One obvious first step is for X developers to start using
>> modern applications; many key X developers wear the badge
>> of 'twm' or 'fvwm' with pride.
>
>What's wrong with those? I also do not like these "modern"
>applications. I use tvtwm because it works the way I work.
[snip]
>The real problem is that they aren't letting new developers
>who prefer KDE or GNOME to participate. They should have
>a say just as the users/developers of the "old" interfaces.

I think the point is not so much that new developers aren't allowed as much input, but that there are too few developers who are familiar with modern Window Managers.

More generally, the claim here is that core XFree86 developers aren't familiar with the _applications_ which are running on XFree86 nowadays, the most important of which being the Window Manager. Even moreso for full fledged Windowing Environments like KDE/GNOME, which are supposed to be standards to which applications are coded. Knowing what users are trying to do with your software is a major clue as to where future development should lead. Perhaps too many XFree86 developers don't have that particular clue? Perhaps some XFree86 developers have no idea what other developers have had to add to their own code in order to achieve functionality which should probably exist in XFree86? I think that's what is being suggested here.

Most inportant development priority

Posted Apr 4, 2003 3:29 UTC (Fri) by tino16582 (guest, #4520) [Link]

"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."

I fullheartedly agree with Keith that the main priority with such a large and hugely important project is to first have the development process/community-issue sorted out. Otherwise the development will not scale with the increasing size and importance of this project.

Keith's comment on this issue really shows his commitment to the X project, defying those
people who depict him as just another person with a big ego.

--Tino Meinen

Teleconference minutes

Posted Apr 4, 2003 13:57 UTC (Fri) by jamesh (guest, #1159) [Link]

The teleconference minutes were published on the forum list:

http://www.xfree86.org/pipermail/forum/2003-April/001014.html


Copyright © 2003, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds