Gastbeitrag: Das RedSpark Framework
Hinweis von Ralf: nach einer längeren Sommerpause (es war einfach zu heiß und überhaupt) geht es hier nun weiter. Ich beginne gleich mit einer neuen Rubrik, in der ich (und ihr) Open Source Projekte vorstellen könnt, die auf dem Zend Framework aufsetzen. Wer also auch an dem einen oder anderen OS Projekt mitarbeitet, dass auf dem Zend Framework basiert, kann sich gerne bei mir melden. In den nächsten Tagen werde ich mich dann selber (hoffentlich) wieder regelmäßiger zu Wort melden. Doch nun hat Till das Wort:
Das RedSpark Framework
Das offene RedSpark Framework setzt auf dem ZEND Framework (kurz ZF) auf und löst einige der Probleme, mit denen sich schon fast jeder Entwickler konfrontiert sah. Vielleicht umschreibt dabei der Begriff „Application Framework“ RedSpark am besten: Ein Framework welches auf die Erstellung, aber vor allem auch Wiederverwendung von Web-Anwendungen, kurz „Apps“, ausgelegt ist.
Probleme trotz Framework
Welche Probleme sind gemeint? Und warum „Application Framework“? Zusätzlich muss sehr berechtigt gefragt werden, ob die Welt ein weiteres PHP-Framework braucht. Beginnen wir mit den Problemen, die viele Entwickler mit dem ZEND Framework haben:
Einstieg
Viele Entwickler berichten, dass sie auf das ZF umsteigen wollen, der Einstieg aber zu schwierig und vor allem zeitaufwändig sei.
OOP / Skills / Struktur
Viele Entwickler ohne OOP Erfahrung haben Probleme, ausgehend von der „weißen Seite“ eine saubere Architektur aufzubauen. Zudem fehlen dem MVC-Ansatz im ZF bekannterweise die Models, die entsprechend selbst konzipiert werden müssen.
Wiederverwendbarkeit
Für neue Projekte wird meistens entweder das letzte Projekt geklont oder weiter entwickelt, um den Start „auf der weißen Seite“ zu vermeiden. Diese Systeme sind danach allerdings nicht mehr wartbar, da Änderungen mehrfach gemacht werden müssen.
Individualisierbarkeit
Projekte mit dem ZF sind natürlich hochgradig individuell, allerdings müssen wie gesagt viele Komponenten selbst entwickelt werden, die in anderen Systemen bereits existieren.
Development
Exemplarisch sei hier Rapid-Prototyping genannt, welches direkt bei der Geschäftslogik ansetzt, ohne Zeit in Struktur und Aufbau der Anwendung zu investieren. Sowie das Thema Unittests. Jeder möchte Unittests nutzen, leider scheitert es häufig an dem Problem, komplexe Anwendungen mit einfachen Annahmen komplett zu testen.
Kommt all das bekannt vor? Das RedSpark Framework löst diese Probleme.
Lösungen des RedSpark Framework
Das RedSpark Framework erweitert das ZF an den folgenden Stellen:
Einstieg / OOP / Skills / Struktur
Der Einstieg in RedSpark gestaltet sich genau so einfach wie die Installation eines beliebigen OpenSource CMS Systems. Bereits Out-of-the-Box bietet das System, neben dem kompletten ZF als Basis eine Anwendungsstruktur, ein vollwertiges CMS, ein Basislayout, sowie vor allem ein Backend.
RedSpark kann somit entweder als CMS dienen und mit vorgefertigten Apps (Blog, Payment, etc.) erweitert werden oder in dieser Form als Basis für eine eigene ZF basierte Anwendung genutzt werden. Dabei kann neben Scaffolding für die Erzeugung der Struktur auch das komplette ZF genutzt werden. Nie war es möglich in kürzester Zeit eine so komplexe Anwendung zu erstellen, ohne auf die Flexibilität des ZFs verzichten zu müssen.
Wiederverwendbarkeit
RedSpark legt alle Bestandteile versioniert ab. Das System ist dadurch stets aktualisierbar und vor allem sind Softwarekomponenten in unterschiedlichen Apps und unterschiedlichen Versionen gleichzeitig nutzbar. Eine wichtige Voraussetzung für Wiederverwendbarkeit.
Individualisierbarkeit
Sämtliche Klassen des ZF, sowie sämtliche Klassen in den darüber liegenden Schichten beerben einander. RedSpark ist zwar mit all den vorgefertigten Apps auch sehr gut direkt z.B. als CMS einsetzbar, durch die Vererbungsstrategie ist es allerdings auch möglich, jede Methode aller darunter liegenden Schichten nach Belieben anzupassen.
Development
Neben den Lösungen für die Probleme Rapid Prototyping und Unittesting bietet RedSpark auch hier diverse Lösungen aus der Praxis:
Systemtexte im Backend pflegbar
Ein ausgereifter Cache (Memcache + Statifizierung) – im Backend steuerbar
Nutzung von SMARTY in der Templateausgabe
Referenzimplementierungen in Form einer Kickstart App
Fazit
Die Trennung des projektbezogenen Quellcodes in der eigenen App von den Libraries und anderen Apps steht an oberster Stelle. Jeder Kunde erhält genau die für seine Anwendung nötigen Entwicklungen und Änderungen. Alle vorhandenen Funktionen können jedoch im OOP Sinn für die eigene App erweitert werden.
RedSpark entsteht im Hause der Firma Kuborgh in Hamburg und Köln und „tickt“ bereits unter Seiten wie z.B. www.axe.de und ist die Basis vieler Facebook Apps, dazu aber in Kürze mehr, zum Beispiel in einer der nächsten Ausgaben des PHP Magazins. Die Roadmap für aktuell geplante Releases sind im Blog zu finden:

