Last update: 05.07.2025
Calendiverse
The community-driven calendar in the Fediverse
Organising and participating in shared social events is a central activity of many communities. These events provide a space for existing members to meet and exchange ideas, while also serving as an introduction for newcomers. The Calendiverse enables self-organised but decentralised, undefined and even unstable communities - and their potentially anonymous members - to maintain a shared calendar, interacting with it both individually and collectively. Naturally, the calendar is free software/open source, giving users full control over their data, content and access while seamlessly connected to the Fediverse.
Project Description
Many communities lack a shared calendar, but would love to have one. Because having a shared calendar as one common resource means that any community member can easily keep up to date with important common events.
Communities that define themselves by a common interest rather than via membership of a certain association usually face difficulties in self-organising and organising collectively. Consider undefined, broad communities such as free software enthusiasts, music fans or attendees of events in a certain region. Few people in these communities feel motivated or responsible enough to invest time or money in maintaining a shared calendar or communication channels. Generally speaking, the larger, more distributed and less hierarchical a community becomes, the more difficult it is to self-organise and maintain shared resources.
This is precisely what the Calendiverse can help overcome: a decentralised, scalable calendar in the open web that can be edited and updated by any community member. These features make the Calendiverse particularly appealing for undefined, self-organising and distributed communities as well as grassroots movements because there is no more need of a single person or entity to maintain the resource. While you still need "someone" to host the Calendiverse, any community member can help to keep its content up to date.
In addition, its Fediverse integration provides enhanced communication capabilities between the Calendiverse and its users, as well as between users themselves - eliminating the need for an additional platform account. With the Fediverse, an already existing decentralised and open network becomes the collective communication channel for any community organising itself via the Calendiverse.
And since many community members may already have a Fediverse account, or can easily create one themselves, it seems a perfect fit as a communication channel for the aforementioned kind of communities. Finally, allowing every member to use a self-maintained Fediverse account gives them full control over the visibility and accessibility of their communication and contributions to their community.
We think the Calendiverse's features are particularly useful and powerful for larger, undefined interest-based communities that tend to organise smaller events where people like to help and get to know each other. However, as content creation is user-driven across distributed Mastodon instances, the platform can theoretically scale to any size, and we are interested to see who ends up using it for what : )
Technical Description
Each Calendiverse creates a web instance that hosts a calendar to present individual events, as well as a Mastodon instance that promotes these events in the Fediverse and provides opportunities for community interaction.
To this end, each event in the Calendiverse consists of a perma-URL and a unique ActivityPub actor (an "event actor"). Initially, this will be a Mastodon account, but it is planned that this will be opened up to include any Fediverse account in future developments. Said event actor acts as a bot, automatically tooting and re-tooting certain information. On the other hand this event actor provides interaction opportunities for all users with a Fediverse account (again, focusing on Mastodon integration initially).
Using their very own Mastodon account, any participant or attendee of an event that is promoted in the Calendiverse can connect with each other - either directly or by interacting with the event's ActivityPub actor. For example, a user can list their Mastodon account as a participant of an event and indicate that they are looking to make contact with other like-minded community members. Other users can then get in direct contact with them via the Fediverse.
Applying the same logic, users can offer each other sleeping spaces and lifts in the context of a particular event. This could be particularly interesting for smaller events with attendees coming from far away, such as hackathons, live action role-playing events or certain subcultural interest groups. Users can, for example, use their Mastodon account to offer a sleeping place for a specific event and allow their offer to be listed on the event page within the Calendiverse. However, as soon as they are in contact, they no longer depend on the platform and can continue communicating via the Fediverse or other channels.
Finally, any passive or silent community member who is reading or using the Calendiverse does not require any account at all. The Calendiverse is designed in a way that all information is freely available and only interaction requires a personal account on any Mastodon instance.
Technical Realisation
The Calendiverse provides the ability to collaboratively maintain a calendar for decentralised, undefined or even unstable communities of any size, such as event attendees. Initially, we will focus on integrating interaction capabilities through Mastodon instances. In the long run, however, we aim to integrate all applications within the Fediverse.
The Calendiverse itself consists of a Mastodon instance, a web server and the orchestrated interaction between the two. A Python build-script can already be deployed on your web server and rolls out a HTML/CSS/javascript based calendar with embedded OpenStreetMap and Mastodon features. Within the calender each event has an own page with a permanent-URL. Together, these event pages form a calendar with an associated database that can be edited, maintained and updated by anyone via browser. Users can subscribe via RSS, ICS, iCal, iframe and other formats. For a showcase of such a calendar, see // foss.events.
As is planned, in future the Calendiverse also rolls out a Mastodon instance for each Calender. This Mastodon instance creates a central AP actor ("Calendar Actor") for each calendar, which promotes all new and modified events within the calendar. In addition, the instance creates a separate AP Actor ("Event Actor") for each individual event. Both the Calendar Actor and the Event Actor are ActivityPub Actors, initially Mastodon accounts.
Other Mastodon users can interact with the Calendiverse platform through the Event Actors. By using the integrated poll-function, users can interact with the event actors for example to announce their RSVP, offer a couch for an overnight stay, or arrange a carpool. These RSVPs and offers can then be displayed and embedded on the corresponding event pages using API calls to their respective Mastodon instances.
Key technologies
The Calendiverse combines the technologies and features of the Free Software applications // foss.events, Gathio and gancio.
// foss.events
// foss.events will become - yet is - the showcase for the Calendiverse as one running instance of the general software "Calendiverse".
It already includes many core features, particularly the wiki-like experience with structured data and admin interfaces, which will be further developed for the Calendiverse application as a whole. What's more, //foss.events comes with a vibrant community that is already interacting with the calendar by adding and editing events, and maintaining a shared calendar. This means that there is already a target group and community eager to test and provide feedback on any feature enhancements during the development of Calendiverse.
The associated Mastodon account has around 2.4K followers, making it an ideal candidate on which to develop concepts for interactions between Calendiverse and Fediverse. This is particularly relevant given that the surrounding community is expected to be interested in open-source tools for self-organised, decentralised community organisation, as well as Fediverse applications. Given the high percentage of technical enthusiasts within this community, it is highly likely that people will be interested in trying out, reusing, adapting or further developing the Calendiverse within other communities.
gath.io
The core concept of Calendiverse's RSVP integration via ActivityPub will be based on features from gath.io. Gath.io already has a functioning concept of how people can indicate their attendance at an event using their own Mastodon account, and interact with other Mastodon accounts.
Each event created in the calendar generates a unique AP actor. When a user follows an event's associated Mastodon handle, a secret poll is sent to the participant asking if they plan to attend the event. If they respond positively, they can choose to be publicly listed as an attendee of the event. They can also decide at any time to be removed. This feature will be further developed for Calendiverse to include sleeping couches, lifts, and so on.
Additionally there is an interesting feature that let users link individual events to an event group which can be adjusted to group events for example of a certain organisation.
Gancio
Gancio is a highly advanced event platform that enables people and groups to create, export and embed anonymous events and facilitate discussion of these events in the Fediverse. Unlike the aforementioned gath.io, Gancio does not provide a unique API for each event, but rather a central API for the entire calendar. This is similar to the current setup of foss.events, where one associated Fediverse account promotes each event listed in the calendar. As can be seen in the technical description above, the Calendiverse aims at combining these two features.
When it comes to UX, Gancio is amazing and full of features! It is well documented and has features such as recurring events and embedding. It can export events in many ways, including via RSS feeds and global or individual ICS. This allows you to embed a list of events or a single event via an iframe or web component on other websites. It can also export events via ActivityPub, microdata and microformat. Last but not least, Gancio comes with an integrated feature to filter events based on tags or probably other properties, that is a UX-must to be integrated in the Calendiverse as well.
In terms of the Fediverse, Gancio enables interaction with individual events via comments, images or audio. If admins enable this feature, these will appear on the event page, providing an opportunity to collectively archive notes and media for self-organised events via the decentralised Fediverse. To protect users and avoid trolling, Gancio comes with tools for managing any unwanted content from the Fediverse.
License compliance
The key technologies to be combined for the Calendiverse are licensed as:
- // foss.events - AGPL 3.0
- gath.io - GPL 3.0
- Gancio - AGPL 3.0
These licenses are compliant ✓
"You can always link GPLv3-covered modules with AGPLv3-covered modules, and vice versa. That is true regardless of whether some of the modules are libraries." Source: gnu.org
Key features
- Openness & Reusability - Everything based on Open Standards and Free Software - no proprietary bullshit!
- Open Web - Even those who are not part of the Fediverse can access all information.
- Platform & UX - Like a wiki, as a calendar
- Decentralisation & Community - Shared calendards for diverse communities
- Curated & Administered - Stay safe with the admin interface
- Interaction with the Fediverse - A core component of the Calendiverse: its integration with the Fediverse
- Interfaces & Export - Numerous export options and interfaces
Openness & Reusability
Everything based on Open Standards and Free Software - no proprietary bullshit!
- Radical openness: Free Software (AGPL 3) + Open Database (ODbL) + Open Content (CC-BY-SA)
- Event pages and index pages use microdata introduced by Schema.org to provide machine-readable and structured data to facility further reuse
- REUSE-compliance to facilitate integration into softare-supply-chains
- Self-hostable and customisable
- Content embeddable on third party pages
- Export possible via multiple interfaces (see Interfaces & Export)
- No account required to create or view events
Open Web
Even those who are not part of the Fediverse should be able to access all event information.
- Every event has a permanent URL.
- Responsive HTML pages ensure compatibility across all major browsers, clients and devices.
- Structured data and adherence to W3C standards.
- Easily scrapable content by using machine readable data (see Openness & Reusability)
- Search machine optimized
- No login-only content, paywalls or other restrictions on any usage.
- All Fediverse-aggregated content is displayed and visible even without a Fediverse account or any login.
Platform & UX
Like a wiki, as a calendar
- Like a wiki, anyone inside and outside the community can edit any event and its metadata. Categories of metadata can be adjusted to specific needs and usually go beyond time and location (e.g. entrance fee, number of participants etc). The information is stored in a database and so the calendar also becomes a data archive for certain communities and their events.
- Collected metadata can be used for filter and search criteria, for example users can filter events by criteria like online/offline appearance.
- Offering structured and machine readable data (see Openness & Reusability) helps with accessibility; different forms of information display such as lists, maps, and tiles as well as a dark/light theme further support different user accessibility needs.
- Dynamic content is displayed fromt the Fediverse (see Interaction with the Fediverse)
Decentralisation & Community
Shared calendards for diverse communities
- Anyone (inside or outside the community) can add new events via a web form
- Anyone can change / update existing events. Simple “edit” buttons allow them to send corresponding change notifications to the admins. This enables collaborative maintenance by a community, similar to a wiki (see Platform & UX)
- Each community can create their own calendars and customize them to their needs
Curated & Administered
Stay safe with the admin interface, that allows:
- the maintenance of new and existing content, as well as change requests,
- the automatic sending of toots or manual editing
- the activation / deactivation of Fediverse interaction options
- the setting of interactions, e.g. retoots for hashtag xyz
- security: Every change request must be approved by the admin before it goes live.
- Security: Admins can moderate the Fediverse integration, blocking individual posts or users from appearing on the site. In the event of a spam attack or massive abuse, the integration can be disabled for individual pages or the entire instance.
Interaction with the Fediverse
A core component of Calendiverse is its integration with the Fediverse and the interaction possibilities it enables.
- Each calendar has a central Mastodon AP actor that promotes all new events within the Fediverse. These toots can be sent automatically or edited manually via a dedicated interface. They also contain a link to the event's AP Actor.
- A simple interface allows scheduling content and times, including future posts.
- Templates can be created.
- Each event has its own AP Actor ("Event Actor"). Other Fediverse users can interact with this Event Actor.
- Fediverse Users can follow the Event Actor in the Fediverse.
- The Event Actor can send updates about the event.
- The Event Actor can act as a bot and repost certain content, such as pictures or couch listings.
- The Event Actor can send automated polls to engage with the Fediverse. Users can make various announcements using their Mastodon accounts on any instance, such as
- RSVP: Users can announce their attendance.
- Couchsurfing: Users can offer a place to sleep.
- Carpooling: Rides can be arranged.
- Meetups: Users can organise networking opportunities.
Example: A new event is created on Calendar X and with it the Event-Actor @event-x@calendiver.se is created. User Y starts following the Event Actor X at @event-x@calendiver.se. Immediately, they receive a poll asking, "Will you attend this event?" If they select "yes", they will receive a follow-up question: "Do you want to be listed on the event page?" If both are confirmed, the user's Fediverse handle will appear on the event page. User Z can see User Y and their Mastodon-profile listed as an attendee on the webpage of Event X. User Z can now contact User Y via the Fediverse. Similar interactions are available for couchsurfing etc. - Interactions with the event actor are displayed live on the event page. Users can connect outside the platform and through the Fediverse.
Example: similar to the example above, User Y with @name-of-user-y@mast.instance offers a couch for the event using the poll interface of the Event Actor (@event-x@calendiver.se). As a result, @name-of-user-y@mast.instance will be displayed as the couch host on the event's webpage. Other Fediverse users (User Z) can then contact them from outside the platform. - Live updates from Fediverse related to the event, as well as user interactions, can be displayed on the event page, including
- Toots from a selected account (e.g. the official organiser's account).
- Toots containing one or more relevant hashtags (such as the official event hashtags).
- Additional sections, such as memorials.
- No additional account is required - users can interact from any instance using their existing Mastodon account.
- The event page includes share buttons for the Fediverse.
Interfaces & Export
The Calendiverse sees itself as one module in the whole in the universe of open source tools. Therefore, it comes with numerous export options and interfaces:
- Event data is provided via an open API in Activity Pub format. This enables integration into other Fediverse instances.
- Calendars can be subscribed to via iCal.
- The event pages and index page use microdata, introduced by Schema.org (see Openness & Reusability)
- RSS and ICS export is available with filtering options.
- Content can be embedded on third-party sites using web components or iframes.
Future Developments
Planned features include:
- Easy customisation by creating your own calendars, e.g. on https://xyz.calendiverse.join with a simple interface that allows groups to create titles, descriptions, own variables and administration
- Create a closed calendar for closed communities. This works by password protecting the event pages and allowing the associated Mastodon account to be followed by invitation only
- Advanced filtering and search criteria.
- Extending the functionality now realised with Mastodon to the entire Fediverse.