Skip to content

RFC: Discover schedule.xml URL/location #336

@rixx

Description

@rixx

Summary

Make the location of an event's schedule.xml file / Giggity data source discoverable by finding a <link> tag in websites supplied by users.

Background

Both for events I run and for events I just provide support for (as maintainer of pretalx)¹, I frequently get questions about how to add an event to Giggity. pretalx at least links to the XML file openly – though not mentioning Giggity by name –, whereas with other events, it's even harder to figure out how to find the data, as documented in your README.

Some of the time, people have already tried putting the event's schedule page into Giggity, only for that not to work. Of course, not all users try this, and not all schedule pages are actually served by CfP/scheduling systems (often, they are static exports or custom representations), but from my (obviously biased) perspective, it's a sizeable amount.

Proposal

Define a <link rel="alternate"> tag that events and tools can include in their websites in order to link to their Giggity-compatible data source.

Implementation

The well-defined way for websites to link to different data format is the rel=alternate attribute on <link> tags, with the type attribute specifying the MIME type. The href attribute contains the actual URL, and the type attribute contains a MIME type:

<link rel="alternate" type="application/xml" href="https://example.org/schedule.xml" title="Schedule data">

Giggity doesn't have a MIME type registered, but with the proliferation of application specific MIME types (the official list includes more than 400 types including a +xml), I think it would also be permissible to call the type something like application/giggity+xml or application/schedule+xml, but I don't really see a need for this – application/xml is correct, and other similar links use more specific types, such as application/rss+xml.

The application following this link should expect the link to redirect, and follow redirects.

Link format

From Giggity's point of view, it would be ideal if providing this link would allow event organisers to also include Giggity-style metadata, as the JSON you can pass to ggt.gaa.st links. I don't think providing ggt.gaa.st links in this proposed <link> tag would be a good idea though, as we do want to link to the actual schedule data in a fairly tool agnostic way, so the link should always lead to an XML document. Instead, I think adding the same metadata as fragment to the supplied link should work, allowing non-Giggity tools to still use the link, while Giggity could parse the additional data:

<link rel="alternate" type="application/xml" href="https://example.org/schedule.xml#json=<base64 as produced by ggt.sh>" title="Schedule data">

Impact on Giggity

Giggity would need to fully parse websites for this – <link> tags are well-defined and simple to parse, but websites often contain weirdness and errors, so you'd need a fault-tolerant parser that will still give you a functioning link tag, even when there are e.g. unclosed tags further down the document. I'm not sure if Giggity already does HTML parsing or uses a dependency that provides this (I know you do some caching of websites, but not sure if you inspect them along the way).

For positive impact, Giggity would be even easier to recommend to organsiers looking for an accompanying phone app for their event, and users would need less insider knowledge (the tool used by the conference, or the fact that "frab-compatible XML" is the URL they need) to add an event to Giggity.

Impact on events

Organisers would be able to add this link (optionally including a menu structure and metadata!) on their websites, allowing them to determine – and change – how their event looks in Giggity. They would also hopefully have fewer support cases.


¹ Also, just gotta say, as maintainer of pretalx, I love that giggity exists and recommend it to events all the time. Thank you for making and maintaining it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions