[owncloud-devel] [RFC] Splitting owncloud-client

Sebastian Kügler sebas at kde.org
Wed Sep 30 15:38:53 GMT 2015


So my goals is to make the complex syncing logic in owncloud-client
usable from other applications. In order to achieve this, I'm splitting
out non-GUI functionality into its own lib to be able to use it from my
own client (a Plasma-based UI).

The owncloud-client repository already contains two libraries:
 ocsync (a low level fork of csync) and owncloudsync (a slightly
 higher level, Qt-style API on top of csync which handles the actual
 syncing). My plan (after discussing this with Olivier and Klaas is to
 split out yet another library which has the account handling and sits
 on top of owncloudsync. The bits that stay in the client are then
 basically just the GUI (mostly the QWidget-dependent code).

So I went ahead with this and cut up the client further, to a point
where it works again against my split-out libs. I haven't noticed any
regressions, but I also haven't built it for Windows or Mac (I don't
have such systems available), so it would be helpful if someone could
build my branch against these systems to catch further fallout. The
library already works with my (unfinished) Plasma client, as a

Along with the splitting, there are some cleanups for buildsystem
inconsistencies, I've tried separating them out, but it quickly became
quite a chore to test these things individually, and really -- if it
works as a whole, we should be fine.

My code is in https://github.com/sebasje/mirall/tree/sebas/libsplit and
is up to date with owncloud-client's master. I'd be happy if you guys
could have a look and tell me what needs to happen to get this merged.

Once the library split is merged, we can make further improvements, for
example cmake find module, librarizing things more (EXPORT macros),
moving stuff in different libraries into their own namespaces,
reviewing and polishing the API further, and moving things between
libraries to improve the semantics of the splitting. I've also not
moved any code files yet to make merging in upstream changes easier.
(I'm a bit afraid of bitrot, so I'd rather get this stuff in sooner
than later, and incrementally improve upon the result then.)

As I said, reviews and comments are most welcome.


Sebastian Kügler  |  http://vizZzion.org  |  http://kde.org

More information about the Devel mailing list