Ich möchte hier mal eine Idee zur Diskussion stellen, die mir schon seit einigen Monaten im Kopf rumschwirrt. bzw. meinen persönlichen Wunsch für die Zukunft der CometVisu der in der letzten Zeit immer stärker geworden ist.
Zunächst zur Ausgangslage:
Ich habe zunehmend das Problem, im Code der CV die Übersicht zu behalten, vor allem die Templateengine ist mit den Jahren immer umfangreicher, mächtiger und damit zumindest für mich immer unübersichtlicher geworden. Ich finde es einigermaßen schwer im Code die Stelle zu finden in der das passiert, was ich gerade Suche. Das ist natürlich eine sehr subjektive Meinung und vielleicht bin ich der einzige mit dem Problem, aber gerade deswegen möchte ich mit diesem Thread mal die allgemeine Lage/Stimmung checken.
Ich hätte nun einen Vorschlag, wie man diesem Problem entgegenwirken könnte: nämlich die Portierung der CV auf das Qooxdoo Framework (http://www.qooxdoo.org). Damit lässt sich sehr sauber strukturierter Javascript Code erstellen und man könnte auf sämtliche bisher genutzte 3rd-Party Libraries (JQuery(-UI), RequireJS, usw.) verzichten, denn Qooxdoo bringt alles mit.
Hier mal eine kleine Liste der Vorteile die das aus meiner Sicht hätte:
Code sauberer strukturiert durch Klassenhierarchie, Interfaces, Mixins, Properties, usw.
- integriertes Build Tool, generiert Source inkl. Syntax-Check (für Entwickler) Build, Api (Doku), Abhängigkeiten werden automatisch augelöst und nur das integriert, was auch wirklich genutzt wird. Es können auch optimierte Builds für die gängigen Browser Engines erstellt werden.
- Ebenso kann man einzelne Parts erstellen, die nur bei Bedarf nachgeladen werden (könnte man z.B. für Plugins, den Editor und unterschiedliche Backends nutzen)
- Komplette Abstraktion der Browser Unterschiede, man schreibt nur einen Code für alles
- Vorhandene Layout Engines (HBox, VBox, Flow, ...), die mehr Möglichkeiten für das Layout der Seiten bieten.
- Qooxdoo intern ist da viel Optimierung in die Verbindung Javascript <-> DOM geflossen, von dem man sicherlich profitieren kann
- Zur Manipulation der Darstellung können Themes erstellt werden, die sich zur Laufzeit austauschen lassen. Mit CSS hat man hier direkt nichts zu tun. Könnte man zukünftige Designs mit erstellen, auch hier hat man eine sauberere Struktur als mit CSS
Ein paar Gedanken zur Portierung:
- Sollte dieselbe DOM-Struktur wie die alte Visu erzeugen um mit den vorhandenen Designs Kompatibel zu sein. Wobei man dafür einen Weg finden muss das von Qooxdoo automatisch generierte CSS zu teilweise umgehen. Denkbar wäre hier auch ein Kompabilitätsmodus für alte Designs und einen "nativen" für neue auf Themes basierende. Ggf. wären hier Unittests sinnvoll die die ausgegebene DOM-Struktur mit der alten vergleichen
- Plugin-Kompabilität wird wohl nicht möglich sein. Die müssten portiert werden. Dabei könnte man aber ein Plugin-Interface definieren, welches jedes Plugin implementieren muss => Saubere Schnittstelle
- KNX-Iconset in Webfont konvertieren und so nutzen. Ist einfach umsetzbar, auch unabhängig von der Portierung. So kann man jedes Icon beliebig skalieren/färben (wie normalen Text halt)
Der große Nachteil ist natürlich, dass man große Teile der CometVisu neu schreiben müsste und gerade daher möchte ich mal wissen wie Ihr so darüber denkt. Ein wenig habe ich damit schon in Richtung Proof-of-concept angefangen, nur um zu sehen ob das überhaupt realistisch umsetzbar ist und denke mittlerweile das dem so ist. Ebenso denke ich das die Vorteile die Nachteile überwiegen.
Wenn diese Idee hier nicht auf Gegenliebe stößt bleibts halt bei einem Proof-of-concept und wird nicht weiterentwickelt. Vor allem interessiert mich hier die Meinung von Chris M. als Gründer und Hauptentwickler des Projekts, aber auch von allen anderen die bei der Weiterentwicklung geholfen haben.
Das war jetzt ein wenig lang, aber ist ja auch ein komplexes Thema ;-)
Zunächst zur Ausgangslage:
Ich habe zunehmend das Problem, im Code der CV die Übersicht zu behalten, vor allem die Templateengine ist mit den Jahren immer umfangreicher, mächtiger und damit zumindest für mich immer unübersichtlicher geworden. Ich finde es einigermaßen schwer im Code die Stelle zu finden in der das passiert, was ich gerade Suche. Das ist natürlich eine sehr subjektive Meinung und vielleicht bin ich der einzige mit dem Problem, aber gerade deswegen möchte ich mit diesem Thread mal die allgemeine Lage/Stimmung checken.
Ich hätte nun einen Vorschlag, wie man diesem Problem entgegenwirken könnte: nämlich die Portierung der CV auf das Qooxdoo Framework (http://www.qooxdoo.org). Damit lässt sich sehr sauber strukturierter Javascript Code erstellen und man könnte auf sämtliche bisher genutzte 3rd-Party Libraries (JQuery(-UI), RequireJS, usw.) verzichten, denn Qooxdoo bringt alles mit.
Hier mal eine kleine Liste der Vorteile die das aus meiner Sicht hätte:
Code sauberer strukturiert durch Klassenhierarchie, Interfaces, Mixins, Properties, usw.
- integriertes Build Tool, generiert Source inkl. Syntax-Check (für Entwickler) Build, Api (Doku), Abhängigkeiten werden automatisch augelöst und nur das integriert, was auch wirklich genutzt wird. Es können auch optimierte Builds für die gängigen Browser Engines erstellt werden.
- Ebenso kann man einzelne Parts erstellen, die nur bei Bedarf nachgeladen werden (könnte man z.B. für Plugins, den Editor und unterschiedliche Backends nutzen)
- Komplette Abstraktion der Browser Unterschiede, man schreibt nur einen Code für alles
- Vorhandene Layout Engines (HBox, VBox, Flow, ...), die mehr Möglichkeiten für das Layout der Seiten bieten.
- Qooxdoo intern ist da viel Optimierung in die Verbindung Javascript <-> DOM geflossen, von dem man sicherlich profitieren kann
- Zur Manipulation der Darstellung können Themes erstellt werden, die sich zur Laufzeit austauschen lassen. Mit CSS hat man hier direkt nichts zu tun. Könnte man zukünftige Designs mit erstellen, auch hier hat man eine sauberere Struktur als mit CSS
Ein paar Gedanken zur Portierung:
- Sollte dieselbe DOM-Struktur wie die alte Visu erzeugen um mit den vorhandenen Designs Kompatibel zu sein. Wobei man dafür einen Weg finden muss das von Qooxdoo automatisch generierte CSS zu teilweise umgehen. Denkbar wäre hier auch ein Kompabilitätsmodus für alte Designs und einen "nativen" für neue auf Themes basierende. Ggf. wären hier Unittests sinnvoll die die ausgegebene DOM-Struktur mit der alten vergleichen
- Plugin-Kompabilität wird wohl nicht möglich sein. Die müssten portiert werden. Dabei könnte man aber ein Plugin-Interface definieren, welches jedes Plugin implementieren muss => Saubere Schnittstelle
- KNX-Iconset in Webfont konvertieren und so nutzen. Ist einfach umsetzbar, auch unabhängig von der Portierung. So kann man jedes Icon beliebig skalieren/färben (wie normalen Text halt)
Der große Nachteil ist natürlich, dass man große Teile der CometVisu neu schreiben müsste und gerade daher möchte ich mal wissen wie Ihr so darüber denkt. Ein wenig habe ich damit schon in Richtung Proof-of-concept angefangen, nur um zu sehen ob das überhaupt realistisch umsetzbar ist und denke mittlerweile das dem so ist. Ebenso denke ich das die Vorteile die Nachteile überwiegen.
Wenn diese Idee hier nicht auf Gegenliebe stößt bleibts halt bei einem Proof-of-concept und wird nicht weiterentwickelt. Vor allem interessiert mich hier die Meinung von Chris M. als Gründer und Hauptentwickler des Projekts, aber auch von allen anderen die bei der Weiterentwicklung geholfen haben.
Das war jetzt ein wenig lang, aber ist ja auch ein komplexes Thema ;-)
Kommentar