Quickly post-FOSDEM

Four days of Brussels: eat, sleep and be nerdy. I learned many things at FOSDEM 2019, although not in areas that I expected. Koalas, silicon and testing strategies, yes.

I stayed with friends at a wonderful bed-and-breakfast near the university. A cat was provided for conversational purposes at breakfast — and breakfast was beautiful. A ten minute walk to the venue along a park makes the start of a FOSDEM day a very different experience from, say, a packed and smelly bus 71. Thank you, June, for making our stay a memorable one. Thanks to Rohan and Roman for being good roomies.

The FreeBSD mini-devsummit was a good one. It was kept on-topic by Benedict. Thank you to Deb for organizing in the shadows. It was a particularly valuable meeting for the “desktop stack” part of FreeBSD. We had KDE people there and the X11/mesa stack, and also met GNOME-FreeBSD outside of the devsummit. That means that we got to align everyone on “what needs testing and where should we go from here”. There will be more FreeBSD-desktop activity this year.

FOSS-North will be one such activity; both the KDE community and the FreeBSD community will be there. I’m looking forward to being torn in half so I can attend both community day events there.

Photo of booth with monitor and T-shirts

Ivana running the KDE booth

FOSDEM itself might be described as “same old, same old” but only if you abstract that to “unable to get anywhere because you keep meeting all these incredible people”. Alexios, Amanda, Bernard, Camille, Dan, Dave, Ed, Federico, .. good to see you all again. I had time — or the presence of mind — to take only one picture this weekend. The sun is shining, so this must have been on Sunday. Ivana, thank you for being one of the constants at the booth. David, good to meet you for the first time, and Jonathan, you too thanks for being the backstop to our demonstrations. In the photo you can also see our two taglines: Plasma everywhere (from Pine64 to RISC-V to x86, from mobile to large-screen desktop) and Come home to KDE (your data and your computing should be like your home: customizable, secure, private).

We had a constant stream of people stopping by for stickers and information and T-shirts (next time, also bring some baby sizes). The live demo’s are a favorite — also for me, because then I see applications that I don’t usually use.

Photo of Pine64 booth with laptops

Pine64 Hardware Exposed

Lots of people were asking about Pine64 hardware, so we referred them to the stand over in building AW. Here’s a picture with everything tidy — it must have been Saturday during set-up, before the crowds arrived. I didn’t have much time with the Pine hardware — the phone, the new laptop, and all the other gadgetry. They are showing off a huge number of little gadgets, all very open and inexpensive to boot.

In the background of this photo, the Espruino and MicroPython projects are showing off their devices. Especially the MicroPython is a beautiful little machine in its aluminum case.

Thanks to the Pine64 people for a wonderful after-hours get-together as well. Among others, the PostmarketOS people were there — I’ve never seen so many N900s at one table since 2008.

Unlike previous years, I stayed one night extra to have a relaxed journey home. And now I’ve got a pile of business cards to go through and a long list of technologies to try.

FreeBSD 12 and the graphics stack

Over the Christmas season I rebuilt my workstation — the one I use in my home office, all day every day, writing Calamares or FreeBSD ports or other stuff — to be almost-all-flash (and 3TB of spinning rust for backups). Since the machine was open and on its side on my desk anyway, I decided to try out the available graphics options.

As occurs so often: I’m not writing about something I did. It’s nearly all someone else’s work, and the FreeBSD 12.0 release notes understate it a great deal.

Various improvements to graphics support for current generation hardware.

  • Intel iGPU My machine has an Intel Skylake i7 in it, so it’s got an iGPU. The graphics/drm-kmod port supports this, and so I installed the i915kms kernel module, followed instructions, fiddled around with some settings. Results: Video works, with 2 monitors. Sound over HDMI works, although I needed to configure the Plasma mixer to use pcm instead of vol as the OSS volume knob to turn.
  • nVidia GTX730 The cheapest and most fanless card I could get two years ago. This needs the (proprietary) x11/nvidia-driver as well as an Xorg configuration file, and some other settings for sound. Results: Video works, with 2 monitors. Sound over HDMI works, with the default mixer setup.
  • Radeon R7 360 This is a friend’s old gaming card. While it’s supposed to be supported by graphics/drm-kmod, all I got out of it was screen buffer corruption on loading the driver and no X after that. I didn’t bother debugging this because the choice for a zero-extra-power part (i.e. the iGPU) was easily made.

In any case the new release and graphics improvements make it much easier to run FreeBSD on laptops and systems without a discrete GPU (I should get a Ryzen 2200G or something like that to see how other Radeon graphics do .. or debug the one I’ve got).

