In aktiver Entwicklungv0.0.1-beta

Ein Solver baut Ihr Semester.Ein Mensch gibt es trotzdem frei.

Calendry verwaltet jeden Raum, jede Klasse, jede Lehrkraft und jede Lehrveranstaltung, aus denen Ihr Semester besteht, und schlägt die Platzierung für alles davon in etwa 350 Millisekunden vor. Nichts erreicht den echten Stundenplan, bevor es jemand anwendet.

Vorführung anfragen

Der Quellcode ist öffentlich. Jede Funktion auf dieser Seite ist durch die Integrationstests dieses Repositorys abgedeckt.

Für die Menschen, die den Stundenplan tatsächlich bauen: Studierendensekretariate, Stundenplanung und Fachbereichsleitungen, dazu die Lehrkräfte, die im Ergebnis arbeiten müssen.

Ein Semester sind hundert Randbedingungen in einer Tabelle, die niemand zu öffnen wagt

Software für die Stundenplanung scheitert auf bestimmte, wiedererkennbare Weise, und keine zu haben scheitert genauso. Beide Fehler haben dieselbe Form: Der Plan weiß weniger als der Mensch, der ihn hält.

Was heute schiefgeht

Das Semester liegt in einer Datei, die genau eine Person gefahrlos bearbeiten kann. Einen doppelt belegten Raum entdeckt die Lehrkraft, die hineinläuft. Die Kollision einer Klasse bleibt unsichtbar, weil die Klasse über vier Reiter verteilt ist, und einen Termin zu verschieben heißt, die anderen neunzig von Hand zu prüfen.

Was sich ändert

Das Semester liegt in einem Modell, das bereits weiß, dass ein Studiengang und seine Jahrgänge dieselben Menschen sind. Eine Kollision wird in dem Moment festgehalten, in dem Sie sie erzeugen, und ist nächste Woche noch auffindbar. Verschieben Sie einen Termin, erfahren Sie, was dadurch bricht; fragen Sie die ganze Woche neu an, kommt sie in etwa vier Sekunden zurück.

Was Sie bekommen

Fünf Dinge, die das für die Person leistet, der die Woche gehört. Jedes davon existiert heute und ist keine Absichtserklärung.

  • Ein Semester, platziert, während Sie warten

    27.000 Termine in etwa 350 Millisekunden auf einem synthetischen Datensatz in der Größe einer großen Hochschule; das Semester der Entwicklungsdatenbank läuft in etwa vier Sekunden bis zur Konvergenz. Zurück kommt ein Vorschlag, abgeglichen mit dem Plan, den Sie schon haben, mit allem, was er ändern würde, und allem, was er nicht erfüllen konnte. Nichts wird angewendet, bis Sie es anwenden.

  • Eine Änderung, die eine Regel bricht, ist trotzdem erlaubt

    Verschieben Sie einen Termin, tauschen Sie zwei, oder fixieren Sie einen, damit nichts ihn berührt. Kollidiert die Änderung mit etwas, lässt Calendry sie zu und hält den Verstoß als Zustand fest, den Sie später nachlesen können. Wer einen Stundenplan bearbeitet, weiß meist etwas, das die Regeln nicht wissen: deshalb blockiert es Sie nicht, und deshalb vergisst es auch nichts.

  • Ihre Begriffe bleiben Ihre

    Rollennamen, Terminarten und Raumausstattung definieren Sie selbst; es ist keine feste Liste, in die Sie übersetzen müssen. Tage pro Woche, Blöcke pro Tag, Blocklänge und die ungleichen Pausen dazwischen kommen aus Ihrem eigenen Raster. Es gibt keine unterstellte Woche von Montag bis Freitag und nirgends eine Ersatzform.

  • Jede Person sieht ihren eigenen Teil

    Die Berechtigungsrollen Ihrer Institution stellen Sie selbst zusammen: wer den Plan lesen darf, wer einen Termin verschieben darf und wer den Solver starten darf, sind getrennte Fragen. Lehrkräfte geben an, wann sie nicht unterrichten können und welche Tage sie bevorzugen; die Verwaltung nimmt jede Angabe an oder lehnt sie ab.

  • Keine Institution kann eine andere lesen

    Die Trennung wird von Row-Level-Security in Postgres selbst durchgesetzt, und die Anwendung verbindet sich mit einer Datenbankrolle, die nichts besitzt. Ein Fehler führt dazu, dass keine Zeilen erscheinen, und das fällt auf, statt dass die Zeilen einer anderen Institution erscheinen, was nicht auffällt.

