For many of us, our calendar is our lifeblood. While some people can get away with a wall calendar or a paper day planner to organize their schedule, a whole lot of us have turned the process of managing time allotments over to a digital calendar.
Most of the major vendor ecosystems provide some sort of calendaring solution which can sync across devices. Among them, Google Calendar is perhaps the most prevalent. For many people, it just works, making it easy to keep track of their schedule across multiple computer and mobile devices, and to share appropriate information with others with whom they need to coordinate.
As with countless other tools, though, you don't have to use a proprietary hosted solution for your calendar needs. There might just be an open source project that works for you. But before we dive in, let's take a look at what a calendar actually is.
Internet Calendaring and Scheduling
If you are using a tool like Google Calendar, you're actually using two separate tools: a user interface (the website or mobile app) and a calendaring server. The calendaring server generates events, accepts invites, and sends reminders to you when something you have scheduled is about to happen.
An event in the iCalendar format (no relation to Apple's iCal application) is a simple text file. It's a surprisingly simple format. Here's an example of a basic event:
BEGIN:VCALENDAR PRODID:Seth VERSION:2.0 CALSCALE:GREGORIAN BEGIN:VEVENT CREATED:20200511T114136 DTSTAMP:20200511T114136 LAST-MODIFIED:20200511T114136 UID:VE3HK1CEFCK7O7HUSNUM8X SUMMARY:Example event CLASS:PUBLIC STATUS:CONFIRMED DESCRIPTION:This is an example ICS file. DTSTART:20200520T200000Z DTEND:20200520T203000Z END:VEVENT END:VCALENDAR
If you copy and paste that text into a file ending in .ics, you can import it into your calendar and it will appear on your schedule. A good calendar app automates that process so you're rarely aware that it's happening, but that's really all there is to the apparent magic of sharing calendars.
It's not uncommon to receive an .ics file in an email inviting you to an event or meeting. If your email client doesn't manage this format automatically for you, then you can download and import it into your calendaring application of choice. You can even let other people view and edit your appointments by running a CalDAV server, which is an extension of WebDAV, a protocol for making edits of remote files across HTTP.
Knowing how the tasks are divided, you must decide what functionality is essential to you. If you're just looking for a quick and easy way to share calendar events with others, then all you really need is an iCalendar-compliant calendaring application. If you want to allow others to view and edit your calendar, then you need a CalDAV service as well.
Nextcloud (Desktop, Web)
Nextcloud is your home away from home, or at least your workspace away from your desk. It's your own personal cloud storage, text editor, photo gallery, file share, calendaring app, and much more. Because Nextcloud includes a CalDAV component, you can create, export, import, and subscribe to iCalendar events and feeds. Nextcloud's calendar offers all the usual options you'd expect from a digital calendar: color-coding, private and public events, importing and exporting .ics files, repeating events, location tags, descriptions, and so on.
You don't have to use Google Calendar to receive and accept invitations from friends and colleagues, or to share your own calendars with others. And better yet, you don't even have to use Nextcloud on all of your devices. You could use Nextcloud on your desktop, the built-in calendar on your phone, and something else entirely on your laptop. Thanks to open specifications, they're all compatible.
You can install Nextcloud on your own server or hosting account, or you can join an existing Nextcloud provider's server, or pay for a private instance of your own.
The creators of Firefox also maintain the Thunderbird email client, a desktop application for Linux, Windows, and Mac for reading email outside of your web browser. Like Firefox, you can customize Thunderbird with plugins, and one of the most popular plugins is Lightning, a calendaring component. Lightning lets you create events and even publish them to a CalDAV service if you're using one (like Nextcloud). It also supports color coding your different calendar feeds, has a variety of views, and even has a side panel for quick reference when you're browsing your email.
The strength of Thunderbird, aside from its plugin architecture, is that it's cross-platform. If you use different operating systems throughout the day, you can grant yourself a little bit of UI stability by using Thunderbird across all of them. You can't make Windows or macOS change how they operate, but at least you can ensure that no matter what computer you're on, your email and calendar, at least, will be exactly the same.
Evolution and Kontact (Desktop)
If you've used a desktop email client on any modern Linux distribution, then you've probably encountered GNOME's Evolution. In addition to deftly handling enormous amounts of email, Evolution also has a calendar component. The calendar is iCalendar-coant, so you can import and export iCalendar events, and you can also subscribe to CalDAV feeds. Because it's using the iCalendar specification, it features familiar options, such as repeating events, description, location, and so on.
The Evolution calendar offers several ways to view your scheduled events. The usual week and month views are available, but you can also view the "work week" (omitting the weekends, which admittedly only applies to a subset of workers), the day, and just a task list with no empty space. It also provides a task list for the current day in its email pane, so you don't have to click over to your calendar just to see what's coming up later on.
For KDE users, Kontact contains the Korganizer, a similar calendar component similar to the one in Evolution.
The stock Android calendar itself is actually open source, so you may already be using an open source client for your calendar on your mobile. However, not all devices ship with that calendar, so you can download a similar one from the F-Droid repository or check out the source on GitHub. It uses the same visual style as Android itself, so it looks and feels completely integrated with the rest of your mobile OS. It has views for the month, week, day, and just your daily agenda. It's iCalendar-compliant, so you can share calendars, import and export .ics files, and subscribe to CalDAV feeds.
In the modern world, many of us depend on being able to access our calendar from anywhere, regardless of what device we happen to have in hand, and there's little substitute for a solid web calendar. While there are many web tools that can pull in data from CalDAV, my favorite is AgenDAV, which has a similar look and feel to Google Calendar. Unlike Nextcloud, there aren't any AgenDAV hosts out there that you can join. If you want to run an AgenDAV server, you have to host and install it yourself. Also unlike Nextcloud, however, AgenDAV is just a calendar, so you don't have the added complexity or bloat of a bunch of web apps you may have no intention of using.
AgenDAV talks CalDAV, and it does so fluently. It has all the CalDAV features you need to interface with other CalDAV calendars, and the other features (like color coding) that most of us have come to expect from a calendar web app.
These are far from the only tools you might consider for keeping a calendar using open source. There are plenty of others offering their own selection of features. Which open source tools do you use for keeping a calendar? Have you hacked together a solution using org-mode and Git? Or have you done something more inventive? Let us know in the comment below!
Note from the Editor: This article was originally published in 2016 and has been updated with new information.