For our August “Staff Pick” Project of the Month, we selected gnuplot, a portable, multi-platform, command-line driven graphing utility. gnuplot’s Ethan Merritt shared his thoughts about the project’s history, purpose, and direction.
SourceForge (SF): Tell me about the gnuplot project please.
Ethan Merritt: gnuplot was conceived and born more than 30 years ago as an open source data visualization tool. Of course, that was before “open source” had any particular meaning.
The original authors, Colin Kelley and Thomas Williams, posted an initial version that must have filled a need because a user community coalesced around it immediately. A slightly more polished version 1.0, reflecting input from many people, was circulated in 1986. Please note that although the GNU project was also incubating and was announced during this same time frame, the “gnu” part of “gnuplot” is just a naming coincidence. It must have been something in the zeitgeist.
The scope of the project quickly expanded to include support for the huge profusion of output devices (pen plotters, atari/amiga game machines, character cell terminals, etc.) that we all made do with in those days. The sort of cheap and beautiful graphics displays we take for granted now had yet to be invented.
Version 2.0 was released in 1990. In those days, a major feature of gnuplot was that it would run on practically anything and could produce output for practically anything else.
The project has been hosted on SourceForge since 1999.
SF: What made you start this?
Merritt: What I’ve told you so far is ancient history. I didn’t become involved until later. gnuplot was still supporting a huge variety of output modes but had fallen a bit behind the state of the art.
I had been working with ray-tracing and 24bit color displays to generate scientific images for my work, mostly PNG or TIFF output, and it seemed a pity that I couldn’t pair those with graphs of similar quality. So I wrote and contributed a revised PNG driver to the gnuplot project. Things kind of escalated from there.
SF: Has the original vision been achieved?
Merritt: Well yeah. By about 25 years ago, I’d say. The challenge since then has been to stay relevant.
SF: Who can benefit the most from your project?
Merritt: I am continually surprised by how often I see graphs produced by gnuplot in scientific literature, in people’s presentations at meetings, on the Web, and so on. It’s also interesting to see the support requests and questions sent to the various gnuplot forums.
For instance, I learned that gnuplot is used to make weather maps when we got a request to support placement of “wind barbs”. I learned that it is run on handheld devices to graph data collected in the field when someone contributed a driver for a micro printer attached to such a device. And a few people apparently still do have those dusty museum relics like pen plotters that they want to use.
Me, I use it mostly as a back end for computational Web services. Gnuplot can generate either client-side or server-side interactive visualizations of uploaded data.
SF: What’s the best way to get the most out of using gnuplot?
Merritt: Dig in. Look through the on-line demo collection. If you run into problems, ask questions on one of the mailing lists or user forums.
SF: Have you all found that more frequent releases helps build up your community of users?
Merritt: I think so, yes.
For 20 years or so the project would put out a new release “when needed”, which effectively meant “not very often”. I became personally involved in orchestrating releases about 10 years ago and eventually took over the job. Now I try to package up an incremental release every 6 months “whether it’s needed or not”.
SF: If you had it to do over again, what would you do differently for gnuplot?
Merritt: The graphics capability that everyone has on their desk, their phone, or for that matter on their car dashboard or toaster oven, was unknown and largely undreamed of in 1980. I can only guess that if the original gnuplot developers had looked 30 years forward in a crystal ball they would have designed in 3D display from the start. But they didn’t.
The program is architected in terms of 2D display coordinates. Even when drawing beautiful 3D surfaces with hidden line removal, it’s all calculated as a 2D projection.
SF: Any reason you can’t do that now?
Merritt: We’ve talked about it. But it would require a huge rewrite. If you really need a 3D visualization tool, as opposed to 2D display of 3D objects, I think gnuplot is not where you would start. Having said that, both the printed page and the screen you are reading this on are 2D surfaces. And gnuplot handles those just fine.
[ Download gnuplot ]