The open calendar, task and note space is a mess(stevenvanbael.com)
stevenvanbael.com
The open calendar, task and note space is a mess
https://stevenvanbael.com/open-calendar-task-space-is-a-mess
344 comments
Surprised nobody has mentioned this yet, but Org-mode for Emacs [1] is just great, and fits very well to the requirements:
- Source of truth: these are text files, so any of git, nextcloud, syncthing etc. will do.
- Consistent interface: using emacs might be tough on mobile, but there are some pretty good web interfaces for it [2]. I personally use Orgzly [3] and syntching on my Android
- Standard protocols: custom scripting does anything. ical is pretty easy to handle, not sure about webdav.
- FOSS: check
- Multiple calendars: yep, via Org agenda [4]
- Subtask support: As deep as you can go
- Custom logic: via emacs scripts (or some creativity if you're using other clients)
- Markdown notes: yes, minimal differences between org mode and markdown
[1] https://orgmode.org/
[2] https://github.com/DanielDe/org-web
[3] https://www.orgzly.com
[4] https://orgmode.org/manual/Agenda-Views.html
- Source of truth: these are text files, so any of git, nextcloud, syncthing etc. will do.
- Consistent interface: using emacs might be tough on mobile, but there are some pretty good web interfaces for it [2]. I personally use Orgzly [3] and syntching on my Android
- Standard protocols: custom scripting does anything. ical is pretty easy to handle, not sure about webdav.
- FOSS: check
- Multiple calendars: yep, via Org agenda [4]
- Subtask support: As deep as you can go
- Custom logic: via emacs scripts (or some creativity if you're using other clients)
- Markdown notes: yes, minimal differences between org mode and markdown
[1] https://orgmode.org/
[2] https://github.com/DanielDe/org-web
[3] https://www.orgzly.com
[4] https://orgmode.org/manual/Agenda-Views.html
I'm the author of the article, it's always fun to see your own articles pop up on HN unexpectedly.
This post was written several months ago and in the meantime I have given up on trying to cobble something together using existing solutions because they don't provide the extensibility that I want.
I'm building my own replacement from scratch focussing on tasks/projects/calendars first. The architecture is a postgres db exposing CRUD API endpoints and all changes are broadcasted over MQTT so I can easily hook into everything for automation and extension.
I have a desktop application in JavaFX and a mobile Android app so I can use Kotlin as one language across all clients and backend. Lots of code sharing going on for things like API models.
This post was written several months ago and in the meantime I have given up on trying to cobble something together using existing solutions because they don't provide the extensibility that I want.
I'm building my own replacement from scratch focussing on tasks/projects/calendars first. The architecture is a postgres db exposing CRUD API endpoints and all changes are broadcasted over MQTT so I can easily hook into everything for automation and extension.
I have a desktop application in JavaFX and a mobile Android app so I can use Kotlin as one language across all clients and backend. Lots of code sharing going on for things like API models.
I’m frustrated that adding and tracking public events is still so primitive. Why can’t I just click a button and follow all the local events for my favorite artist/venue/team/theater/charity? Why do I still have to manually create events and copy and paste details? Why are there so few “add to calendar” and why do they often fail?
Part of it is down to the failure of micro formats and the semantic web, but it would seem like with today’s technology it wouldn’t be to hard for a browser extension to recognize an event and automatically extract the correct details (title, place, date, time).
Part of it is down to the failure of micro formats and the semantic web, but it would seem like with today’s technology it wouldn’t be to hard for a browser extension to recognize an event and automatically extract the correct details (title, place, date, time).
> Cons:
> Written in old PHP and there is work underway to do a complete rewrite in Golang
I will never understand "the big rewrite" philosophy, no matter how many times I hear it.
Are some languages better than others in some aspects? Yes, but:
1. if you think that changing language is the only way to make a codebase secure, then there is something wrong with your security practices.
2. if you think that rewriting in another language is the only way to improve code quality, then there is something wrong with your software development practices.
3. chasing "the hot new thing" is a never ending cycle.
Choosing something like a calendar client based on what language it's written in, instead of its merits as a client, is such a ludicrous concept.
> Written in old PHP and there is work underway to do a complete rewrite in Golang
I will never understand "the big rewrite" philosophy, no matter how many times I hear it.
Are some languages better than others in some aspects? Yes, but:
1. if you think that changing language is the only way to make a codebase secure, then there is something wrong with your security practices.
2. if you think that rewriting in another language is the only way to improve code quality, then there is something wrong with your software development practices.
3. chasing "the hot new thing" is a never ending cycle.
Choosing something like a calendar client based on what language it's written in, instead of its merits as a client, is such a ludicrous concept.
This is ridiculous. The guy just goes around bashing everything that's not Rust as "old". He even claims Java & C "is not very suitable for cross-platform world". So obviously his conclusion is "I'll have to write something in Rust!".
Huge world of "groupware" software around. Think Zimbra. Owncloud is hardly the only choice here...
Huge world of "groupware" software around. Think Zimbra. Owncloud is hardly the only choice here...
I'm using Nextcloud for calendar and tasks, and I keep notes in plain markdown files that are also synced with Nextcloud. On Android I use Nextcloud Notes, Nextcloud Tasks and https://github.com/Etar-Group/Etar-Calendar
These are by far the best note and calendar apps I've used. Far better than Google's options. Apple's reminders are a bit better than Nextcloud Tasks, but the only feature I'm sorely lacking there is repeating tasks. Google doesn't support this either, which leads me to believe that it's a shortcoming of the CalDav spec for tasks.
These are by far the best note and calendar apps I've used. Far better than Google's options. Apple's reminders are a bit better than Nextcloud Tasks, but the only feature I'm sorely lacking there is repeating tasks. Google doesn't support this either, which leads me to believe that it's a shortcoming of the CalDav spec for tasks.
I agree wholeheartedly with the author.
I also find this to be true of email clients. GMail reigns supreme, but there is pretty much no email client out there that is:
- A good UI/UX
- Doesn't store your data in their cloud
- Is cross-platform (even just iOS/OSX, but certainly not iOS/OSX/Windows/Android).
Thunderbird is one of the only contenders here, and I find the UX of Thunderbird to be abysmal. I've started to kickoff a project to fill this space, but admittedly it's a big project and doomed for the shelf :/
I also find this to be true of email clients. GMail reigns supreme, but there is pretty much no email client out there that is:
- A good UI/UX
- Doesn't store your data in their cloud
- Is cross-platform (even just iOS/OSX, but certainly not iOS/OSX/Windows/Android).
Thunderbird is one of the only contenders here, and I find the UX of Thunderbird to be abysmal. I've started to kickoff a project to fill this space, but admittedly it's a big project and doomed for the shelf :/
Calendars. Many people have died on that hill.
I remember when Chandler was supposed to be the last word in calendars. Even Mitch Kapoor of Lotus123 fame got involved (https://www.chandlerproject.org/).
There's something very Bermuda-triangly about Calendar applications. Why is it that in the year 2021 no one has truly cracked the problem yet?
I remember when Chandler was supposed to be the last word in calendars. Even Mitch Kapoor of Lotus123 fame got involved (https://www.chandlerproject.org/).
There's something very Bermuda-triangly about Calendar applications. Why is it that in the year 2021 no one has truly cracked the problem yet?
I've had good success with Baikal, a sabre/dav-based project, on PHP 8.0. It still is only CalDAV and CardDAV though, no WebDAV for file/note sharing.
Installation can be janky and there's no clear documentation on dependencies -- and it'll fail silently if you're missing any. On FreeBSD I install the following PHP packages and then it works splendidly:
sudo pkg install php80 php80-dom php80-filter php80-openssl php80-pdo php80-pdo_sqlite php80-xml php80-xmlreader php80-xmlwriter
Installation can be janky and there's no clear documentation on dependencies -- and it'll fail silently if you're missing any. On FreeBSD I install the following PHP packages and then it works splendidly:
sudo pkg install php80 php80-dom php80-filter php80-openssl php80-pdo php80-pdo_sqlite php80-xml php80-xmlreader php80-xmlwriter
Synchronizing events beetween calendar systems is hard. iCal may be a serialization format, but it doesn't handle things like: sync event from system A to system B, update in System B, how do we tell System A? For simple events with no attendees that is easy. But once you deal with recurring events, and everyone's varying implementations, it quickly falls apart.
Internally all the major Calendar services (GCal and Outlook), store events differently when it comes to events with multiple attendees and recurring events, and it takes understanding the varying nuances to perform good synchronization. Even the difference between a timed event and an all day event will vary from system to system. And that barely touches the timezone issues that arise when scheduling.
Internally all the major Calendar services (GCal and Outlook), store events differently when it comes to events with multiple attendees and recurring events, and it takes understanding the varying nuances to perform good synchronization. Even the difference between a timed event and an all day event will vary from system to system. And that barely touches the timezone issues that arise when scheduling.
I wrote up my solution to this a few years ago here [1] and it ended up giving me my first ever top of HN post [2].
Radicale + Thunderbird + OpenTasks + DAVx5 works great for me.
[1] https://partofthething.com/thoughts/host-your-own-contacts-a...
[2] https://news.ycombinator.com/item?id=14836265
Radicale + Thunderbird + OpenTasks + DAVx5 works great for me.
[1] https://partofthething.com/thoughts/host-your-own-contacts-a...
[2] https://news.ycombinator.com/item?id=14836265
Can anyone here recommend a slick open-source GUI calendar app for Linux with support for iCal, WebCal, recurring events and notifications? I've been following GNOME Calendar[0] for a while but judging by the website it's still mostly WIP.
I've been using Thunderbird's Lightning add-on for a lack of alternatives but it's mostly been a PITA.
[0]: https://wiki.gnome.org/Apps/Calendar
I've been using Thunderbird's Lightning add-on for a lack of alternatives but it's mostly been a PITA.
[0]: https://wiki.gnome.org/Apps/Calendar
> Written in old PHP, according to the homepage it requires PHP 5.4
Just because something will run on an old version of PHP doesn't mean it won't run on new PHP.
You can write PHP that is backwards compatible but still decently modern sans typehints.
I used Sabre for a while recently on I think PHP 7.3 and it's not bad.
Just because something will run on an old version of PHP doesn't mean it won't run on new PHP.
You can write PHP that is backwards compatible but still decently modern sans typehints.
I used Sabre for a while recently on I think PHP 7.3 and it's not bad.
Consider EteSync as a solution. FOSS, can be self-hosted, available on multiple platforms, etc:
https://www.etesync.com/
https://www.etesync.com/
The Cyrus IMAP server has CalDAV, CardDAV, and WebDAV modules.[1]
[1] https://www.cyrusimap.org/imap/download/installation/manage-...
[1] https://www.cyrusimap.org/imap/download/installation/manage-...
See also Standard Notes[1], pretty much a drop-in replacement for Apple's iOS Notes app. Decent web interface with (paid) plugins, great desktop and mobile apps, backend can be self-hosted as well. It's really good and its OSS[2].
[1] https://standardnotes.com
[2] https://github.com/standardnotes
[1] https://standardnotes.com
[2] https://github.com/standardnotes
This is a problem with all of these tasks having similar, overlapping use cases and similar, overlapping technology implementations. There are also remarkably few standards for the things around calendars, so most clients kludge something up with structured data sent over e-mail. Which leads to every implementation having its own, non-compatible spec.
Even something as simple as forwarding calendar invites can have dramatically different functionality between two systems. I was at a company that ran split-brain between Google and Lotus Notes and it was an absolute nightmare that effectively broke calendaring for 2 years because you could only forward events one way, and acceptances wouldn’t flow back up the chain because some of the clients used a different mechanism for signaling acceptance.
This has all been a problem for decades. The business world solved this by just forming a consensus on Outlook / Exchange in the mid-2000s; if you use any other combination you have to accept that there will be dropped communications with those who use the standard stack.
Even something as simple as forwarding calendar invites can have dramatically different functionality between two systems. I was at a company that ran split-brain between Google and Lotus Notes and it was an absolute nightmare that effectively broke calendaring for 2 years because you could only forward events one way, and acceptances wouldn’t flow back up the chain because some of the clients used a different mechanism for signaling acceptance.
This has all been a problem for decades. The business world solved this by just forming a consensus on Outlook / Exchange in the mid-2000s; if you use any other combination you have to accept that there will be dropped communications with those who use the standard stack.
Missing from almost every calendar hosting thing I've used is the ability to publish free/busy information to allow others to schedule me into meetings without needing to be on the same system.
I'm pretty sure vCalendar supports this, just no one has implemented it.
If I could host a lightweight javascript app that let you browse the information until your client supports it properly that'd be cool.
I'm pretty sure vCalendar supports this, just no one has implemented it.
If I could host a lightweight javascript app that let you browse the information until your client supports it properly that'd be cool.
I'm in the process of doing a similar task, and I'm using my Synology DS418play for all of it.
I wanted to roll my own server solution, but I just don't have time anymore. The simplicity of Synology is baffling, and it has been one of my most favorite purchases, ever. I was able to set up an SSL cert for my domain, a reverse proxy on the Synology NAS in a matter of minutes.
This past month I've migrated my Evernote's to Synology Notes and lastpass to a bitwarden docker container running on the NAS. I'm planning on switching from Google Calendar to Synology Calendar in the next few weeks.
I haven't looked in to it, so I wouldn't be surprised if Synology has rolled their own protocols for most of these applications. But they are well supported across Desktop (Mac/Linux/Windows) and their Phone applications work great.
Again, might not be the solution you are looking for, but the ease and compatibility across various platforms might be worth the tradeoff.
I wanted to roll my own server solution, but I just don't have time anymore. The simplicity of Synology is baffling, and it has been one of my most favorite purchases, ever. I was able to set up an SSL cert for my domain, a reverse proxy on the Synology NAS in a matter of minutes.
This past month I've migrated my Evernote's to Synology Notes and lastpass to a bitwarden docker container running on the NAS. I'm planning on switching from Google Calendar to Synology Calendar in the next few weeks.
I haven't looked in to it, so I wouldn't be surprised if Synology has rolled their own protocols for most of these applications. But they are well supported across Desktop (Mac/Linux/Windows) and their Phone applications work great.
Again, might not be the solution you are looking for, but the ease and compatibility across various platforms might be worth the tradeoff.
I think the whole area (rightly) suffers from "Bikeshed" syndrome - this is something everybody can have an opinion on, and 90% of the time their opinions are right for them. At work you know someone who schedules appointments with themselves just to block out some time, or schedules meeting with you because emails don't get a response and ...
The solution is not more protocols, or opinionated software.
The solution is that every individual should have the skills (software literacy) and the infrastructure (some combination of a diary server with an API in fifty languages) and tools (come on iPhone, really whatever you are doing it's a total mess)
At some point with Mailbox any coder will have built an sub-AI agent from 200 regexes - and that's probably what will smoosh out across the world - oh yes I let my Virtual AI / PA handle that, it was coded by my brother in law and I made a few config changes.
The solution is not more protocols, or opinionated software.
The solution is that every individual should have the skills (software literacy) and the infrastructure (some combination of a diary server with an API in fifty languages) and tools (come on iPhone, really whatever you are doing it's a total mess)
At some point with Mailbox any coder will have built an sub-AI agent from 200 regexes - and that's probably what will smoosh out across the world - oh yes I let my Virtual AI / PA handle that, it was coded by my brother in law and I made a few config changes.
RFP coordination systems to solve this mess
I'm asking as coordinator of Moonshot Collective, where our mission is to build coordination tools. We have builders standing by for exactly this - please give me ideas so I can give them to my teams to build.
What are your ideals for these solutions? What are the best solutions you've seen?
I'm asking as coordinator of Moonshot Collective, where our mission is to build coordination tools. We have builders standing by for exactly this - please give me ideas so I can give them to my teams to build.
What are your ideals for these solutions? What are the best solutions you've seen?
Pretty sure the Sabre website is out of date. sabre/dav requires PHP 7.1+ || 8.0+ per https://packagist.org/packages/sabre/dav
Horde Project?
Old but gold.
> https://www.horde.org
Old but gold.
> https://www.horde.org
I'm a little surprised nobody has mentioned Zim:
https://zim-wiki.org/
From their site:
" Zim can be used to:
https://zim-wiki.org/
From their site:
" Zim can be used to:
Keep an archive of notes
Keep a daily or weekly journal
Take notes during meetings or lectures
Organize task lists
Draft blog entries and emails
Do brainstorming"
Zim itself is a good desktop application and Markor is a good mobile client for it. Sync can be done via nextcloud, dropbox etc. I'm not 100% on the state of the windows support, but I use it daily and it is great. It coexists nicely with version control, too.They are very old and have accrued quite a bit of legacy
By release 2.0 of any project, some amount of "legacy" will have been achieved. "Quite a bit of legacy" can be seen as an indicator of platform success. Is the legacy acting as an impediment to future growth or feature development? Is the legacy due to supporting a user base that is neglected by other "modern" projects? The amount of users that get disenfranchised by someones idea of new and modern can be disheartening.
There are libraries for languages like PHP, Java and C but these implementations are typically unmaintained and because of the nature of these languages they are not very suitable for the modern cross-platform world.
This is a most surprising quote. I am not a PHP expert, but C and Java are quite excellent for use in multi-platform projects. WASM makes C even more relevant for browser hosted code. The author later states that he has implemented a prototype in JavaFX. So much for legacy platforms.
There is a lack of libraries implementing these protocols, ... but these implementations are typically unmaintained
And now we can begin to understand why. I do not want to make value judgements on the motivation of people desiring to start new projects. It can be fun and liberating. Having the ability to persist and endure while bringing a library or application from prototype, to alpha, beta, 1.0 and beyond is a rare and hard earned skill. And yet, this is exactly the type of skill needed to tackle a problem in the calendar, task and note space.
By release 2.0 of any project, some amount of "legacy" will have been achieved. "Quite a bit of legacy" can be seen as an indicator of platform success. Is the legacy acting as an impediment to future growth or feature development? Is the legacy due to supporting a user base that is neglected by other "modern" projects? The amount of users that get disenfranchised by someones idea of new and modern can be disheartening.
There are libraries for languages like PHP, Java and C but these implementations are typically unmaintained and because of the nature of these languages they are not very suitable for the modern cross-platform world.
This is a most surprising quote. I am not a PHP expert, but C and Java are quite excellent for use in multi-platform projects. WASM makes C even more relevant for browser hosted code. The author later states that he has implemented a prototype in JavaFX. So much for legacy platforms.
There is a lack of libraries implementing these protocols, ... but these implementations are typically unmaintained
And now we can begin to understand why. I do not want to make value judgements on the motivation of people desiring to start new projects. It can be fun and liberating. Having the ability to persist and endure while bringing a library or application from prototype, to alpha, beta, 1.0 and beyond is a rare and hard earned skill. And yet, this is exactly the type of skill needed to tackle a problem in the calendar, task and note space.
OP might want to take a closer look at SoGo.
[deleted]
After writing 2 calendar programs, I came to conclusion nothing beats pen and paper for keeping todos and personal tasks. I bought a large wirebound sketchbook, and fine tip pen. Plan my day, then take a photo of my day's or weeks tasks. Very fast to do, plus all the freedom and sensory experience of drawing on paper. Works for me.
I guess its a hybrid of manual and digital.
Baikal is pretty nice as a cal-dav/card-dav server with a UI. I can sync it with gnome evolution, thunderbird, an iphone, and android (but required an app).
I haven’t tried it yet, but I’m curious about caldavzap. A web calendar UI that syncs with caldav.
There’s a neat tool called vdirsyncer that keeps a local offline copy of your contacts/calendars that works with it as well.
I haven’t tried it yet, but I’m curious about caldavzap. A web calendar UI that syncs with caldav.
There’s a neat tool called vdirsyncer that keeps a local offline copy of your contacts/calendars that works with it as well.
* I wouldn't call Nextcloud codebase old. It's a PHP 7.3 codebase with sure quite a lot of legacy stuff but a lot of thing has been improved and refactored with the time. It's maintained, there is an active community and an healthy enterprise behind the project. IHMO this is that matters more than the programming language used.
* SabreDAV supports WebDAV and this is that we are using at Nextcloud for our webdav/caldav and carddav support.
* KOrganizer does run on Windows but it require to be built from source. I have been told that a better Windows support is being worked on for the entire PIM suite and I hope that at some point exe can be distributed. Technically there is nothing that makes it impossible to use on macOS, we just need more helping hands to help with fixing the platform specific issues. There is also a modern alternative to Korganizer being worked on called Kalendar. More on it can be learned on https://claudiocambra.com/ (Disclaimer: I was the mentor of this GSoC project).