alainm23 / planify

Task manager with Todoist and Nextcloud support designed for GNU/Linux 🚀
GNU General Public License v3.0
3.28k stars 197 forks source link

Planner 3: Ideas and Thoughts #760

Closed alainm23 closed 2 years ago

alainm23 commented 3 years ago

Planner 2 is already old and needs a major update to be able to better adapt to all the changes you have undergone over the years. The next step is v3. I have some ideas and thoughts that I would like to share with you.

  1. Todoist Sync: Todoist is a great service but is now limited to 5 projects maximum on the free plan. This is a big problem. I intend to downgrade Todoist support to a lower priority and opt for another sync service.

  2. Sync Across Devices Always: I think that software that cannot be synchronized between devices is useless. I'd like to receive technical support for this problem.

  3. CalDAV support: Planner has already started with support for CalDAV in v2.7, this is a great synchronization system but does not have all the features I would like to see in Planner (Headers, tags, reminders, etc.).

Leon0402 commented 3 years ago

I think moving on to supporting more services / CalDav Support is the right way to go!

I'm a little bit unsure about the sync across device thing. Would like to know more details about this. As far as I know Planner is quite platform dependent and there are no plans to support Windows or Mac Os. Furthermore you probably do not plan to release a mobile version of planner either I suppose. While I really miss Planner on other platforms, I believe you should stick with this Linux Only Versions. If you can make it more platform independent great, but I think it's important to focus on Planner original and not spend time on developing different planner versions for android, Windows, iOS and what not.

I don't believe this is you actual plan, but rather you want syncing between Linux Systems with Planner. This is imo of little use compared to how much development and maintain effort that would be.

I think rather you should focus completly on supporting CalDav and possible other formats, which will then also work for syncing Planner to Planner on multiple devices. So the latter is then for free. Although using a standard format might have some limitiations. But I guess that would be then the next step -> Find out the limitations. Possibly for sync across devices the CalDav standard could be extended or something like that. But the point stands: I believe the main focus should be on suppporting open formats and possibly building up on them to allow more advanced syncing for specific serviced (such as planner itself)

alainm23 commented 3 years ago

I've been reading a bit and we can use a third-party server like Dropbox that allows Planner cloud storage. Thoughts?

Leon0402 commented 3 years ago

Would prefer Nextcloud

thomasaull commented 3 years ago

Sync is useless, if you want to use planner on other OS/Devices, for me this would be mobile at least.

Edit: What I‘m trying to say: Most people I guess want to have a mobile support for their ToDos, if Todoist is not supported anymore, this would cancel this usecase if there‘s no replacement app for mobile. I think there were some "open" standards for Todos, this could be a way to still support mobile. I would need to look into it for more information though

BeatLink commented 3 years ago

Caldav is an open standard used by numerous todo and task applications. In my opinion, I that should become the primary backend.

Tasks.org is an especially well designed and featureful fork of the now discontinued Astrid Tasks app. They support hierarchial tasks, multiple task lists, tags/labels powerful filters, recurrence features and more. They are also in need of a desktop application. In my personal opinion, it would be a fantastic symbiotic relationship if you could reach out to them and collaborate on a way to sync between the two.

But as always, there is issue #623 that we can lean on. We could have planner support multiple backends through plugins for maximum usability. Getting Things GNOME uses a similar structure, though most of the sync and storage plugins were made incompatible by their new rewrite.

From the top of my head, a way to implement this would be to create a single data management interface with functions for saving and loading all the data in planner from tasks to projects to labels and so on. Each storage management plugin would then implement this common interface in their own code. The biggest issue I would see is dealing with conflicts and inconsistencies between the various plugin systems. However, one way of solving that would be by tying each project to a single storage plugin, so for example you could have some projects with all of their todos synced with todoist, some more projects with their todos synced with caldav, yet more projects with their todos synced via markdown text files, and so on. Tasks.org has a similar concept with lists, where lists contain tasks and are similar to projects but without the hierarchy and each list can be from a different source, for example, one list may be locally stored on the device while yet another could be from caldav and yet another from etesync. Thats the best way i think to implement this.

