taskserver icon indicating copy to clipboard operation
taskserver copied to clipboard

[TD-129] Add timew support

Open taskwarrior opened this issue 6 years ago • 9 comments

Christian Decker on 2017-03-29T18:20:38Z says:

I really would love to have the possibility syncing my timew entries via the server. Maybe it's possible to integrate a data storage for the components.

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Migrated metadata:

Created: 2017-03-29T18:20:38Z
Modified: 2017-10-12T02:40:21Z

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Paul Beckingham on 2017-03-30T12:30:51Z says:

We have no plans to sync Timewarrior data.  We are not likely to ever do this.  While not technically difficult, the endless, thankless, unpaid support burden is not something anyone wants to provide.

Leaving this issue open so others can see this.

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Christian Decker on 2017-03-30T16:25:00Z says:

Okay. Thanks anyway for this great tool. Maybe I'll try to solve this issue by my self, when I've the time for it.

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Christian Decker on 2017-04-01T16:45:38Z says:

I thought about a solution, which I would love to present here before making changes that will never be merged into the code.

  1. I would add an on-sync hook to taskwarrior, which just gives me the signal for starting the following stuff in a separate script
  2. Add a command to taskwarrior for sending all data from an extension to the server. Maybe something like task sync init
  3. Add a command to taskwarrior for sending/receiving data to/from the server. Maybe something like task sync
  4. Give the taskserver the possibility to receive this data and store them in the folder of the user orgs/Public/users/USER-ID//
  5. Give the taskserver the possivblity to send this data to the client.

I'd really like to get your opinion about that! Thank you!

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Paul Beckingham on 2017-04-01T18:03:16Z says:

Here is my feedback, followed by a workable suggestion:

Without meaning to sound too negative, this really doesn't solve anything, it's just a wishlist of command line features. For syncing arbitrary data, you need to address:

  • The detection and merging of changes. Remember, extensions can store arbitrarily complex data structures. How are you going to merge those? What if they are binary?
  • Automatic conflict resolution mechanism. conflicts occur. How are you going to handle that without data loss?
  • Design a mechanism for extracting and applying deltas to data structures.
  • Adding an on-sync hook also has a lot downsides. There are good reasons why we have not added this.

A better approach would be to simply share the extension data using basic file copying services like DropBox. While this doesn't come close to proper merging, it is readily available and zero-effort, provided you don't cause conflicts in the data that it is guaranteed to butcher.

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Christian Decker on 2017-04-03T10:33:26Z says:

Your suggestion is at the moment my solution, but I don't like this solution. I really would love to have a clean solution over one channel, without an additional service.

With your points you're right and I don't think there can be a solution for binary files, but I think for the rest their might be a solution. Of course I've only gave a "wishlist" of command line features, without any details, but I thought I check if this might be the right way before going into details and making a concept.

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Paul Beckingham on 2017-04-03T12:05:05Z says:

Then we agree - you're on the right track, just missing details. Here's one:

Suppose taskwarrior has an extension E. E has it's own data. Taskwarrior needs to not only know that E has data, but where it is, and that E data is sync-able. This could be done with configuration.

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Christian Decker on 2017-04-04T06:54:32Z says:

Their maybe 2 or 3 solutions which I can think of for the configuration

  1. Just one configuration.
taskd.syncextensionspaths /path/to/extensiondata/E, /path/to/extensiondata/F
  1. A configuration for every extension
taskd.extension.E.path /path/to/extensiondata/E
taskd.extension.E.sync true (default: false)
taskd.extension.E.<place for other stuff>
  1. Maybe a JSON-Object with the same data as in point 2
taskd.extensions {E: {path: /path/to/extensiondata/E, sync: true}, F: {/path/to/extensiondata/F, sync: true`

taskwarrior avatar Feb 12 '18 01:02 taskwarrior

Tomas Babej on 2017-04-09T15:45:45Z says:

For one, I'd like to see a timewarrior server one day, however, this is not happening without somebody stepping in and devoting a huge amount of time in making this happen. Also, note that we try to keep timew and task separate, so in my opinion their server counterparts (if they ever come to see the light of the day) should also be separate daemons.

taskwarrior avatar Feb 12 '18 01:02 taskwarrior