Ausgangspunkt Ende Mai 2024:

  • Erfolge und Progress im Team-Work
  • Erstellung Roadmap bis Release: Erste Version (privat) und Zweite Version
  • Arbeits-Reorganisation Hans
  • Theaterpedia-Onboarding-Frage + Freelancer-Setup ungelöst (wie wird der App-Builder)

Theaterpedia als Content-Netzwerk ..

.. kann von Obsidian (und ähnlichen Strategien) viel lernen

  • mehrere von Obsidian modellhaft implementierte Content-Design-Strategien ('Digital Gardening') und -Konventionen sind Ausgangspunkt für Implementierung von Blogging und Episoden, vor allem:
    • Open Graph mit Link-Preview
    • Embedding-Canvas mit Obsidian-Webexport-Referenz-Implementierung

Details, Recherchen und Quellen

0_Theaterpedia_als_Content-Netzwerk

Entscheidungen Systemarchitektur 1.0

ab ca. 7. Juni: stabile Grundannahmen

Voraussetzungen & Standards

  • Deployment-Prioritäten sind noch zu entscheiden zwischen: Netlify & Cloudflare im Zusammenspiel mit Akamai für Odoo-Hosting (Vercel: nur für Dev-Experimente)
  • Github-Login ist für Editoren an mehreren Stellen ein Requirement
  • Visualisierung sowohl in Dev-Docs als auch Website-Design erfolgt mit diesen Tools (rund um Obsidian): Figma-Excalidraw-Flameshot-Structurizr/PlantUML
  • CSS basiert vollständig auf TailwindCSS-Toolchain (mit vereinzelten Ausnahmen/Sonderlösungen) und kann daher in Tailwind-Werten und -Konventionen diskutiert & dokumentiert werden

Details, Recherchen und Quellen

Github-Login

  • für relativ viele der freelancer erforderlich. Es geht später auch ohne GH-Login (via Pruvious), insbesondere brauchen Customer keins
  • Giscuss + GH-based MD-Sync + GH-based publishing

CSS (und Components): TailwindCSS > DaisyUI > ShadCN

  • absolutes Minimum: TailwindCSS
  • fast immer: DaisyUI- + AlpineJS-Kompatibilität (zumindest partiell > dokumentiert)
  • typisch ShadCN-Components / RadixUi-Logik mit DaisyUI-Theming

Figma-Excalidraw-Flameshot-Structurizr (PlantUML)

Design-Tooling-Support

2a_Voraussetzungen_und_Standards

Toolchain: Vue hat gewonnen!!

Ich arbeite seit 2018 konsequent mit Vue und Nuxt. Ich hatte die Entscheidung damals gründlich getroffen, der Prozess zog sich über ca. 3 Monate, in denen ich vor allem gegen React abgegrenzt hatte.

In den Jahren seitdem habe ich das Vorgehen nie wieder radikal in Frage gestellt. Das hat mir ein gründliches Stück 'Javascript-Framework-Fatigue' erspart. Sicherlich ist die Entscheidung vor 1,5 Jahren, mit Odoo einzusteigen, ein gesundes Stück 'Distanzierung'.
Obwohl mit Pruvious ein unersetzbares Stück Nuxt aufgetaucht ist habe ich in den letzten Wochen Vue und Nuxt in Frage gestellt (als langfristige Solo-Strategie). Ich war eigentlich bereit, in ein Parallel-Arbeiten mit mehreren Front-End-Frameworks einzuwilligen, mit Solutions wie z.B. ShadCN, Astro ist dies auch einfacher als je zuvor.

kurzes Protokoll meines Prozesses

  • ich ging eine volle Woche (mit Bauchschmerzen) davon aus, dass eine schrittweise Schwerpunktverlagerung angesagt ist weg von einem zentralen Front-End-Framework mit kompliziertem Build-Prozess in Richtung serverzentrierteres Setup mit multiplen Integrationsmöglichkeiten z.B. via Astro, Htmx und teilweise framework-unabhängigen Webcomponents (z.B. Lit), dass eine Rückwärtsrolle von den Front-End-Frameworks hin zu wieder stärker serverzentrierter Programmierung dran ist.
  • die Einsicht, dass Tailwind mittlerweile im AlpineJS-, HTMX- und Python-Kontext eine wichtige Bedeutung hat, hat indirekt den Ausschlag gegeben, weiter zentral auf Vue/Nuxt zu setzen und im Zweifelsfalls via Tailwind das GUI auch von Vue-fremden html-templates optisch einzubetten
  • die Entdeckung direkter Nolebase-Vitepress-Integrationen ausgehend von Obsidian hat dann den entscheidenden Impuls gegeben > dies sind eindeutig (neben proprietär Obsidian-Publish) die am besten strukturierten Systeme, die viel des Markdowns gut umsetzen in eine sogar multilanguage-fähige Anwendung. Ich habe einen ziemlichen Überblick über die verschiedenen Obsidian-zu-Website-Strategien erhalten, einige selber ausprobiert und gestartet und finde den Nolebase-Ansatz am ausgereiftesten, besser als z.B. Quarto, diverse React-Basierte Konzepte

