.. in with the New

It’s been a long time since I wrote anything about the state of current KDE software in FreeBSD. So, without further ado:

  • Qt is now at 5.10.1; work on 5.11 is proceeding. Right now, WebEngine is still at 5.9.5, and that’s remaining so for 5.11 unless we have a sudden influx of free time to work on that monster.
  • KDE Frameworks are at 5.49, which is the august 2018 release; 5.50 hasn’t come out yet but we’re ready for them when they do.
  • KDE Applications are at 18.08.0, which again is the august 2018 release; 18.08.1 was just released today.
  • KDE Plasma is at 5.12.5, so we’re one whole minor release behind (5.13.5 came out on tuesday). This is actually blocked by libinput, which is lagging in FreeBSD.
  • KDevelop version 5.2.3 is one patch level behind

So except for the Qt version, we’re keeping up reasonably well with the modern stuff. And we’ve finally joined most of the Linux distributions in deprecating KDE4 software. For KDE4-using ports that are not “ours”, we’re encouraging other ports maintainers to update them (e.g. to KF5-enabled versions) or follow in deprecating the software.

Out with the Old ..

KDE4 ports will be removed from FreeBSD ports on December 31st, 2018

The KDE-FreeBSD team met at Akademy this year, and while hacking on some other stuff, we also got around to deciding what to do with the KDE4 ports. We have wanted to get rid of them for some time, and there is an increasing pressure of maintainence on them: code written in 2003 doesn’t play well with the C++ of 2018 (in particular clang keeps getting more picky, which is good).

As for KDE4 itself: there haven’t been any upstream KDE4 releases since Applications 17.08.3, and Qt4 upon which it depends is EOL since 2015. The latest KDE Plasma desktop has been available in the official ports tree for over four months (and has been in use by users of Area51 for much much longer).

So, given that there is a viable upgrade path (although, truth be told, you’ll probably have to re-configure KMail and get used to Falkon), we’ve decided to put a four month deprecation period on all the KDE4 ports. They will be removed at the end of this year, which will free up some maintainence time for chasing the steady stream of updates from the KDE community.

Akademy, Akadeyou

Akademy is the yearly conference of the KDE community, and of KDE e.V. What makes the conference isn’t so much the technical content — see Kevin’s sketchnotes for instance — but the people. Seeing KDE Brasil grow the way it has is great (hey, people, please post a date for LaKademy). Aracele gives a good overview. Even bigger is KDE India, what a bunch of happy and talented contributors. Shout-out to Abhijeet for being one of the far-flung travelers.

I could only stay until wednesday morning, so I didn’t talk with anywhere near all the people I would have liked to sit down with. I did sit with Tobias, so that half of the KDE-FreeBSD team was hacking together, and with Leinir, and there was beer with Paul, .. with a conference of 200 people, the list of darn-didn’t-talk-to is always going to be longer than the list of good-seeing-you-again people. Such is life.

In the sense that Akademy is about me, and you, and making connections within the community, I’ll share one more anekdote: I stayed in a dorm room at the recommended hostel, and the first morning, still in my shorts, had a brief conversation in German with some guy about the ventilation mechanism in the bathroom. Then I pulled on my KDE India shirt, and the conversation turned a corner: hey, are you going to that KDE contributors thing? Turns out that roommate was also going, to his first Akademy.

Turns out, mr. Schiffner was “just a user” who “just runs the 20 Linux desktops” in a company. Wow! I’m really happy we got some “just users” at the conference, because where it’s important for the developer community to “put a face to names” to improve communication the rest of the year, it is also important for users to know that there’s regular people behind the software, as well. Personally I’d be really happy to have some user-talks; talks about deployments or specific use-cases of applications; a KDEnlive talk from a movie-maker would be keen. (That said, Paul did give a talk somewhat like that, about KDEnlive and promo films).

So, take-away things from Akademy are:

  • Debugging KConfig is full of surprises, even now, and having KDE-FreeBSD CI is really useful.
  • The Netherlands is just a local transportation network, for Itinerary.
  • Distro’s generally all feel the same pain.
  • Nobody wants to think about LDAP.
  • People are more important than things.

Coming back from the conference is always a bit weird; there is tons of neat stuff from the event still whirling around in my brain, and there’s 900 unread email messages in my inbox that need attention. I’ve sorted through most of it, done some communications things, pushed a bunch of commits to Calamares, and am now gearing up for an event next week in Brussels. But in september, things will be calm again.

