Notes from the Librem 5 BoF
Calls
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
Messaging
- 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
(lolz)
- 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
Widgets
- 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