[owncloud-devel] Separation of frontend and backend

Thomas Müller thomas.mueller at tmit.eu
Wed Jul 8 19:21:18 GMT 2015


I'd like to start a discussion related to the area of our Calendar and Contacts apps.

As of today both apps take care about backend topics like WebDAV interfaces and storage in the database and in addition they deliver a web UI.

Both apps suffer from many issues - most important:
- due to the tight dependency these apps are bound to the ownCloud core version (SabreDAV)
- Code path are duplicated because data and functionality is exposed via WebDAV and AJAX/JSON routes

Especially recent forks and rewrites of these apps (mainly Calendar and Tasks) have shown that the reason has been different approaches with respect to the UI, e.g. use javascript lib X instead of Y or different UI/UX mentalities.

As of today these forks require a duplication of the backend code as well and results in necessary data migration (import and export) of data and causes some inconvenience. While this might be acceptable the simple fact that many users out there simply "only" want a proper CalDAV and CardDAV sync installation we should consider a split of backend and frontend code.

My suggestion would be to implement a shipped app which holds all necessary CalDAV and CardDAV interfaces and simply takes case about sync of contacts and calendar. As public api for apps CalDAV and CardDAV can be used - additional functionalities like sharing can be offered as public rest or OCS calls.

The concept will then be the same as we are about to implement for 8.2 with respect to core/files. The files apps will no longer contain backend code but interact with core using WebDAV and OCS sharing API.

>From my POV this would be a big step forward with respect to building a scalable and stable platform for the future.


Tom aka DeepDiver

More information about the Devel mailing list