Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
schedule [2021/04/07 18:56] andischedule [2023/12/18 12:19] – Added Engelsystem as consumer, fixed list myigel
Line 1: Line 1:
 = 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. 
 +** 
 + 
 + 
 +<WRAP group> 
 +<WRAP column> 
 +{{drawio>schedule-overview.png}} 
 +</WRAP> 
 +<WRAP quarter column> 
 +Historie Congress/Camp:  
 +* [[events:37c3:schedule|2023]] 
 +* [[events:camp23:schedule|#CCCamp23]] 
 +* [[events:jev22:schedule|2022]] 
 +* [[events:jahresendveranstaltung2021:schedule|2021]] 
 +* [[events:rc3:schedule|2020]] 
 +* [[https://events.ccc.de/congress/2019/wiki/index.php/Static:Schedule#Merged_schedules_.28XML_.2F_JSON.29|2019]] 
 +* [[https://events.ccc.de/congress/2018/wiki/index.php/Static:Schedule#Merged_schedules_.28XML_.2F_JSON.29|2018]] 
 +* [[https://events.ccc.de/congress/2017/wiki/index.php/Static:Schedule#Merged_schedules_.28XML_.2F_JSON.29|2017]] 
 +* [[https://wiki.cccv.de/general/services/system|2015]] 
 +</WRAP> 
 +</WRAP> 
 + 
 + 
 + 
 +<!-- 
 +<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>
Line 21: Line 66:
   </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>
Line 36: Line 81:
         <description/>         <description/>
         <persons>         <persons>
-          <person id="0">DENOG ORGA</person>+          <person guid="211fd9e8-eebd-4657-8a70-07614b0bdfea">DENOG ORGA</person>
         </persons>         </persons>
         <links/>         <links/>
Line 47: Line 92:
 </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]]
-* [[https://github.com/frab/schedule.xml|Coordination between different projects producing/consuming schedule.xml]] (under construction) +* [[https://github.com/frab/schedule.xml|Coordination between different projects producing/consuming schedule.xml]] (under construction)
  
  
-== 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]] ]
Line 64: Line 165:
   * [[https://github.com/voc/schedule/blob/master/wikitable2schedule.py|wikitable2schedule]]   * [[https://github.com/voc/schedule/blob/master/wikitable2schedule.py|wikitable2schedule]]
     * HTML (wiki) table (e.g. from Dokuwiki at https://di.c3voc.de) -> schedule.xml, schedule.json     * HTML (wiki) table (e.g. from Dokuwiki at https://di.c3voc.de) -> schedule.xml, schedule.json
 +  * c3data GraphQL export
 +  * rC3hub JSON API export 
 * https://github.com/voc/voctosched * https://github.com/voc/voctosched
   * csv -> schedule.xml + schedule.json   * csv -> schedule.xml + schedule.json
Line 78: Line 181:
 * 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/engelsystem/engelsystem ([[https://github.com/engelsystem/engelsystem/tree/main/src/Helpers/Schedule|PHP]])
 +* https://github.com/Wilm0r/giggity (Android, Java)
 +* https://github.com/saschalalala/pyfahrplan (CLI, Python)
  
  
Line 85: Line 203:
  
  
-== Full example+== Full XML example
  
 from https://fahrplan.events.ccc.de/ -> schedule.xml from https://fahrplan.events.ccc.de/ -> schedule.xml
  • schedule.txt
  • Last modified: 2024/03/13 00:05
  • by andi