(PS: gosh, I missed Carlos Soriano at the event, who has written a really cool I-went-to-Akademy from another kind of outsider’s perspective — we’re all in this Free Software thing together.)

More Laptops

One of the things to come out of Akademy is the first community release of the KDE neon Pinebook Remix image. I’ve been carrying around the Pinebook for some time — since FOSDEM, really, where I first met some of the Pine folks. At Akademy, TL was back and we (that’s a kind of royal “we”, because TL and Rohan and Bhushan and other people did all the hard work) got around to putting the finishing touches on the Pinebook image.

There’s not much to show beyond what you can see on the Dot already (my own Pinebook is looking a bit beat-up after a year, and the drawing Timothée did on it is rubbing off), really, so I’m not going to add photos: the Pinebook is a low-cost, low-power, quite adequate laptop, and it runs a modern KDE Plasma.

Best Service

How often do you meet your laptop vendor in person? Last year, I picked up a KDE Slimbook, and the machine has been great, acting as my development-box-on-the-go for lots of KDE travels. It has a few stickers, and some scratches, and the screen had gotten a bit wobbly by now .. so, at this year’s Akademy I stopped by the Slimbook stand, admired the newer Slimbook II (alas, the old one isn’t written off yet), and mentioned the wobbly screen.

Photo of an envelope from SlimbookHow often does your laptop vendor say “we can fix that” and do it right there and then? So I had a nicely tightened, fast and friendly Slimbook by the end of the next talk. Not only that, but when I got home from Akademy, I found an envelope with some stickers and the right tool to fix it myself if it happens again.

Now that’s developer-friendly service! Thanks, Alejandro and Raúl, and hope to see you again next year.

One does not simply walk into Møn

It was summer, and the sun was shining, and I had posted that Calamares was going to sleep for the summer, so then I went with my family to bicycle in Denmark.

Screenshot of map

Route to (light green) and from (dark green) Møn. Map image from OSM.

We took the train to Flensburg, and headed east. Lots of ferries on the way, and at the wonderful Edible Campground on Ærø we found three messages-in-a-bottle. Denmark has mørk pålægchokolade, which is great for breakfast and lunch but needs to be purchased daily because it melts and sticks together (and four people can eat a lot of chocolate). In the 28-degrees-and-sunny weather we drank ¾ litre of water per person per hour of bicycling — getting enough water meant planning stops a little more carefully.

Photo of tents and bicyclesOn the way back we went through Germany, where “moin” is the standard greeting and the Aldi has white wheaties (breakfast of bicyclists). We camped in the Hüttener Berge, which was beautiful and quiet — previously I only knew about that area as “the last rest stop on the Autobahn before Denmark” which is neither beautiful, nor quiet.

And now after 710km on the bike I’m back in the Netherlands, preparing for Akademy and gently poking Calamares to see if it will wake up from slumber.

Going to Deventer^WVienna^WAkademy

Today I’m heading out to Deventer to say “hi” to Valorie and Boud, whom I’m be seeing again next week in Vienna, at Akademy.

Akademy is, for me, first and foremost a way to see everyone again and re-calibrate my social settings for everyone. After all, I communicate with most KDE people only electronically, though text, and it’s sometimes really important to see the faces behind the IRC nicknames. So I’m particularly excited that Michael Pyne will be there, who has been a voice in KDE for as long as I care to remember, but whom I’ve never actually met. And there will be lots of GSoC students there, new people who deserve all the support they can get — and commendations for the work they have done in KDE this year.

Personally I’m not planning anything specific at Akademy. I may chair a panel during the conference parts, and the Distro BoF is something I’ll definitely attend with my FreeBSD hat on. Other than that, it’ll mostly be spur-of-the-moment what I’m doing. Tug on my sleeve if you want coffee and a chat, about portability, installers, OEM stuff, codes of conduct, or Rick Astley.

My First Clang Bug

Part of the role of being a packager is compiling lots (and lots) of packages. That means compiling lots of code from interesting places and in a variety of styles. In my opinion, being a good packager also means providing feedback to upstream when things are bad. That means filing upstream bugs when possible, and upstreaming patches.

One of the “exciting” moments in packaging is when tools change. So each and every major CMake update is an exercise in recompiling 2400 or more packages and adjusting bits and pieces. When a software project was last released in 2013, adjusting it to modern tools can become quite a chore (e.g. Squid Report Generator). CMake is excellent for maintaining backwards compatibility, generally accomodating old software with new policies. The most recent 3.12 release candidate had three issues filed from the FreeBSD side, all from fallout with older software.  I consider the hours put into good bug reports, part of being a good citizen of the Free Software world.

