Draft 0.x The spec is not stable yet: fields can still change, be renamed or be dropped. Follow the discussion

Prior art

Standards and projects that already solve part of this problem — what we reuse from them, what we add, and where we would rather be corrected than be original.

OTE exists in an ecosystem, not in a vacuum. Calendar standards, structured web vocabularies, IndieWeb conventions and federation protocols already solve important parts of this problem. Wherever a concept exists somewhere else, we would rather map to it than invent a second, incompatible version of it. This page is what we read before writing the spec — and an invitation to tell us where we got it wrong.

Two things are deliberately kept apart below. Standards and protocols are what OTE maps to: they define vocabularies, serialisations and distribution mechanisms. Aggregators, directories and tools are software that already ingests event data from somewhere. They are not competing formats, and comparing the two in a single table would be comparing things that live in different layers. The layer matrix at the end is there to make those layers explicit.

1 · Standards and protocols

The field survey behind this section lives in the repository: research/findings/standards.md, property by property. Here is the short version, plus what it means for OTE.

iCalendar / VEVENT RFC 5545

Mapping shipped
Solves
The hardest parts of calendaring, and it has solved them since 1998: date-times in three flavours (floating, UTC, zoned via VTIMEZONE), recurrence (RRULE, RDATE, EXDATE, RECURRENCE-ID), all-day events, and subscription by URL. Every calendar client on earth reads it.
OTE reuses
The date model, near-literally: ISO 8601 plus an IANA timezone, convertible to all three iCalendar forms. Recurrence semantics follow RRULE rather than a new invention. The "subscribe to a URL" distribution idea is the same idea.
OTE adds
Things VEVENT has no field for: a CFP with its own open/close dates, an explicit online / in-person / hybrid distinction, structured organisers, a data licence, and per-event translations. In iCalendar these end up as prose inside DESCRIPTION, which is exactly the state we are trying to leave.
Where we stand
import-ics and export-ics are published, and the aggregated feed is served as feed.ics. The export is lossy by construction — CFP, attendance mode and structured speakers have nowhere to go — and we would rather say so than pretend otherwise.

schema.org / Event JSON-LD

Import shipped, export proposed
Solves
A widely understood vocabulary for describing an event on a web page, and the one search engines actually read: embed it as JSON-LD and you can get event rich results. It has the best online/hybrid modelling of anything we surveyed (eventAttendanceMode, VirtualLocation), plus eventStatus, performer and offers.
OTE reuses
The data model, close to one-to-one. Attendance mode, status, offers, organiser and location are shaped so that serialising an OTE event to schema.org/Event is a rename, not a redesign. This is our primary mapping target.
OTE adds
A feed. schema.org describes one event inside one HTML page; there is no notion of "all of this community's events" you can subscribe to without scraping. OTE adds the container (one URL, N events, an updatedAt), a small validatable core with real JSON Schemas — schema.org ships a huge and almost entirely optional vocabulary with no validation — plus CFP and a data licence.
Where we stand
import-jsonld is published and extracts Event JSON-LD from real pages. The exporter (OTE → schema.org/Event) is still proposed, not built — see the tools section. Until it exists, "maps 1:1" is a claim backed by the field survey, not by running code.

h-event & POSSE IndieWeb / microformats2

Mapping not built
Solves
Marking up an event in the HTML you already publish, with no parallel file to maintain — the page is the data. Around it, IndieWeb has a decade of practice on the questions OTE also cares about: who owns the canonical copy (POSSE — publish on your own site, syndicate elsewhere), RSVPs, and replies via Webmention.
OTE reuses
The principle, not yet the markup. "The organiser is the authoritative source and the platforms are destinations" is POSSE restated for events, and we should say so plainly instead of presenting it as new.
OTE adds
A machine-readable feed decoupled from the page, for consumers that want N events in one fetch rather than a crawl, plus the tech-community fields (CFP, multi-part events, eligibility).
Open question
Should OTE be built much more directly on top of h-event instead of alongside it? Our survey rated h-event "low priority" as an HTML markup option, which is a decision about output formats — it never seriously tested whether the IndieWeb conventions should have shaped the model itself. That is a real gap in our homework, and feedback from people who have shipped h-event tooling would change our answer.

