For around a year I've been working on sqlfluff, a SQL linter to keep up with the growing place of analytics code as a store of business definitions.  This post isn't about why I wrote it, but it is about how to start making it a bit more appealing.

Open source logos

Almost all well known open source projects have memorable logos, which mean that they're recognizable from a distance and it's clear what the project is about. But coming up with one from scratch is a daunting process, especially for someone who isn't a graphic designer by background. What I did know was that where there was a link from the name to some visual cue, that most projects took advantage of this. Jupyter has a logo referencing the planet Jupiter and it's moons, duckduckgo has a logo with a duck and Bitcoin and Litecoin have logos which looks like coins.

For sqlfluff, the idea of fluffiness and also of linting seemed obvious candidates. With SQL being such a core part of this and also noticing that often logos contain the name of the project (jupyter, jquery, debian, docker), or at least some reference to the name or it's initials (Javascript, Tensorflow, Bitcoin), having SQL somewhere in the logo would be an added bonus.

What is lint? On starting to google what might be an inspiration for lint, most of the options degrade just to drawing fluff, which is already part of the plan, but doesn't add anything new. The only thing which went against this trend was a lint roller, which was a neat idea but wasn't immediately obvious how to draw or how to incorporate it into a logo.

How do you draw fluffiness? On a google search, many of the links and images point here, to a tutorial on how to draw a cat.

Source: How to draw animals.

This was somewhat useful, and was the start of a youtube hole into how to draw fur, but fur and fluff seemed to be different sets of imagery. Ultimately based on what I found googling the difference, it seems that fur has weight, and flows downwards or along some kind of grain. Fluff on the other side has almost no weight or substance and sticks almost directly out, regardless of orientation (as shown below).

Source: MemeXYZ

Initial concepts

With these concepts of name in logo, fluffiness and the somewhat stuffy nature of SQL I went about drawing out some initial concepts, which relatively quickly aligned around a common theme. In particular that the letters for SQL should be in some kind of technical font.

From here, it just required settling on a relatively well proportioned sketch, photographing it, and then importing that into inkscape to start digitising. In particular I spent quite a lot of time making sure that curves were roughly the same radius (see the circles below) and that the various vertical and horizontal lines were roughly lined up with each other. The auto alignment tools within inkscape were invaluable for this to snap sets of points on the path into alignment.

Finally came the fluffiness, and after a significant amount of googling to find a quick way to generate fluffiness along a path, I unfortunately came to the conclusion that I would have to draw the fluff path over the top of the thick lines above by hand. This was very tedious and took around 20 minutes of continued clicking to complete, with a few breaks in there as my hand started to cramp up. However, that said, I think you'll see that the end result was worth it...

Main logo (left), with two smaller icon variants (right)