Linux would not be nearly so compelling without its myriad of window managers and profusion of graphical apps. All this diversity is based on a single foundation that is almost as pervasive as the Linux kernel. When people choose Linux or BSD, they almost always choose XFree86 as their X server. Yet the humble humans behind it, working hard at the coalface creating a free X windows environment, are largely left out of the limelight.
Now at seven years of age, XFree86 is happily tramping towards version 4.0. It's time to sweep aside some of the modesty and ask the president of XFree86.org about the guts of the code, and the guts of the coders. I spoke with David Dawes in his Sydney office about all things X.
David Dawes was a PhD student in Theoretical Physics when he started playing around with X source code. He is still working in the same place, at the School of Physics, Sydney Uni, although now he is the Network Administrator. He works on XFree86 in his spare time.
Back in 1991 before Linux was around I was running System V Release 3 and later 4 for PC - this was the only unix you could get. Thomas Roell, who got everything started, he wrote an X server for these operating systems, and when X11R5 came out he included his code in that release. It was the first time an X release had code for PCs.
There were a lot of variations between the different vendors, so X didn't really run very well on the machine I was using. I wanted to make it work so I started getting into it and fixing stuff up.
Then there were a couple of other guys (Glenn Lai, Jim Tsillas) who started improving the perfomance of it, independently, and a fourth guy (David Wexelblat) who was interested in getting stuff working. He got all of us together, to co-ordinate what we were doing, and that's where it all started.
We just started by releasing patches for the other code.
Q: so how come you had the source code in the first place?
The MIT X consortium releases all its code as source. That includes the Intel X server stuff.
Q: but it wasn't good enough for you?
Well it didn't run on our machines! It was just small differences between the platform the guy developed it on, and the one I was using.
Q: and the four of you had the same machines, or different machines?
No, different. We all worked on different aspects of it.
Q: so how did you get into it? You obviously had to learn a lot about hardware issues?
Well most of the stuff I started on wasn't really hardware, it was just OS related issues, normal software porting issues. And I'd been doing a lot of that anyway getting other stuff to run on these platforms, so I'd built up a bit of experience. I learnt a lot more getting the X stuff going, 'cos I had to learn about networking details and that sort of stuff. I didn't get into the hardware until I looked into the code for perfomance speed-up that some of the other guys were doing.
Q: they had some sort of VGA graphics card but X wasn't working with it?
Only a small range of cards were supported initially. The card to have at the time was based on the ET4000 chip, which was actually pretty good for the time.
Q: and how did other cards start coming into it, did your group of four do that?
That sort of came later I think. As we started to get things working, and co-ordinating releasing patches, we got a group of people to test stuff out, even then it was starting to grow. Then some other people would come along and say "my card doesn't work". We said, "well, write a driver for it."
Q: and you were able help with that?
Yeah. At the time there wasn't a lot of variation between the graphics cards. The only main hardware dependence was how you selected between the different 64K banks of video memory. Standard VGA only gives you a 64K addressable range, to do anything useful you need a lot more video memory than that.
So most of the differences were in sorting that out. It's got a lot more complicated now.
Q: this was still basically so that people could run it on the machines that they happened to have, so they could get a proper X windows on their Intel box?
Q: so when did you first get the feeling that it was really going to be a big thing?
Probably a year or so down the track. Lots more people kept coming on board with different things to do with it. Linux and 386BSD were just starting to come out around that time. The project first got together around May '92, and a few months after that we started getting support for Linux and 386BSD into it. I think once the free operating systems started to come out, the whole idea of free software on Intel platforms started to get a boost, and I think that helped everything work together and make the thing grow.
Q: so you had the GNU tools around?
Yeah we had the GNU tools around. They'd been around for a while.
Q: when you started on X, were you using those tools?
Yes. Particularly the C compiler. All these operating systems had C compilers, but they were pretty lousy compared the GNU one. And the other thing is the GNU one gave you a single system for compiling on all the platforms we were going to work on, which actually helps a lot. GNU tools are pretty important I think in all the free projects.
Q: how important was BSD as well as Linux? Linux is getting all the attention these days...
We actually were running on BSD about a month before we were running on Linux, as things happened. I got interested in BSD because I think I found it more useful at the time, in the early days. I don't know if it's a coincidence that both things were happening at the same time, or not.
Q: how did people find out about XFree86?
Most of the activity was on one of the newsgroups, almost all of the stuff.
Q: which newsgroup?
comp.unix.sysv.i386 - something like that, I don't remember the exact name. Because if you run those operating systems, that's how you'd find out problems with it, or find out if you could get new stuff.
Q: and were there other people working on different projects, or was this the only X project?
Thomas Roell did the initial work, and then he was talking about starting to make some money out of it and turning it into a product. Actually at the time it was included the X release, he was working for a company, and they donated the code to that release. And some people got really arrogant about it, and said you shouldn't be taking this thing you've written and start making money out of it. That seemed to me to be a point where he decided "screw the free software side of it I'm just going to go and make money, if you give things to people they're just nasty to you." That's the impression I got, how accurate that impression is I don't know.
Q: and what product is that, did it go on to be popular?
Yeah, X386 it was called, the current incarnation is XiGraphics AcceleratedX.
Q: right so it has definitely lived on?
Oh yeah, sure. I mean Thomas is still there, and he's the driving force behind XiGraphics.
the careful art of licensing
Q: so that sort of comes into licensing, you've got the BSD license?
It's actually the MIT license. To the casual observer it's pretty much the same as the BSD license, but the BSD license has clauses about stating in the documentation who the copyright holders are, the MIT license doesn't have that. It's probably the simplest license you could have without actually making it public domain.
Q: why did you pick that one, how did that happen?
We were using that code, and that was the license the code was under, so it just seemed natural to us to keep using that.
Q: you inherited it?
Yeah that's exactly right, we inherited the license. And as things progressed and X11R6 was just around the corner, one of our goals was to get the improvements we were making back into X11R6, and to do that, we needed to stick with the same license, otherwise it wouldn't be accepted. The other thing about the license is that it's a license that doesn't cut out any groups. The BSD people are happy with it, even the GNU people can use the software. Even though they'd like it to be GPL, they much prefer that license to some of the others, because it doesn't prevent them from doing what they want to do with it.
Q: you think that a GPL would actually exclude groups?
Theres a philophical difference between that and the other style of license. Probably most of the free software groups would still use it, but we've never had any objections to people taking the code and selling it and doing what they want with it.
Q: you don't care about that?
No we don't care about that, the idea is that they can't take it away from us, so what do we care, we're doing it anyway. We don't lose anything by it. In fact I think XFree86 has gained from it, we've had quite close relationships with companies which have contributed back to us, and if they couldn't have used the code commercially themselves, then maybe they wouldn't have done that.
Q: Richard Stallman sees commercial software, proprietary software, as against society. What do you think about that?
Well I don't agree with that. I think people have gotta make a living. Most of the people involved in XFree86 make a living out of software one way or another, some more than others. I guess Stallman's idea is "well you can charge people to support it", I don't know if he agrees with that or not, but that's what happens with a lot of GNU stuff.
I think people should make their own choices. I think the freedom is in the freedom of what you do with what you produce.
Q: so you're happy to share the information?
Q: and then people do with it what they want?
Yeah. It's nice when they share back, but I don't put that as a pre-condition.
Q: you might even see this as even freer than freeware?
[laughs] Well everyone's got their own definition of freeware.
Q: yeah, I'm just playing a word game.
I think free has never really been free in terms of money, because everything has a cost associated with it. Everyone's gotta eat, so they've got to make a living, they've got to survive, and if they're working on free software then the resources for doing that come from somewhere. So I think the money side of it is not a big deal in terms of the freeness. I think of freeness in terms of what you can do with it.
Q: while we're talking about licensing, this business you had with the Open Group?
The Open Group, yes.
Q: how did you first find out that they were going to go closed source on you?
I think it was someone pointed out to us that there was something on their website about X11R6.4 and it was available to members, and there might have been some details about the licensing that would be in place when it was going to be opened up more widely. We were a little disappointed that they didn't tell us about it in advance. Apparently it happened very quickly, and even the people working on it, didn't know what was going to happen until the last minute.
Q: so you're saying it came from management, not from the coders?
That's the feeling that I have. What was driving it, the impression that I got was that they were having problems funding the development. Traditionally it was funded by companies who were interested in X development, because they used the product themselves, that's how the original MIT X consortium worked, they provided staff from funding for the development. At the time X11R6.3 was released, there was talk about folding the consortium altogether, or changing the licensing at that time, as a way of getting money, so basically companies who used the software would have to pay for it. That didn't happen for R6.3, but they decided that the consortium would fold, and the Open Group took it over.
And they ran it without any signifigant changes to licensing until the time for the R6.4 release came. And then they too had the same problem, how were they going to fund the development work? So they decided on a licensing change.
Q: and how did you react to that?
Disappointed, both at the change, and the fact that it wasn't really discussed. Not that we were members at the time, we didn't join the Open Group. The reason why we hadn't joined was that it was too expensive. [smiles] That was the main reason anyway.
Q: what did you then do?
We had to make a decision about whether we would go with the new license or not. And we actually thought about it very seriously.
Q: and how was the new license different?
The main difference is that it wasn't free for commercial use. It also probably couldn't have been distributed on CD-ROM.
Q: so RedHat wouldn't have been able to use it?
I think what they would have to have done is to buy a license to distribute so many copies. And it wasn't all that expensive, I mean that could have done that. I think in an attempt to prevent loopholes they had to basically make it so that if you sold it, you had to be licensed. There were all sorts of implications for people who put it on FTP sites, but I think that was basically going to be OK.
Q: so you decided not to do that?
We decided not to go with that. In our development branch, we'd incorporated a lot of the code, because we didn't know this change was going to happen. So we then had to decide what to do with it, were we going to back it all out, or what? So we eventually did back it all out, 'cos it looked like the situation wasn't going to change.
We did have some discussions, quite extensive discussions, with people at the Open Group about the licensing. And they proposed various alternative licenses, and we looked into them very seriously, and eventually decided we couldn't accept them.
Q: so why didn't you accept this more restrictive license?
Well some of the licenses they offered weren't too bad for most open software groups, but they were unacceptable to some groups within the open software arena, and we didn't really feel that we should have to go back, take a backward step from our licensing. After all, we'd inherited it from them, we thought it was great, and we didn't really see why we should be stepping back from that.
We consulted with other people in the free software area, and we were supported fully in that.
One of the options was a perl-like license, artistic license. When you start reading into some of these licenses, you see some things, some of the clauses actually either impose a burden on people writing or distributing the software, or they sort of cut areas out, either intentionally or unintentionally. The freedom to do what you want with the software sort of disappears, to some extent.
Q: so that's what you were concerned about?
Yeah that's what we were concerned about, that's what we've been about all the time, the freedom for anyone to use it, more or less however they want. And that's what was being eroded there.
Q: so your negotiations, they failed in the end?
Yes they failed in the end. We bascially said, "well it's not acceptable to us." And they said, "oh that's probably the best we can do."
And not too long later they changed their mind. I think it bascially happened because there was a lot of restructuring going on in the Open Group. The X project team was pretty much disbanded, I don't think any of the original people are still there. And about that time they reverted the license back to the traditional license, so after having backed all their code out, we put it all back in again! [laughs]
Q: so your stand for freedom was a success?
I think it paid off, I don't know how much direct influence we had, but it probably stopped a lot of the Linux vendors who might have been tempted to go on board with it - joining the Open Group and paying them. Now I don't know if that was a signifigant impact on their revenue they were getting, I actually doubt it.
Q: but the other thing was the question of who defines the X standard itself?
Well that's a different matter I think. I think you need to have a body that does that. And they never put any conditions on the standard, they didn't try and make the standard restricted, the standard was still an open standard.
Q: it was just their version?
Their implementation, what they call a sample implementation.
From their point of view it was still free, but with strings attached.
Q: so if they added a whole bunch of new features in a future version, you'd have to recode them for no apparent good reason?
Yeah, that's right. And that's what happened with R6.4. There some interesting new stuff in there, that we would have had to either reimplement, or go back to the people who contributed it and say "will you give it to us under a different license?" That's one avenue we were going to look at. But it turns out we didn't have to worry about that.
Q: so did it set the project back much, this mucking around?
Whether it was wasted I don't know, but we spent a lot of time considering licensing issues. On the other hand, we've been through all that now, so if these sort of things come up again, we don't really need to go over that ground in the same way. We're probably more confident in our position.
Q: I think to the wider community it was a bit of a flag waving exercise that you were willing to stand up for this.
Yeah. I have no doubts that we made the right decision. The only thing I regret
is the sort of time we spent. We could have been doing other things.
getting cosy with the hardware companies
Q: non-disclosure agreements - what does that mean to you?
Oh yeah... I have to be careful what I say here, my initial reaction was "trouble."
It's a problem, but I can understand why vendors need to do it, I think they're probably a bit paranoid at times, but seeing the lawsuits that fly around you probably can't blame them. It's partly a matter of education as well, I think a lot of the people in management in these companies, that's just the way they work, and most of the developers they support don't think of free software either. So it's a sort of a new area for a lot of them I think.
What's happened more recently is some of them have provided documentation under non-disclosure, but have allowed source code written with that documentation to be released. And I don't have any problem with that.
Sometimes the source code has to be reviewed to make sure you're not giving away their big secrets. I don't have a problem with that either. So I think that's a reasonable compromise, I don't expect them to publish all their documentation.
Q: did it take you long to get to this position?
Yeah, and sometimes it's a new battle every time. It's probably getting easier as the profile of Linux is getting greater. I think the increased profile is helping a lot of free software projects, it sort of carries them along with it in a sense. If people have never heard of what you're doing then they're not inclined to take make notice. The other thing is they think "is it actually going to help my bottom line? Are we going to actually make any money out of this, are we going to get any return for the effort we put in to help you?"
Q: so you're not allowed to reverse engineer either are you, in a lot of these situations?
I think the laws on that are different in different countries and different states. It's not something we try to get into, we don't want to get into legal problems.
Q: so how do you cope then? You've got a limited range of cards that you have access to the details for. You just code for those and ignore the rest?
That's often what happens. If you look back through the history of what we've supported, there have often been cases where we haven't had drivers for hardware, quite often hardware that's in common use. Probably Matrox is an interesting case, because for a long time I didn't think we were going to support their cards at all. Then there was a change of heart in Matrox, and they've actually been very good. Providing sample cards, providing documentation and sometimes sample software that you can use as a reference. I believe they've released some of their documentation freely recently too. So things are a lot better now than what they were.
Q: was there a situation where people were playing with cards and just trying to figure stuff out?
Yeah, that happens. Not so much necessarily reverse engineering as just experimentation. It's not uncommon to see registry dumps of what the Windows drivers set them up to, or some other X server set them up to, just to see what's going on, get a few hints. [chuckles] But certainly it's much easier to write a driver when you've got documentation.
Q: so there's a lot of liaison going on with these companies then. Do you do that from the XFree86 organisation, or do the developers with that card...?
It's usually the developers that do it, although most companies prefer to have a single contact point.
Q: do you think it makes a difference when people come to you and say "oh my card doesn't work with XFree86!" and you tell them, what do you tell them?
We tell them... there's a few different options. Either we haven't got the documentation and not likely to get it. So you can complain to your vendor, or whatever.
The other option is we've got the documentation, but no-one's actually interested in working on it, or no-one's got the time to work on it. That happens quite a bit actually.
See back in the early days, the user base was quite different in profile to what it is now, probably a larger fraction of people were hackers and could work on stuff. Whereas now, and that's part of becoming more mainstream, people just want to use the stuff! They don't care how it works. They just want to use it. That's fine. It just means that the percentage wise the pool of developers the pool of developers is probably smaller.
Q: but in absolute terms?
In absolute terms it's higher, but on the other hand there's a lot more hardware to support too.
Q: different hardware too?
Yes. It's a very quickly changing area too.
the future - XFree86 4.0
Q: what's the future for XFree86 at the moment? Where's it going?
Well we're working on our 4.0 release, which is a major restructuring of the XFree86-specific code. That's still got a way to go before it's finished, but when we've got done what we've got planned, when most of it's done, it should be a lot easier for people to write drivers. Should be a lot easier for vensors to write drivers if they wish too, although it's not exactly open source, it's a good start I think to get vendors interested in writing drivers, and for people that just have the hardware and need to be able use it, that gives them an option.
Q: so you're talking about binary drivers?
Yeah. That's already happening to some extent, with Precision Insight a company that's being funded by RedHat to do driver development. They've done two main drivers so far, one for the NeoMagic chipset, and one for the Intel 740. The NeoMagic one, they've been given permission to release that as open source code. So that's a case where it looked like we were never going to get it out, but through their contacts at NeoMagic, they actually did a binary driver first, and then they got permission to release it as open source.
Q: once they put their toe in the water?
Yes, I think getting hardware developers more interested in this stuff and more aware of it and maybe even writing drivers, it might end up opening up things.
Q: so nowadays you can buy network cards and the floppy disk will come with a directory called Linux, and there's like a .c file in there with a driver on it. Has that happened for graphics cards yet at all?
No it hasn't happened to my knowledge, no.
Q: but this new design could make it easier?
I think that'll hopefully make it easier to happen and even if it's not a .c file it might be a .o file. [grins]
And also it wouldn't just be Linux, it's a loadable server design, we're using a loader that Metro Link donated to us. That's one of the examples of the commercial partnerships, that's been working really well for us over the years. With their loader, the driver modules are OS independent, so if the vendor supplies a Linux module, it'll run on FeeeBSD, Solaris, any other x86 platform, any other Intel platform running Unix, even OS/2. The loader really is platform independent. So that's great for those of us keen on some less popular free operating systems like the BSD's.
Q: but not Alpha of course?
Well that's another matter. Alpha's a much smaller market. 'Course once the source code's available, and if the migration of vendors releasing object format drivers to releasing source drivers happens, as we would like it to, then other platforms like Alpha and SPARC and PowerPC and so on will be OK too.
Q: so Xfree86 runs on Alpha?
Q: and PowerPC?
Q: what about a change of name here, XFree86?
That's part of our history. [smiles] No seriously, a lot of people have mentioned taking the 86 out of our name.
A lot of people call it that anyway. Take a look at xfree.com, you might see one reason why we're reluctant.
No really it's part of our name, it's part of our history, I mean the name came from X386, which was Roell's initial product, "X free eighty six ... X three eighty six," as soon as thought of it we thought [click] that's the name, there was no question. 'Cos we had to decide what to call ourselves at some point. Once we got beyond just making patches for X386.
Q: so you've got the modules, the loadable modules happening for version four?
Q: are there any other major changes?
Yeah well associated with that the driver architecture's been reworked to make it more modular and have the layering much cleaner. Anyone who looks at the existing code will know it's a horrible ugly mess. Certain people have been telling us that for years, but we know that already. So we cleaned a lot of that, it's a big job because it means the drivers have to be reworked to fit into the new architecture.
There's also a lot of new stuff that's been made a lot easier by cleaning all this stuff up. Like support for pseudo-colour visuals together with the true-colour visuals, you know the old 8 plus 24. So we got that working, on hardware that supports it. Doing it in software has a few little nasty issues in terms of peformance, but it works well in hardware. We've got some other combinations on some hardware that can do other combined depths.
The other thing that affects a lot of people, is the fact that the user-visible frame buffer format, or the user-visible pixmap format is the same as the frame-buffer format, 24 bit, we're probably the only people in the world who actually use that format. It's actually legitimate, it's part of the X standard, but no-one uses it, for good reasons. [smiles]
It's a bit of a crazy format to use. Each pixel is three bytes - three's not a very natural number when it comes to computing type things - instead of four bytes. The more standard format which everyone else uses is four bytes, the fourth byte's just not used, or used for something else. One of the consequences of the fact that everyone else uses the other format, and we don't, is that a lot of applications expect the other format.
And because of the way X works, to support both formats is actually quite a reasonable imposition on the software, on the clients, the actual application writer.
So 4.0 will actually offer both, but the default will be the more standard format.
Q: so that's a big change?
The acceleration architecture, all that code's been reworked and made much more modular, so that it's actually easier to maintain and it's just much cleaner - should be faster aswell.
Q: so when's it coming out?
That's a good question.
We're planning a work in progress release, probably by the end of June, thereabouts. There's still a lot of work, there's still a lot of things happening right now, so I don't know exactly what's going to be finished in that, whether we're going to meet that aim of ours to get it out by round then or not.
We've been working on this new design probably for a couple of years on and off, but that hasn't been solid work because a lot of other work's been done as well.
Q: and are people running it now?
Yeah I'm running it now. And we've got other people playing around with it. Our developer team's about 500 strong now. Of course, not all of them are active and writing hardware drivers and stuff, but we've got a very large team.
Q: how do you co-ordinate it? a mailing list?
Q: and you have a CVS system?
Yeah we've got a CVS repository, we actually started that in the early days. Once we started getting a lot of patches together and had trouble co-ordinating it, someone said we've got to do something about this. So we set up a CVS repository.
Q: and is that here in Sydney? or is that in California?
No it's here.
Q: is it in this room?
No it's not in this room. [grins] But it is here.
Q: upstairs in the server room or something?
It's sitting on a machine that the project paid for. It used to sit on my machine at home until relatively recently, the last couple of years or so.
Q: over a modem link?
Yeah but we only have a small number of people who actually access it directly. We're starting to open that up within the development team.
Q: so you have anonymous read access?
We do now for the development team.
Q: and you have a bug tracking system?
Nnnn, not yet. It's a work in progress. It's been worked on as we speak. We really need a bug tracking system.
Q: do you want to hazard a guess on when actually version four will come out?
[smiles] I dunno. How long's a piece of string?
We actually have definite goals, we'll know when we get to a certain point. We're hoping that the release actually generates more interest in people actually working on the code. We've been going at it a couple of years on and off, and probably about 6 - 12 months fairly strong effort.
But we need to get more people actually doing things, more very active developers. We've got quite a few key people who are doing a lot of great work, but really there's so much to do, that we could use a lot more people.
Q: 'cos you've got to bring all your old drivers across, haven't you?
Yeah. There won't be many drivers brought across by the time of the new release
Q: and you've also got to keep up with new cards coming out?
Yep. It's going to be a bit of a difficult period, because it's not even a pre .0 release, it's not going to be the most stable thing to start with, like any .0 release. So a lot of people are going to just wanna use the previous verison for a while I think.
Q: but sooner or later you're going to have to stop work on the previous one?
Yeah we've pretty much stopped work on it, we're just doing some maintennance stuff to it now. Trying to work on two versions is no fun at all. It just takes too much time.
We're trying to increase momentum, because if we just let it go as it's going, you know, maybe next year, maybe the year after, who knows? I think deadlines actually help a lot.
Q: but you wouldn't let it go, if it still had major bugs?
Well it's gonna go out as it happens to be I think.
Q: as a pre-release?
Yeah as a pre-release.
Q: but you wouldn't let version four go?
Well we haven't made a final decision on whether we're going to call this version four or not. My personal decision is it probably shouldn't be called version four. Most other software projects have release versions that lead up to a stable release, the Linux kernel the 2.1 series was the development range and 2.2 was the stable result of that.
Q: so the only way you can see the version four source at the moment is to become a developer...?
That's true yes.
Q: so the sooner you release, the more chance you might snare some more audience?
Q: what's happening with 3D support? Is that something that X is involved in
much, or do you leave that to Mesa people?
We've recently imported the Mesa code into XFree86, to form a software part of GLX, that's the rendering back end for GLX inside the X server. Precision Insight has a 3D project going at the moment, and they're the ones that have co-ordinated all that. They basically did all the integration, Mesa, GLX and XFree86, and sent us the patches, and they're maintaining that.
They're also working on a direct rendering interface which will allow clients to have direct access to the hardware. That's what SGI's doing, it's what you've got to do for serious 3D performance. So the X server will play a co-ordinating role, 'cos you can't just have multiple things banging on the hardware, you've got to co-ordinate it and synchronise in some way.
So Precision Insight have funding from RedHat, they've got some good people on board, including a couple of the guys who've been associated with XFree86 for a long time - they did some of our initial accelerated server work.
Q: so Mesa's actually moving into X?
Well, Mesa still remains a seperate project. But they've got the software rendering code that's been incorporated inside the server.
Q: so that's another thing that will come in version four?
Yes. Precision Insight's looking at delivering some of their hardware 3D stuff, atleast the specs for it and initial implementation, sort of around the June timeframe. Whether that happens after we make this initial release or before I'm not sure yet.
Q: so this means when you install XFree86, it'll be able to render GL whether you've got the card or not, it'll just be slower?
Yes it will.
Q: and then, what's the program for then starting to build support for say 3dfx or something into the server?
The 3D area is a more difficult area in terms of hardware vendors because they're much more sensitive about that than how they give out 2D information. So whether we're going to have much in the way of open source drivers for that hardware for a little while to come I'm not sure.
Q: but again because of loadable modules, you can use binary support?
Q: when will XFree86 be multithreaded? is this an issue?
I don't know when. It is an issue in the X server when there are slow
rendering operations that can tie the server up and prevent it from
responding to other clients. This can be an issue with 3D.
Q: what about config, I mean Redhat have done something here, but it's
surely not one of the most friendly open source configuration files?
The file itself?
Q: yeah XF86.config - whatever it is!
People aren't supposed to edit it direct, well the idea, the theory is that you have a configuration tool that takes care of all that.
I don't know what you do about the format itself, I think there's certain things you've gotta be able to tell it, you've got to be able to say. It's a bit of tradeoff between doing that and keeping the flexibility. We could choose to say, "well, it just runs in these modes, runs in these depths, you've got these options, and supports this, this and this card," and you haven't really gotta configure it, it just configures itself.
Or you could say, "well you can tweak this and you can tweak that, do it this way 'cos you like it that way, or whatever"
Q: and you've gone for the wide-open option haven't you?
It seems to be what at least the people working with it think, and atleast some of the people using it think.
I think because you never have the perfect driver, there's always going to be some little things you want to be able to tweak and adjust for different hardware. So you've gotta have some way of doing that.
Q: but it seems that with the release of XFee86 3.3 the defaults are getting better.
That's right, that's what happens. As the drivers evolve, the defaults get better, you learn how to automatically detect what you need to. And one of the problems with automatically detecting things, is that sometimes they're different cards, even though they use the same chips, and you need to take that into account in the way you handle things.
It's probably not as bad now that there's less variation in the way vendors implement cards. But back in the early days of accelerated graphics chips, it was just terrible. To get a driver that supported them all was almost impossible.
Q: that's why you had the different codebase?
Q: with version four it's just one executable isn't it?
That's right, one basic executable, with everything else as modules.
Q: and colour management?
You're thinking about 8 bit colour?
Q: Well, if you have a program that only knows about 8 bit colour, but your server's in 24 bit mode, or vice versa, the program just crashes. And this is something that doesn't happen in Windows or Mac.
That's just a different model. The colour model is quite different with X. That's why atleast when the hardware supports it we will be able to support 8 and 24 at the same time.
And that works for most of the Matrox cards so far, I'm sure it works for a few others too.
Q: so you couldn't fix that without changing the protocol, X? For cards that don't support it in hardware.
Unless someone can come up with a smart software way of implementing it in the server. We are implementing the X protocol, so...
Q: you've gotta work with what you've got!
Yeah, you've gotta remember that the X11 protocol was designed in the late 80's, it's over ten years old, so the choice of the division of responsibility between the server and the client, you might make a different choice now, or you might do things a bit differently now. I think that choice made sense at the time, given the hardware that was around at the time.
Q: I also think about colour management because on the Mac now, and on Windows, you can tune your colour preferences to a particular monitor or a printer and stuff. Is there any talk of that on X?
I think that's largely for the application, but the X library has code I haven't looked at very closely called CMS, that's colour management code, that's on the client side I believe.
Q: so it could be done?
So it can handle mapping of colour spaces and that sort of thing. In the X
server itself in 4.0 we've revamped the way the colour mapping's done
internally so that we can have better control over gamma correction and so on.
And in fact we've added some stuff to one of our extension protocols to allow
that to be changed, while the thing's running, which is nice. That's fine for
normal monitors, but a lot of things like LCD displays don't have a gamma
curve, their respone curve is quite different, so whether or not we could
extend it to more generalised code is another thing.
getting philosophical about free software
Q: why do you think free software exists? And in the 90's we've got this
resurgence of free software?
It's been around for quite a while actually. I remember it sort of starting on the net in the late 80's. My feeling for how it came about on the net was that it was then a relatively small, mostly academic or research community, that were interested in sharing around what they did. So back then if you wrote some software to do some stuff, you usually shared it round.
And I think that's sort of the philosophy, I don't know what you'd call it, an ideological sort of thing. It's driven a lot of people.
Q: do you think the sharing ideology is important?
Yeah I think that's important, I think it gets people interested. I think a lot of people have genuine beliefs in the way these things should be done, and they put their time into it and back it up with that. I think that's genuine.
Q: is that why you put your time into it?
Yeah I believe in it. I'm perhaps not as dogmatic as some people about it. I mean I believe in sharing what I do. I use plenty of stuff that other people do in the same way, you know, I think if you get selfish about it, it doesn't help things. I don't think there's any point to being selfish about software.
Q: when you go home and work on this, what drives you, what's in your head when you sit down and you gotta attack a problem?
Well the important part is probably why I did it originally, once you get into it you're sort of stuck.
When I was first starting out on this stuff, I just did it because I needed to use this stuff. It was pretty personal then. Then other people had slightly different needs, and so you help them out when you can, they help you out when they can. So probably the spirit of co-operation is what got things going.
Then once it sort of gets a life of its own, and you either decide you enjoy doing it or you don't.
Q: and do you enjoy doing it?
Yeah I enjoy doing it. You do a lot of stuff that's probably less enjoyable than it has been. You can't just take the really interesting bits. Otherwise you don't really have a product.
There's always going to be bits that people don't like doing, that truly need to be done. That can be a bit of problem with free software, you know, who's going to do the stuff that no-one wants to do.
[smiles] Documentation can be a bit of a problem!
No if I didn't still enjoy it, I wouldn't still do it. Sometimes I'd like to just be a developer and just do the coding, and let someone else worry about the other stuff. I dunno.
It's been a great learning experience, that's for sure. Not just from the
software point of view.
Q: how many copies of X are there out there now?
Q: there must be millions?
That would be my guess. How many copies of linux are there out there?
Q: so how do you feel knowing that your code's on a million computers?
I don't really think about it like that. Sometimes I think, "shit they're running code that I wrote? Poor bastards!"
Yeah it's an interesting question. There's probably an angle to that in terms of responsibility for what you put out there and people use. There's also a lot of expectations from people.
Q: you don't worry about it much by the sounds of things?
I don't worry about it too much. Sometimes I cringe a little bit, thinking that "oh we let this stupid bug through, and all those people are suffering because of it." So there is that angle to it, it's a big responsibility if you take it seriously. You've got to take some of these things seriously, you learn the hard way that decisions you make, maybe on a whim, are going to have an effect on people, so you've really gotta think about that. Especially the user interface angles. Back when we had a small user base that basically looked after themselves it didn't matter so much.
Q: so user interface is becoming more important even to X?
Well when I talk about user interface, I think more of the way people interact with setting up with XFree86, and unfortunately that's usually the configuration file. There's also the way that people's applications interact with what we provide, if there are bugs, or if there are things the cause application writers to need to do to stuff to workaround. Like that 24 bit thing I was talking about, I think if we realised what a problem it would have been, we probably wouldn't have done it that way. We did it that way because that's all we had that worked.
Q: so if user interface is getting more and more important, and less people are into coding, do you think this scales up? You've got millions of users now, will it go to tens of millions, hundreds of millions?
Q: does it matter?
I think from an ideological point of view it does.
Q: why's that?
I think it helps for this sort of software to become more mainstream. And that doesn't happen because of what we do, that's the user base, the really massive user base.
And that's one of the things that's been happening with linux particularly over the last year or so, it's really taken off. I mean people say that every year, but I think it's taken off in a big way in the areas that traditionally it hasn't been used in or even heard of.
Q: so what you're really talking about here is microsoft?
I guess that's the main competitor, in terms of desktop computers, yeah.
Q: so you think there should be a choice?
Yeah I think it's good to have a choice. I also do strongly agree with the free software ideal. I mean if that happens, then you have a free operating system with all the supporting utilities that are also free. You get the whole free package. I think that's important. Yeah. But as to whether it exapnds to ten million or a hundred million or whatever, who knows?
Q: what do you think of the so called desktop wars between KDE and GNOME?
I don't have an opinion on that. Let them fight it out.
Q: do you work with the people with GNOME or KDE at all? Or is just an application?
Not really, a lot of people don't know what XFree86 is about, and they think that we do applications, and that XFree86 is the desktop. But really we just provide the infrastructure, the libraries and the X servers. And the application developers write all the neat stuff that sits on top of that.
And we're sort of like the kernel and libc.
Q: so what do you think of microsoft?
I don't really want to say anything about microsoft!
Q: but basically people are choosing to run XFree86 instead of the equivalent microsoft thing? I mean does that make you feel good?
I think it makes me feel good they're choosing to run a Unix style operating system. It's always been my passion. As soon as I encountered it, I thought well hey this is the way to go. And it's just gotten better.