Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PIM strategy #1

Open
rinigus opened this issue Jun 17, 2020 · 8 comments
Open

PIM strategy #1

rinigus opened this issue Jun 17, 2020 · 8 comments
Labels
discussion Disscussion about somethings PIM personal information management

Comments

@rinigus
Copy link
Contributor

rinigus commented Jun 17, 2020

Introduction

As Nemo does not have much personal information management (PIM) support nor strategy on how to provide a PIM layer, this issue is filed to create a plan on how to cover Nemo PIM needs. It is expected that this plan will be formalized either through a Wiki page or a document in this repository.

In this context, PIM would cover:

  • online accounts
  • emails
  • contacts
  • calendars

Unfortunately, Sailfish OS stack cannot be used as it is due to the mix of open-source and proprietary components spread throughout the stack. First, an overview of Sailfish stack is given in the context of Nemo. Next, an approach used by a possible collaboration partner - Plasma Mobile - is described. This is followed by a short list of Nemo apps for PIM stack and finished by additional notes.

NOTE: THIS IS A DRAFT, PLEASE CORRECT ERRORS, FILL BLANKS, AND GIVE FEEDBACK.

At this stage, info is gathered to make a basis for formulation of the strategy.

Sailfish OS

Information on Jolla's Sailfish OS stack is mainly sourced from the description of closed sourced components collected at https://together.jolla.com/question/167645/open-source-roadmap-from-the-community-point-of-view/ . The research over there has been done by Damien Caliste @dcaliste and info has been copied from there. 

In general, sync is arranged/scheduled through Buteo via its plugins.

For Nemo, each closed sourced component would have to be replaced by a new OSS one.

Accounts

General description: https://sailfishos.org/wiki/Accounts_and_SSO

Not clear for me how interaction between accounts and other components of PIM are implemented. 

Email

General description: https://sailfishos.org/wiki/Email

  • QMF 
  • QML plugin
  • Sync plugin
  • API for email access via QMF
  • closed source jolla-email 
  • closed source sailfish-components-email

Contacts

General description: https://sailfishos.org/wiki/Contacts

Calendar

General description: https://sailfishos.org/wiki/Calendar

