v0.6.0: The Import/Export Update

This upgrade comes after the very important docker upgrade, so please read carefully the previous announcement to be sure you won’t loose any data during the process.

Quick intro

I’m afraid there is no screenshot I can show you for this release, despite being considered as a big one, because, as a matter of fact, everything was done under the hood. I’ve improved the whole import/export code for this first release in the 0.6 branch.

More - complex - details

Importation code now makes use of adapter, so I used a kind of dependency injection design pattern. “Kind of” because the adapter’s class name comes from a configuration array, pretty much like every Laravel’s major classes. It’s really a lot of words just to say that the main Importer class can call various adapters that will take in charge data importation, depending from what or where you want to import data. As a result, the Cyca adapter is the first one, and can import… Cyca files (which really just are json files containing structured data about everything related to you: highlights, folders, bokmarks, feeds, ignored feeds). These Cyca files are, obviously, exported by… the Cyca exporter.

Plugable imports…

All of this means that now it would be very easy to support more sources of importation, like OPML files, remote APIs, etc. Imports are now basically pluggables. These plugins are yet to be developed, but the code infrastructure is ready to do so.

…but unplugged exports - yet

Exporter, however, sticks to Cyca for now. No plugin architecture yet. Cyca’s exporter can only export json files, readable by Cyca’s importer.

I really don’t know about the demand for exporting the kind of data Cyca produces. Honestly, I don’t want to spend time building a Netscape Bookmarks exporter if nobody uses it (same goes about the importer, by the way). So, for now, I’m going to focus on import/export Cyca can use right now.

More to come

I don’t know if it’s going to work, but my intent is to use the same codebase for import/export, synchronisation, and API, which would allow for very powerful features. We’ll see in a future update.

Legally good

I’m pretty happy that the Cyca format includes everything about you, because:

  • It’s a minimalit and powerfull way to manage your bakups and restores yourself
  • And most of all, it complies to the GPDR about your data portability

As you may know from Cyca’s home page, the application was build privacy-first. You should know I’m an old developer now, “senior” maybe, and since the very beginning of the Internet at home, like, in the end of the last millennium, I was already in the hunt for things, people or bots on the web, scavanging for misused data. Since then, I swore to myself: when I’ll write an app, it will be an app you can trust. An app that’s not going to sell personal data of its users. An app that won’t use personal data at all. Except for what is really important: how can Cyca tell if this particular bookmark belongs to you if it knows nothing about you ?

Cyca is a self-hosted application, meaning your personal data will not go anywhere else than your own server.

Years has passed since by first hunt, and, finally, we had this organization called CNIL, an official structure to make laws and apply them, for everything related to your personal data online.

So, with the Import/Export update, I feel good about that, beause I know my users can trust me, and, somehow, maybe, my local CNIL would be proud of me. At least, I love the idea that it could be possible 😊

The cliffhanger

I’m happy with the job I’ve done so far, especially regarding on Import/Export. More options needs to emerge from what’s existing, but I have the feeling that I made it right. It’s important to me. Now I can go further, and start working on a feature I’ve been thinking about pretty much since my first commit on Cyca, a feature I’m dying to present to you…