My most interesting bug this week, though, came from one line of code somewhere in Kleopatra:

Q_UNUSED(gpgagent_data);

That one line triggered a really peculiar link error in KDE’s FreeBSD CI system. Yup .. telling the compiler something is unused made it fall over. Commenting out that line got rid of the link error, but introduced a warning about an unused function. Working with KDE-PIM’s Volker Krause, we whittled the problem down to a six-line example program — two lines if you don’t care much for coding style. I’m glad, at that point, that I could throw it over the hedge to the LLVM team with some explanatory text. Watching the process on their side reminds me ever-so-strongly of how things work in KDE (or FreeBSD for that matter): Bugzilla, Phabricator, and git combine to be an effective workflow for developers (perhaps less so for end-users).

Today I got a note saying that the issue had been resolved. So brief a time for a bug. Live fast. Get squashed young.

Those top Konsole Contributors

Whenever I see a post about community growth or participation — like Tomasz Canabrava’s most recent “From Nothing to top 20 contributors of Konsole in Less Than a Month” — I reach for the toolkit written by Kevin Ottens, because that makes it easy to obtain good numbers and graphs for community measurement.

Graph of Konsole's Entire History, all scrunched up and made tinyLooking at the graph (click to enlarge, but it’s still hardly readable — I’d suggest using Kevin’s tooling directly if you want to zoom in or experiment) of Konsole development since the very beginning shows a few striking facts:

  • Konsole has been in continuous development since 1998
  • Except for a gap 2006-2009, Kurt Hindenburg has been active in Konsole since roughly 2004
  • By looking at the density of commits and the length of commit-streaks, you can guess at maintainers and co-maintainers of Konsole, alongside all the occasional committers. There’s maybe five people whose histories suggest that.

Of personal interest to me is that in 2002 I contributed to Konsole for FreeBSD compatibility, and in 2009 for OpenSolaris compatibility, but nothing else in the history of the project. And Konsole spent a year licensed as Artistic, rather than the GPL2-or-later, in 1999.

Graph of Konsole's Recent HistoryRecently, you can definitely see that Tomaz has been really active, and Kurt has slightly more quiet time. But Ahmad and Mariusz are also consistently putting in work, albeit with a lower rate of commits. Judging by the commit messages, those have gone through Phabricator. That means that their commit counts are reduced because arc squashes commits (just like Tomaz, and as pointed out by Eike elsewhere). Keep in mind that commit-counts are poor proxies for contributions — that’s something we’ve been saying for years and years.

Also of interest in the history: there are 1090 commits by people not in the top-twenty; if those were grouped together they would hold second place!

So, thanks Tomaz for being noisy about what you’re doing. I think we need more of the “hey, I can improve the world” kind of noise — like KDE’s GSoC stories as well. And also, thanks Kurt and KDE community for being consistent and productive in small amounts for many years.

Trying a new Calamares workflow

I just released Calamares 3.2.1, a new-features release, and I’m trying something new for the next release. This is vaguely inspired by Paul Adams’s talk about “The Art of the Pull Request”. Immediately after the release, I’ve added several branches, one for each set of features that I want to implement for the next release. The graph displayed by QGit looks more like an octopus than ever:

Master has three immediate branches

Each branch starts with an empty commit that just says what I indend to accomplish in the branch. That way, intentions are documented inside the code repository — portably (that is, not tied up with a Pull Request or other coding-platform feature). I can of course delete the branches later if something happens to make the branches obsolete or useless. But from here, there’s a pretty clean picture of how the next release (3.2.2) is going to work:

  • Bugfixes go to master,
  • Planned feature commits go to the relevant branch,
  • Unplanned features go to new topic branches off of master.

When a planned feature is done, I will merge that branch back to master, delete the branch, and call it a day. When all of them have been merged that way, the planned features for the release are done — and it should be ready to release.

Slightly sneaky, I can even claim “FIXES #” in the initial empty commit in the branch, and assuming I’m honest with myself about the intentions of, and effects of, the branch, when I merge to master the corresponding issues in the issue tracker will be closed automatically.

Mostly I’m curious whether working this way will help me keep the total cycle time low for the next release, while also informing others where works is “needed right now”. And if it works, then in future the graph of a Calamares release will look more like an octopus, tying its feet together. Seems like a good thing for an installer framework named after squid.