On this day twenty years ago I wrote and submitted by very first patch to a Free Software project, KDE. What basically started with changing a single number got slightly out of control and had consequences my younger self wasn’t even remotely able to imagine.

How I got there

My contact with Linux (and KDE) began in 1999 with SUSE 6.3 and KDE 1.x (at the time “KDE” was still referring to the desktop shell that eventually became Plasma). Updates weren’t really a thing yet at 33.6kbit/s metered dialup, you would have to buy/borrow/copy a bunch of CDs for that.

But in 2000 and 2001 when KDE 2 came out I was doing my mandatory civil service which gave me access to “infinite” Internet (10Mbit/s). So I could download all the updates and carry them home on floppy disks and CD-RWs. The step from KDE 1 to 2 was huge, I wanted more of that.

However, KDE updates dried up towards mid 2001 (due to the transition to KDE 3, but I didn’t understand the implications of that yet). That was disappointing, even more so as I had meanwhile discovered the various KDE mailing lists (including kde-commits) and could see that there were a ton of interesting changes happening that I wanted.

So, for next almost nine month I tried to build the latest source code myself. Why it took so long?

  • Checkouts from CVS (the predecessor of Git’s predecessor) took multiple hours on the slow dialup link, and had to be restarted from scratch when someone picked up the phone meanwhile. So this needed to be done over night, and spread out to not get into trouble for the resulting phone bill.
  • Building KDE required a very recent GCC (2.95) that my distribution didn’t have yet, so I ended up trying to compile GCC myself as well.
  • Computing hardware from the late 90s wasn’t helping either.
  • KDE doing a major version transition, which means the foundations were changing constantly and a number of things were broken at any given time.
  • And most of all: I had absolutely no clue of what I was doing.

Eventually I succeeded though, mid 2002 I finally had my own self-compiled KDE 3.0 working. I’ve been using bleeding edge builds as my daily driver ever since.

My first contribution

Up to that point I was a pure consumer of Free Software. The option to also inspect and modify the sources was nice but seemed rather theoretical, let alone even submitting an actual patch upstream, that seemed entirely unachievable. I very much admired those who did though.

In August 2002, while working on a homework assignment about the PNG file format, I noticed that the file properties dialog in Konqueror was showing something else than I was expecting from looking at the file in a hex editor. Obviously that had to mean I misunderstood something or had made a mistake somewhere, but I wasn’t able to come to the same result despite several iterations of reading the spec and dissecting the file again.

Maybe I could find my mistake by looking at the KDE code? After having watched KDE compilations for months and following KDE discussions and commits, finding the right spot was pretty straightforward, and it turned out the KDE code contained a wrong value that explained my observations. Change that and rebuild, and for the first time I had made a modification in a FOSS codebase I was using, and saw that in action right in front of me, awesome.

Following all that I also was quite certain that this is was the correct change, so submitting that upstream suddenly became a real possibility. And after some more double-checking and deliberation I submitted my patch (via email, MRs had not been invented yet), in the early afternoon of August 29th 2002.

Index: kfile_png.cpp
===================================================================
RCS file: /home/kde/kdegraphics/kfile-plugins/png/kfile_png.cpp,v
retrieving revision 1.14
diff -u -r1.14 kfile_png.cpp
--- kfile_png.cpp	28 Aug 2002 21:23:39 -0000	1.14
+++ kfile_png.cpp	29 Aug 2002 13:52:26 -0000
@@ -62,6 +62,7 @@
   I18N_NOOP("RGB"),
   I18N_NOOP("Palette"),
   I18N_NOOP("Grayscale/Alpha"),
+  I18N_NOOP("Unknown"),
   I18N_NOOP("RGB/Alpha")
 };

@@ -142,7 +143,7 @@
                 case 2: bpp *= 3; break; // RGB
                 case 3: break;           // palette
                 case 4: bpp *= 2; break; // grayscale w. alpha
-                case 5: bpp *= 4; break; // RGBA
+                case 6: bpp *= 4; break; // RGBA

                 default: // we don't get any sensible value here
                     bpp = 0;

