These past months I was more and more thinking about changing my career as a software developer. I started to contribute to open-source when I was a student because it was something fun to do. I like programming, practicing, and the sharing philosophy of Linux and open-source.
I’ve learned really a lot of things by contributing to GNOME, trying to always improve myself, finding gaps in my knowledge and then reading some books to fill those gaps, and have more and more ambitious projects over time.
As a GNOME developer there are sometimes some job opportunities, but I prefer to stay in Belgium, I don’t really want to relocate to another country. Some open-source developers do teleworking 100% of the time, and they see their colleagues only when going to conferences or hackfests. It’s not something that I want to do, I like working at home to be less distracted, but maybe two days per week, not all the time.
Since four years I have a half-time job, which permitted me to continue my contributions to GNOME the rest of the time, doing crowdfunding to earn a little more. But my situation is not sustainable in the long run, the crowdfundings were not really successful, maybe because I’m not good at marketing, or just because Linux desktop users are accustomed to get everything for free.
So I’m now looking for a new job! This is an opportunity for me to try something new, to get out of my comfort zone. The elephant in the living room is that almost nobody do desktop application development these days, everybody do web or mobile development. So my future work will probably revolve around that.
GNOME software product lines
To summarize my work in GNOME these past years, I was actually developing software product lines. My focus was on making more code re-usable, by adding more features to existing libraries, or by creating higher-level, domain-specific libraries.
Another software product line in progress was for the Devhelp API browser, with the libdevhelp and Amtk as libraries. The goal was to keep the Devhelp application generic, and to create a specialized version for GNOME with a few additional features.
Just counting my GNOME or GNOME-related projects, I’m the author of more than 6000 commits and ~140k lines of code, spread across ~30 Git repositories. Some modules that I maintained or created are installed on millions of computers.
Top blog posts
As I look back on this blog, I thought it would be interesting to highlight some of my favorite blog posts. And here they are, in chronological order:
- About code quality and maintainability (2012)
- A review of the book Code Complete.
- File loading and saving in GtkSourceView, finally (2014)
- A big refactoring, moving 8000 lines of code from gedit to the GtkSourceView library, making the code re-usable.
- Object-oriented design best practices (2014)
- A review of the book Object-Oriented Design Heuristics. Fun fact: there was a link to my blog post from a job offer when talking about object-oriented best practices :-)
- Doing things that scale (2016)
- Some thoughts about software in general, documentation, libraries and open-source software. There was a quote of my article on Linux Weekly News!
- Smooth transition to new major versions of a set of libraries (2016)
- Applying programming best-practices when it comes to releasing new major versions of a set of libraries (not just only one).
- Re: Consider the maintainer (2017)
- Some thoughts after reading a Linux Weekly News article, about my experience on being a maintainer of several GNOME modules.
- GObject design pattern: attached class extension (2017)
- Where I document a new design pattern that I’ve discovered, specific to a feature that the GObject library provides.