There are three subtypes of online events:
PlaceCal currently supports types 1 and 2.
Raw event data for each source, including sample online event data, can be found under the title Event Data on the PlaceCal Devops page.
We currently support the following sources of online event data:
Eventbrite events have a value (online
) which tells us directly if the event is online or not. However, even if the Eventbrite event is online, we are not given a stream URL.
Meetup events have a value (is_online_event
) which tells us directly if the event is online or not. However, even if the Meetup event is online, we are not given a stream URL.
An iCal file generally (see exception below) does not have a special value for online events. The most common form of linking event data in iCal event data (in as much as, the events we are already looking at / taking in) is to simply put it in the description. This may be a stream URL, or may be a Facebook event.
An ICal created via Google Calendar has an option for events to create a Google Meet stream for the event. The URL is shared via a Google-only extension to the ICal data called X-Google-Conference
Online events are not in a very stable state. Most solutions seem to bootstrap around calendar limitations, which can be seen with the method “Just copy and paste the zoom link into the description”. Videoconferencing usage changes across time, as can be seen with the general loss of usage of Skype and the increase of using Zoom, Discord, and Microsoft Teams.
In addition, it is possible for a single online stream URL to be shared among events. So, to allow future expansion on how we handle online events, to preserve the already-existing separation between an Event
and where the event is hosted, and to allow future reverse-lookup of online URLs to Events, the best solution seemed to be creating a separate Model, OnlineAddress
An OnlineAddress
may have multiple Events
, whereas an Event
may only have one OnlineAddress
. Currently the OnlineAddress
simply contains the URL we are handed by the event ingress source, and a value — is_stream
, that tells us if the URL is a videoconferencing link (i.e. a Type 1 online event), or a link to an external provider that requires user intervention (i.e. a Type 2 online event).