Was hat mich überzeugt?

Seit einem Tag weiß ich nun: Vue hat gewonnen!! Ich bin überzeugt, dass es nach wie vor das richtige Tool ist. Überzeugt haben mich:

  • die zahlreichen Entscheidungen, die Entwickler von hoffnungsvollen Projekten in den letzten Monaten getroffen haben (wie z.B. Pruvious, Nolebase ...)
  • die funktionierenden Lösungen, die sie dann jeweils nach Treffen ihrer Entscheidung realisiert haben
  • die Kontinuität in großen wichtigen Projekten im Theaterpedia-Umfeld wie z.B. Zettlr
  • und immer wieder die klare Syntax und Standardisierung der Vue-SFCs, die klare Fokussierung von Vue

Details, Recherchen und Quellen

2b_Toolchain_und_Framework

das technische Dreieck von Theaterpedia

Obsidian > Pruvious > Odoo bilden das technische Dreieck, innerhalb dessen die entscheidenden Lösungen zu finden sind, die Theaterpedia besonders machen. Es werden sich typischerweise an allen 3 Ecken Subsysteme bilden, die nicht!! vollständig synchron gehalten werden müssen. Z.B. werden Implementierungen in der Pruvious-Ecke über Fähigkeiten verfügen, die nur teilweise an den anderen Ecken erreichbar sind. Aber einen wichtigen Kern der Pruvious-Fähigkeiten kann Pruvious für das komplette System bereitstellen.

Obsidian

Ist die Drafting- und Learning-Plattform, entwickelt sich zu einem dynamisch mitwachsendem Arbeitsplatz, der für Freelancer schnell eine allumfassende Plattform werden kann.
Über ein Obsidian-Plugin können Static-Websites erzeugt werden, die via iFrame Zugriff auf basale Business-Prozesse von Odoo anbieten können. Es werden 4 verschiedene basale Themes angeboten, die ausreichend sind, um für einen Zeitraum von 6-18 Monaten eine einfache Internet-Präsenz zu starten, Inhalte zu generieren, Feedback zu sammeln und unkompliziert Änderungen vorzunehmen.
In dieser Zeit lernen die Akteure mit Content-Types, Meta-Daten und Classes zu operieren, verwenden Sync-IDs, um Infos von Theaterpedia einzubinden. So wird Obsidian zur Onboarding-Strategie, um sich in einem zweiten Schritt relativ treffsicher in Odoo oder Pruvious zurecht zu finden.
Obsidian bietet unendliche Möglichkeiten der persönlichen Anpassung und On-Desktop-Integration > im Tooling kann dies bedeuten, das ggf. bestehende Obsidian-Plugins adaptiert werden, die in Svelte oä. programmiert sind. Obsidian ordnet via YAML-Props einzelne Markdown-Dateien einem Odoo-Datensatz zu und kann so Änderungen im Odoo-Datensatz mitverfolgen (z.B. Datumsänderungen eines Events) oder auch selber auslösen.

Odoo

Odoo hält sich typischerweise im Hintergrund und tritt für End-User (Teilnehmer:innen von Theaterpädagogik) nicht direkt in Erscheinung.

  • Python-ORM und Odoo-GraphQL-Interface bilden das Data-Backbone des gesamten Systems
  • Html-Templates/Javascript-Framework dürfen eingesetzt werden (zB. via iframe), um vorläufige Lücken zu füllen (Workarounds mit max 3 Jahre Life-Cycle)

Pruvious

Ist die Plattform über die der Webauftritt aller Theaterpedia-Designs realisiert wird. Pruvious wird sowohl für Suchmaschine, Regio als auch Einzelwebsites eingesetzt. Zunächst stellen wir die horizontale Integration (mehrere Webauftritte werden zu einem Portal integriert: Regio + Theaterpedia-Suchmaschine) in den Mittelpunkt, danach die vertikale Integration kompletter Businessmodelle einer einzelnen Domain für die verteilte Bearbeitung mit konsistentem Design (Beispiel: DAS Ei).