EinStundenplanbestehtaushundertkleinenUrteilen.CalendrytrifftdieeinfachenneunzigundüberlässtIhnendiezehn,aufdieesankommt.

So funktioniert es

Drei Schritte, und der dritte gehört Ihnen.

  1. Beschreiben Sie Ihre Institution einmal

    Räume, Klassen, Personal, Lehrveranstaltungen, Semester und Ihre eigene Tagesstruktur, dazu die Auswahl, welche von dreißig Regeltypen gelten sollen und wie schwer jede wiegt.

  2. Fragen Sie einen Stundenplan an

    Starten Sie einen Lauf, sehen Sie ihm zu, brechen Sie ihn ab, wenn Sie es sich anders überlegen. Gleiche Eingaben und gleicher Startwert ergeben denselben Stundenplan, und der Lauf selbst meldet, ob er an seinem Schritt-Budget endete oder an der Uhr.

  3. Beurteilen Sie den Vorschlag

    Lesen Sie, was er ändern würde und was er nicht erfüllen konnte, und wenden Sie ihn dann an oder verwerfen Sie ihn. Jede Änderung danach wird an ein Protokoll angehängt, mit der Person, die sie gemacht hat.

Was heute funktioniert

Keine Vorführfassung. Alles hier ist umgesetzt, läuft gegen eine echte Datenbank und ist durch die Integrationstests dieses Repositorys abgedeckt.

Ein Semester betreiben

  • Funktioniert: Stundenplan ansehen und bearbeiten

    Wochenraster am Rechner, Tagesansicht am Telefon. Verschieben, tauschen und fixieren, wobei Kollisionen festgehalten und nicht abgelehnt werden, und jede Änderung wird mit der handelnden Person an ein Protokoll angehängt. Die Lehrkraft eines fixierten Termins lässt sich von Hand dauerhaft überschreiben.

  • Funktioniert: Verwaltungsseiten für die zentralen Objekte

    Räume, Gruppen, Personen, Lehrveranstaltungen, Semester, das Blockraster des Tages mit seinen Pausen, dazu eine Strg+K-Palette, die zu jedem davon springt. Eine Lehrveranstaltung kann festlegen, dass ein Termin mehrere Räume gleichzeitig braucht – für einen Jahrgang, der in keinen einzelnen Saal passt –, und die Planung belegt die Kombination. Eine Klasse lässt sich aus anderen Klassen zusammensetzen, etwa für einen Zweig, den zwei Jahrgänge gemeinsam hören. Eine Lehrveranstaltung kann auf bestimmte Räume beschränkt oder als reine Online-Veranstaltung festgelegt werden; beides wird kombiniert, statt dass eines das andere stillschweigend übergeht.

  • Funktioniert: Zeiträume im akademischen Kalender

    Ferien, unterrichtsfreie Zeiten und Prüfungswochen, mit einer Vorschau darauf, welche Wochen ihre Einordnung ändern, bevor Sie speichern. Zwei Daten ergeben nicht offensichtlich vier Prüfungswochen – und manchmal doch.

  • Funktioniert: Einzeltermine neben wiederkehrenden Lehrveranstaltungen

    Legen Sie einen Termin an, der zu keiner Lehrveranstaltung gehört – einen Tag der offenen Tür etwa oder einen Gastvortrag –, mit eigenem Raum, eigenen Gruppen und eigenen Personen.

  • Funktioniert: Eine Person über den Namen finden

    Beim Zuordnen von Personen wird die Institution während der Eingabe durchsucht, statt sie vollständig aufzulisten. Die bereits zugeordneten Personen bleiben sichtbar, während Sie die nächste suchen.

  • Funktioniert: Das Prüfungsamt, von der Anmeldung bis zum Zeugnis

    Eine Studierendenakte mit eigener Statushistorie, Prüfungsanmeldungen, die Versuche zählen, ein Notenbuch, das erst eine zweite Person freigibt, und Bescheinigungen und Zeugnisse, die daraus entstehen. Ein Attest oder eine Meldung wegen Täuschung ist ein Vorgang, über den jemand entscheidet – mit den Gründen bei der Akte. Steht ein Termin fest, werden Sitzplätze verteilt und Aufsichten eingeteilt, mit Sitzplan und Aufsichtsplan zum Ausdrucken.

  • Funktioniert: Ein Raum für jeden Kurs

    Jede Veranstaltung hat eine Seite, von der aus eine Lehrperson das Semester führt: Beschreibung, Agenda pro Termin, terminierte Ankündigungen, Dateien in Ordnern, darunter ein Ordner nur für Lehrende und ein Abgabeordner, Aufgaben, Quizze und Auswahl-Anmeldungen, Foren, Live-Abstimmungen im Unterricht mit einer Präsentationsansicht sowie eine Abschlussverfolgung je Aktivität mit Fortschrittsanzeige und Bericht über die Teilnehmenden. Hochgeladenes wird geprüft, bevor es jemand herunterladen kann.

  • Funktioniert: Studienfortschritt, gegenüber der eigenen Prüfungsordnungsversion

    Erworbene Credits je Modulgruppe, was noch fehlt, gefährdete Fristen und verbleibende Versuche — ausgewertet gegenüber der ProgramVersion, in die eine Person tatsächlich eingeschrieben ist, bei jedem Abruf neu berechnet. Studierende sehen ihren eigenen Stand; das Prüfungsamt und Studienberatende sehen eine begrenzte, filterbare Jahrgangsliste.