ActivityPub + FEP-8a8e Fediverse

Not yet analysed
Solves
Events that propagate between servers, and the social actions around them — RSVP, announcements, replies. FEP-8a8e is the in-progress convention for using ActivityStreams Event consistently enough that Mobilizon, GatherPress and others can actually interoperate; the Event Federation project (NLnet-funded, active) is working on parent/child events, recurrence, RSVP and discovery.
OTE reuses
Nothing yet, and that is the honest answer. This is the one standard in this section that our original research never covered — it surveyed calendar, web and feed formats, and stopped there.
Different problem
The distribution models genuinely differ: ActivityPub is a push protocol between actors on running servers, while OTE is a static file you can host on GitHub Pages. A community that cannot run a server can publish OTE today. That is complementary, not competing — an OTE ↔ FEP-8a8e adapter would let one published event reach the Fediverse.
Open question
Are we modelling concepts — event identity, organisers, parent/child events, recurrence — in a way that conflicts with FEP-8a8e for no good reason? We would like this reviewed before the model stabilises, not after.

RSS 2.0 & JSON Feed

Export shipped
Solves
Syndication as a settled problem: one URL, many items, subscribers pull. Readers, bots and newsletters already speak it.
What they don't do
Model an event. There is no start date, no end date, no venue, no timezone — an event is just an <item> with a title and a link. They are a distribution format, not a data model.
Where we stand
export-rss is published: an OTE feed becomes RSS or JSON Feed, one event per item, with the structured data carried alongside and a link back to the full entry.

2 · Aggregators, directories and tools

Projects solving the same problem from the consuming end. None of these is a competing format; several are the reason a format would be worth having. We describe them in a couple of sentences and link out — deliberately no adoption metrics, because we have not measured any and star counts are not adoption. If your project is here and we got it wrong, correct us — every card links to an issue.

Community Calendar

Jon Udell

An aggregator built on the premise that event producers are the authoritative sources for their own events: publish once, individuals and aggregators pull. Its gold standard is iCalendar, with scrapers for sites that do not publish a feed. Udell has been making this argument since roughly 2008 — "ICS is RSS for events".

Why it matters to us: it is the sharpest challenge to OTE's existence. If iCalendar plus curation is enough, we should hear that from someone who has actually built the aggregator.

Brainberg

Open source

An aggregator of AI and tech events in Europe that already tries to ingest structured data from organisers — JSON-LD, schema.org microdata, RSS, iCal — instead of relying only on manual submission.

Why it matters to us: it is the fairest test of the whole idea. If Brainberg already gets what it needs from schema.org + RSS + iCal, then an OTE feed has to earn its place by saving them work, not by existing.

Meetable

Aaron Parecki

A minimal event aggregator, deployed at events.indieweb.org, events.oauth.net and meet.modelcontextprotocol.io. Event pages, tags, iCal feeds, "add to calendar", RSVPs and Webmentions.

Why it matters to us: a working example of a small, self-hosted directory — the kind of consumer OTE should be trivial to plug into — and evidence that iCal output is still what people want at the end.

confs.tech

tech-conferences/conference-data

An open, community-curated dataset of tech conferences — JSON per topic and year, with name, dates, city, country, CFP URL and CFP deadline — contributed by pull request or through a web form.

Why it matters to us: its schema is a directory's internal model, not a standard, and it works. The open question is whether organiser-maintained feeds would add anything to a curation model that already produces clean data.

developers.events

Developers-Conferences-Agenda

A long-running agenda of developer conferences and CFPs, maintained as open data and consumed by several other sites.