mlaarebi commented 3 years ago

@alainm23 You can actually manage the syncing "problem" in various ways, all of them are already supported by Planner (kind of).

1 - plugins: by adding sync capabilities as plugins, one by one, according to the user's feedback on what he prefers.

2 - use an open database: like the one used right now, but give the user the choice to chose where to save it, so he can put it in a synced folder (like with mega or drive or dropbox...).

3 - let the user export & import his tasks: so he'll chose how to managed them by himself.

You can also look for a desktop app with the maximum similarities with Planner and exchange help on upcoming features' so you'll have your "sync btw devices" option.

jalcine commented 3 years ago

I would vote also towards using a open database system (SQLite's an amazing option here) as potentially the primary backing implementation and allowing for synchronization of information from something like CalDav and other systems. IIRC you can use custom fields in CalDav to provide any hints at functionality you'd like (like for headers and labels under a namespace).

ghost commented 3 years ago

@alainm23 I was thinking of having task note written in markdown

R0b0ticRabb1t commented 3 years ago

i would love to see some sort of way to schedule tasks automatically or in bulk, its a huge pain to manually assign a date to each task

BeatLink commented 3 years ago

i would love to see some sort of way to schedule tasks automatically or in bulk, its a huge pain to manually assign a date to each task

This would be best served as a separate feature request, otherwise there is a risk of it being buried in this thread.

mradke commented 3 years ago
2. **Sync Across Devices Always:** I think that software that cannot be synchronized between devices is useless. I'd like to receive technical support for this problem.

As others have said: probably the main issue here would be a missing mobile counterpart. I don't think too many people have multiple desktop / laptop machines where this would benefit them.

3. **CalDAV support:** Planner has already started with support for CalDAV in v2.7, this is a great synchronization system but does not have all the features I would like to see in Planner (Headers, tags, reminders, etc.).

While I love the promise of this I had massive problems in the past with this approach. I tried something as simple as implementing a shopping list with CalDAV and that simply does not work as well as advertised. The problem is, that you have absolutely no conflict detection in the protocol - so most apps won't implement anything in that regard. This means that it is "last write wins" most of the times and it is not always clear when data is not yet synced. This lead several times to data loss on my part.

I think you need a database or datastructures that can solve, or at least detect, conflicts like CouchDB, git or conflict free replicated data types (CRDT) if you really want to sync.

A pro of CouchDB would be that one could write an accompanying web app that would also be accessible on mobile or non Linux platforms without having to write a server.

That beeing said I would probably just put the data in a git repository and let git take care of the sync process. This obviously makes it really hard to have a mobile app, but this is probably out of scope anyways.

thomasaull commented 3 years ago

I only played around with it a bit, but https://github.com/yjs/yjs looks like a really good framework for using CRDTs. It might be a pretty flexible approach to support multiple storage backends, even a completely decentralized protocol could be implemented

mradke commented 3 years ago

I only played around with it a bit, but https://github.com/yjs/yjs looks like a really good framework for using CRDTs. It might be a pretty flexible approach to support multiple storage backends, even a completely decentralized protocol could be implemented

I should stress this even further: I think CRDTs are super interesting, but probably WAY too overengineered for the problem at hand.

-- Edit

Sorry for the spamminess I just want to clarify: I think the benefit of CouchDB (over a CRDT) would be an existing, proven RESTful api that one could use. Planner is, as far as I know, a vala application so you'd want to use a CRDT library in vala or c or something along those lines. So "overengineered" was a poor choice of words, I probably should have used "unproven" or "too much research" instead.

thomasaull commented 3 years ago

I should stress this even further: I think CRDTs are super interesting, but probably WAY too overengineered for the problem at hand.

Not sure if it‘s more "overengineered" than CouchDB (or any other solution for that matter). Syncing is hard, but we just want to use it, so the complexity is abstracted away by the framework anyway 🤷‍♂️

Zaedus commented 3 years ago

I'm a bit late to the party, but I think that support for CalDAV outside of Nextcloud would be very useful for two reasons. For one, it doesn't force anyone to use Gnome or Gnome Control Center, and two because it doesn't force anyone to use Nextcloud either. In my opinion Nextcloud is a little slow, and I'd rather run a WebDAV server and save myself the resources.

Fatih20 commented 2 years ago

You mentioned the changes this app have gone through over the years. What about refactoring?

denogio commented 2 years ago

Nextcloud sync would be THE way to implement sync for the open community.

IgPugliese commented 2 years ago

What about beeing able to add a makdown note? Like notion

goirik-chakrabarty commented 2 years ago

1) You can add support for todo.txt which is a rather simple ToDo standard and can be a subset for things that can be done with Planner. 2) Please add a system tray icon! That would be very nice for quickly looking up tasks.