Einen Stundenplan anfordern

  • Funktioniert: Solver-Anbindung, durchgängig

    Planungslauf starten, das Ergebnis behalten, auch wenn der Solver neu startet, den Planvorschlag gegen den aktuellen Stundenplan prüfen und ihn dann übernehmen oder verwerfen. Ein Lauf, der erfolgreich endet und dabei Regeln verletzt, wird trotzdem angeboten – mit der Liste der Regelverstöße, statt weggeworfen zu werden. Eine von Hand erzeugte Kollision lässt sich reparieren, ohne das ganze Semester neu zu planen: Die Reparatur verschiebt so wenig wie möglich und liefert dennoch einen Planvorschlag zur Prüfung.

  • Funktioniert: Regeln, die jede Institution selbst einstellt

    Dreißig Regeltypen, pro Institution einzeln aktiviert und gewichtet: Doppelbelegung, Anzahl der Termine, Sperrzeiten, Online-Anteil, Raumrang und Prüfungszeiträume, dazu die Form eines Tages – Leerlauf zwischen Terminen, Unterricht ohne Pause, wie lang der Tag wird und ob er über Gebäude hinweg führt. Räume lassen sich institutionsweit reservieren, auf die tatsächlich anwesende Gruppe zuschneiden und für eine Klasse über die Woche hinweg gleich halten.

  • Funktioniert: Reproduzierbare Läufe

    Gleiche Eingaben und gleicher Startwert ergeben einen bytegleichen Stundenplan, solange der Lauf an seinem Schritt-Budget endete und nicht an einer Uhr – was der Lauf selbst mitteilt.

Wer worauf zugreifen darf

  • Funktioniert: Ein persönlicher Kalender, in der App oder im eigenen

    Sitzungen, Termine, Abgabe- und Quizfristen, Prüfungstermine und Ihre eigenen privaten Notizen – alles in einer Agenda unter /my/calendar, oder als .ics-Feed abonniert in der Kalender-App, die Sie schon benutzen. Echte UTC-Zeiten, umgerechnet aus der Ortszeit der Institution. Beide zeigen nie Widersprüchliches: sie lesen dieselbe Zusammenstellung.

  • Funktioniert: Eine Lehrkraft beantragt eine Prüfung, die Verwaltung entscheidet

    Beantragen Sie eine Prüfung zu einer Lehrveranstaltung, die Sie leiten, und sehen Sie, wie weit der Antrag ist. In keinen Stundenplan gelangt er, solange ihn niemand genehmigt – denn eine Prüfung ist ein Raum und eine Stunde, die der Plan erst finden muss.

  • Funktioniert: Verfügbarkeiten selbst eintragen

    Eine Lehrkraft gibt an, wann sie nicht unterrichten kann und welche Tage, Zeiten und Raumarten sie lieber hätte; die Verwaltung genehmigt oder lehnt jede Angabe ab. Dass dieser Bereich ausschließlich die eigenen Daten erreicht, ist sein eigentlicher Zweck.

  • Funktioniert: Anmeldung und Berechtigungsrollen je Institution

    Ein Zugang kann in mehreren Institutionen handeln und wählt bei der Anmeldung, in welcher. Rollen werden in der Oberfläche aus einem festen Katalog von Berechtigungen zusammengestellt, je Institution.

  • Funktioniert: Einladungen und Selbstregistrierung

    Eine Administration kann eine Person einladen, ihr eigenes Passwort festzulegen, oder eine Registrierungsseite für die Institution einschalten – wahlweise mit Pflicht zu einer E-Mail-Domain, einem Einladungslink oder einer Freigabe, bevor jemand aktiv wird.

  • Funktioniert: Benachrichtigungen, die ein Postfach erreichen

    Wenn ein Termin verschoben wird, werden die Betroffenen ermittelt und informiert: in der App, per E-Mail auf der eigenen Vorlage der Institution oder als Browser-Push. Der Versand läuft im Hintergrund, und was nicht zugestellt werden konnte, wird mit Grund als übersprungen protokolliert, nie stillschweigend verworfen.

  • Funktioniert: Einschreibung und Kurs-Beitrittslinks

    Teilnahme ist ein Datensatz: Eine Person ist eingeschrieben, steht gegen die Kapazität der Veranstaltung auf der Warteliste oder ist abgemeldet, und ihr eigener Stundenplan folgt dem. Eine Lehrperson kann einen Beitrittslink ausgeben, der jede Person einschreibt, die ihn einlöst, und dabei bei Bedarf gleich ihr Konto anlegt.

  • Funktioniert: LTI-1.3-Tools im Kursraum

    Ein externes LTI-1.3-Advantage-Tool einmal registrieren, in einem Kursraum platzieren — Teilnehmende starten es in einem neuen Fenster und das Tool weiß, wer sie sind und in welchem Kurs. Das Tool kann die Teilnahmeliste lesen und Noten direkt ins Notenbuch zurückschreiben.

