Notes from the Librem 5 BoF


  • Goal is to have an iOS-style API (CallKit) with an incoming call UI which other things can lock into

  • For now have the active calls window display above the lock screen with the layer surface protocol which is per-surface
  • For launch, not worry about complex call operations; higher priority things
  • Have very simple notifications for now


  • Andrea made prototype for evaluating libpurple, sening SMSes via oFono
  • Incorporated lurch plugin for OMEMO, works so far; can establish encrypted conversation
  • Set up development board with SIMCom modem; some issues with oFono and the Messaging Manager (SMS part of modem)
  • Look at whether bubble widget can have CSS styling; use GTKListView with text in label styled with CSS for bubbles
  • Looked at how Polari displays messages; painting with cairo, etc.; text has to remain objects and not just cairo stuff
  • BubbleChat widget may find its way into libhandy; needs lazy loading, putting images in, etc

  • Label is styled rather than container; also style some sub-text, like timestamp
  • Fractal architecture should no longer be dependent on Matrix; could share UI code easily for other protocols
  • Want to use LMDB, key-value store database as common storage for state where each panel/view accesses data and displays it
  • Will start working refactor for history list; lazy loading, flashing on incoming message, etc
  • Will have persistent local storage; infrastructure has no problems for encryption but encryption itself is another issue
  • Tiny libolm with encryption, wrapper for each platform; one for java, android, ios, etc.
  • Have some people working on that; Hay and Christopher are done with rust bindings for libolm; glue code is still needed, "Matrix Glue"
  • Johannas will start working for Purism in August, during summer; confident he can get encryption working in Fractal in seven weeks
  • For encryption, need to port database; at present everything is stored in a file; need to implement transactional stuff
  • Julian is rewriting widgets to support database
  • Would be good to have a generic store abstraction which can store to file, database
  • If Hay (Johannas) manages to do encryption, in a few months it should be possible to sort Matrix

Backend refactor -> data store -> encryption -> glue code
                               -> split application
                               -> SMS
  • Would like Fractal backend for SMS
  • Can start straight away after database is in place

=> Matrix arch drawing

  • Basic idea with libpurple is people are interested in Jabber conversations and there are lots of plugins available for systems like Telegram; there is a plugin available for encryption like OMEMO; there is someone who is willing to implement encryption parts, A/V stuff, etc.
  • Just investigating to see whether it's worth using
  • Documentation of libpurple is not good
  • Contacted guys to see about support for plugins available
  • Also possibly implement SMS as a plugin to libpurple
  • Don't consider this as competition with Fractal/Matrix; largely issue of timelines and what can be achieved; nice to have Plan Bs and fallbacks
  • SMS API (oFono) is a D-Bus API (SMS is inherently unencypted)
  • Things to do are send reports (status of sending, etc.)
  • ModemManager API is very similar to oFono API

  • Lots of the issues with Fractal like storing messages, etc. are already solved in libpurple and XMPP community who have 10+ years of experience
  • We have contacts to ask questions with
  • Fractal will be base messaging application?
  • oFono will be used to start with?
  • Will have different backends like Matrix/SMS?
  • Ultimately that is where we want to go; long way there; transition to SMS is a whole other story
  • Matthew said injecting SMS would not be a problem
  • SMS in chat history is a smaller problem than everything else that's needed


  • Phone should be good
  • libpurple will be good for supporting many different messaging protocols like Signal, Telegram, etc.
  • Matrix has many bridges which don't require plugins; possibly more sustainable than many plugins; assuming Matrix is still around in two years
  • libpurple has been around for 20 years, so maybe not optimally sustainable but present and viable
  • Matrix team doesn't want to work on implementing different protocols
  • SMS support will be limited to the 1:1 Fractal app
  • libpurple philosophy vs matrix philosophy is too much for one application (Fractal) to bear
  • Main focus for the phone should be multi-protocol application
  • Most people don't want to connect with Matrix
  • Want to communicate with friends from here, friends from there; protocol comes in later
  • Don't care about protocol at all when sending a message
  • No data to make choices
  • We want a minimum functionality of sending multimedia (text/images) messages to people


  • Column is simple and is largely done; Julian found a bug, Adrien fixed, Guido merged today
  • Need tests for our libhandy widgets so they don't break and piss people off
  • Leaflet has glitches, hasn't been touched for a couple of months; need to take some time to work on it
  • Dialogs that don't fit on-screen are a bug in the application; information should not be presented in a dialog in the first place
  • Proposed to change simple dialogs with a single line of buttons in the action area to have buttons stacked vertically, HdyDialog; could carry a patch in our GTK+ or add a dialog to libhandy to prototype

=> Dialog drawings

  • No Expander pattern
  • Notifications are good, have a simple implementation of the GNOME notification API, including on lock screen

GUADEC/2018/Hacking days/Librem5BoF/Notes (last edited 2018-07-27 10:41:48 by RobertHam)