Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
schedule [2021/04/07 18:58] – andi | schedule [2023/12/09 14:41] – Update programming languages used. tbsprs |
---|
= Schedule | = Schedule |
| |
To interexchange the conference data between the different systems and tools we are using the schedule.xml format known from pentabarf/[[http://frab.github.io/frab/|frab]]/[[https://pretalx.com/p/about/|pretalx]]. | To exchange the scheduled conference data between the different systems and tools we are using the schedule.xml format known from [[https://github.com/nevs/pentabarf|pentabarf]]/[[http://frab.github.io/frab/|frab]]/[[https://pretalx.com/p/about/|pretalx]]. |
| |
| **If you want create a small schedule with only a few events, and don't have a structured document yet – please talk to us so we can create an account at https://import.c3voc.de for your space/event. |
| ** |
| |
| |
| {{drawio>schedule-overview.png}} |
| |
| |
| <!-- |
| <WRAP center round important 60%> |
| If you want to provide schedule for JEV22 please provide a **schedule.json** file, not schedule.xml! |
| </WRAP> |
| --> |
| |
| == Schedule XML |
| |
Minimal example: | Minimal example: |
| |
Title is required, subtitle is one sentence when the title is too long. Abstract is a summary of the talk (no html allowed, only one paragraph). Description can be longer, contain HTML or Markdown but should not contain the same content as the abstract; as both are displayed below each other when there is enough display space. | Title is required, subtitle is one sentence when the title is too long. Abstract is a summary of the talk (no html allowed, only one paragraph). Description can be longer, contain HTML or Markdown but should not contain the same content as the abstract; as both are displayed below each other when there is enough display space. |
| |
| The XSD enforces the following rules |
| * conference acronym `denog16` has to match `[a-z0-9_-]{4,}` |
| * `-` should only be used for subconferences (e.g. `cccamp15-ber`) or years when main part ends with number (e.g. `foss4g-2016` or `rc3-2021`) |
| * `_` can be used instead, e.g. `divoc`, `divoc_r2r`, `divoc_bb3` |
| |
| * event slug `denog16-4001-opening` is used as media.ccc.de URL and has to match `[a-z0-9]{4,}-[0-9]{1,6}-[a-z0-9\-_]{4,}` and should match `[a-z0-9]{3,}(-2[0-9]{3}-[a-z]+)?-[0-9]{1,6}-[a-z0-9\-_]{4,}[a-z0-9]` |
| * first component has to be the main conference acronym, see above – so `cccamp15`, not `cccamp15-ber` |
| * for conferences: second component has to be the local integer ID in the conference planning system |
| * the last is a condensed version of the title |
| * trailing dashes should be removed |
| |
| |
| |
<code> | <code> |
<schedule> | <schedule xsi:noNamespaceSchemaLocation="https://c3voc.de/schedule/schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> |
<generator name="human" /> | <generator name="human" /> |
<version>1.0</version> | <version>1.0</version> |
</conference> | </conference> |
<day index="1" date="2016-11-23" start="2016-11-23T09:00:00+01:00" end="2016-11-24T03:00:00+01:00"> | <day index="1" date="2016-11-23" start="2016-11-23T09:00:00+01:00" end="2016-11-24T03:00:00+01:00"> |
<room name="darmstadtium"> | <room name="darmstadtium" guid="0c00f935-e861-4e0c-ba43-7eb53ee189e4"> |
<event id="4001" guid="385033fe-dda1-555a-aca6-28dd05677c66"> | <event id="4001" guid="385033fe-dda1-555a-aca6-28dd05677c66"> |
<date>2016-11-23T13:00:00+01:00</date> | <date>2016-11-23T13:00:00+01:00</date> |
<description/> | <description/> |
<persons> | <persons> |
<person id="0">DENOG ORGA</person> | <person guid="211fd9e8-eebd-4657-8a70-07614b0bdfea">DENOG ORGA</person> |
</persons> | </persons> |
<links/> | <links/> |
</code> | </code> |
| |
== XML | |
* XSD: https://raw.githubusercontent.com/voc/schedule/master/validator/xsd/schedule.xml.xsd | * XSD: https://raw.githubusercontent.com/voc/schedule/master/validator/xsd/schedule.xml.xsd |
* Validator: https://c3voc.de/schedulexml/ , [[https://github.com/voc/schedule/tree/master/validator|sourcecode]] | * Validator: https://c3voc.de/schedulexml/ , [[https://github.com/voc/schedule/tree/master/validator|sourcecode]] |
| |
| |
== Tools | == Interexchange JSON |
| |
| One problem with the nested XML structure is that you can only exchange events once they are assigned to a room and a time slot. To circumvent this issue we propose following JSON structure based on the language/terms used in the schedule.xml format, combined with the recent [[https://docs.pretalx.org/en/latest/api/resources/submissions.html#resource-description|pretalx extensions]]: |
| |
| <code> |
| { |
| "$schema": "https://c3voc.de/schedule/submission", |
| "guid": "83ae8aec-0724-4eef-9b5a-6ead8698e629", |
| "title": "A example talk", |
| "type": "talk", |
| "abstract": "A good talk.", |
| "description": "I will expand upon the properties of the talk, primarily its high quality.", |
| "duration": 30, |
| "do_not_record": false, |
| "image": "https://domain.tld/img/submission.png", |
| "speakers": [ |
| { |
| "name": "Jane", |
| "guid": "09ab9fae-5c45-55a1-ac3b-4cff3d94547d", |
| "email": "jane.doe@example.net", |
| "biography": "A speaker", |
| "avatar": "https://domain.tld/img/avatar.png" |
| } |
| ], |
| "slot": { |
| "start": "2017-12-27T10:00:00Z", |
| "end": "2017-12-27T10:30:00Z", |
| "room": "R101" |
| }, |
| "answers": [ |
| { |
| "id": 1, |
| "question": { |
| "id": 1, |
| "question": { |
| "en": "How much do you like green, on a scale from 1-10?" |
| }, |
| "required": false, |
| "target": "submission", |
| "options": [] |
| }, |
| "answer": "11", |
| "answer_file": null, |
| "submission": "ABCDE", |
| "person": null, |
| "options": [] |
| } |
| ], |
| "notes": "Please make sure you give me red M&Ms", |
| "internal_notes": "Absolutely no M&Ms, but cool proposal otherwise!", |
| "tags": ["science"] |
| } |
| </code> |
| |
| * JSON-Schema: https://github.com/voc/schedule/tree/master/validator/submission-json |
| |
| |
| == Conversion tools |
* Some examples and converters to generate a schedule.xml file: [[https://github.com/voc/schedule]], includes converter from schedule.json to schedule.xml <del>and vice verca</del> | * Some examples and converters to generate a schedule.xml file: [[https://github.com/voc/schedule]], includes converter from schedule.json to schedule.xml <del>and vice verca</del> |
* [[https://github.com/voc/schedule/blob/master/csv2schedule_deu.py|csv2schedule]] e.g. from a [[https://github.com/voc/schedule/blob/master/example_deu/schedule-example.ods|LibreOffice]] or [[https://docs.google.com/spreadsheets/d/1ncDFREf7sO2lB_7meCLlLroQOCpEGqMjzCoO6tFLJZQ/edit?usp=sharing|Google Spreadsheet]] document [ [[https://docs.google.com/spreadsheets/d/1zisANFAdEQtJ5YT0_6t4n_cGvIY2jsYQyGkI8TT_I-c/edit?usp=sharing|simple]], [[https://docs.google.com/spreadsheets/d/1Y3_x6uaBWx6-s1WP79R92QBWiGLkm-vbZkgYvFgDMK0/edit?usp=sharing|advanced]] ] | * [[https://github.com/voc/schedule/blob/master/csv2schedule_deu.py|csv2schedule]] e.g. from a [[https://github.com/voc/schedule/blob/master/example_deu/schedule-example.ods|LibreOffice]] or [[https://docs.google.com/spreadsheets/d/1ncDFREf7sO2lB_7meCLlLroQOCpEGqMjzCoO6tFLJZQ/edit?usp=sharing|Google Spreadsheet]] document [ [[https://docs.google.com/spreadsheets/d/1zisANFAdEQtJ5YT0_6t4n_cGvIY2jsYQyGkI8TT_I-c/edit?usp=sharing|simple]], [[https://docs.google.com/spreadsheets/d/1Y3_x6uaBWx6-s1WP79R92QBWiGLkm-vbZkgYvFgDMK0/edit?usp=sharing|advanced]] ] |
* https://github.com/linux-audio-berlin/LAC16/blob/master/schedule/sexport.py | * https://github.com/linux-audio-berlin/LAC16/blob/master/schedule/sexport.py |
* statistics related to [[software:auphonic#tools|Auphonic]] | * statistics related to [[software:auphonic#tools|Auphonic]] |
| |
| == Planning systems able to produce schedule.xml |
| |
| ^ software ^ output formats ^ used by ^ example instances ^ |
| | pretalx | xml, json | CCC | https://pretalx.c3voc.de | |
| | frab | xml, json | CCC | https://frab.cccv.de | |
| | [[https://osem.io|osem]] | xml | openSUSE, GNOME, ownCloud | |
| | pentabarf | xml | 2023: only by fosdem | https://penta.fosdem.org/ | |
| |
| == Clients consuming schedule.xml |
| |
| * https://github.com/EventFahrplan/EventFahrplan (Android, Kotlin/Java) |
| * https://github.com/Wilm0r/giggity (Android, Java) |
| * https://github.com/saschalalala/pyfahrplan (CLI, Python) |
| |
| |
| |
| |
== Full example | == Full XML example |
| |
from https://fahrplan.events.ccc.de/ -> schedule.xml | from https://fahrplan.events.ccc.de/ -> schedule.xml |