Online Event Types

There are three subtypes of online events:

  1. Videoconferencing where we have a link directly to the stream, that the user can click on to join the meeting,
  2. Videoconferencing applications where we do not have a link to the stream, that requires the user to click to an external event provider to join the meeting
  3. Non-videoconferencing online meetings such as discord or irc meetups, world of warcraft, etc.

PlaceCal currently supports types 1 and 2.

Sources

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

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

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.

iCal

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.

iCal (Google Calendar)

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

OnlineAddress Rationale

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