warum kein Standard-Markdown-Rendering? VitePress / NuxtContent ...

Vitepress, NuxtContent könnten im Prinzip sehr gut alle readonly- oder mostly-readonly Präsenzen rendern und als static-websites mit High-Speed ausliefern. Dazu müsste in irgendeiner Form der Content statisch indiziert und aktualisiert werden. Es müsste eine Postgres-2-static-Bridge programmiert werden; wir werden diese Option prüfen, falls Performance-Issues auftauchen. Höchstwahrscheinlich wird es aber gelingen, Pruvious mit Caching, Redis etc. selber zu ähnlichen Leistungen zu bringen und dabei aber deutlich bessere und flexiblere Optionen einer Suchmaschine bereitstellen zu können.

Details, Recherchen und Quellen

technische Fokussierung der Implementierung

Indem Tailwind via Odoo möglich ist und auch in Obsidian Tailwind-Bezüge hergestellt werden können, ist endlich eine klare Fokussierung auf Vue-Design-Components möglich.
Auch der Rest des Systems ist klar zugeordnet: Odoo-ORM und Odoo-Interfaces/Api, schlichtes HTML als Austauschformat für InnerContent zwischen Odoo-Pruvious-Vitepress und überschaubares Markdown rund um Obsidian. Fast alle Funktions-Bereiche von Theaterpedia haben eine eindeutige Implementierung. Fast durchgängig wird in Typescript implementiert.

technische Redundanz

Wie können einzelne Funktionsbereiche, Features von Theaterpedia abgesichert weden, falls einzelne OpenSource-Projekte veralten oder im Serverbetrieb plötzlich ausfallen?

  • Pruvious kann direkt ersetzt werden durch Nuxt-Content oder VitePress , es liegen zu Vitepress bereits schlüssige Obsidian-Implementierungen vor, von denen wir ggf. lernen werden > falls ein Ausstieg aus Vue/Nuxt erforderlich ist, gibt es zahlreiche Möglichkeiten von Quarto via Astro oder z.B. Rspress (RUST) o.ä., um zunächst mit Static-Site-Rendering schrittweise ein neues Pruvious-ähnliches Application-Framework aufzubauen
  • teilweise Ersatz für Tailwind mit unoCSS möglich
  • kein direkter Ersatz für Odoo > durch Pruvious-Sync ist aber eine gewisse Redundanz vorhanden, vorläufige Integration direkt via PostgreSQL und ggf. schrittweise Umstellung auf andere Odoo-ähnliches System wäre denkbar
  • Obsidian > LogSeq /Github & Typora > nach 1.0-Release LogSeq-Implementierung starten

rund um Tailwind, ShadCN, DaisyUI

die DaisyUI > ShadCN - Toolchain

für Pruvious relevante Kontexte zur Vitepress / NuxtContent-Implementierung

Open-Source-Alternativen zu Obsidian

Obsidian hat eine tendenziell doppeldeutige Politik. Einerseits sind sie sehr bemüht, eine gesunde Community zu entwickeln, stellen ihr Produkt für viele kostenfrei zu Verfügung. Andererseits legen sie den Source-Code nicht offen, was in vieler Hinsicht eine Behinderung darstellt. Bei der Lektüre in anderen Projekten (LogSeq und Joplin) ist mir aber aufgefallen, dass die Frage der Lizenzierung offensichtlich kritisch ist (Joplin hat vermutlich von einer offenen OS-Lizenz auf AGPL gewechselt, weil es nichts abbekommen hat von zahlreichen Kommerzialisierungen).
Auch Nuxt-Labs sitzen in diesem Boot zwischen Nuxt-Content und Nuxt-Studio. Irgendwie viele der Akteure, einen Teil des Markdown-Kuchens zu kommerzialisieren.

Zettlr

Ist für Theaterpedia die wichtigste Alternative zu Obsidian > hat nur grobe Ähnlichkeiten zu Obsidian, verfügt aber über Features, die langfristig für Theaterpedia evtl. sogar noch wichtiger sind (z.B. für eine Workshop-Datenbank, für das Publishing von Projekten etc.).
Der Aufwand ist aber deutlich höher, bis mit Zettlr eine ähnlich in den Alltag von Freelancern integrierte Lösung erstellt ist. Dies liegt im Wesentlichen daran, dass Zettlr keine Plugin-Schnittstelle anbietet. Zettlr ist ein reines Publishing-Tool, komplett Pandoc-kompatibles Markdown und vor allem: Ist in Vue3 programmiert!! Es würde wahrscheinlich bedeuten, einen systematischen Fork von Zettlr zu generieren und zu supporten, in den Crearis-Features einprogrammiert werden.

  • vollständig FOSS