sollymay commented 2 years ago

I would say:

  1. The most important for me, is to fix recurring tasks with Todoist. For some reason, you can click them 1000 times and they wont clear up
  2. Add an option to create your own themes (i run Dracula on Elementary and looks great). adding an option to customize themes would be great.
BeatLink commented 2 years ago

I would say:

1. The most important for me, is to fix recurring tasks with Todoist. For some reason, you can click them 1000 times and they wont clear up

This issue was raised here #812

BeatLink commented 2 years ago

What if Planner became a desktop counterpart to the Tasks mobile app at (tasks.org). Its jam packed with features like location, tags, custom filters and lists, recurring tasks and so on. They've been looking for a desktop solution. They also support multiple storage backends including local, caldav and decsync. I think planner could do the same.

I think tasks and planner working together would be a great powerhouse on linux.

BeatLink commented 2 years ago

It would also be really cool if Planner could be recoded in GTK+ and Python. While it would be less performant, it would be significantly easier to develop for as many people know python.

fuxx commented 2 years ago

So, we are short to October and looks like @alainm23 got pretty quiet on the topic the past months. What are your current thoughts @alainm23 ? Do you need more assistance in technical or planning perspective or didn't you had the time yet to look into the proposed solutions?

BeatLink commented 2 years ago

@fuxx, from his twitter feed, i believe he's been focused on more personal matters as he's recently become a father.

@alainm23 Congratulations by the way! 🎉

primal-buddhist commented 2 years ago

So, the todoist thing is the elephant in the room, as it provided the mobile interface that complemented planner on the desktop. Planner didn't need to worry about that. Many apps synced to todoist, so there was a choice.

So not replacing the todoist "ubiquity" backend is actually quite profound as, overnight, we will have no mobile version. Writing our own backend thus means no mobile interface.

My tuppence therefore goes to etesync as they have an increasingly ubiquitous back end, have privacy as a goal. Yes they have the same 3 buck monthly charge as Todoist, but so does the monthly charge for a nextcloud host and with all of the extra sysadmin overhead that goes with that. So free as in beer is unlikely and, I think, an edge case. As others have mentioned, tasks.org are already on etesync so the path of least resistance seems clear :-)

adamhemzal commented 2 years ago

Is Windows / MacOS support considered? However, it may require to rewrite the whole app to TypeScript

Arcitec commented 2 years ago

@alainm23

I think Planner is almost perfect already. There are only 3 tiny things that bother me:

  1. Applying labels should be as easy as Call the doctor @phone instead of having to use the mouse to click the labels menu and search through it etc etc. Ticket: #367

  2. Sorting new tasks into projects should be as easy as Call the doctor @phone #health to move it into "health" project (or create if missing). Ticket: #367

  3. The final thing is about pull request #374, it's nice that it's possible to do Call the doctor tomorrow and get it auto-assigned as "tomorrow", but I wish that it would also remove the keyword from the title, so that it just says Call the doctor with a date of "tomorrow". This also applies if points 1 and 2 are implemented, because it would be very ugly if the @label #project metadata stuff remains in the task title. So a more robust task entry parser is required for all three of these issues.

