nemomobile-ux / main

Main repo for docs and issues of Nemomobile
8 stars 0 forks source link

PIM strategy #1

Open rinigus opened 4 years ago

rinigus commented 4 years ago

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:

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

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

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.

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.

Revisions

jbruechert commented 4 years ago

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 commented 4 years ago

@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 commented 4 years ago

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

dcaliste commented 4 years ago

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 commented 4 years ago

@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 commented 4 years ago

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 commented 4 years ago

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

rinigus commented 4 years ago

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.