I had to reread Bulia's email three times. It was one of those nigh-mythical events that you read happens in Open Source projects, but never see in person. Yet, amazingly, here it was, and I knew Fred's patch would instantly double Inkscape's utility.

Scalable Vector Graphics and the Open Source Community

Inkscape is a program for viewing, making, and editing two-dimensional vector drawings. This is different from "raster" drawing, as in MS Paint, Photoshop, or The GIMP. In those tools you're essentially just "painting" destructively on a canvas. By "vector" drawing I mean that when you create a shape like a rectangle, it retains its identity. You can easily go back and resize it, change its color, or move it around without disturbing the rest of the drawing. Vector drawing is what you'd be doing in Illustrator, Corel Draw, Freehand, Dia, Visio or even PowerPoint.

There have been a number of popular Open Source vector graphics tools such as tgif, idraw, Sketch, and xfig, but one of Inkscape's distinguishing features is that it stores its drawings in a web-friendly XML format — SVG. SVG, an acronym for "Scalable Vector Graphics", is a W3C standard that is gaining support worldwide, in proprietary and public software alike.

The Open Source community is now adopting the SVG format for everything from desktop icons and company logos to web page animation and artistic Illustration. Inkscape (by way of Lauris Kaplinski's popular Sodipodi project) is derived from Gill, one of the first Open Source SVG editors, and so follows a long history of serving the SVG needs of the community.

In the five years since Raph Levien began work on Gill, a huge range of features and capabilities had been added to the codebase. Node editing, alpha blended gradients, object alignment, text handling, localization and more had augmented the basic underlying drawing capabilities to make the tool potentially useful for real drawing work. However, there was one glaring omission for which we and scores of users had been seeking a remedy...

The Contribution of Boolean Operations to Inkscape

I read the email again just to be sure.

"I've been sent a new patch that implements boolean operations...
The license is public domain. It's been uploaded to the patch tracker." — Bulia, November 2003

This was very cool. Boolean operations are a way of taking two shapes and combining them together in various ways to create a single resultant shape. Users of Adobe Illustrator might recognize them in the "Pathfinder". The four basic operations are Union, Difference, Intersection, and Exclusion. It's an absolute requirement for creating any artistically sophisticated drawing, and its lack had held the tool back.

Once before, someone had contributed a patch to add boolean operations, but that patch relied on a polygon clipping library provided under an incompatible license. There's little more frustrating than having a solution in hand, only to be hamstrung by legal problems. Even though it was an important feature for us, we regretfully postponed development of it into the distant future on our roadmap and proceeded with other work.

Here in my inbox, unsolicited and totally unexpected, was the answer. We quickly double-checked that the licensing was clean, that the code was the author's original work, and that it indeed implemented the feature as promised; it passed on all counts. Fred's boolean patch had arrived right as we were releasing Inkscape 0.36, so as soon as that release was out the door we merged his patch and started working with it.

Following our policy to "Patch first, ask questions later", we integrated the new feature as soon as practical, without wasting time arguing about it on a mailing list. We figure that the best way to evaluate an idea is to code it up and see how it works in practice. A working feature now is better than a perfect implementation that still isn't done. Along with that, maintaining a low barrier to entry for new developers is vital; we don't want anyone to give up on contributing out of fear their contributions won't be accepted.