Mehr als eine Institution

  • Funktioniert: Gemeinsame Räume im Verbund

    Institutionen in einem Verbund können einen Hörsaal gemeinsam nutzen und sehen dessen Belegung durch die anderen, ohne deren Stundenpläne zu sehen.

  • Funktioniert: Datenmodell und API für mehrere Institutionen

    Institutionen sind in der Datenbank selbst getrennt, nicht nur im Anwendungscode. Eine Abfrage ohne Institutionskontext liefert nichts zurück statt alles.

Noch nicht gebaut, und dazu ehrlich

Calendry entsteht in Phasen, und jeder dieser Punkte ist eine Phase und keine Zusage mit Datum. Wo eine Entscheidung noch offen ist, steht dabei, welche.

  • Noch nicht gebaut: Import aus CSV und Excel

    Für Institutionen, die mit Tabellen aus vielen Jahren ankommen. Ob die Spaltenzuordnung geführt wird oder einer festen Vorlage folgt, ist noch nicht entschieden.

  • Noch nicht gebaut: Ein Kalender-Abo, nicht nur ein Download

    Der einmalige .ics-Download ist gebaut. Eine dauerhafte URL, die Ihre Kalender-App von selbst abruft, ist eine andere, schwierigere Frage. Ein Abo-Link ist selbst ein Zugangsschlüssel, und er braucht dieselbe Antwort wie die Frage, ob Lernende einen Stundenplan ohne Zugang ansehen dürfen.

  • Noch nicht gebaut: Einen Einzeltermin nach dem Anlegen bearbeiten

    Seine Zeit lässt sich verschieben, sein Raum, seine Gruppen und seine Personen nicht ändern. Einen Fehler zu korrigieren heißt, ihn zu löschen und neu anzulegen.

  • Noch nicht gebaut: Mehrere Planvorschläge zur Auswahl

    Braucht einen Entwurf, bevor es Code braucht: Vorschläge, die sich nur unwesentlich unterscheiden, wären schlechter als ein einziges Ergebnis. Möglicherweise wird es gar nicht gebaut.

  • Noch nicht gebaut: Eine übersetzte Oberfläche

    Läuft gerade, Deutsch zuerst, auf dem Mechanismus, der den Anfang gefahrlos gemacht hat: Die Sprache wird einmal auf dem Server bestimmt, und die Oberfläche wird Abschnitt für Abschnitt herausgezogen, damit keine Seite im Browser halb übersetzt dasteht.

Entscheidungen, die sich verteidigen lassen

Software für die Stundenplanung scheitert auf bestimmte, wiedererkennbare Weise. Das hier sind die Entscheidungen dagegen. Jede ist eine Regel, auf der dieser Quellcode wirklich aufbaut, und kein Slogan.