Less than four hours later the response came. But it wasn’t the “you did it all wrong, this makes no sense, you have no clue” I was somehow expecting, not because I perceived the community as toxic but rather due to lack of confidence in my own work next to all the bright KDE contributors I watched on the mailing lists. No, instead my patch had been merged. Into KDE. For real.

Getting addicted

I was super excited. And yet I didn’t even have the slightest idea what I had just gotten myself into. One thing became clear quickly though, I was addicted. Less than 24h later, I submitted my second patch.

More followed over the next days, weeks and months. Besides various small things, KLaptopDaemon (an ancestor of what is now Powerdevil), KHexEdit (predecessor of Okteta) and KNode (NNTP client) were the main subjects. A particularly embarrassing one was a security vulnerability I introduced in a setuid helper executable of KLaptopDaemon, Dirk Müller eventually found and fixed that.

By early 2003 I was bothering people often enough with patches that Stephan Binner suggested I’d apply for a CVS account, and within 48 hours David Faure had created one for me. Awesome, and rather scary to use at first.

Meeting people

In August 2003 Kastle happened (the thing that should eventually become Akademy). I consumed every bit of detail I could find about that online, it seemed like an awesome event to be at. But of course I wasn’t there, with my few tiny contributions I for sure wouldn’t qualify to attend that, right?

A year later, in August 2004, Akademy took place in Ludwigsburg. I still had doubts whether I would qualify to be there, but with ever increasing contributions and the event being easily reachable for me it seemed worth risking that. Right choice this time, and any remaining doubts quickly disappeared on arrival. I was still a bit star-struck at times though.

Group photo of the Akademy 2004 attendees.
Akademy 2004 group photo.

I haven’t missed a single Akademy ever since.

It then still took me another one and a half years to finally attend my first KDE sprint, Osnabrück 4, after some encouragement from Cornelius Schumacher. Many more should follow.

Group photo of the attendees of the KDE PIM sprint in Osnabrück in January 2006.
Osnabrück 4 group photo.

Meeting people in person made a big difference, I got pulled into KDE even further. Instead of doing mostly “scratch your own itch” patches on my own I was now part of much larger team efforts, such as the Qt 4 port or Akonadi.

Making the world smaller

Spending so much time in the KDE community did not just impact how I contributed though. I made friends in KDE. I owe a large parts of my software engineering and English communication skills as well as a large part of my professional network to KDE. And it did change my view of the world.

When seeing 9/11 on the news in 2001 this was something “far away”, “on the other side of the world” for me. It was horrible and it was clear that this would likely have consequences for everyone, but the event itself was on another continent I had never been to and where I didn’t know anyone.

Hearing about the London Underground bombings in 2005 on the news started similarly. But a few hours later someone on IRC mentioned they had quite some trouble to get to the office because of some incident on their usual subway line, and were shocked to find out what had happened (in the pre-smartphone era news wouldn’t necessarily be available immediately to you on the go). Suddenly this wasn’t “far away” anymore, this was happening close to people I knew.

Later that year, two people from India reported having felt an earthquake on IRC, a few minutes apart. The initial estimate based on the time difference was northern India or Pakistan, and pretty strong. That unfortunately turned out to be quite accurate. Horrible, and no longer “on the other side of the world”.

It’s not just the perception of world events though. I remember finding myself having dinner with people from South Korea, Scotland, Catalonia, the Czech Republic and east and west Germany sharing their respective views and experiences regarding independence and/or (re)unification. That’s just not something you get from following the news.

KDE gave me the opportunity to meet people from all over the world, and to travel to many different places on four different continents, showing me different views and perspectives I would otherwise likely not have had access to.

To be continued

How will this continue? I have no idea. If there’s a recurring pattern, it’s that I don’t know what I’m getting myself into, and things tend to escalate way beyond my expectations. I’m still dealing with the fallout of trying to find my departure gate on the way home from the last Randa meeting for example.

One thing I’m sure about though, this will continue :)

I'm going to Akademy 2022