mit Brickly, StartIDE und BOA haben wir inzwischen ja schon drei Apps, deren Zweck es ist Programme zu erstellen. Und Ideen für andere gibts auch schon einige (Basic, irgendwas RoboPRO-kompatibles, ...).
Und - wie jetzt schon bei Brickly - wird es bei den anderen solchen "Programmier-Apps" früher oder später (eher früher) den Wunsch geben, mehr als ein Programm speichern zu können.
Um das hinzubekommen, haben wir im Prinzip mehrere Möglichkeiten:
- Wir geben jeder "Programmier-App" eigene Funktionen für die Verwaltung von Programmen mit (so wie jetzt schon in Brickly).
- Wir betten die ganzen "Programmier-Apps" in einen passenden Rahmen ein, der diese Verwaltungsfunktionen mitbringt.
Die naheliegende Umsetzung der zweiten Möglichkeit - eine große "CFW-IDE", in der die ganzen "Programmier-Apps" als Plugins eingebaut werden - ist aus anderen Gründen nicht so toll: Erstens ist das ein Riesenaufwand, und zweitens haben wir wenn das mal fertig ist mit ziemlicher Sicherheit einen Bruch zwischen den Programmen, die auf Basis der "Programmier-Apps" erstellt wurden, und den neuen "IDE-Programmen".
Ich möchte stattdessen hier eine andere Idee für die Umsetzung eines allgemeinen Rahmens für "Programmier-Apps" vorstellen: App-Templates.
Ein App-Template ist im Prinzip eine ganz normale CFW-App, mit zwei neuen Einträgen im Manifest:
- Einem Flag, das die App als "App-Template" kennzeichnet und
- Einer Liste der Dateien/Verzeichnisse, die in einer von diesem Template abgeleiteten App durch den Benutzer modifiziert werden können (Bei Brickly wäre das z.B. das "user"-Verzeichnis, wo der durch den Benutzer erstellte Programmcode landet).
- Auswürfeln einer neuen UUID und Erstellung des App-Verzeichnisses
- Erstellen eines Manifests mit der neuen UUID, einem Hinweis darauf, von welchem Template (uuid und Versionsnummer) die App abgeleitet wurde und den sonstigen Daten aus dem Manifest des App-Templates (gegebenenfalls durch den Benutzer modifiziert, z.B. für Name/Beschreibung/Icon)
- Einer Kopie der im App-Template als "modifizierbar" gekennzeichneten Datein/Verzeichnisse
- Symlinks für alle anderen Dateien/Verzeichnisse im App-Template
Für einen ersten Prototyp würde ich die Web-UI um eine "Neue App erstellen"-Funktion erweitern, die wie oben skizziert neue Apps auf Basis eines App-Templates erstellt, und Brickly zu einem App-Template ausbauen (dafür reichen im ersten Schritt die neuen Manifest-Einträge, d.h. das ist auch rückwärtskompatibel) - dann kann man das auch mal in der Praxis ausprobieren.
In einer späteren Ausbaustufe kann man dann den Shop erweitern, damit der auch templatebasierte Apps verwalten kann (das wäre dann im wesentlichen nur das Manifest und der "modifizierbare" Teil der App, die Symlinks zum Template werden dann bei der Installation erstellt), passende Warnungen einbauen wenn ein aktuell verwendetes Template einen inkompatiblen Versionssprung macht, den Launcher anpassen um "pure" Templates (d.h. App.Templates, die ohne zusätzliche Programmierung keine Funktion hätten) auszublenden, die Web-UI um generische App-Verwaltungsfunktionen (Umbenennen, Beschreibung editieren, Icon austauschen, ...) ergänzen und obsolete eigene Programmverwaltungen aus den Programmier-Apps entfernen.
Was haltet Ihr davon?