Warnen, nie blockieren
Wer einen Stundenplan bearbeitet, weiß meist etwas, das die Regeln nicht wissen. Deshalb ist eine Änderung erlaubt, die eine harte Regel verletzt, und der Verstoß wird zu abfragbarem Zustand am Stundenplan. Nächste Woche noch auffindbar, und keine Meldung, die Sie weggeklickt haben.
Verschachtelte Gruppen kollidieren wirklich
Ein Termin für einen Studiengang blockiert dessen Jahrgänge, und ein Termin für einen Jahrgang blockiert den Studiengang. Die Kollisionsprüfung geht die gesamte Verwandtschaft nach oben und nach unten durch, über eine gepflegte transitive Hülle, statt nur die zwei Namen zu vergleichen, die ihr übergeben wurden.
Trennung in der Datenbank, nicht im Code
Jede institutionsbezogene Tabelle ist durch Row-Level-Security geschützt, und die Anwendung verbindet sich mit einer Rolle, die nichts besitzt. Ein Fehler führt dazu, dass man keine Zeilen sieht, und das fällt auf – nicht dazu, dass man die von jemand anderem sieht, und das fällt nicht auf.
Nichts an der Zeit ist fest verdrahtet
Tage pro Woche, Blöcke pro Tag, Blocklänge und die ungleichen Pausen zwischen den Blöcken kommen aus dem Zeitraster der jeweiligen Institution. Es gibt kein angenommenes Montag bis Freitag und nirgends eine Ersatzform. Eine Institution ohne Zeitraster bekommt eine leere Ansicht, keine Vermutung.
Jede Änderung ist ein Ereignis
Anlegen, Verschieben, Tauschen, Löschen und Fixieren werden an ein Protokoll angehängt, aufsetzend auf dem Planvorschlag, von dem sie ausgingen, samt der Person, die es getan hat. Für das Zurücklesen dieser Historie gibt es noch keine Ansicht. Das Protokoll wird ordentlich geführt, bevor es etwas gibt, das es anzeigt.

Für technisch Interessierte

27.000 Termine, platziert in rund 350 Millisekunden.

Das ist eine synthetische Instanz in der Größe einer großen Universität. Das Semester der Entwicklungsdatenbank läuft in etwa vier Sekunden vollständig bis zur Konvergenz. Beide Zahlen kommen aus einem Benchmark und nicht aus einer Verkaufspräsentation, und beide werden sich verschieben, während der Regelsatz wächst.

  • Die Anwendung

    Nuxt und TypeScript über PostgreSQL. Die Trennung der Institutionen setzen Row-Level-Security-Policies durch; die Historie des Stundenplans ist ein rein anfügendes Ereignisprotokoll, das auf einem versionierten Snapshot aufsetzt.

  • Der Solver

    Ein eigener, zustandsloser Rust-Dienst, erreichbar über gRPC gegen ein gemeinsames Schema. Hybrides konstruktives Platzieren, danach lokale Suche in großen Nachbarschaften mit Simulated Annealing, über dreißig Regeltypen. Er hält keine Datenbank: Jeder Lauf ist ein vollständiger Snapshot, den die Anwendung ihm schickt.

Häufige Fragen