LogSeq

Sehr ähnlich zu Obsidian. Ist aber nicht (mehr) so aktiv, insgesamt vermutlich ein Stück 'technischer' als Obsidian, es wäre vermutlich möglich, hier relativ schnell zumindest für eine Übergangszeit eine Zwischenlösung zu implementieren, die ähnlich funktioniert wie das Setup in Obsidian.

  • ist in React programmiert, basierend auf Radix-Ui und TailwindCSS
  • wesentliche Zusammenhänge im Hintergrund des PUblishing von LogSeq sind wiederum Python-basiert (Nbb-logseq)
  • vollständig FOSS

Joplin

  • im Moment sehr aktiv, tolle neue Features ...
  • es wird aber offensichtlich in der Cloud gespeichert? (Kommerzialisierung?)
  • die Plugins werden typischerweise nicht so oft geliked wie Obsidian

Nuxt.Studio

Bleibt abzuwarten, wie die Nuxt-Integrationen sich insgesamt weiterentwickeln (Volta etc.). Im Moment noch zu spezifisch, schwache Integration in Arbeitsabläufe jenseits Github.

nicht näher recherchiert, ggf. noch zu prüfen

  • AppFlowy

CodeMirror oder ProseMirror-Projekt

Joplin, LogSeq und Obsidian basieren auf Codemirror und Electron, Pruvious und Nuxt.Studio basieren auf ProseMirror/TipTap. Es wäre evtl. möglich, z.B. ausgehend von einem Fork ein eigenes Editor-Projekt zu generieren, ein Fallbeispiel Joplin: Das Fork wäre dass (einige wichtige) Joplin Plugins weiter verwendet werden können aber lokal gespeichert wird.

Fazit

Nach allem, was ich bislang gesehen und geprüft habe, ist Obsidian den Konkurrenten in vielen kleinen Punkten letztendlich doch überlegen. Herausragend ist vor allem die Plugin-Community rund um Obsidian. Vermutlich war das initiale Konzept von Obsidian rund um die Plugins so klar und zugänglich aufgestellt. Es bleibt spannend, das zu beobachten, wie sich die Dinge weiter entwickeln. Es gibt sicherlich eine Wahrscheinlichkeit, dass Obsidian auch FOSS wird ab einem bestimmten Punkt der Marktdominanz. Es kann aber auch ganz anders kommen, dass das Projekt stärker kommerzialisiert wird.

3b_das technische_dreieck_von_theaterpedia

Agile Projektumsetzung

Eine umfangreiche Klärung von Voraussetzungen, Zusammenhängen und Strategien hat stattgefunden und ist jetzt abgeschlossen.
Jetzt steht an eine zeitgesteuerte Umsetzung der Erkenntnisse, ohne dabei noch viel rechts und links zu gucken, um dann erst im Vorlauf des 1.0-Release technische Hypothesen und Prüfsteine basierend auf dem programmierten Code zu überprüfen und Entscheidungen für Dokumentation und Release zu treffen, die das Projekt auf ein nachhaltiges Gleis setzen.

Ein wesentliches Kriterium der letzten Wochen war es, technische Lösungen aufzubauen, die sofort starten, sofort alpha-released werden können. Der agile Zyklus soll dauerhauft in Gang gesetzt werden, dass basierend auf konkreten Nutzer-Erfahrungen das Projekt weiterentwickelt wird.

Dies sind die wichtigsten Ausgangs- und Zielpunkte:

  • alpha-Release (Pruvious-basiert)
  • docs.theaterpedia.org > vorläufiges Modell für digital gardening (mit aktiven Features, die der VitePress-Implementierung noch eine Weile fehlen werden)
  • dasei.eu (ab 7. Juli): Vorschau für Pruvious-Beta
  • Vitepress-basierte Preview ab ca. 20. Juni
  • Suchmaschine und Regio ab 2. August: basierend auf Vitepress, NuxtContent ODER Pruvious

Details, Recherchen und Quellen

4_Agile_Projektumsetzung

MD+YAML <> OdooORM > nachhaltige Daten!!

