Latest posts by Guido Günther (see all)
Librem 5 May 2020 Software Development Update
This is another incarnation of the software development progress for the Librem 5. This time for May 2020 (weeks 19-22). Some items are covered in more detail in separate blog posts at https://puri.sm/news. The idea of this summary is so you can have a closer look at the coding and design side of things. It also shows how much we’re standing on the shoulders of giants reusing existing software and how contributions are flowing back and forth between upstream and downstream projects. This quickly gets interesting since we’re upstream for some projects (e.g. Calls, Phosh, Chatty) and downstream for others (e.g Debian, kernel, GNOME). So these reports are usually rather link heavy pointing to individual merge requests on https://source.puri.sm or to the upstream side (like e.g. GNOME’s gitlab).
Adaptive Apps
This section features improvements on adaptive apps, GTK, and underlying GTK based widget libraries like libhandy:
- Libhandy finally moved to GNOME infrastructure. Being used by many GNOME apps that’s the right place. It also makes sure the GNOME release team can fix urgent issues so we don’t block any GNOME releases: https://gitlab.gnome.org/GNOME/libhandy
- gtk: Always show
select-all
in GtkEntry
‘s touch popup. This makes text selection on mobile devices a bit simpler: - libhandy: Run continuous integration for PureOS too: libhandy!264
- Alberto Fanjul Alonso made libhandy work with a recent version of Glade (everyone’s favorite UI editor): libhandy!451
- Make sure libhandy 0.0.x and upcoming 1.x packages are usable at the same time by picking a different Debian source package name: https://gitlab.gnome.org/GNOME/libhandy/-/merge_requests/478
Short and instant messaging
Chats (aka Chatty) handles SMS and instant messaging via XMPP. It has experimental support for various other formats via libpurple. Cleanups and bug fixes continued during May:
- Introduce a
ChattyMessage
class to handle different message types consistently: chatty!326 - Cleanup
ChattyConversations
: chatty!332 - Emit ‘avatar-changed’ if associated buddy avatar changes to handle avatar updates: chatty!333
- Utils: Format time as per the current user settings: chatty!334
- API to get and/set encryption and use it to simplify encryption handling: chatty!335
- Window: Fix selection flicker when chat is updated: chatty!336
- List-row: Limit message preview to a single line: chatty!338
- Window: Set selected flag for row only if not folded: chatty!339
- Chat: Strip client information from get_name(): chatty!340
- Use ChattyAvatar in main window headerbar and user info dialog: chatty!341
- pp-buddy: Avoid updating avatar often: chatty!342
- Silence compiler warnings: chatty!343
- Tests: Don’t set
MALLOC_PERTURB_
: chatty!346 - Window: Show an error dialog if creating SMS with modem missing: chatty!347
- pp-account: Use purple_core_get_ui() to get ui string: chatty!348
- Fix various memory leaks: chatty!350 chatty!372
- Manager: Make sure the user sees errors right away: chatty!353
- Different UI fixes crammed into one merge request: chatty!354
- New-chat-dialog: Reset search text when showing dialog: chatty!356
- New chat dialogs: Handle pressing ‘Enter’: chatty!357
- Don’t allow messages rows to get the focus. This eases keyboard navigation: chatty!361
- Use GObject properties and signals more: chatty!374
- Settings-dialog: Call
idle
users that (not offline
): chatty!375 - Use
GAppliation
more. This makes chatty more a regular GTK+ application: chatty!376
Lurch plugin
The lurch plugin is responsible for OMEMO encryption within libpurple:
- Notify user when a message can’t be decrypted instead of silently dropping it: lurch!5
- Unbreak the build and run tests during the build: lurch!6
Phone Calls
Calls (the app handling phone calls) now shows notifications on missed calls and emits haptic feedback and saw a long list of translation updates (fa, sv, uk, it, ro, fr, pt_br, jp , thanks Danial Behzadi, Anders Jonsson, Yuri Chornoivan, Antonio Pandolfo, Daniel Șerbănescu, Valéry Febvre, Rafael Fontenelle and Scott Anecito) but there were other small improvements:
- Build calls against Debian bullseye to make it future proof: calls!112
- add gbp.conf to make releasing less error-prone: calls!121
- po: Update po file list and make sure fail CI if we forget to do so in the future: chatty!345
- Skip i18n for plugins: calls!132
- Stop busywork for translators: calls!133
Compositor and Shell
This section highlights progress in Librem 5’s GTK based graphical shell name Phosh and its wlroots based compositor Phoc:
Phosh
- Blank the display on idle: phosh!300. This finally glues the wlr-output-power-management protocol and GNOME Settings daemon’s power plugin together and can be seen in here.
- Translations were updated for uk and zh_TW – thanks YuriChornoivan and Yi-Jyun Pan!
- Phosh now triggers more haptic feedback e.g. on button release and when selecting an activity from the overview
Phoc
- We fixed way too early unblank: phoc!151
- Nícolas F. R. A. Prado fixed compilation with
-Wswitch
: phoc!148 - Phoc now automatically enables new outputs to make them ‘plug and play’ again: phoc!152 (diffs)
- We made test execution in CI more robust to not frustrate developers: phoc!149
On-Screen Keyboard
Gnome Control Center (Settings) / GNOME Settings daemon
Sadiq enhanced several panels upstream:
Feedbackd
Feedbackd is responsible for haptic, audio (and later) LED-based feedback:
- Feedbackd now picks up the configured sound theme: feedbackd!18
- Feedback is now ended/canceled when invoking
lfb_uninit
: feedbackd!19 This makes sure feedbacks are stopped when an app quits - Rasmus Thomsen fixed a compile race that could lead to build failures: feedbackd!15
Linux Kernel
The process of upstreaming our Linux kernel work progress is covered in a separate report. The current one is for Linux 5.7 so this is mostly about downstream improvements:
- Linux 5.6 maintenance continued on this tree
- Linux 5.7 work started during May
- Sebastian made several kernel config adjustments to enable more hardware and tune for mobile:
- In order to upstream the Librem5’s device tree, relevant parts were separated from parts that need more work (e.g. due to lack of drivers upstream). This allowed for an initial version to be sent out:
- We now only ship libc headers for the stable kernel version. This avoids confusion when developers look for what’s current: linux-next!142
- We started work on PureOS Byzantium based images by building a first set against Debian Bullseye (which is Byzantium’s base):
Releases
These were the releases during May for projects we’re upstream:
Lambda
If you made it down here and want to start contributing join us on matrix. We certainly welcome patches and issue comments on https://source.puri.sm. If you want to grab an issue and can’t think of a particular problem, check the easy and help wanted tags in our GitLab instance. See you next month.
Discover the Librem 5
Purism believes building the Librem 5 is just one step on the road to launching a digital rights movement, where we—the-people stand up for our digital rights, where we place the control of your data and your family’s data back where it belongs: in your own hands.
Preorder now