Wanted: Power9, for the mouses

Here’s a nice obscure bug: mouse wheel events on FreeBSD on Power9 are not recognized by Qt5. I don’t have anything PPC64 .. there were some Mac G4s at a second-hand place in town, but that is not a road to happiness. So obviously I need a Power9-based system to test this, and by coincidence Raptor Computing is now accepting pre-orders.

Yeah, not for $2000 to debug a mouse problem, but if anyone has one I can borrow, hit me up 🙂

(PS. I mentioned back in October that KDE Plasma 5 on Debian on Power9 Just Works, so it is something in the FreeBSD side of things.)

Patching Qt5Network for Christmas

Qt5 and KDE Plasma 5 have been running smoothly on my workstation desktop for a year or more. I have a kind of boring desktop: there is one CPU, one graphics card, two network interfaces, and I use the default settings for just about everything. .. and everything (that I need) just works.

But it didn’t work for everyone: there was this one weird bug report that when the system had VLANs defined, that most Qt5-based applications would crash or refuse to start up. That first manifested itself there as a build failure of kf5-syntaxhighlighting. After some discussion with Volker, I ended up with a workaround: don’t validate the schema’s during the build. That takes away the networking dependency, and things were OK again.

Other similar bug reports trickled in. They’re now all closed as duplicates of this original. Some patches trickled in, which I didn’t particularly like because they were of the “comment this bit out and things work”. Thankfully the original reporter of the kf5-syntaxhighlighting build failure, Ting-Wei Lan, did a great deal of debugging work. Enough to give me a handle on where to continue looking. I hemmed and hawed, tried blaming the run-time loader, but really all the evidence pointed at memory corruption from inside Qt5Network.

Fortunately the problem was totally reproducible and consistent in the way it crashed: create a VLAN, and one by one all Qt-based applications that touch the network would crash with an unresolved symbol. Rebuilding with debug symbols and everything turned on .. just got me a core dump somewhere else. After much futzing about, I found one location where adding a qWarning() << "foo"; made the problem go away. That's just as unsatisfying as commenting-out bits until it works.

Valgrind to the rescue. It told me about uninitialized memory being used in ioctl() calls, in an area of Qt5Network that I already thought was a bit flaky (wrt. FreeBSD support, anyway).

En passant I learned more about gdb, valgrind, ioctl() internals, and network status querying. And on Christmas Eve (or afternoon) I finally landed a bunch of patches:

  • Network bearer detection fixed; Ethernet is now recognized as such and doesn't hit the generic bearer.
  • Network media detection fixed; don't re-use ioctl buffers for a different ioctl; use the right ioctl number (apparently NetBSD and FreeBSD differ there).
  • Be slightly smarter about closing sockets; I took this opportunity to introduce a SockPuppet class, for silliness.
  • Support LibreSSL, OpenSSL 1.0, and OpenSSL 1.1 all at the same time.

The last item, supporting different SSL implementations, is all other people's work. I just built, tested and landed their efforts. Credits are in the corresponding ports commits.

As a consequence of all this, along with the release of FreeBSD 12.0, I now have an i3-based FreeBSD 12 machine with up-to-date Intel graphics and a KDE Plasma 5 desktop that uses libressl across the entire stack, and can survive having VLANs modified, as well. That's a good present for the end of the year. (For the new year, I resolve to try to upstream some of these fixes, minus any silliness)

SSL Certs on my sites

LetsEncrypt is wonderful — SSL certificates automatically generated and updated. CertBot does the actual work in one of its many incarnations. Most of my sites use LetsEncrypt to auto-renew certificates. Recently the CertBot at my hoster stopped updating, and now certificates are expiring. The hoster isn’t responding to mail asking them to give CertBot a kick in the pants, so I’m starting to look at other options. It’s weird because for the past 10 years they’ve been good Open-Source-Friendly hosters.

If things move there will probably be a hiccup in access, but I’ll give a shout when it does. The Calamares site runs on GitHub, so is unaffected by this whole thing.

QtWS post (-scriptum)

This week I was briefly in Berlin for the Qt World Summit, or QtWS for short. I was there to run the KDE booth as part of the exposition at the summit, rather than to do any talks (or, for that matter, watch any). First, a bunch of thanks are in order: to Sari and Milja from Moodboard for organising most of the things, to Katica from the Qt Company for doing PR on the show floor, to Kai and Roman from KDE for standing at the booth with me, and to the 700-or-so attendees for listening to us when we talk about KDE as a community, about KDE Frameworks and Plasma in laptops, tablets, phones and embedded. Thanks also to Paul and kde-promo for getting us some nice source material for stickers and shirts.

Photo of Kai and some laptops

Kai at the KDE booth at QtWS

The picture shows some of the stuff we did for the booth: a canvas banner, demo machines, and happy T-shirts. If the Italians (from a Sardinian argricultural-technology firm?) who wanted a T-shirt get in touch with me, we’ll make it happen.

One of the nice things about QtWS is meeting all the KDE people who have wandered away from the active KDE community, and are now inside the Qt Company, or KDAB, or all over the Qt ecosystem. KDAB, of course, gave a bunch of talks at the event and also contributes lots of code to both Qt and KDE; it’s still good to actually meet old KDevelop people and such. When talking to “old hands” is the fordness with which they talk about the community and participating in such a large Open Source project.

So the things we mostly talked about were KDE Frameworks — a fair subset of them are useful for small-footprint devices, embedded, automotive — and that Qt is Open Source. Reminder: Qt is Open Source. And so are all the things KDE builds on top of Qt. There’s a large number of very proprietary software companies around Qt in the automotive world. One really cool one does handwriting recognition, and does it well; I tested it in English, French, and Arabic with my untidy scrawl and its accuracy was pretty good. But .. no, not my cup of tea. The Pinebook got a fair amount of attention, but even more attractive to attendees was a prototype laptop that had been 3D-printed the day before. It looked like it had stepped right out of the 80s, but was running a pretty snappy Plasma desktop on top of mainline and Debian (can’t say more than that for now). We installed KDE neon on my Slimbook again, alongside openSUSE, to try out Wayland, and in particular gaming with Steam under Wayland. That .. turns out to work just fine, but people look at you funny when you’re playing CS:GO (please note my ambivalent and inconsistent treatment of proprietary software here) at the stand.

So, here’s to the Qt community and see you next time!

Freenode#live

This weekend, Freenode#live is in Bristol, in the UK. It’s a FOSS-community type event. I’ll be there with David, and we’ll be doing a KDE booth to show off our technologies (which are cool) and our community (which I think is a great one). Stop by and see the Pinebook. Chat about the Nextcloud Include project. Or tell us you prefer to use i3 — that’s diversity in action (and i3 works fine together with other software from the KDE community).

Multiboot Pinebook KDE neon

Recently a KDE neon image for the Pinebook was announced. There is a new image, with a handful of fixes, which the KDE Plasma team has been working on over the past week and a half.

Photo of Pinebook

Pinebook running KDE neon

Here’s a picture of my Pinebook running KDE neon — watching Panic! At the Disco’s High Hopes — sitting in front of my monitor that’s hooked up to one of my openSUSE systems. There are still some errata, and watching video sucks up battery, but for hacking on documentation from my hammock in the garden, or doing IRC meetings it’s a really nice machine.

But one of the neat things about running KDE neon off of an SD card on the Pinebook is that it’s portable — that SD card can move around. So let’s talk about multiboot in the sense of “booting the same OS storage medium in different hardware units” rather than “booting different OS from a medium in a single hardware unit”. On these little ARM boards, u-boot does all the heavy lifting early in the boot process. So to re-use the KDE neon Pinebook image on another ARM board, the u-boot blocks need to be replaced.

I have the u-boot from a Pine64 image (I forget what) lying around, 1015 blocks of 1024 bytes, which I can dd over the u-boot blocks on the SD card, dd bs=1k conv=notrunc,sync if=uboot.img of=/dev/da0 seek=8, and then the same SD card, with the filesystem and data from the Pinebook, will boot on the Pine64 board. Of course, to move the SD card back again, I need to restore the Pinebook u-boot blocks.

Photo of a dusty circuit board

KDE neon Pinebook edition running on a Pine64, with console output

Here’s a picture of my Pineboard (the base is a piece of the garden fence, it’s Douglas pine, with 4mm threaded rods acting as the corner posts for my Pine64 mini-rack), with power and network and a serial console attached, along with the serial console output of the same.

The nice thing here is that the same software stack runs on the Pine64 but then has a wired network — which in turn means that if I switch on the other boards in that mini-rack, I’ve got a distcc-capable cluster for fast development, and vast NFS storage (served from ZFS on my FreeBSD machines) for source. I can develop in a high(er) powered environment, and then swap the card around into the Pinebook for testing-on-the-go.

So to sum up: you can multiboot the KDE neon Pinebook image on other Pine64 hardware (i.e. the Pine64 board). To do so, you need to swap around u-boot blocks. The blocks can be picked out of an image built for each board, and then a particular image (e.g. the latest KDE neon Pinebook) can be run on either board.

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.