Calendar backend is based on older versions of KCalendarCore. Changes on Sailfish side are ported upstream. Nemo QML plugin is extending older KCalendarCore (as it wasn't available) and Buteo is used for syncing. It is expected to migrate to the latest KCalendarCore upstream, but in a very long perspective. For details, see below.

Plasma Mobile

Information on Plasma Mobile (PlaMo) stack has been gathered mainly from the discussion with JBB (@jbbgameich) on the Plasma Mobile channel. 

PlaMo does not have full PIM stack, but there are bits and pieces and a strategy in place. They plan and are already using for some components Sink from Kube. Sink provides support for online accounts and synchronization via its plugins. For clarity, Sink is what was formally known as Akonadi Next.

Accounts

Email

  • Currently missing, considering Kube based email client
  • There is a hope to have Kube as a submodule and to rewrite UI using Kirigami for mobile use. Some experiments have been done by JBB some time ago
  • Not sure Kube supports POP3
  • See notes on testing below

Contacts

Calendar

There is a Sink POC made last year by @dimkard, currently in a separate branch https://invent.kde.org/plasma-mobile/calindori/-/tree/calindori-sink . It demonstrated that all should work in principle. New abstraction mechanism is worked upon and is expected to bring Sink support to Calindori.

Testing notes

I have tested Kube on my accounts and below are the findings (17 Jun 2020). Note that some of the issues are probably due to the limited user interface.

  • all accounts emails were synced what appears to be correctly. 
  • after the sync, about 500 MB storage was used. For reference, same accounts would use 175 MB by QMF on Sailfish
  • there seems to be no way to limit sink data downloading / not clear if it is supported
  • UI has threaded view of emails
  • only one calendar shown per account
  • seems to sync only a selected account in kube
  • no email search support in Kube

Nemo Mobile

There are few apps for Nemo PIM stack, in the different stages of development:

Notes

Notes below are subjective and open for discussion/critique. If they end up in the proposed document, they should be marked as such.

  • Sailfish stack is known to work on mobile. If we manage to write the missing parts we should expect to have a working solution. Issue would be to make this first implementation and then to keep up with the changes by Sailfish.

  • We should try to collaborate with Plasma Mobile as much as possible. Already experience with Angelfish development showed that it is an effective and fast way forward. PIM is a large stack and it makes sense to work on it together.

  • As it is planned to style QQC2/Kirigami into Nemo UI, it will be possible to share large fractions of the code with Plasma Mobile. Exceptions are maybe some aspects in sync triggering and maybe few more. 

Revisions

  • 2020.06.17 First version
  • 2020.06.18
    • Added note regarding Calindori Sink branch (info from JBB)
    • Added questions regarding API for calendars / contacts access by clients in SFOS
    • Specified storage of calendars and contacts in SFOS
    • Added summary regarding SFOS calendars (source)
    • Added short description of Nemo apps (source)
    • Added note regarding Calindori Sink branch (chat with @dimkard)
@jbruechert
Copy link

jbruechert commented Jun 17, 2020

A small note on calindori, there is this branch (https://invent.kde.org/plasma-mobile/calindori/-/tree/calindori-sink), but I haven't checked yet whether it is already merged into master or not.

EDIT: It seems it is not merged with master.

@rinigus
Copy link
Contributor Author

rinigus commented Jun 18, 2020

@jbbgameich: thank you! Updated the original message with Calindori Sink branch info.

I'll try to keep revisions logged at the end of the post. That way it will easy to check for changes. As I don't know where SFOS keeps calendars/contacts, added blanks regarding that in SFOS section.

@neochapay
Copy link
Member

Contacts APP draft https://github.com/nemomobile-ux/glacier-contacts
Old email app https://github.com/nemomobile/qmlmail need to migrate to nemo components.
Old calendar app https://github.com/nemomobile/qmlcalendar need to migrate to nemo components

@neochapay neochapay added discussion Disscussion about somethings PIM personal information management labels Jun 18, 2020
@dcaliste
Copy link

dcaliste commented Jun 18, 2020

Thanks @rinigus for the initiative. I'll update the SailfishOS info in the coming days.

About the relation in the backend between KDE ans Sailfish for calendars, it is the same. Just that Sailfish is stuck at an ancient version (now it is called KCalendarCore in KDE and is part of KDE frameworks). I've several MR in sailfish git to upgrade to the latest version, but it's still a major jump for Jolla ;) With major changes (like the drop of KDateTime in favor of QDateTime which is not at all 1:1). On the other hand, I'm closely following latest KCalendarCore and always port SailfishOS changes into KDE to help later migration.

To go further in the differences, KDE is using Akonadi as a storage for calendar data, while SailfishOS kept the SQlite backend inherited from Nokia era, namely mKCal.

KCalendarCore is now providing QML bindings for its objects, while it was not available when Sailfish branched old KCalCore. That's why there is nemo-qml-plugin-calendar in Sailfish. But migrate to latest upstream and use its QML binding directly in Sailfish is a very very long term prospective since nemo-qml-plugin-calendar don't have at all the same API. So it would be a complete rewrite of the upper layers... In addition, it is adding for Sailfish a layer above mKCal to make it thread safe which is not the case in mKCal alone.

@rinigus
Copy link
Contributor Author

rinigus commented Jun 18, 2020

@neochapay : I will add section tonight with Nemo apps links and your comments regarding it.

@dcaliste: will be refreshing the page to see your updated comments :)

@dcaliste
Copy link

mKCal is storing the data in a single SQlite database for all calendars. It is located by default in $XDG_DATA_DIR/system/privileged/Calendar/mkcal/db.

@neochapay
Copy link
Member

https://git.sailfishos.org/mer-core/qtpim/merge_requests/2 upgraded QtPIM for Qt 5.9+

@rinigus
Copy link
Contributor Author

rinigus commented Jun 18, 2020

description updated with the info from today, most from above. in addition, calindori sink branch was made as POC and there is a work underway on integrating sink into calindori properly.

For clarity, added also a reference to Akonadi Next as it is where Kube Sink is from.

https://git.sailfishos.org/mer-core/qtpim/merge_requests/2 upgraded QtPIM for Qt 5.9+

@neochapay - not sure what to do with that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Disscussion about somethings PIM personal information management
Projects
None yet
Development

No branches or pull requests

4 participants