Todoist does a good job with those 3 things, for example making it very easy to create/assign labels and projects via @ and #, which show popup menus to find/create new labels and projects. :) When I used Mac, the OmniFocus applications also does an amazing job with natural language parsing of new tasks. You could do stuff like "Call the doctor on 2021-12-24" and it would add "Call the doctor" with a date of December 24th, 2021.

Apart from the quite-poor "new data/task entry", I think Planner is perfect and is the best GTD app on Linux.

Edit: Forgot, the board view has quite a few issues but it's not that important for me personally:

alainm23 commented 2 years ago

I'm working on Planner 3. A code restructuring and performance improvements are coming, Regards.

fuxx commented 2 years ago

I'm working on Planner 3. A code restructuring and performance improvements are coming, Regards.

Is their anything where you need some help?

osslate commented 2 years ago

Todoist Sync: Todoist is a great service but is now limited to 5 projects maximum on the free plan. This is a big problem. I intend to downgrade Todoist support to a lower priority and opt for another sync service.

Have you explored https://taskwarrior.org/docs/design/protocol.html? It's possible to add custom metadata (UDAs) too to attach additional Planner-specific attributes to tasks. That'll sync with TaskWarrior out of the box, and a number of mobile apps that support it also.

alainm23 commented 2 years ago

Planner 3 (Progress 45%) image

fuxx commented 2 years ago

@alainm23 It looks promising :) What service are you using now for synchronization ?

alainm23 commented 2 years ago

@fuxx Todoist and CalDAV

fuxx commented 2 years ago

Planner 3 (Progress 45%) image

Hej @alainm23 :) How are things working with your newborn? I hope you had a great time so far :smiley:

Do you made any new progress on the project and is there any way to help you? I am pretty sure that there are 1-2 guys who would put efforts into this project, i would.

I can imagine that your focus shifted a bit harder then you expected and probably your nights are very short these days :smile: Keep rocking :guitar:

alainm23 commented 2 years ago

Hi @fuxx, fortunately all is well with my newborn. I am still developing Planner 3 in my free times. I intend to release a beta 1 in these weeks. the idea is to catch up and release new features until the release of a stable version. You can test this new version in the following branch: https://github.com/alainm23/planner/tree/next Regards

fuxx commented 2 years ago

Hi @fuxx, fortunately all is well with my newborn. I am still developing Planner 3 in my free times. I intend to release a beta 1 in these weeks. the idea is to catch up and release new features until the release of a stable version. You can test this new version in the following branch: https://github.com/alainm23/planner/tree/next Regards

Thanks for the response :) I pulled the next branch a few minutes before you merged that one to the master branch. I cant get it compiled via flatpak on Arch + Gnome Builder as there is a missing LIB_SUFFIX variable in CMakeList of evolution data server, injecting with -DLIB_SUFFIX=64 as a workaround failed.

I switched to my systems build system on latest Arch which worked to compile, but i get some graphic glitches on the UI due theming issues (Arc-Dark). Yesterday i tried to use elementaryOS in a VM but building the same way again with Gnome Builder + Flatpak env crashed the entire VM when building sassc. Do you develop on elementaryOS exclusivley?

Is there any chat around, like Discord, Gitter or anything else where some devs hang around or are you the only person on the project right now?

Build output

CMakeLists.txt (add_printable_variable)

# Project custom modules
include(PrintableOptions)

add_printable_variable(LIB_SUFFIX "Library directory suffix, usually defined to '64' for x86_64 systems" "")
alainm23 commented 2 years ago

@fuxx I haven't ported Planner 3 for Flathub yet, but I'm in the process, Planner 3 beta 1 will be released on AppCenter as Flathub.

Arcitec commented 1 year ago

@alainm23 Hi, I just noticed that you recently had a baby. Congratulations, man! <3

Real life is way more important than code.

That being said, I also noticed that you have recently started a GTK4 branch (libadwaita)? Very cool to see! :)

Still, it's more important to be there for your wife and kid in real life. :) Best of luck with everything and Merry Christmas!