Hi all,
I just wanted to share some Ring desktop client development progress and open 
it up for feedback.

We're looking to slowly switch to an SQLite backend for storing certain Ring 
client data (call, chat, etc history) in order to be able to facilitate future 
features and improvements.

Currently, the call history is stored in a simple yaml style text file, while 
chat history is stored in individual JSON text files (one per contact, 
approximately).

The main issue with this implementation is that in order to reconstruct the 
history of interactions as well as a list of contacted numbers / RingIDs (which 
have not been added to the system's contacts) we're obliged to load and parse 
the contents of all of these files. Another is that any modification to the 
history requires potentially re-writting one or more files.

Some future features which should be facilitated by this change:
- lazy loading of chat/call history
- easier deletion/modification of individual history items
- encryption of local data (via encryption of the data base)

Some questions still to be answered:

Currently all the desktop Ring clients use LibRingClient (LRC) which uses Qt 
Core. Qt also provides an SQL modules to interface with data bases, so this 
would become another (optional?) dependency of lrc and thus the clients. 
However, it seems that Qt doesn't provide native Object-relational mapping 
(ORM) so this layer would either have to be written by us, or else we would 
need to find a GPL compatible library for this.

LRC is written to support multiple backends for its different models, so 
theoretically we could continue to support both types of backends (text files 
and SQLite); however this would potentially be a lot of extra work. It would be 
good to hear any arguments for giving this option to the user in the interface. 
For example, if the user wants a human readable version of all their history, 
we could simply provide an export to text file feature.

One downside is that, of course, if we make changes to the DB schema, we will 
have to manage the migration between versions.

Feedback welcome!

-stepan

_______________________________________________
Ring mailing list
Ring@lists.savoirfairelinux.net
https://lists.savoirfairelinux.net/mailman/listinfo/ring

Reply via email to