Die ersten zwei sind die, an denen ein Verkauf scheitert. Sie werden mit einem teilweisen Nein und einem Nein beantwortet.

  • Kann Calendry unser Semester heute planen?

    Teilweise, und die ehrliche Antwort ist eine Liste und kein Ja. Der Stundenplaneditor, die Verwaltungsansichten, der Solver von Anfang bis Ende, der akademische Kalender, Berechtigungsrollen und die Trennung der Institutionen sind gebaut und durch Tests abgedeckt. Der Import Ihrer bestehenden Tabellen ist es nicht, und es wird noch keine E-Mail versendet. Wenn Ihre Woche in diesem Semester aus einer Datei kommen muss, ist das die Lücke, über die man zuerst sprechen sollte.

  • Können wir unsere bestehenden Tabellen importieren?

    Noch nicht, und es ist das Erste, was eine neue Institution braucht. Der Grund ist eine offene Entscheidung: Ob die Zuordnung der Spalten geführt wird oder einer festen Vorlage folgt, ändert, was der Import überhaupt annehmen kann, und das falsch zu bauen ist schlimmer als zu warten. Bis dahin werden die Daten einer Institution über die Verwaltungsansichten eingegeben.

  • Entscheidet der Solver unseren Stundenplan für uns?

    Nein. Er liefert einen Vorschlag, abgeglichen mit dem Plan, den Sie schon haben, und nichts erreicht den echten Stundenplan, bevor ein Mensch es anwendet. Ein Lauf, der mit noch gebrochenen Regeln endet, wird Ihnen trotzdem angeboten, mit einer Liste der Verstöße, statt als Fehlschlag verworfen zu werden.

  • Was passiert, wenn ein Vorschlag eine unserer Regeln bricht?

    Sie werden gewarnt, nie blockiert. Der Verstoß wird zu abfragbarem Zustand am Stundenplan, ist also nächste Woche auffindbar und nicht bloß eine Meldung, die jemand weggeklickt hat. Das gilt für Ihre eigenen Änderungen genauso wie für die des Solvers.

  • Setzt es eine Woche von Montag bis Freitag und feste Stundenlängen voraus?

    Nein, und das ist die Frage, die wir lieber nicht gestellt bekämen, weil die meisten Werkzeuge für Stundenplanung genau das tun. Tage pro Woche, Blöcke pro Tag, Blocklänge und die ungleichen Pausen dazwischen kommen alle aus dem eigenen Raster Ihrer Institution. Es gibt nirgends eine Ersatzform: Eine Institution ohne Raster bekommt einen leeren Zustand und keine Vermutung.

  • Können zwei Institutionen einen Hörsaal teilen, ohne die Stundenpläne der anderen zu sehen?

    Ja. Institutionen in einem Verbund können einen Raum teilen und sehen gegenseitig dessen Belegung, und nichts weiter. Die geteilte Ressource gehört dem Verbund und nicht einer der beiden Institutionen, und der Lesezugriff weitet sich auf genau das aus.

  • Wer sieht was?

    Das entscheiden Sie, pro Institution. Rollen werden in der Oberfläche aus einem festen Katalog von Berechtigungen zusammengestellt, sodass den Plan lesen, einen Termin verschieben und den Solver starten getrennte Rechte sind. Eine Lehrkraft erreicht ihre eigenen Termine und ihre eigenen Angaben und nichts sonst. Ein Zugang kann in mehreren Institutionen handeln und wählt bei der Anmeldung, in welcher.

  • Ergibt dieselbe Anfrage zweimal denselben Stundenplan?

    Ja, solange der Lauf an seinem Schritt-Budget endete und nicht an der Uhr, und der Lauf meldet, welches von beiden es war. Bei gleichen Eingaben und gleichem Startwert ist das Ergebnis Byte für Byte identisch. Ein Lauf, der wegen eines Zeitlimits abbrach, ist keine vergleichbare Messung, und Calendry stellt ihn auch nicht als eine dar.

  • Was kostet es?

    Die Grundstufe richtet sich nach Ihrer Zahl an Lernenden, Lehrkräfte werden nach Lehrlast berechnet, mit einem Faktor dafür, wie komplex Ihre Woche ist, und Verwaltungszugänge werden getrennt gezählt, für die wenigen Menschen, die wirklich bearbeiten. Lernende werden nie berechnet. Die Preisseite nennt die Sätze und hat einen Rechner, in den Sie Ihre eigenen Zahlen eintragen können.

  • Wie bekommen wir Zugänge?

    Es gibt keine Selbstregistrierung. Die Zugänge einer Institution werden von ihrer Verwaltung angelegt, und deshalb ist die Handlung auf dieser Seite ein Gespräch und kein Formular. Ein Zugang kann zu mehreren Institutionen gehören und wählt bei der Anmeldung, in welcher es handelt.

  • Können wir den Quellcode lesen, bevor wir uns binden?

    Ja. Die Anwendung, der Solver und das Schema, das sie teilen, sind öffentliche Repositorys. Es liegt noch keine Lizenz darauf, Sie dürfen den Code also lesen, aber noch nicht weiterverwenden, und die Wahl einer Lizenz steht auf der Liste der offenen Entscheidungen.

Bringen Sie uns Ihre schwierigste Woche

Keine Registrierung, keine Installation, keine Verpflichtung. Eine Vorführung ist eine halbe Stunde am Telefon, und sie beginnt mit dem, was Calendry noch nicht kann.

Erzählen Sie uns von Ihrer Institution

Calendry wird für echte Stundenpläne gebaut, deshalb dreht sich das nützliche Gespräch um Ihren: wie viele Räume und Klassen, wie Ihre Woche aussieht und was heute schiefgeht.