Open fabianthoma opened 9 years ago
Yeah that is definitely something on the to-do list. Using Todo.txt is simply a quick to implement solution with mobile backends on pretty much all platforms, that I quite liked for the initial release. Moreover I am a fan of Todo.txt myself :smile:
The data model will have to be further abstracted at some point with interfaces for different storage and synchronization services. Once that is done, the actual export/synchronization should be easy.
It was due to a consideration of time & resources, that I decided not to do that directly in the first place.
Yeah I figured as much, staying simple with an application is the best way to start it. I files this issue merely to keep track of the options you might be able to add in the future. Take your time and do it right ;)
I think this app should not take care of synchronization, but rather rely on - and maybe suggest - third party tools (owncloud, dropbox, https://github.com/Kickball/awesome-selfhosted#file-sharing-and-synchronization which are feature complete with versioning, etc.). What's the point of using a portable storage format (todo.txt) if you need to reimplement everything?
In that case Todo.txt would be one option among many others, if Todo.txt is set as storage back-end the app would behave exactly like it currently does, but if users want to use alternatives, it should be easy to develop plug-ins for that purpose.
As long as the storage backend is a file (plain text, database, encrypted data, xml, json, org-mode https://github.com/mank319/Go-For-It/issues/61 https://github.com/mank319/Go-For-It/issues/68, all file-based), file synchronization tools perfectly fit the bill. A file synchronization implemented in go-for-it would increase the program complexity, introduce potential bugs and would not cover every case already covered by specialized file sync software. Just my 2 cents
I would love to make a plugin so go for it works with the Habatica api https://habitica.com/apidoc/#api-Task-AddTagToTask
I agree with nodiscc here. Part of Go For It's usefulness (and also todo.txt in general) is the lean implementation. There's no technical distractions on the user's end and the developer can focus on the sole purpose of the project. Your users are smart -- if they want syncing, they probably already have some system in place for that. For instance, I use Syncthing but the majority of people probably have Dropbox, Skydrive, Google Drive or similar in place already.
If a user wants to synchronise with some alternative todo format (CalDAV, Habatica or whatever), wouldn't that best be done by a small external tool? One that could be called upon by Go For It when certain events (like saving) occur. Such tools might actually be useful for a wider audience as well since there are already more mature todo.txt solutions available.
Edit: I don't mean to be a buzzkill in saying these things. I just see great potential in Go For It -- I haven't seen any other product like it and I don't want it to detract too far from that strength.
@eages I agree with that synchronization is not something that should be implemented in Go For It itself, but supporting other file formats has its merits: core todo.txt doesn't have that many features. Supporting features like time tracking wouldn't be practical using that. We could off course extend it, but this would not integrate well with other clients. I myself want to have support for recurring tasks in a way that todo.txt could not store in a reasonable way. Syncing with other formats could have the same issue in that a 1:1 translation can't be done in a nice way.
The things that people want or need will differ and it wouldn't be a good idea to support it all in a single application. What can be done is to make Go For It extensible so one could make a plugin to suit his/her needs. Adding an alternative todo list plugin will also mean supplying a widget to display and select tasks as I don't know of a good UI to rule them all.
What I'm currently working on is supporting multiple lists per plugin, so even if you just want to use the core todo.txt plugin you may benefit from these new possibilities. (For you todo.txt users: also expect support for automatic line breaks, projects and context in 2.0)
@asteres I hope to be able to publish a alpha version of Go For It with plugin support. (What I have now is incomplete, documentation is missing, and it has a lot of little issues.) I can't predict when it will be ready as the amount of time I have available varies and I haven't had as much time to spend on it as I would like, recently. That said if you want to work on a plugin right now, you could start by storing the the tasks in a Glib.List, Gee.List, or something similar and implement basic functionality (adding, removing, editing, etc...).
Here's a few ideas what you could allow users to sync with: