File Attachments Proposal #4038
Replies: 2 comments 8 replies
-
|
I suppose there are two use-cases for this, which we would need to distinguish: a small text file containing notes on the task, or arbitrary (potentially binary) files. For the former, we could do a reasonable job of "synchronizing" them, using operations like "insert string S at position N" and "delete K characters at position N". This is pretty standard OT stuff, although most of the research assumes that you get to see the user's editing behavior (think etherpad or google docs). We could probably adapt some kind of character-by-character diff approach to turning edits into operations. For the latter, we would want to do wholesale replacement of the object, with latest-write-wins semantics. Trying to model replacement of one PDF with another as byte-stream edits would be pretty inefficient. For latest-write-wins, I think we could just us some kind of content-addressable storage approach, storing only the content hashes in the operation stream. So maybe an attached file looks like The downside is, users will be tempted to |
Beta Was this translation helpful? Give feedback.
-
|
Could attachments just be URLs, maybe with some convenience support for things like GitHub Gists, Google docs, Pastebins, etc.? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
It would be handy if it were possible to attach files to a task. Personally, I would mostly use it for text files, pdf's, and images.
I found #786 which alludes to this but no more recent discussion. One of the main benefits and challenges which doesn't seem to be considered there is synchronization.
While storing files separately from the database is the most performant solution, I doubt the additional complication of the synchronization and storage system would be worth it. Files could be stored as blobs if we set a reasonable size limitation (1gb?). The first problem I'm aware of is that I think we'd need some additional logic in taskchampion to batch large operations that are too big to reliably fit on the wire and then reassemble them on the other end.
From a user interface perspective, I would see this working a lot like annotations, except a file path is given rather than a string and it is stored with a timestamp.
Beta Was this translation helpful? Give feedback.
All reactions