
Ask HN: Is there a powerful open-source Google Calendar replacement? - kfrzcode
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.<p>(I use emacs, but you get my drift).<p>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&#x27;t found.<p>I have a 98% coverage of my time for the past two years and it&#x27;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.<p>Please advise.<p>Peace love and prosperity to the world.
======
grinich
We have a prototype at Nylas which is pretty awesome, but haven't had the time
to really finish it. (Focus is important!)

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...](https://www.dropbox.com/s/j1ry3qar45ozj7m/nylas-
calendar.png?dl=0)

PS: we are hiring ;) feel free to ping me directly

~~~
grinich
Here's a blog post we wrote on RRULEs that just highlights one part of why
calendars are hard:
[https://nylas.com/blog/rrules/](https://nylas.com/blog/rrules/)

~~~
faizshah
I just started with with RRULEs using pg_rrule in postgres. How do you guys
handle overrides and exceptions in your schema for the sync engine?

~~~
priyadarshy
there's a lot interesting possibilities for you can handle this. for our sync
engine at sunsama we've tried a few different approaches.

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_player
[I am sorry if this is slightly off topic but]

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.

~~~
jmeistrich
I'm actually making exactly what you're looking for:
[https://moo.do](https://moo.do)

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.

~~~
GrinningFool
Not the GP and not quite what I'm looking for (I live in a terminal as much as
possible, and on my phone as little ) ... However that looks like a kick-ass
product. I hope it works out for you.

------
kxyvr
I'm actually a little curious as to what sort of workflow others are using for
their calendars. Personally, I use a terminal/text based program named khal:

[https://lostpackets.de/khal/](https://lostpackets.de/khal/)

to view and edit calendar events and vdirsyncer:

[https://vdirsyncer.pimutils.org/en/stable/](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?

~~~
MarcScott
I use org mode for my calendar, which is great as it seamlessly integrates my
ToDo with my Appointments.

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://github.com/myuhe/org-gcal.el)

~~~
kfrzcode
This is great, I was looking for something similar when I was in org-gcal mode
last year. I'll have to revisit this link

~~~
kxyvr
That does indeed look neat. At the same time, there are extensions to CalDAV
that codify how to add scheduling to the standard. Namely, RFC 6638:

[https://tools.ietf.org/html/rfc6638](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?

------
seveneightn9ne
I ended up setting up a Nextcloud server. It has a calendar service that suits
my needs, coming from Google calendar. It is open source, and the nextcloud
platform is basically built to be extensible, but I don't know how developer
friendly is the calendar app itself. Check it out though!

~~~
mi100hael
Agreed. Important to point out that Nextcloud (and most other calendar
implementations) is actually a client and a server. The server half is just a
standard CalDAV[0] server, same as Google or Apple or anyone else would host.
The client is a web app with a similar feel to Google's calendar web app.

[0]
[https://en.wikipedia.org/wiki/CalDAV](https://en.wikipedia.org/wiki/CalDAV)

------
kowdermeister
I was recently forced into being a power Google calendar user. A new job
demanded me to use it, previously I added maybe 2 events / year. Now I have to
schedule a whole class's daily activity.

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.

~~~
slinger
Could you elaborate why google calendar is horrible for you?

~~~
kowdermeister
\- I can't do simple things, like quickly adding somebody to an event without
clicking the full event view.

\- 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](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.

~~~
brazzledazzle
I might be missing something but it sounds like your workflow is full of edge
cases and unusual requirements. There's some valid criticisms in there for
sure but I wouldn't expect most products to address many of these.

~~~
falsedan
Don't blame the user for Gcal's inconsistent and hard-to-internalize mental
model.

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…

------
IgorPartola
Since we are talking about calendars, I will ask a mildly related calendar
server question. Is there a solution out there that would allow me to
automatically prefix events in calendars that are shared with me? For example,
I see my girlfriend's calendar with an event called "Work". I don't want to
think it applies to me, so I would like to see it as "Princess Peach: Work".
Can I do this without hacking an existing CalDAV server to use as an
intermediary?

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.

~~~
edent
The default Google Calendar does this on Android and Web. It allows you to
assign different colours to the calendars you have.

So my work is blue, my personal is green, my wife is purple.

~~~
IgorPartola
I wish that worked except there are not enough distinguishing colors to mark
up all the calendars I have. Also iOS calendar doesn't do that.

------
beevelop
Quite recently Kin has been open-sourced (see
[http://blog.kin.today/post/156970937113/kin-is-now-open-
sour...](http://blog.kin.today/post/156970937113/kin-is-now-open-source)).

Have a look at the client ([https://github.com/KinToday/kin-web-
client](https://github.com/KinToday/kin-web-client)) and the server
([https://github.com/KinToday/kin-api-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.

------
hawski
I lately started thinking about a calendar system and a bit experimenting.

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.

~~~
parfe
Check out org-mode. Handles todos, scheduling tasks, timers, you can link
directly to a file or an email (not a copy, but a link emacs follows into your
mail reader, such as mu4e/gnus/wanderlust, for that specific email). It will
auto generate an agenda from multiple todo files spread across your
filesystem.

[http://orgmode.org/worg/org-
tutorials/orgtutorial_dto.html](http://orgmode.org/worg/org-
tutorials/orgtutorial_dto.html)

There are some mobile apps but I've never used them.

~~~
kfrzcode
org-mode is great and I use it to write longer, unorganized sorts of things.
It was amazing to have a place I could keep track of my time to the minute,
extend if I wanted to do basically anything, etc. I missed the visualized
nature, however, as I found the visual feedback to be imperative to my taste.

~~~
fovc
calfw can integrate with org. I mostly use the integration as a way point for
gcal sync, but even if the integration isn't exactly what you want, adding a
new source to calfw is very easy

------
paulcole
> better, developer friendly, open source calendar system

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...](https://developers.google.com/apps-
script/reference/calendar/)

~~~
kfrzcode
1\. I can't run it locally, or on my own servers to keep my data to myself.
Not that this is everyone's concern but it's one I'm thinking of. API access
is great, but I'd love to self-host data. In fact, that's becoming more of a
priority, security is in the zeitgeist etc.

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](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!

------
Arathorn
[https://sogo.nu/](https://sogo.nu/) has been working pretty well as a CalDAV
server and web UI for the last 5-6 years for me...

~~~
kfrzcode
Thank you, I haven't used SoGo in quite some time (v1) nice to see they've
come along.

~~~
simplehuman
Sogo on cloudron works great

------
tga
Here are two projects to look at:

Citadel, ([http://www.citadel.org](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](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.

------
steaminghacker
A while back i wanted to write my own calendar to support custom recurrence
rules, as well as the usual ones you always get. Custom rules would include
things like calculation of Easter and other holidays and events that move
about like moon phases.

So the idea was to build a translator that turns something like iCal into a
"program". and if you're a hacker, you can write directly in this program :-)

I chose LUA for this because it's compact and sufficient for this requirement.

The other thing i wanted is to be able to write a date and/or a time as words
on the end of any event and have the calendar figure it out for. There are so
many times that i want to specify, for example, a relative event.

I might extend a cloud payment for 6 months. so i type cloud XYZ expires, 1
day before 6 months from today.

and things like: Radisson Hotel, May 27th at 2pm for 3 nights.

Also then terms like "Easter" and "xmas" can be part of the word parser. And
stuff just like "beer friday with Pete."

One thing i still need to do is have it set up recurrences automatically for
stuff like "Dave's Birthday, next Friday". So it puts in in the calendar, and
adds annual recurrence automatically. would be nice.

I'm thinking of open sourcing what i have.

------
booleandilemma
Chandler?

[https://en.m.wikipedia.org/wiki/Chandler_(PIM)](https://en.m.wikipedia.org/wiki/Chandler_\(PIM\))

------
diego_moita
Mozilla Thunderbird?

[0][https://www.mozilla.org/en-US/thunderbird/](https://www.mozilla.org/en-
US/thunderbird/)

~~~
foofoo55
Do you mean the Lightning add-on[0] that is now bundled with Thunderbird [1]?
I don't know if it's available as a stand-alone app. I use Thunderbird but not
Lightning.

[0][https://addons.mozilla.org/thunderbird/addon/lightning/](https://addons.mozilla.org/thunderbird/addon/lightning/)

[1][https://support.mozilla.org/t5/Calendar/Integration-into-
Thu...](https://support.mozilla.org/t5/Calendar/Integration-into-
Thunderbird/ta-p/30027)

~~~
porjo
I use Radicale [0] CalDAV server and Lightning addon for Thunderbird - works
great!

[0] [http://radicale.org/](http://radicale.org/)

------
joshuaheard
I've previously written a calendar app for attorneys that was an add-on to
Outlook and I recently had an idea for a new type of calendar interface. Time
is continuous, so instead of a square grid, a circle would better represent
time measurement. Think of the wheel in Wheel of Fortune. There is a circle
with squares around the edge. Initially, there are 12 squares with each square
representing one month. Inside each square is the name of the month, with the
year labelled in the middle of the circle.

In a touch interface, you could vertically swipe the circle and it would spin
so you could select your month. If you spun it one complete circle, you would
iterate the year, forward or backwards. Double-tap the month, or two finger
swipe outwards, and the circle becomes the days of the month, with the day of
the week and the number date inside each square, with the name of the month in
the middle of the circle. Vertically swipe the circle one complete turn, and
you go to the next month. Expand the circle again and you have hours of the
day. Two-finger pinch to back out to a higher level.

You could put a symbol or different color to denote existence of an event. If
the event is double tapped, the key information appears in the center of the
circle, or you could two-finger swipe the event so it took up the whole
screen.

In a phone size interface, you would only have to show the center of the
circle, and an arc portion of the circle, say 100 degrees on the right side of
the circle, like between 1 o'clock and 5 o'clock.

I see that there are some round calendar apps out there, but I don't think
anyone has this sort of interactivity. However, I really haven't looked at
this idea too closely.

------
wuschel
Our R&D institute used HORDE [1] back then. However, I was always on the
lookout for something that resembles Google Calendar in functionality and
usability (and possibly even looks). The same can be said for GMail and its
Google Task integration.

[1]
[https://www.horde.org/apps/groupware](https://www.horde.org/apps/groupware)

------
mandeepj
Have you looked into this?
[https://fullcalendar.io/](https://fullcalendar.io/)

~~~
swrobel
"Disclaimer: FullCalendar is great for displaying events, but it isn't a
complete solution for event content-management. Beyond dragging an event to a
different time/day, you cannot change an event's name or other associated
data. It is up to you to add this functionality through FullCalendar's event
hooks."

~~~
mandeepj
That is not at all hard to achieve

------
jonbaer
TaskWarrior @ [https://taskwarrior.org](https://taskwarrior.org) \- when you
need a web-UI can use [https://github.com/LukasGasior1/taskwarrior-
fullcalendar](https://github.com/LukasGasior1/taskwarrior-fullcalendar)

~~~
Semaphor
Sadly the Android version kinda sucks. I spent around 1h trying to get it to
sync. Constant crashes don't help. There is a newer version but apparently
without any sync capabilities

------
tixocloud
Not on Node but I use Radicale ([http://radicale.org/](http://radicale.org/))
which runs on Python. Works well for me and have it synced across multiple
Macs and iPhones.

------
shanepo
I know it's not necessarily something you can build on but we use teamup
(teamup.com). Set up properly for our needs, it's pretty awesome. It
integrates with other tools like slack, etc. Hope that helps.

------
vgivanovic
The GNOME project has a standalone calendar cleverly named 'Calendar'
[[https://wiki.gnome.org/Apps/Calendar](https://wiki.gnome.org/Apps/Calendar)]
and mail-calendar application called Evolution
[[https://help.gnome.org/users/evolution/stable/.](https://help.gnome.org/users/evolution/stable/.)]
Both are open-source and free (as in beer).

------
jaequery
im intrigued to see much interest in calendars! im also crazy about calendars
and ive always wanted to put practically everything i do in a calendar but
google or ical doesnt cut it for me.

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.

~~~
lioeters
The landing page looks great - I'm curious to try it. A short
demo/screenshot/about page might be nice, to give potential users a taste of
what the app can do.

------
priyadarshy
98% is some serious coverage of your calendar. Here's an example of someone
else who does some serious documentation of their time via Sunsama currently.
Thought you might find that interesting: [https://workfutures.io/journaling-
calendar-centric-work-mana...](https://workfutures.io/journaling-calendar-
centric-work-management-3d8fe8c8803)

~~~
kfrzcode
Thanks for the link! There was a week where I wasn't able to do any tracking,
though I do have some paper notes with journal entries for the day, so there's
a mundane log of my life in existence. I want to make it more useful.

------
JustSomeNobody
[https://github.com/Kickball/awesome-
selfhosted/blob/master/R...](https://github.com/Kickball/awesome-
selfhosted/blob/master/README.md)

Maybe there's something here...

------
_davide_
zimbra - fully open source GPLv2

mail/contact/cal/task/briefcase

[http://zimbra.org](http://zimbra.org)
[https://github.com/zimbra](https://github.com/zimbra)

------
alooPotato
What are some examples of things you'd build on top if you had this system?

~~~
kfrzcode
* Minute or even second-based granularity. Why? We live in a world where a minute can have a hundred events.

* 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.

~~~
austinjp
Just to chime in.... I'd love to get structured data out, from messy calendar
free text, with structured or NL querying.

Show me all the appointments I had with Joe Blow in 2016, exported as , for
example.

------
kfrzcode
Thought of another use case I'd aim for: Scheduling payments/verifying etc.
Any time-based event could be a layer. Maybe a plugin that heatmaps your
productivity or revenue or whatever in the background.

------
ivanceras
One view calendar is not opensourced, but it is very slick. I was hoping
someone has an opensource clone

[0] [http://www.oneviewcalendar.com/](http://www.oneviewcalendar.com/)

------
matt_at_stanza
Evil vim user here. Also a Stanza employee.

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.wowhead.com/),
[http://www.lakersnation.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

~~~
bronson
The vision for Stanza is "a better, developer friendly, open source calendar
system"?

~~~
matt_at_stanza
Yes, that's the long term vision. We'd naturally expand into a calendar
application.

