YMC freut sich über das "Jubiläum" des Open Source Projekts. Die PHP Klassenbibliothek eZ Components bildet nicht nur eine Basis für das CMS eZ Publish sondern auch für unsere Social Media Suite Volano und für individuelle Softwareentwicklungsprojekte.
Einordnung
Die eZ Components lassen sich weitgehend vergleichen mit dem Zend Framework, welches etwa zur gleichen Zeit gestartet wurde. In beiden Fällen handelt es sich um Klassenbibliotheken, welche sich flexibel in beliebige Webanwendungen und auch andere Frameworks einbinden lassen. Davon unterscheiden muss man sogenannte PHP Frameworks, wie Symfony, Solar, CodeIgniter und Cake PHP. Ihr Schwerpunkt liegt darin, ein komplettes Grundgerüst für eine Webapplikation zu liefern. Vorteil ist die kurze Entwicklungszeit bis zum ersten Prototypen, Nachteil der verhältnismässig fixe, schwerer zu veränderende Rahmen.
In unserer Arbeit haben sich die eZ Compenents als sehr mächtiges und qualitatitiv hochwertiges Tool bewährt. In den Kategorien Codequaltität, Dokumentation und Entwicklungsprozess halten wir es für vorbildlich. Besonders gespannt sind wir daher darauf, ob der Vortrag Framework Quality: Unit-Tests as silent witness unsere Erfahrungen bestätigen wird.
Geschichte der eZ Components
Das Projekt besteht seit Anfang 2006 und konnte in dieser Woche seinen 10.000sten Subversion Commit feiern. Ursprüngliches Ziel war die Modernisierung der vorhandenen Bibliotheken der damaligen Version 3 von eZ Publish und die Schaffung einer solide Basis für das zukünftige eZ Publish. Mit dem Versionssprung von 3 auf 4 wurden die ersten Komponenten bereits in eZ Publish aufgenommen. Geplant ist, dass die Version 5 (auch "Project V" genannt) komplett auf den eZ Components basieren soll.
Der Entwicklungsprozess der eZ Components ist klar definiert. Er stellt sicher, dass jedes Feature von der Community diskutiert und akzeptiert wird. Weiterhin gibt es strenge Richtlinien für die Implementierung. Sie garantieren eine gleichbleibende Codequalität und sind Bedingung, um Code zum Projekt beizutragen. Daneben ist die umfangreiche und aktuelle Dokumentation das zweite Hauptziel der Entwicklung. Umfangreiche API-Dokumentation und leicht nachvollziehbare Tutorials sind das Ergebnis.
Die Implementierung der Komponenten erfolgt testgetrieben mit Unit-tests (PHPUnit). Dadurch wird garantiert, das alle Funktionen gleichbleibend funktionieren und mögliche Fehler schon während der Entwicklung erkannt werden. Bei YMC gab es zu diesem Thema kürzlich eine Veranstaltung unter dem Titel PHP-Development-Tools.
Das eZ Components Projekt kann stolz darauf sein, dass es in drei Jahren keine einzige Inkompatibilität mit früheren Versionen gegeben hat. Diese "Backwards Compatibility" garantiert, dass Code, der einmal auf Basis der eZ Components geschrieben wurde, nicht für neue Versionen der Bibliothek angepasst werden muss.
Die wichtigsten Komponenten im Überblick
Mit Authentication lassen sich verschiedene Login-Mechanismen für die Benutzer einer Webanwendung realisieren:
- Database - Die Benutzerdaten liegen in einer relationalen Datenbank (z.B. MySQL, PostgreSQL, Oracle, MSSQL)
- Htpasswd - Benutzt die entspreche Funktion des Apache Webservers
- LDAP - Die Benutzerdaten liegen in einem Directory Server (OpenLDAP, Active Directory)
- OpenID - Ein offener Standard für das Single-Sign-On im Web
- Token - Hilft bei der Implementierung von Captchas
Cache ist ein wichtiges Hilfsmittel für hochperformante Webseiten. Oft benötigte Daten können in schnellen Caches wie Memcache, APC oder dem Filesystem abgelegt werden. Bei der Geschwindigkeitsmessung und Optimierung hilft dann direkt Debug.
Als Datenbasis vieler Webanwendungen dient eine relationale Datenbank. Database ist ein Database Abstraction Layer (DAL), der MySQL, PostgreSQL, Oracle, SQLite und MSSQL gleichermassen unterstützt. Darauf setzt direkt der Object-Relational-Mapper Persistent Object auf. So können PHP-Objekte bequem in der Datenbank gepeichert werden.
Kaum eine Webseite kann es sich heute noch leisten, keinen Feed anzubieten. Mit den eZ Components können diese in den Formaten RSS, RSS2 und ATOM sowohl gelesen als auch geschrieben werden. Eine weitere Verbindung zur Außenwelt ist das Versenden und Empfangen von Emails. Unterstützt werden SMTP, Versand über den MTA des Webservers, POP3, IMAP und MBOX. Die Emails selber werden im HTML und Plaintext verarbeitet.
In den Bereich der Unternehmensanwendungen geht es mit Workflow für die Implementierung von Publikations- oder Entscheidungsworkflows. Für ein Dokumenten-Management-System können Dokumente (Document) in verschiedene Formate umgewandelt werden. Dadurch wird es auch möglich, sie in einem standardisierten Format von der Search Komponente und Lucene indizieren und suchen zu lassen. Die Visualisierung übernimmt Graph. Kuchen-, Balken-, Linien- und Spinnennetzdiagramme lassen sich in verschiedenen Formaten generieren.
Zur Sicherheit und Wartbarkeit der Anwendung tragen UserInput und Template bei. UserInput überprüft die den Datenstrom vom User zur Applikation, während Template alle Daten für die sichere Anzeige im Webbrowser aufbereitet.
Zusammengehalten wird alles von den neuen MvcTools. Sie helfen bei der sauberen Aufteilung der Anwendung in die Verantwortungsbereiche Datenmodellierung, Datenanzeige und Kontrollfluß. Ist die Anwendung erfolgreich im Web, kann sie mit Translation auch in weitere Sprachen übersetzt werden.
Neben den auf der Projektseite angegebenen Installationsmöglichkeiten kann man die eZ Components auch aus dem GIT Repository von YMC beziehen.
ich wäre gerne zur IPC gekommen, aber gerade an dem Wochenende habe ich meine eigene kleine Konferenz parallel zum Kirchentag in Bremen:
"Web 2.0. Freie Software und Gemeinnützige Organisationen": http://kirchentag.mixxt.de