Samstag, 07.08.2010, um 21:03
Das klingt ja sehr interessant, muss ich mir unbedingt einmal anschauen!
Sonntag, 08.08.2010, um 10:14
Werde es mir auch mal anschauen.
Was mich aber noch interessieren würde: ist Smarty optional oder Pflicht? Weil Das das ZFW keine Template-Engine nutzt finde ich gerade toll.
Sonntag, 08.08.2010, um 13:10
Hi,
zunächst einmal danke an Ralf für die Veröffentlichung.
@Sebastian: Der Einsatz von Smarty ist optional. Die kommst im View problemlos über den Broker ans Request, die aktuelle Actioninstanz und natürlich das View Objekt. Wir werden das mal als Tutorialwunsch mit aufnehmen.
Sonntag, 15.08.2010, um 11:36
Prima, endlich mal ein CMS auf Basis des ZendFw. Mittlerweile gibt es ja eine Vielzahl solcher Systeme, aber hundertprozentig das Richtige welches meinen Bedürfnissen/Anforderungen entspricht gibt es nach wie vor nicht. Im Vergleich zu Typo3 ist RedSpark ein sehr einfaches CMS. Aber wie auch fast alle anderen CMS verlangt auch RedSpark ‘safe_mode = Off’. Viele Hoster aktivieren den Safe_mode in php. Aber nur deswegen wechsle ich nicht den Hoster, denn ich bin mit meinem jetzigen in aller Hinsicht bestens zufrieden. Bleibt ja noch die Möglichkeit mit FastCGI, ich werds mal ausprobieren. Man muss auch mal Kompromisse eingehen.
Freitag, 27.08.2010, um 11:43
Wie sieht den das Lizenz-Modell aus?
Ich habe einen Blick auf die RedSpark Seite geworfen, aber noch nicht ganz verstanden.
Das Basis-System hat die gleiche Lizenz wie ZF (BSD), aber einzelne Apps können abweichende Lizenzen haben.
Meiner Frage nun: Welche Lizenz haben die Basis Apps die zum CMS gehören (“CMS”, Backend etc.)?
Freitag, 27.08.2010, um 15:20
Zum Lizenzmodell: Das gesamte erweiterte Basissystem “RedSparkCore” (inkl. Backend, CMS, Userverwaltung, etc.) wird ebenfalls unter New-BSD Lizenz angeboten.
Dienstag, 05.10.2010, um 16:19
Redspark wird es nicht leicht haben mit der mieserablen Dokumentation. Einfach nur phpdoc ueber die mehr oder weniger unkommentierten Klassen laufen zu lassen bringt es nicht.
Donnerstag, 07.10.2010, um 09:58
Sind eigentlich alle Redspark-Anwendungen so lahm wie die Redspark-Seite selbst? Auch die Referenzen sind grottig langsam (probiere es jetzt nach ein paar Tagen zum wiederholten Mal – man meint, der Server steht…).
Mich würde interessieren, wie die angekündigten Features (Tests, Deployment, Versionierung, Integration bestehender (ZF-)Apps etc.) konkret umgesetzt wurden. Die Redspark-Doku (wenn man das so nennen will) lässt sich im Detail zu diesen Themen leider gar nicht aus und auch auf den Websiten konnte ich keine Informationen erhaschen. Irgendwie werde ich den Eindruck nicht los, dass RedSpark eine Luftnummer ist/wird… (das gefällige Layout der RS-Page und die huebschen Icons reichen wirklich nicht!)
Wer überzeugt mich vom Gegenteil?