The history of Mesa
The Mesa project (aka "Mesa 3D") is "almost old enough to drink" (21 in the US), said Ian Romanick when introducing Brian Paul's X.Org Developers Conference (XDC) talk. Paul is "the father of Mesa", Romanick said; he was presenting a look back at the 20 (or so) years of development on the open source OpenGL graphics language implementation.
Paul noted that there is some question about when development on Mesa actually began. He has been doing some archeology to try to figure it out, but he doesn't think the August 1993 date noted on the Mesa web site is correct. He thinks he may have gotten started in 1992 and hopes to eventually find the Amiga floppies (with timestamps) to determine that.
![[Brian Paul]](https://static.lwn.net/images/2013/xdc-paul-sm.jpg)
He was following the comp.graphics newsgroup in 1992 when Silicon Graphics (SGI) posted an announcement of the OpenGL language. At the time, he was working at the University of Wisconsin on a visualization package using SGI's IRIS GL, which was "terrible". There were other contenders for a replacement (e.g. PHIGS), but SGI was pretty dominant in the graphics world. After the announcement, he read all the documentation "in a couple of days" and "jumped pretty quickly" into OpenGL. It was "beautiful and slick", he said, which is an interesting comparison to OpenGL today, which has 1000 functions and "tons of ways to do the same thing".
Prehistory
Before all of that, though, he got started with computers (and graphics) as a freshman in high school on the TRS-80 Model III. It had 128x48 monochrome graphics (with non-square pixels) and he wrote a paint program for it in BASIC. That's what got him "hooked on graphics", he said.
His first computer was an Atari 800XL, which was a "quantum leap" as it was the first color graphics he had access to (160x192 with four colors, or 320x192 monochrome). Using that, he wrote a 3D modeling program, a 3D renderer using Painter's algorithm, and a ray tracing program. The ultimate output from the ray tracer was a ten-frame animation that took two-and-a-half days to render.
By the time he got to college, he had an Amiga 500, which had 640x400 resolution with 4K colors. Even though it had lots more RAM (1M vs. 64K on the Atari), it still lacked the memory for a real Z-buffer. That didn't prevent him from writing a scan-line rasterizer with lighting and dithering as well as another ray tracer. That was all written in Modula-2 because that compiler was cheaper than the Amiga C compiler, he said with a laugh. He did eventually switch to Matt Dillon's C compiler when that became available.
In the early 90s, he was working on visualization software on "really expensive" workstations (like $180K). The price of those workstations made them prohibitive for most, but there were other barriers too. Each vendor had its own API for graphics, so graphics programs had to have multiple backends to support each. But SGI and IRIS GL were pretty dominant, and that was most of what he was doing then.
There were lots of 2D workstations around at the time, it was 3D hardware that was lacking. The Vis5D 3D visualization package for atmospheric science that he developed needed to be able to run on 2D workstations. He found the VOGL library that was a small subset of IRIS GL. It didn't have triangle rendering or hidden surface removal, both of which he hacked in. "It worked but it was ugly", he said.
When OpenGL was announced, he immediately knew it was the direction he wanted to go. SGI targeted it to replace all of the other alternatives, and some industry players (DEC and IBM) were supportive of that, but others (Sun and HP) were not. But it took a surprisingly long time before vendors had OpenGL implementations. It was 1994 or 1995 before SGI shipped anything, he said, and it wasn't until 1996 that it was available across all SGI models.
Starting from scratch
He began work on Mesa (though it didn't yet have that name) in either 1992 or 1993. He was working on the Amiga at home and on Unix systems at work, using floppy disks to move the code back and forth. He developed the device driver interface to accommodate the two different drawing interfaces (Amiga and Xlib).
He had a "lot more spare time then", he said, so he had a mostly complete OpenGL implementation in November 1994. It was still missing some features, but he was using it at work and thought it might be useful to others. So he started talking with SGI about open-sourcing the code.
SGI was "pretty reasonable", he said, contrasting that reaction to what he thinks Microsoft would have said to a similar request. He and SGI went back and forth a bit, but eventually the company said "go for it". SGI said he shouldn't use the letters "GL" in the name and that it needed a disclaimer saying it was not a "real OpenGL". The irony is that today Mesa is a real OpenGL "and we have the certification to prove it", as an audience member noted. The name, Mesa, "just popped into my head one day", Paul said.
He thinks that SGI was receptive to the idea of releasing Mesa because it wanted to get the interface out in front of people as much as possible. Open source would "push that goal forward". Folks that didn't have OpenGL for their workstation could get Mesa instead, so it filled a hole in the ecosystem.
He got permission to release the code in early 1995 and announced Mesa 1.0 beta on comp.graphics on February 3, 1995. When he did that, he had no feel for how much interest there would be, but within days it became clear that there was lots. He started receiving dozens of emails about the project, ranging from "wow" or "thanks" to patches.
To support the project, he wrote his first page for the web, which was just getting traction at that point. He also set up a mailing list. He only had email access at work, so he had to try to deal with the mailing list before work or on weekends. As the project quickly ramped up, his boss, Bill Hibbard, was quite supportive and allowed him to use part of his workday for Mesa. The project owes a lot to Hibbard, he said.
Early days
In the early days, the project faced a number of issues. Supporting multiple different systems (IRIX, SunOS, HPUX, ...) was sometimes difficult due to compiler incompatibilities. Some of those kinds of problems are still seen today. The displays could be problematic as well. 24-bit displays were expensive, so most displays were 8 or 16-bit. That meant dealing with color maps and dithering. He remembers spending "days and weeks" on dithering patterns, which just "seems crazy" today.
Handling lots of patches and rolling out new releases without using revision control was another problem area. He's not sure why he didn't use SCCS or RCS, but he didn't have any revision control until Mesa moved to a SourceForge predecessor in the late 1990s, he said. Performance was another issue. PCs had 16MHz 386 processors. Workstations were faster, but "still not super fast". Calling Mesa "interactive 3D graphics" was sometimes an overstatement, he said.
But OpenGL was "pretty small back then", so he could still keep all of the Mesa code in his head in those days. That "was a lot of fun", but with a million lines of code today, Mesa is "pretty overwhelming".
Late 90s
In the late 1990s, 3D was really starting to take off. There was consumer 3D hardware available from companies like NVIDIA, ATI, Matrox, 3dfx, and others, with price points that were fairly reasonable. Those cards used Direct3D, Glide (for 3D effects), or some one-off vendor API, and there was little OpenGL support.
SGI did open up its GLX client/sever code so that programs could use OpenGL in X windows. The Utah GLX project, which was an XFree86 server-side driver that provided indirect rendering, also got started. Paul said he was not directly involved in Utah, but it attracted some talented developers to Mesa. That included Keith Whitwell who had done a lot of work to increase the performance of Mesa. Around that time, John Carmack of id Software donated $10,000 to Mesa, which funded more of Whitwell's work.
In addition, Precision Insight was formed as a company to work on X and other related technology in 1998. Paul met the founders of the company at the SIGGRAPH 99 conference and joined Precision Insight in September 1999. That meant that he could finally work on Mesa, Direct Rendering Infrastructure (DRI), and GLX full time. Prior to that, most of his work on Mesa had been done in his spare time.
In the 2000s, DRI became well established. Precision Insight was acquired by VA Linux, but then the dot-com bubble popped "and we all got laid off", so he helped form Tungsten Graphics with other former Precision Insight employees in 2001. There were multiple releases of Mesa (4.x–7.x) over that decade with "lots of hardware drivers". The Gallium3D project was started by Whitwell in 2008 to simplify creating new 3D drivers. The existing device driver interface was not a good match to what the graphics hardware was doing, so Gallium3D provided a different interface that would help reduce the code duplication in Mesa drivers, he said.
Today
Paul said that he never expected Mesa to be so successful, nor to last as long as it has. He would have guessed that vendors would put out their own OpenGL libraries so that there would be no need for Mesa. But people still need software rendering, using llvmpipe and other drivers. It's also important to have an open source implementation available that people can adapt and use for new projects, he said.
There have been as many as 1000 contributors to Mesa over the years, which is far beyond what he expected. The project has grown in size and complexity beyond his expectations as well. Mesa is in all of the Linux distributions and used by thousands (or millions?) of users every day. By his measure, it is a "very successful project".
Paul outlined what he saw as the keys to that success. Mesa was "the right project at the right time". He happened to have a job that caused him to follow comp.graphics, which led him to start the project. If he hadn't, though, someone else would have around the same time, he said. He also has always liked the perspective that Fred Brooks has espoused about computer scientists as "tool makers". He took that idea to heart and made a tool that others use to do their job. In the early days, that job was visualization, today it is entertainment, which is "not as noble" as it once was, "but still pretty cool".
As project lead, he let people "smarter than me" take control of areas they were interested in. Beyond that, the Mesa development community has always been "pretty civilized". There are no insults or screaming in the mailing list. He has seen other open source leaders who do that and he doesn't like it at all, he said. But perhaps the most significant reason for Mesa's success is that it was following a specification. "We are the carpenters" who are building a "house that someone else designed".
He closed by thanking the developers who contributed "amazing work" to the project over the years. Mesa is now his calling card and the project has greatly exceeded his expectations. In addition, he met some of his closest friends through the project.
At the start of the talk, Paul said it has been around five years since he last attended an XDC. He is now with VMware (which bought Tungsten Graphics along the way). He said that he was quite impressed to see all of the new faces of those involved with X today. Keith Packard likely summed up the feelings of many in the room (and beyond) when he thanked Paul for his longtime work on an important project that is available as open source so that it can be used by all.
[I would like to thank the X.Org Foundation for travel assistance to
Portland for XDC.]
Index entries for this article | |
---|---|
Conference | X.Org Developers Conference/2013 |
Posted Oct 3, 2013 8:16 UTC (Thu)
by Seegras (guest, #20463)
[Link] (6 responses)
Did anyone tell the USians how absurd their "drinking age" is? You can drive and enlist in the army, but you're not old enough to drink alcohol?
In the rest of the world, it's 16 or 18 (here, it's 16 for low-alcoholic beverages like beer and wine, and 18 for spirits), AND the general age where you count as "adult" in front of the law (and when you can, or must, join the army; and are allowed to drive cars) is also 18.
Is this a remnant of the prohibition? Because sure as hell, the law cannot be very ancient: In the middle of the 19th century, everyone was drinking beer and cider, even small children (it was actually served in boarding schools).
Posted Oct 3, 2013 9:06 UTC (Thu)
by mpr22 (subscriber, #60784)
[Link] (3 responses)
Posted Oct 4, 2013 18:54 UTC (Fri)
by giraffedata (guest, #1954)
[Link] (2 responses)
The reasoning for that change was almost exclusively reducing drunk driving injuries. Statistics showed that people 18-21 were especially bad at driving while drunk. And also, prohibition for young people was more palatable than for people in general because many people could still remember the drinking age being 21 before (so it felt normal).
Immediately after Prohibition, as a compromise, the drinking age was 21 in most states. But the youth movement in the 1960s, focusing on the observation that a 19-year-old was old enough to die in Vietnam but not to vote or drink, caused the drinking age (and the voting age) to be lowered then. Most states lowered it to 19 (the same as the conscription age), but many lowered it to 18.
The interstate diversity of drinking age was even more dangerous in terms of drunk driving than individual states having lower drinking ages, because it caused young drivers to drive to another state to drink, then drive back home. The 10 mile road between Washington State University, where the drinking age was 21, and Moscow, Idaho, where it was 18, was famous for its drunk driving death toll.
Posted Oct 7, 2013 15:48 UTC (Mon)
by dpquigl (guest, #52852)
[Link] (1 responses)
http://en.wikipedia.org/wiki/National_Minimum_Drinking_Ag...
Posted Oct 7, 2013 16:48 UTC (Mon)
by giraffedata (guest, #1954)
[Link]
The tying of highway funding to the drinking age is not inconsistent with the fact that the drinking age was raised primarily because of concerns about drunk driving.
Drunk driving was the primary argument given for making a state's federal highway funding contingent on the state's drinking age.
And the states didn't exactly have the change forced on them either, since
the federal law was proposed by and passed by representatives of the states.
Posted Oct 3, 2013 17:48 UTC (Thu)
by mathstuf (subscriber, #69389)
[Link]
More seriously, it is a sad that a popular life goal for high school students involves "be 21 so I can buy my own booze".
Posted Oct 4, 2013 16:29 UTC (Fri)
by tjc (guest, #137)
[Link]
The rest of the western world, perhaps, but not everywhere. In Saudi Arabia, for example, one risks being beaten for drinking at any age.
Posted Oct 7, 2013 16:14 UTC (Mon)
by ortalo (guest, #4654)
[Link]
Old enough to drink
My impression is that in the early 1980s a few states raised their drinking age to 21 (ostensibly over concerns about youth drink-driving), then kicked up a stink about young people driving to buy booze legally in the state next door and managed to badger the federal government into saying "raise your drinking age to 21 or we'll pull your highways funding" or something along those lines.
Old enough to drink
Yes, the recent trend in the US has been raising the drinking age. At the beginning of the 1980s, about 10 states had 21, and by the end they all did.
Old enough to drink
Old enough to drink
Old enough to drink
Old enough to drink
Old enough to drink
The history of Mesa
But also - what he cannot tell us - with the right people... ;-)