FeD:Projekte/Kalenderformat

Aus Förderverein euregionale Digitalkultur e.V.

Wechseln zu: Navigation, Suche

Diese Seite enthält einen Vorschlag für eine neues Kalenderformat. Man könnte es auch eine BuK (Bitte um Kommentare, quasi RFC) nennen.

Inhaltsverzeichnis

Work in progress

An dieser Seite und damit an dem Vorschlag wird noch gearbeitet.

Grund

Im IRC kam ein wenig das Gefühl auf, dass iCalendar zwar vielleicht das im Moment beste, aber wohl kein gutes Format ist. Darum die Idee: Das können wir doch besser!

Übersicht

Ein Kalender ist ein Verzeichnis, Kategorien sind Unterverzeichnisse, jeder Termin ist eine eigene Datei. Das Kalenderverzeichnis kann auch als .zip oder .tar.gz (zur Unterscheidung sollte man dann allerdings eine neue File-Extension festlegen, z.B. ccal) verteilt werden.

Das vereinfacht die Synchronisation und ermöglicht kleine und schnelle Backups.

Format

Kalender

Ein Verzeichnis irgendwo auf einem Datenträger. Es stellt die oberste Ebene das Kalenders dar, in einem gewissen Sinne ist es der Kalender. Es enthält genau eine Datei mit Informationen über diesen Kalender und genau eine Datei für Locking. Außerdem enthält es eine beliebe Anzahl Termine und eine beliebige Anzahl Kategorien.

Kategorie

Ein Verzeichnis innerhalb eines Kalenders oder innerhalb einer anderen Kategorie. Kategorien dienen dem Ordnen und Verwalten von Terminen unterschiedlicher Art (z.B. Arbeit, Persönlich, Geburtstage). Es enthält genau eine Datei mit Informationen über diese Kategorie. Außerdem enthält es eine beliebe Anzahl Termine und eine beliebige Anzahl Kategorien.

Termine

Eine Datei innerhalb eines Kalenders oder innerhalb einer Kategorie. Sie enthält die Informationen zu genau einem Termin, der allerdings eine automatische Wiederholung haben kann. Diese Informationen werden in einem Format gespeichert, das sowohl von Menschen als auch Maschinen gut gelesen werden kann. Notwendige Informationen für einen Termin:

  • Name
  • Ort
  • Notizen (zusätzliche Informationen die man mitspeichern möchte)
  • Startdatum
  • Enddatum
  • Startzeit
  • Endzeit
  • Gelöscht-Markierung
  • Art und Zeiten der automatischen Wiederholung
  • Timestamp der letzten Änderung

Operationen

Erzeugen

Eine Datei mit den gewünschten Informationen in der gewünschten Kategorie anlegen.

Ändern

Informationen innerhalb eines Termins anpassen.

Verschieben

Neue Version anlegen, alte als gelöscht markieren.

Löschen

Termin als gelöscht markieren.

Kategorie anlegen

Verzeichnis erzeugen und Datei mit Informationen anlegen.

Kategorie verschieben

Alle Termine in der neuen Kategorie neu anlegen und in der alten als gelöscht markieren, alte Kategorie als gelöscht markieren.

Kategorie löschen

Kategorie als gelöscht markieren.


Diskussion

Locking

Wenn mehrere Prozesse auf den gleichen Kalender zugreifen sollen, ist eine Form von Locking nötig.

Eine einfache .LOCK_DATEINAME kann erstellen werden. Da es jedoch wie im Maildir Format eigentlich kein Problem ist wenn zwei oder mehr Prozesse auf den gleichen Kalender zugreifen sollte es generell kein Problem sein. Nur wenn der selbe Termin verändert wird, muss es ein locking geben. --airmack 22:42, 23. Apr. 2009 (UTC)

Gelöscht-Markieren

Man könnte einen Termin löschen, in dem man die Datei einfach löscht. Dann kann beim Synchronisieren aber nicht unterschieden werden, ob der Termin noch nicht oder nicht mehr existiert. Nachteil ist natürlich das Mitschleppen alter Termine.

Wiederholung von Terminen

Wie baut man diese am besten ein? Ich hätte da erstmal keine Ahnung wie man das machen sollte. Insbesondere so sachen wie "dritter Donnerstag im Monat" oder ähnliches

--airmack 23:08, 23. Apr. 2009 (UTC)

Dateiformat

Anbieten würde sich entweder XML oder ein einfaches Field=Value-Format.

--Pieta 21:34, 23. Apr. 2009 (UTC)

XML Vorschlag(deutsch)

<Kalender>
<Termin>
<Name> Ein Testtermin </Name>
<Ort> LHC </Ort>
<Notizen> Viele schwarze löcher die Zensursula essen erschaffen </Notizen>
<Startdatum>
 <Jahr> 2009 </Jahr>
 <Monat> 4 </Monat>
 <Tag> 1 </Tag>
 <Wochentag> Mittwoch </Wochentag>
 <Stunde> 23 </Stunde>
 <Minute> 23 </Minute>
 <Sekunde> 5 </Sekunde>
</Startdatum>
<Enddatum>
 <Jahr> 2009 </Jahr>
 <Monat> 4 </Monat>
 <Tag> 1 </Tag>
 <Wochentag> Mittwoch </Wochentag>
 <Stunde> 23 </Stunde>
 <Minute> 52 </Minute>
 <Sekunde> 37 </Sekunde>
</Enddatum>
<Gelöscht> 0 </Gelöscht>
<Wiederholung> 0 </Wiederholung> 
<Timestamp>
 <Jahr> 2009 </Jahr>
 <Monat> 23 </Monat>
 <Tag> 2 </Tag>
 <Wochentag> Montag </Wochentag>
 <Stunde> 13 </Stunde>
 <Minute> 37 </Minute>
 <Sekunde> 00 </Sekunde>
</Timestamp>
</Termin>
</Kalender>


Beginnen und Enden tut jeder Kalender mit <Kalender></Kalender>

jeder Termin mit <Termin></Termin> und den Rest könnt ihr euch ja denken

Wobei das ganze in Englisch wahrscheinlich besser wäre --Airmack 22:59, 23. Apr. 2009 (UTC)