I am making some progress towards owning my online calendar data. There is a nice web service, h2vx.com, that can convert hCalendar microformats to iCalendar format, so you can subscribe to them in a variety of calendar software. I wanted a simple library I could include in projects that would also support the microformats2 h-event. I also wanted this library to leverage the php-mf2 parser, so I started the mf2 to iCalendar project on Github.
I implemented that library on my site’s event pages on 2017-07-27 with an “Add to calendar” link at the bottom. In my testing so far, it has worked well. This is good for adding a single event to your calendar, but it only captures the state of the calendar entry at that point in time. It does not subscribe to the event for future updates. There is a separate URL scheme for subscribing to iCalendar data called webcal.
Adding a webcal “Subscribe to this calendar” link was easy, but then I had to think about how long I wanted events to appear in the calendar when I subscribed. On my events page, past events fall off the page within 24 hours after they pass. For now, I’ve added a separate calendar page that shows events from one year ago onward. I have subscribed to this calendar successfully in Google Calendar, so I can now see upcoming events and the last year’s worth of events that I’ve published on my own site.
This works great for public events I don’t mind broadcasting, like concerts and meetups. Private and semi-private calendar entries are also really important. I’m not set up to handle those yet, but I’m thinking through it. I will still have to post private entries directly in Google Calendar, but the ability to own the data for my public events is a good first step!