Ask HN: Is there a powerful open-source Google Calendar replacement?
I realize calendars are not a simple tool to build well, but for such a basic standby of time management, I strive for a better, developer friendly, open source calendar system. Like what Atom did for text editors, to bring a powerful, well built basic toolset ready for modular extensibility and can run anywhere Node can.
(I use emacs, but you get my drift).
I would love to work on a project like this, if anyone is hiring or already pushing code to an open source repo I haven't found.
I have a 98% coverage of my time for the past two years and it's all in Google Calendar. I suspect there are many out there with dense calendars that would love to hack around in a friendlier environment.
Please advise.
Peace love and prosperity to the world.
103 comments
[ 0.22 ms ] story [ 117 ms ] thread[1] https://www.horde.org/apps/groupware
Mainly I want a continuous calendar. Just a table of weeks. My thought is to tie calendar with e-mail (what a novel idea) and todo list. I would like to enter new events just writing down with some kind of simple language and auto-completion. I feel that most calendars have too much friction comparing to paper calendar.
Todos should jump to the next day until they are done or deadline is met.
I would like to tie it with e-mail so I could pin the e-mail to specific day or to a todo item as described in previous paragraph. It would be a calendar first and e-mail second.
I wanted at first have it running as a server on a tablet that I would stick to the fridge. It would only need a thin proxy, but thanks to Let's Encrypt it would run with end to end encryption. Also running SMTP server on a tablet. But it is a bit too complicated to do at first.
http://orgmode.org/worg/org-tutorials/orgtutorial_dto.html
There are some mobile apps but I've never used them.
One specific use case that I have in mind is to stick a tablet with a calendar to the fridge. It should be a shared calendar between me and my wife. I'm wondering how can I achieve that.
From what I see I could create a group calendar in Google Calendar. Then probably me and my wife could have separate moo.do accounts and put things on this group calendar. On our phones it would be easy. But question is how to deal with it on a shared tablet.
Or we could have one account with all our e-mail accounts and share a calendar this way.
One thing that is beyond scope of moo.do is to have an alias per contact. Maybe not for all contacts, but for most services. I know I can kinda emulate this with gmail's address+whatever@gmail.com. There are few problems with it. '+' sign is considered invalid by dumber services that I may have no choice of avoiding. Also it requires exposing main address - removing of postfix is easy. I could dedicate account for this and never use the address without a postfix, tagging anything that came to the main address as a spam.
So it can work, but is a bit tedious, because it is not automated. I would like to have a separate pool for addresses. I then can create a new address/"slot" for a contact. I could use it for some service and if I would ever resign from this service I would remove the address. And if I would ever receive spam on one of the assigned addresses I would know which service is not trustworthy. That would also make it easier to prepare filters.
Calendar apps are deceptively hard. Very tricky UI problems alongside super complicated data transformations you need to do across a fragmented ecosystem of ICS/etc. Making something "just work" takes an incredible amount of focused time from an entire engineering team.
But here's a peek anyway if you're curious: https://www.dropbox.com/s/j1ry3qar45ozj7m/nylas-calendar.png...
PS: we are hiring ;) feel free to ping me directly
currently, we store the "parent" recurring event as one document. then we store exception events as standalone one off calendar events that link back to the parent recurring event. unfortunately, we have to maintain two different types of exploded versions of recurring events (to handle notes on an instance).
eventually, we added a bunch of extra fields to the parent event like a pointer to the next upcoming instance of this event and denormalized full list of exceptions so that we can more easily handle application logic like sending out reminders, and letting you use arrows to navigate b/w instance s of recurring events.
so far with this approach of separating out the parents and children we've run into very few problems.
[^1]: https://www.joelonsoftware.com/2007/01/21/the-big-picture/
https://github.com/nylas/nylas-mail
However, you would gonna need their sync-engine[0] on your own servers in order to avoid contacting Nylas servers. From what I understand, it's kind of a cloud API that makes some sense out of emailing protocols.
[0] https://github.com/nylas/sync-engine
* NL History lookups, ie. "Where was I on my fourteenth birthday?" or whatever. It'd be cool to integrate things like calorie tracking, exercise, that kind of stuff. A true personal database.
* Travel days and in general travel time is hard to track, because flights/cabs/busses get delayed, I'm not thinking about my calendar as much, etc. It ends up being a block that says "travel time" or something and that's fine but an interesting exercise is, how can we improve the efficacy of tracking actual time? This is more brainstorming than fully fleshed concept.
* Habit tracking. Time-based reminders with a method to verify "I did this," like BeeMinder + RescueTime combined. This is it's entire subset of problems to ponder but definitely I want to see this in a centralized calendar because visualization is key for me.
* Robust task management. I want to hover over or click on a cal entry and see the Jira/Trello card with any relevant source code links and exactly what I have to accomplish. Ramit Sethi talks about this -- he uses GCal to do this exact thing, and I think it's a brilliant idea. Unfortunately it's lost in two or three clicks down the rabbit hole. If I am using a centralized "dashboard" type calendar like I envision, this is like a concierge for my to-dos.
* To expand on above, I'd love to see a way to set hard goals and have a smart AI to help back-track and build a feasable path to accomplishment. I.e. I'm not a marathon runner in ANY sense of the term, so I set a go to run the Grandma's Marathon in 2019. Based on my current fitness level from RunMapper or w/e app I'm using, compared to my current habits of exercise, and considering maybe my financial and other secondary commitments I may choose to add to this goal, I'd get an autopopulated schedule of "run this many miles at this pace (on this route, if you want) on these days* and eat these macros on these days at least that's just one example but you can imagine more auto-goal-planners.
Show me all the appointments I had with Joe Blow in 2016, exported as , for example.
My brief experience was a total disaster, it's one of Google's horrible products, I sadly have to live with. I rarely hit my desk with my fist but it has happened. I'd be really really happy if any alternative would exist, I don't even care about not being open source.
- I can't easily create an event spanning over more than a month. Don't bother visualizing it easily.
- Displaying multiple calendars is a mess even with the event merging (45degree stripes turned on) (Event Merge for Google Calendar™)
- I was needed to install "Google Calendar Guests Modify Event Default" (Enables 'Guests can modify event' setting for google calendar by default, when creating a new event.)
- If I create an event I can't simply add myself and accept it
- Event view is boring, lots of things I don't care about. That view looks like a relic from the pre-design era of Google
- Setting up a repeating event is a pain, if I made a mistake god help me. Once I broke something and I had to manually delete two months of repeating events one by one because the repeating nature was somehow gone
- Exceptions are not handled well
- Show me as Available / Busy is dangerous. Should be more hidden, I messed up my coworkers calendar and she got overbooked. I still don't get why would I create an event and mark myself "available". I guess there are use cases, but for me it's pointless
- UI dialogs are inconsistent
There are probably many more, but I felt real pain during these. I even tried Google voice assistant, which was pretty useless for real work.
I then pulled up this video of Apple's vision of the future: https://www.youtube.com/watch?v=JIE8xk6Rl1w and cried a little that we are still very far from this. Even calendaring is a pain in the ass.
Events view sucks. I don't think the visual information should be equal if I have a list of things to accomplish in a day that are "time locked" or "time sensitive" or "time orthogonal."
Integrating actual RescueTime data into gcal to provide automation of capturing activity would be an interesting angle if I wanted to hack together a solution for that problem.
RE: Apple -- iCal was honestly the best calendar I've ever used, it was just beautiful. Then I cleaned my soul and installed debian, and haven't looked back.
Try not to give reasons to discard someone's feedback, and instead identify the core issues which, if addressed, would benefit multiple users.
It doesn't matter how many people are stymied by poor behaviours, if they are the ones making recommendations to their contacts or businesses on what support could tracts to sign…
That's where the opportunity is.
On a related note keeping the same thing in mind with software that you're building is a very powerful tool: "it works for me/on my machine" is great, but it discounts the possibility that if one user is seeing a bug or usability issur, chances are that that others are too - and not talking about it.
I eventually gave up and used Google Apps Script to fing and update events which lost their repeating affinity when I accessed my calendar from multiple clients.
Another one: if you have a shared calendar that you want to invite to a meeting (but you don't own the shared calendar), …? This was for the orgs office hours calendar, where copying the event onto the shared calendar means remembering to update it every time we switched rooms or times (as copies naturally wouldn't update if the source changes).
The Google Product Support pages send a strong, consistent message: "we don't care what you think and we don't fix things we can't see the personal use for ourselves"; hallmarks of deeply user-hostile products.
A simple example is that here I sit in Hong Kong, and my upcoming flight from San Francisco to Melbourne (which departs at 00:50 PDT) is showing as departing at 17:50 HKT, which is true but useless. That's the hallmark of a system designed with the data structures in mind first. With (too many) clicks I can change it to display in PST, but now my diary for today in Hong Kong is wrongly displayed.
To some extent this is a flaw in iCalendar's data model, but it's not insoluble, if you start with the right perspective i.e. user stories. So my general complaint is that this kind of "data first" rather than "utility first" design pervades the Google Calendar application.
(Don't even get me started on the "world clock" extension, it's just garbage).
Judging by the listing of optional extensions in the "Labs" section, Google Calendar has languished with little serious development since 2009. The main utility to me these days is that it can aggregate multiple calendars, including subscriptions to external feeds, and then pass on that aggregation to mobile clients.
So I think it's another dying Google product, one that was misconceived in the first place, and I too am interested in alternatives. However calendaring is hard and none of the alternatives I've considered to date were actually better; all limited or flawed in other showstopping ways. So Google Calendar remains the least crap of my options.
2. Google wants me to use their web-based calendar instead of my desktop one.
Synchronising multiple calendars is a pain in the ass: I want people at each company I work for to be able to see whether I am free, but I hate filling my calendar six times. I've got some applescript that helps me using the Mac calendar, but it feels like the two companies I do that are google-apps based always break randomly and require some random touchups.
3. Timezones. I travel very often and I want to see my daily-diary with the local team, but there's no easy way to say "this week in EST"
Very few Google services, I think, are reminded that people can be signed into multiple accounts simultaneously during the design phase.
Oh god, talk about good timing. I just got a literal headache spending the last hour searching for a good cross-platform calendar AND todo app that would work on my Mac, and perhaps on Android (although that's bonus). And ideally I'd like to have integration with Trello, so I can schedule my work tasks into the day.
That would be the bee's knees, and improve my productivity noticeably. But alas, such magical software does not exist yet. This is probably the wrong thread as I would pay top dollar for such an app.
The problem with all todo and calendar apps is that nobody has managed to successfully combine the two. A calendar to list only events is of very limited utility if you need a separate app to remind you your todos and tasks for the day.
Yeah, I've tried Fantastical, Todoist, Informant, BusyCal, and a plethora others, but none seem to fit nicely into the workflow of somebody that needs to keep track of their personal and work life without being too strict in their methods.
So for now I'll make do with the basic Calendar app on my OSes, and pen and paper to jot down my reminders as soon as they pop to my mind.
I've been looking for the same, and now I use OneNote for note taking and to do lists. You can easily make kanban boards, you can link tasks to emails or notes in OneNote with more information, and tasks show up in your calendar or tasks in Outlook.
How do you do that? I use OneNote for notes and todos, but I didn't realize you could make a kanban board out of it.
since you're willing to pay for it, contact http://www.oppsdaily.com/ to be featured there...
It does to-do lists, calendar, and email all in one. The only caveat is it only supports Google Calendar and Gmail so far.
Let me know if this solves your problem or if there's anything I can do to make it better for you.
[0] https://en.wikipedia.org/wiki/CalDAV
I'm a huge nextcloud fan.
Citadel, (http://www.citadel.org) -- A lot of features, but the UI is somewhat dated. It would be interesting to see a revival.
OpenXchange, (https://www.open-xchange.com) -- Commercial project with an open source core. Much nicer UI, I'd be worried about long term support if/when the original company stops developing it.
Just curious what about Google Calendar isn't developer-friendly? I've found it pretty easy to use the Apps Script Calendar service:
https://developers.google.com/apps-script/reference/calendar...
2. I'd like to create hyper-specific views or add calendar layers/groups (As a PM, I want a report, or calendar view, of all time spent on client tasks but not meetings, etc. ).
3. As a User I'd like to track habits I'm trying to manage/modify/track (ie. runs, food intake, smoking cessation, bedtimes, pages read/week).
4. As a Freelancer I want to integrate time trackers like Rescuetime and Harvest. (this I could actually do with GCal but my question isn't "what can I do with Gcal," rather an exploration of "why isn't there a great alternative and what can we do about it"
I don't want to sign up for Yet Another App Account, I have a dashboard for my life and that's it. I've been thinking about a "continuous integration/dashboard" for awhile.
The Quantified Self (https://trends.google.com/trends/explore?q=quantified%20self) movement hasn't picked up any steam, however, I still see the value in capturing data about our daily actions and then using that data.
I've learned a lot from my meticulous time tracking, and it's not perfect. Maybe this is time to explore a side project!
[0]https://www.mozilla.org/en-US/thunderbird/
[0]https://addons.mozilla.org/thunderbird/addon/lightning/
[1]https://support.mozilla.org/t5/Calendar/Integration-into-Thu...
[0] http://radicale.org/
[0] http://www.oneviewcalendar.com/
What you're describing is exactly the vision for Stanza.
Currently, our product allows users to subscribe to event feeds, much like a YouTube watcher subscribes to YouTube channels. These channels (or StanzaCals) sync with your Google Calendar, iCal, or whichever major calendar platform you use. Right now our main product is an embeddable calendar that lives on sites such as http://www.wowhead.com/, http://www.lakersnation.com/, NFL teams, and many other hot websites.
Right now, we're expanding our product to make discovering events easier and improve personalization. We're built on Node, AWS, MongoDB, Redis, and serve 200M unique impressions per month.
If you have a passion for making a great calendar experience, (eg: the atom of Calendar), we'd love to hear from you.
Drop me a line at matt@stanza.co
https://lostpackets.de/khal/
to view and edit calendar events and vdirsyncer:
https://vdirsyncer.pimutils.org/en/stable/
to sync this with my email provider, which supports CalDAV and CardDAV. I'm asking about others workflow because this simple setup allows easy access to calendars across multiple devices. Although I don't often do it because I don't have a need, vdirsyncer just dumps the CalDAV events into a folder in text format, so it's pretty easy just to write a shell script to modify, automate, or maintain calendar events. I also like it because it allows me to backup my calendars for record keeping sake.
Now, I don't claim that this setup is for everyone, but are there useful, interesting tricks that this workflow doesn't allow?
At work we use Google Calendar extensively, which means other people often make appointments for me. To pull in and push items from my schedule.org, I use org-gcal - https://github.com/myuhe/org-gcal.el
https://tools.ietf.org/html/rfc6638
Certainly, it's something that I wish khal had. This is why I think I'm missing something. Certainly, dealing with CalDAV is a pain because many programs don't produce standards compliant files. That said, it really just looks like a CalDAV server has a folder with a bunch of text files that contain the calendar information. If I want someone to have view only access to that folder, they have read access. If I want someone to have the ability to add calendar events to my schedule, they have read/write access. The file uploads look like they use WebDAV. Syncing across devices just means syncing to the folder on the server. Exotic calendar tricks can be handled either from a server side script or a client side script followed by a sync. Now, I wish that were easier and I think there's room for improvement especially in developing a language to make it easier to write these scripts. However, is there really something fundamental that this framework doesn't have that these other calendar programs provide?
https://play.google.com/store/apps/details?id=org.withouthat...
https://en.m.wikipedia.org/wiki/Chandler_(PIM)
so ive started on shalendar.com recently as my personal/work calendar to do exactly that. its sole focus being simplicity, sharing, and integrations to other services like instagram, jira, etc. its functional and making good progress, i expect to push out more features in the next few weeks.
Have a look at the client (https://github.com/KinToday/kin-web-client) and the server (https://github.com/KinToday/kin-api-server) on GitHub. It's definitely inspired by Sunrise, but might be a suitable replacement for Google Calendar.
Even better: Contributors get the hosted version of Kin (2€/month; 20€/year) for free.
mail/contact/cal/task/briefcase
http://zimbra.org https://github.com/zimbra
I did try a script that takes a URL to an iCal file and adds the desired prefix, then spits out a new iCal file. Alas Google Calendar has a years old issue where it has no way to force it to pull updates to iCal files with any reasonable frequency. And of course I want the solution to work on phones as well as desktop browsers so a Chrome extension is not a solution.
Bonus points for a solution that would let me munge event names arbitrarily according to regex rules, and to combine multiple shared calendars into one.
So my work is blue, my personal is green, my wife is purple.
Maybe there's something here...