It started with a bug report that had been around since Ubuntu got started: Gnometris had a big Gnome foot logo on it, and most of our users didn’t know what that was. The suggestion was simple: replace it with a stylized Ubuntu logo, patch it in, and go on our merry way. A community member even volunteered a fantastic piece of art to go in its place. Simple, right?
Except, unfortunately, it wasn’t. You see, some people at Ubuntu are worried about derivatives: those Ubuntu-based distributions that use our code but aren’t actually Ubuntu. By putting a branded image in that derivatives have to remove, we make extra work for them.
So nothing happened. For years. We still had that ugly foot logo that had nothing to do with the game you were playing, and it was one of the first things users saw. But it wasn’t just Gnometris – it was solitaire too. Millions of hours of user time have been spent playing solitaire and staring at the ugly feet on the card backs. People would boot the Ubuntu LiveCD and feel like our games came straight out of 1995.
This bothered me. It was ugly, but even worse we were throwing away useful contributions. How much other useful stuff might we be throwing out, or even worse not making in the first place?
The Ubuntu Developer Summit is a fantastic place for brainstorming ideas. You’re constantly surrounded by smart, passionate people. People who want to work with you on any and all things Ubuntu, from the moment you walk out of your hotel room for breakfast to the late hour you finally trudge off to sleep.
I think the branding-ubuntu package was my idea. I can never be sure, since I owe so much to the creative environment around me. I shouldn’t offend anyone by taking credit though; as you’ll see, my original design was stupid.
The overall idea seemed solid: put Ubuntu-branded replacement artwork, generated by the community, into a single branding-ubuntu package. Installing it would change the artwork, removing it would leave everything as before.
The original design required each branded application to have a small patch causing it to look for the branded artwork first (and prefer it.) This required modifying every program that we wanted to brand. All I had to do was dump a bunch of artwork in some folder, and then hope other people would change their applications to take advantage of it. Trivial for me, work for them – perhaps it wasn’t so stupid after all.
Other than my three year old Gnometris background, I didn’t have any actual artwork to put into the package. We weren’t even installing Gnometris by default anymore. I made the package anyway. Even though it didn’t do anything, I decided to advertise and fish for community help. If I built it, perhaps they would come.
I wrote a few emails to our developer lists, rubbed a few shoulders on IRC, and reminded some of the people who mentioned it was a great idea at UDS. Importantly, I took charge, making it clear that all an artist had to do was make something nice and I’d handle including it personally.
Within a manner of days I had new, branded artwork for every game we ship. Now I had a whole lot of artwork, courtesy of MadsRH. The screenshots from a manual install were incredible – that blue foot was gone for good. All it took was a little initiative.
Unfortunately, those patches to use the branding hadn’t yet been written, and the upstream makers of Solitaire didn’t really want to do it. In retrospect this is completely understandable – it was their branding we were replacing, and it wasn’t clear to them why we weren’t just patching things on our end. Why should they care about our derivative worries?
The Real Solution
The real solution, of course, meant more work for me – but work that would actually get done. The branding package now renames existing artwork files and replaces them with symbolic links to its own (using some fancy shell scripts and the very obscure dpkg-diversions command). In short, it works elegantly.
So, now I’ve got yet another package under my stewardship. I started off just maintaining Wine five years ago, but now, in true open source fashion, I’ve been applying myself throughout the entire distro. Sometimes people refer to this as “scratching your own itches”, but in truth I don’t really play solitaire or use Wine that much. They’re not my itches – they’re the itches of millions of users. Those are real people, and that alone is reason enough for me to make things even just a tiny bit better.