Why it matters to us: OTE is not an alternative to it. The goal is that directories like this one can consume data the organisers maintain themselves, instead of everyone re-typing the same conference.

NextTechEvent

CodingAfterWork

An aggregator for speakers, attendees and organisers that normalises several CFP and event sources — Sessionize, PaperCall, confs.tech, joind.in — into one internal model.

Why it matters to us: its normalised model is a requirements document we did not write. Comparing it against the OTE schema would surface missing concepts and unnecessary complexity quickly.

Open Source Event Calendar

WordPress plugin

A fully open-source WordPress plugin to create, manage, share and aggregate events, with native iCalendar import and export.

Why it matters to us: WordPress is where a large share of communities actually publish. A publishing tool that emits OTE alongside ICS would test the whole story — publish once, get several formats out.

awesome-developer-conferences

Infrasity-Labs

A curated list of developer, DevRel, cloud-native, platform-engineering, DevOps and API conferences, maintained by hand.

Why it matters to us: the low-tech end of the same problem — collect, deduplicate, keep fresh — and a plausible consumer if the data can be fetched instead of typed.

More directories, platforms and their export capabilities — EventosWiki, Event Garden, CFP Tracker, CallingAllPapers, dev.events, Meetup, Sessionize, Luma, joind.in, PaperCall — are catalogued in the research folder, which is the raw evidence behind this page.

3 · Which layer is each one in?

Most arguments about "another event format" are really arguments between different layers. A dot means the project covers that layer as a first-class concern — not that it does it best, and not that the others could not be extended to do it.

Modelvocabulary Publishfrom the source Syndicatesubscribe to N Federateserver to server Aggregatecombine sources
iCalendar
schema.org/Event
h-event
RSS / JSON Feed
ActivityPub + FEP-8a8e
OTE
Community Calendar
Brainberg
Meetable
confs.tech

Read horizontally, not vertically: the rows below the line are software, the rows above it are specifications, and "OTE vs Meetable" is not a question. What the matrix does show is where OTE places its bet — model, publish and syndicate together, with no server to run — and that the neighbouring rows are the ones we should be exporting to, not arguing with.

4 · What we can't claim yet

A page like this is easy to write persuasively and hard to write honestly. These are the load-bearing assumptions behind OTE that we have not demonstrated. If one of them turns out to be false, the right answer may well be to narrow OTE, turn it into a profile of an existing standard, or stop.

  1. That the gap is real. We believe no widely adopted layer combines publish-from-the-source, syndication and a tech-event vocabulary. We have not measured adoption systematically, and "we didn't find one" is not "there isn't one".
  2. That an aggregator saves work. No independent consumer has yet reported that ingesting OTE was less work than what they already do. Until one does, the efficiency argument is a hypothesis.
  3. That reuse beats rolling your own. When a community needs structured events it is very easy to invent a small local events.json — that is what happens in practice. Whether picking up OTE is genuinely easier than writing twenty lines of schema is untested.
  4. That the schema.org mapping is 1:1. It is 1:1 on paper, from the field survey. The exporter is not built, so nothing has proved it end to end.
  5. That we are not duplicating FEP-8a8e. We have not compared the models property by property. This is unreviewed work, not a settled conclusion.
  6. That publishing is worth it for the organiser. If the only beneficiary is a future aggregator, the incentive to publish is weak. The immediate payoff — ICS, RSS, JSON-LD and a subscribe button from one file — is the bet, and it is only partly built.

A standard is not worth anything for being well written — only for how many people use it. Everything on this page is a draft argument, not a verdict.

5 · Tell us where we're wrong

The most useful thing anyone reading this can do is push back. Concretely, we would like: a review of the model by people working on event federation; a straight answer from aggregator maintainers about whether an OTE feed would save them work or add a format; and someone from the IndieWeb side telling us whether this should have been h-event all along.

We would rather build the importer or the mapping ourselves than ask a maintainer to implement our format. If your project could be a consumer, that offer is open.