Die Hauptentscheidung der letzten Wochen: Theaterpedia vollzieht einen Paradigmenwechsel
anstatt zu versuchen:

  1. alles auf einer Framework-Strategie zu basieren (Nuxt, Odoo)
  2. und als 'Königs-Tool' einen 'App-Builder' anzustreben
    steht die Frage des Speicherformats im Mittelpunkt
das Hauptprinzip

Die Daten von Theaterpedia sollen in einem Format gespeichert werden, in dem sie 15-30 Jahre verbleiben können, so dass sie nicht mehr migriert werden müssen (oder nur noch sehr langsam). [1]

Die wichtigste Konsequenz dieser Entscheidung: Theaterpedia gibt den Teilnehmer:innen nicht das ggf. unrealistische Versprechen.

  • dass ein App-Builder Ihnen fast alle Arbeit abnimmt
  • sie möglichst gar nichts lernen und verstehen müssen über das Internet

Das Ziel ist stattdessen:

  • den Umgang mit einem Editor zu lernen
  • dabei die 'Offenen Daten' direkt zu verstehen und selbstverständlich hantieren zu lernen
  • eine sinnvolle Selbstorganisation rund um digitale Inhalte zu lernen, den eigenen Workflow so aufzubauen, dass er sinnvoll im Internet abgebildet werden kann

standardisiertes Datenformat

Tools, Frameworks und Programmiersprachen kommen und gehen. Wichtig ist, dass die Daten bleiben dürfen wie sie sind.

Diesen Standpunkt vertritt "Kepano", der CEO von Obsidian - er macht einen wichtigen Zusammenhang klar:

  • in 5-15 Jahren wird es Vue und Nuxt, vlt. die ganzen Front-End-Frameworks in der uns heute bekannten Form vermutlich kaum noch geben, ähnlich wie es jetzt heute jQuery kaum noch gibt

  • falls Theaterpedia erfolgreich verläuft, wird aber ein Haufen Daten existieren mit einer unendlichen Anzahl 'handgemachter Zusammenhänge', die sich vermutlich nicht einfach so irgendwie 'technisch aktualisieren' lassen

  • Theaterpedia braucht ein Datenformat, in dem die Inhalte auch einen krassen Wechsel des Toolings unbeschadet überstehen

  • dieses Datenformat tritt doppelt in Erscheinung:

    • einerseits in einer 'allgemein zugänglichen' Form: als Datenbank-Logik erstellt via das OdooORM (teilweise gespiegelt von Pruvious)
    • andererseits in einer 'persönlich spezifischen Form' als Pandoc-Markdown oder direkt aus Pandoc-Markdown konvertierte HTML-Spezifikation (via Pruvious-HTML-Felder in Datenbank speicherbar)
  • Warning

    Ab hier noch zu prüfen: Ist HTML-Repräsentation von Markdown in DB/Pruvious noch erforderlich, wird es dadurch nicht überflüssig kompliziert?

  • das Datenformat hat mehrere Models (Event-Model, Blog-Model, Episode-Model, Company, User ...), jede Entity eines Models setzt sich aus 3 Field-Groups zusammen, die sowohl in Datenbank wie auch Markdown + YAML gespeichert werden können

    • Meta-Data (konsistent in allen Models) > hier auch Versionsverwaltung
    • Core-Data = Model-Fields (spezifisch je Model) + Assets-Logik
    • Model-Body (Json-Blocks / HTML)
      • bei jedem Datensatz ist festgelegt, welcher Editor zuständig ist (Pruvious, Markdown, Odoo), in welcher Sprache der Content ursprünglich editiert wird (Ziel: semi-automatisierte Übersetzung in andere Sprachen)
      • im HTML-Feld muss nicht notwendig der vollständige Content wiedergegeben werden, sondern oft stellt der jeweilige Editor (Pruvious, Markdown, Odoo) ein erweitertes Rendering zu Verfügung, das in HTML auf eine vollständig kompatible und frei publizierbare Fassung reduziert wird
  • in der Datenbank wird multilanguage-content in demselben Datensatz gespeichert

Details, Recherchen und Quellen


  1. Es ist ein glücklicher Zufall, dass am Ende einer langen Kette von Entscheidungen nun trotzdem wieder ein fast monolithisches Vue-Nuxt-Konzept für das Front-End-Tooling herausgekommen ist. Es sah zwischenzeitlich sehr deutlich nach einem Konzept aus, in dem Vue vlt. noch die erste Geige spielt aber parallel dazu auch React und HTMX stehen. Ich habe gründlich recherchiert, welche Chancen und Risiken eine Öffnung in Richtung Astro mit sich bringen würde.↩︎

1_Offene Daten