Everdo Data Syncing

I just started using Everdo and it seems awesome. I currently store my knowledge base & GTD TODOs in a hierarchy of markdown files, stored in a git repo, that I edit with Atom/vi (on Linux), and Epsilon (on Android). This is great because: markdown! git! can use any tool! I intend to keep my knowledge base in this format, but for GTD I want something more GTD-specific, which is why I’m here.

So, my question is about sync. I understand there is an upcoming sync feature and am curious to know more about the details. Since Everdo data are stored in SQLite, I expect I won’t be able (or want) to use git.

For now, assuming I only made changes on one computer, if I were to sync ~/.config/everdo across multiple machines, would things break?

For the upcoming built-in sync feature, you mentioned on reddit that it could be self-hosted. Are we talking webdav, or something else?

Keep up the good work, and thanks for supporting Linux!

AFAIK there will be 2 types of sync:

  1. A subscription-based encrypted sync service
  2. Sync based on existing cloud services

If you just copy/move the data directory to a different machine, It will work.

If you sync the database file on your own, I believe it should work as long as you don’t leave Everdo open on multiple machines at the same time. But this has not been tested.

Option 1: Sync over network

You configure the IP address of a device to sync with. Once configured, Everdo syncs automatically whenever the other device is accessible.

Option 2: Encrypted subscription-based sync

Multiple devices sync via a central server. All data is end-to-end encrypted.

So no Option 3 specifically; sync using cloud services?

Which existing service are you talking about?
Can’t imagine a quality sync implementation via a generic service…

I was thinking about Dropbox.

Joplin does syncing via the OneDrive API.

I see. As I understand, Dropbox can only work well as a sync solution if the data is organized as files. Everdo stores data in a single database file.

I think that’s only a problem with concurrent access, in which case read/write operations can overlap. Otherwise Dropbox does block level sync;

It’s just about having access to the db on different devices.

Block-level sync won’t help with conflict resolution when syncing a SQLite database though. I think the best case situation, if Everdo were to support syncing via Dropbox/Google Drive/etc. would be to, in the case of conflicting modifications, ask the user which version should overwrite the other. Personally, I’d rather see Everdo support syncing via a central service (for ease of use / developer revenue) and via a standards-based self-hosted protocol, and it seems that’s they way things are going. I frequently don’t have reliable internet access, so minimizing conflicts and having the ability to host the server in my home would be of significant benefit to me.

The way FocusGTD, an unofficial OmniFocus companion for Android, does it is indeed to have a setting where you say “if there is a conflict, overwrite the device’s database”. In practice that rarely happens because usually conflicts arise when you have both programs open at the same time.

Central service is great and upcoming.

Self-hosted protocol the way described, a sort of wifi sync, tends to suck, for me. I’ve had it on 2 apps in the past and you need to initiate the sync manually.

I don’t know what this means…? There are lots of ways to sync, some more appropriate for some kinds of data than others. Whether you need to “initiate the sync manually” depends on the program. Anyway, sounds like Everdo will have two methods, so everyone should be happy. :grinning:

I wonder if there’s a technical reason. It should be possible to automate.

I think if you pair the PC with the mobile, the way MLO does, you usually should be OK. My laptop is setup to use a static IP on the network. It’s when the IP changes you have a “problem” and need to pair again

Hello i’m new, i would like that Everdo can be configurated to choose de ouput folder where the files are placed to save all the tasks, therefore i’t would be very easy to synchronize this data using dropbox, that would be a very good option in my humble opinion.

That would be very easy to do and will give to the user one more option that will always work without troubles.

4 Likes

I’m curious when it comes to the network syncing option, how would that work out if you use two computers at different locations (home and work), with a possible mobile phone that will travel between them.
Would it manage to have the phone sync up with either computer when connected to the networks, so that ?

If not, then I’d also be in favor of what Julian mentioned of having a predefined output folder where the file is saved, so that it could be used for some kind of cloud syncing.

For instance, KeePass creates a single file which you can sync as you will, and will even check when saving a file if the local file has been modified from the time it was opened locally. If so, it will try to manually merge in the new changes before saving, in order to prevent losses.
Some quick info on the synchronization mechanic can be found here!

1 Like

I assume in this scheme each task is stored in a separate file? What happens when the same task is edited on different devices before syncing?

In Network sync you will choose which of the devices is a “master”. The master will act as a central sync server. Other devices will sync with the master when it’s accessible. So when you have a phone that travels between two unconnected devices, then it would be a good idea to make it a master.

1 Like

Updating this thread just in case.

Network Sync has been released.

How to set it up: Everdo Network Sync Guide

*”I assume in this scheme each task is stored in a separate file?”
I think not. No separate files but one single db file containing all the tasks. And this one file would have been stored on a “shared” location (Dropbox, Goigle Drive, Personal/Own NAS, etc.) for convenient use by any Everdo platform. Concurrent opening of the common db-file could be a problem, what can be left in the responsibility of the user, or can be maintained by the application tracking the status of the db file and store it in itself and not making the possibility to open the db file by another client.
Or another possibility - what really works fine according to my experience since I use it - what was mentioned above by meneverdia: db file sync method of Keepass application.