Titelei
Impressum
Inhalt
1 Einleitung
2 Über Joomla!
2.1 Content-Management-Systeme
2.2 Geschichte
2.3 Organisation
2.4 Release-Strategie
3 Einrichten der Arbeitsumgebung
3.1 Lokaler Webserver
3.1.1 Windows
3.1.2 Linux
3.1.3 Mac OS X
3.1.4 Vagrant
3.2 Entwicklungstools
3.2.1 Texteditor
3.2.2 Entwicklungsumgebung
3.3 Wahl des Browsers
3.3.1 Nutzung der Chrome-Entwicklertools
3.4 FTP-Client
3.5 Passwort-Manager
4 Installation
4.1 Installation in der lokalen Umgebung
4.1.1 Sonderfall 1: der FTP-Modus
4.1.2 Sonderfall 2: mehrsprachige Installation
4.2 Installation auf dem Webspace des Hosters
4.3 Erste Handgriffe nach der Installation
4.3.1 Anpassung der robots.txt
4.3.2 Leeren des Verzeichnisses /images
5 Grundlegende Begriffe und Architektur
5.1 Grundlegende Begriffe
5.1.1 Backend/Frontend
5.1.2 Komponenten, Module, Plug-ins und Templates
5.1.3 Beiträge, Kategorien, Menüs
5.2 Architektur
5.2.1 Joomla!-Framework
5.2.2 Joomla!-CMS
5.2.3 Erweiterungen
6 Das Backend
6.1 Login
6.2 Grundaufbau und Kontrollzentrum
6.3 Allgemeine Konfiguration
6.4 Massenmail
6.5 Menü: Menüs und Inhalte
6.6 Medienverwaltung
6.7 Menü: Komponenten
6.8 Menü: Erweiterungen
6.9 Menü: Hilfe
7 Inhalte verwalten
7.1 Kategoriensystem anlegen
7.1.1 Kategorienübersicht
7.1.2 Kategorie anlegen
7.1.3 Anlegen einer untergeordneten Kategorie
7.1.4 Bestehende Kategorien ändern
7.1.5 Kategorien entfernen und wiederherstellen
7.1.6 Kategorien veröffentlichen und verstecken
7.1.7 Kategorie-Reihenfolge ändern
7.1.8 Freigeben von Kategorien
7.1.9 Wiederherstellen der Kategorienstruktur
7.1.10 Kategorienoptionen
7.1.11 Anwenden von Änderungen auf mehrere Kategorien
7.2 Inhalte erstellen
7.2.1 Beitragsübersicht
7.2.2 Neuen Beitrag anlegen
7.2.3 Allgemeine Optionen der Beitragskomponente
7.3 Haupteinträge
7.4 Versionierung
7.5 Verschlagwortung
7.5.1 Schlagworte anlegen
7.5.2 Schlagworte im Frontend
8 Navigationsstruktur anlegen
8.1 Das Menüsystem
8.1.1 Die Menübereiche
8.1.2 Die Menüeinträge
8.2 Menüeinträge anlegen
8.2.1 Menütypen
8.2.2 Menüeintrags-Parameter
8.2.3 Kategorienauflistungen
8.2.4 Kategorienblogs
8.3 Split-Navigationen anlegen
9 Das Template-System
9.1 Was ist ein Template?
9.1.1 Backend- und Frontend-Templates
9.1.2 Modulpositionen
9.2 Template-Übersicht
9.2.1 Template-Stile
9.2.2 Installierte Templates
9.3 Editieren der installierten Templates
9.4 Template-Stil wechseln
9.5 Template-Zuweisung
9.6 Parameter ändern
9.7 Manuelle Template-Anpassungen
9.8 Andere Templates nutzen
9.8.1 Template-Verzeichnisse
9.8.2 Template-Clubs
9.8.3 Installation
10 Joomla!-Erweiterungen
10.1 Integrierte Erweiterungen
10.1.1 Komponenten: Nutzung der Kontakt-Komponente
10.1.2 Komponenten: Nutzung des Suchindex
10.1.3 Module: Das RSS-Feed-Modul einbinden
10.1.4 Plug-ins
10.1.5 Sprachen
10.1.6 Templates
10.1.7 Bibliotheken
10.1.8 Überblick über die Standarderweiterungen
10.2 Erweiterungen verwalten
10.2.1 Erweiterungen finden
10.2.2 Erweiterungen installieren
10.2.3 Erweiterungsmanager
11 Benutzer- und Rechteverwaltung
11.1 Benutzerverwaltung
11.2 Gruppen
11.3 Zugriffsebene
11.4 Berechtigungen
11.4.1 System-Berechtigungen
11.4.2 Komponenten-Berechtigungen
11.4.3 Kategorie-Berechtigungen
11.4.4 Eintragsberechtigungen
11.5 Parameter der Benutzerverwaltung
12 Overrides / Template Workshop
12.1 Overrides und Alternative Layouts
12.1.1 Einleitung
12.1.2 MVC
12.1.3 Ausgabe von Komponenten überschreiben
12.1.4 Menütypen für Alternative Layouts anlegen
12.1.5 Ausgabe von Modulen überschreiben
12.1.6 Modul Chrome
12.1.7 Ausgabe von jLayouts überschreiben
12.1.8 Overrides über den Template-Manager erstellen
12.1.9 Ausgabe von Plug-ins überschreiben
12.1.10 Ausgabe der Paginierung überschreiben
12.1.11 Media-Dateien überschreiben
12.1.12 Ausgabe von Sprachdateien überschreiben
12.2 Joomla!-Template-Workshop
12.2.1 Download der Beispieldateien
12.2.2 Aufbau eines Joomla!-Templates
12.2.3 Bearbeitung der templateDetails.xml
12.2.4 Basisangaben in der index.php
12.2.5 Module in der index.php laden
12.2.6 Verweise korrigieren
12.2.7 Weitere Jdoc-Anweisungen
12.2.8 Inhaltsbereich/Komponente
12.3 Weitere Joomla!-Template-Dateien
12.3.1 component.php
12.3.2 offline.php
12.3.3 error.php
12.3.4 pagination.php
12.4 Übersicht Joomla!-Befehle
12.5 Template-Frameworks und Template-Generatoren
12.6 CSS-Frameworks
12.7 Taskrunner
12.8 Barrierefreiheit
12.9 Backend-Template
13 Suchmaschinenoptimierung
13.1 Meta-Daten
13.2 SEF URLs
13.2.1 URL-Rewriting
13.2.2 Das Duplicate-Content-Problem
13.3 Umleitungen
13.4 Erweiterungen
13.4.1 sh404SEF
13.4.2 OSMap
13.4.3 Easy Frontend SEO
14 Mehrsprachigkeit
14.1 Integrierte Mehrsprachigkeit
14.1.1 Prinzip
14.1.2 Aktivierung der Sprachen
14.1.3 Aktivierung des Plug-ins
14.1.4 Aktivierung des Moduls
14.1.5 Sprachzuweisung der Beiträge
14.1.6 Sprachzuweisung der Menüeinträge
14.1.7 Sprachzuweisung der Module
14.1.8 Sprachverknüpfungen
14.2 FaLang
14.2.1 Prinzip
15 Spezialisierte Erweiterungen
15.1 Shop-Systeme
15.1.1 VirtueMart
15.1.2 HikaShop
15.1.4 JoomShopping
15.2 Formulare
15.2.1 RSForm Pro
15.2.2 FlexForms
15.3 Dokumentenmanagement
15.3.1 jDownloads
15.4 Kalender
15.4.1 JEvents
15.4.2 DPCalendar
15.5 Galerien
15.5.1 Komponente: PhocaGallery
15.5.2 Plug-in: Simple Image Gallery
15.6 Community-Lösungen
15.6.1 JomSocial
15.6.2 Community Builder
15.6.3 Kunena
16 Eigene Felder/SEBLOD®
16.1 Eigene Felder
16.1.1 Diese Joomla!-Komponenten unterstützen „Eigene Felder“
16.1.2 Feldtypen
16.1.3 Felder anlegen – so geht es!
16.1.4 Override der Eingabefelder
16.1.5 Felder ausgeben – so geht es!
16.1.6 Zugriff und Berechtigungen für „Eigene Felder”
16.1.7 Weitere Funktionen und ihre Grenzen
16.1.8 Beispielprojekt: Jobportal
16.2 SEBLOD®
16.2.1 Was ist SEBLOD®?
16.2.2 SEBLOD® installieren
16.2.3 Erste Orientierung
16.2.4 Globale Konfiguration
16.2.5 Der App-Ordner Manager
16.2.6 Formular- und Inhaltstypen
16.2.7 Listen- und Suchtypen anlegen
16.2.8 Felder hinzufügen
16.2.9 Feldtypen/Feldgruppen
16.2.10 Feld-Zusatzoptionen
16.2.11 Templates
16.2.12 Seiten-Manager (Joomla!-Multidomain)
16.2.13 SEBLOD® Module
16.2.14 Backend-Menü erstellen
16.2.15 SEBLOD® Erweiterungen
16.2.16 Beispielprojekt: Jobportal
16.2.17 Weitere CCK
17 Eigene Erweiterungen
17.1 Die Joomla!-API
17.2 Das MVC-Pattern
17.3 Wichtige Klassen
17.3.1 JFactory
17.3.2 JDatabase
17.3.3 JDatabaseQuery
17.3.4 JInput
17.3.5 JDocument
17.3.6 JFile/JFolder
17.3.7 JControllerLegacy
17.3.8 JModelLegacy
17.3.9 JViewLegacy
17.3.10 JForm
17.3.11 JLayout
17.3.12 Weitere Klassen in der Kurzübersicht
17.3.13 Zur Verfügung stehende Konstanten
17.4 Tutorial: Wir programmieren eine Komponente für Stellenanzeigen
17.4.1 Anlegen der Verzeichnisstruktur
17.4.2 Anlegen der XML-Definition
17.4.3 Anlegen des Installationsskripts
17.4.4 Anlegen der SQL-Dateien für Installation, Deinstallation und Update
17.4.5 Anlegen des MVC-Patterns im Backend
17.4.6 Anlegen der Backend-Sprachdateien
17.4.7 Anlegen der benötigten Medien-Dateien
17.4.8 Anlegen des MVC-Patterns im Frontend
17.4.9 Anlegen der Frontend-Sprachdateien
17.4.10 Installieren der fertigen Erweiterung
17.5 Plug-ins entwickeln
17.5.1 Grundprinzip
17.5.2 Beispiel-Plug-in
17.5.3 Verfügbare Plug-in-Events
17.6 CLI-Applikationen entwickeln
17.7 Das FOF-Framework
17.7.1 Zentrale Konzepte
17.7.2 Nachteile des FOF-Frameworks
17.7.3 Vorteile des Frameworks
18 Best Practices
18.1 Sinnvolle Erweiterungen im professionellen Umfeld
18.1.1 OSMap
18.1.2 JCE
18.1.3 ACL Manager
18.1.4 Advanced Module Manager
18.1.5 Akeeba Backup
18.2 Einstellungen
18.2.1 Erweiterungen verstecken
18.2.2 Administrationsgestaltung
18.3 Administrationsenüs
18.4 Management-Tools
18.5 Standard-Paket
18.6 Fortbildungsmöglichkeiten
18.6.1 Joomla!-Events
18.6.2 Zertifizierung
19 Übertragung Offline > Online
19.1 Die Auswahl des richtiges Hosters
19.1.1 Das „www-run“-Problem
19.2 Transfer mittels FTP und phpMyAdmin
19.3 Transfer mit Akeeba Backup
19.4 Fallstricke nach dem Transfer
19.5 Online-Checkliste
20 Performance-Optimierungen
20.1 Optimierung der Generierungszeit
20.1.1 MySQL Query Caching
20.1.2 Opcode-Caches für PHP
20.1.3 Integriertes Joomla!-Caching
20.2 Optimierung des HTML-Codes
20.3 Optimierung der Auslieferung
20.3.1 Aktivierung der GZIP-Komprimierung
20.3.2 Content Delivery Networks
21 Sicherheit
21.1 Motivation der Angreifer
21.2 Angriffstypen und Gegenmaßnahmen
21.2.1 SQL Injections
21.2.2 Directory Traversal
21.2.3 Remote Code Execution
21.2.4 Cross-Site-Scripting
21.2.5 Cross-Site Request Forgery
21.3 Sicherheitsmaßnahmen
21.3.1 Zwei-Faktor-Authentifizierung
21.4 Wie erkenne ich einen Hack?
21.5 Was tun nach dem Hack?
22 Update und Migration
22.1 Migrationen: theoretischer Ablauf
22.2 Schritt 1: Kopie erstellen
22.3 Schritt 2: Erweiterungen prüfen
22.3.1 Sonderfall Templates
22.4 Schritt 3: Backup!
22.5 Schritt 4: Migration
22.6 Schritt 5: Übertragen der Seite
22.7 Migration eigener Erweiterungen
David Jardin
Elisa Foltyn
Joomla! 3
Professionelle Webentwicklung.
Aktuell zu Version 3.7
Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.
Ebenso übernehmen Autoren und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen und MarkenschutzGesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.
© 2018 Carl Hanser Verlag München
www.hanser-fachbuch.de
Lektorat: Brigitte Bauer-Schiewek
Copyediting: Petra Kienle, Fürstenfeldbruck
Umschlagdesign: Marc Müller-Bremer, München, www.rebranding.de
Umschlagrealisation: Stephan Rönigk
Print-ISBN 978-3-446-44015-9
E-Book-ISBN 978-3-446-44088-3
Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz)
CSS-Version: 1.0
Font License | Zurück zum Impressum |
Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL ----------------------------------------------------------- SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
1 | Einleitung |
Liebe Leserin, lieber Leser,
man kann wohl guten Gewissens behaupten, dass sich der OpenSource-CMS-Markt aktuell im Wandel befindet. Wordpress vergrößert unaufhörlich seinen Marktanteil, Software-As-A-Service-Lösungen wie Wix.com oder Jimdo buhlen um die Gunst der Anwender und beinahe jeden Tag wird irgendwo ein weiteres, kleines und schlankes CMS veröffentlicht, das innovativer und besser sein möchte als alle seine Vorgänger zusammen.
Nicht wenige Kollegen aus der Web-Szene prophezeien angesichts dieser Veränderungen das baldige Verschwinden von Joomla, da es in der heutigen Zeit keinen sinnvollen Einsatzzweck mehr habe und man am besten schleunigst zu einem der anderen, vermeintlich besseren Systeme wechseln sollte.
Wir sind überzeugt, dass die Kollegen mit dieser Einschätzung kaum falscher liegen könnten. Auf dem CMS-Markt finden sich mit Wordpress, den genannten SAAS-Lösungen und diversen kleineren CMS zahlreiche Systeme die sich für die Realisierung kleiner bis mittelgroßer Seiten anbieten. Der Enterprise-Markt wird durch kommerzielle Systeme sowie TYPO3 und Drupal dominiert – aber der Markt „dazwischen“ ist weder mit der einen, noch mit der anderen Kategorie von CMS sinnvoll bedienbar.
Genau hier liegt die große Stärke von Joomla – es ist der ideale Mix aus leicht erlernbarem Baukastensystem und technisch ausgereiftem Framework zur Realisierung komplexer Anforderungen. Es verfügt über ein reichhaltiges Portfolio an fertigen Erweiterungen, kann aber genauso gut durch eigene Entwicklungen ergänzt werden. Diese Fähigkeiten machen es zur eierlegenden Wollmilchsau der CMS-Industrie und somit auch in Zukunft zum Werkzeug der Wahl für Dienstleister und ambitionierte Hobbynutzer.
Mit diesem Buch möchten wir genau dieser Zielgruppe eine Hilfe an die Hand geben, die ihr beim Einstieg in Joomla hilft, ohne sie nach einer Grundeinführung im Regen stehen zu lassen. Dieses Buch basiert auf über zehn Jahren Erfahrung als Joomla-Dienstleister und fasst all die kleinen Tipps, Tricks und Workflows zusammen, die ein professionelles Arbeiten ausmachen!
Zusatzmaterial, Links und besondere Angebote, die wir Ihnen gerne zu diesem Buch zur Verfügung stellen wollen, finden Sie auf der Webseite des Hanser-Verlags unter www.hanser-fachbuch.de/joomla3.
Wir glauben an eine großartige Zukunft für Joomla und sind uns sicher, dass Sie es am Ende dieses Buchs auch tun werden!
Viel Freude bei der Lektüre wünschen Ihnen
David Jardin und Elisa Foltyn
Alle Codebeispiele aus dem Buch finden Sie auch im Internet unter http://buch.djumla.de/3.7
2 | Über Joomla! |
2.1 | Content-Management-Systeme |
Am Anfang dieses Buchs sollten wir uns zunächst einmal mit folgender Frage beschäftigen: Was ist eigentlich ein Content-Management-System (kurz CMS)? Die deutsche Übersetzung „Inhaltsverwaltungssystem“ hilft uns ein wenig weiter: Ein CMS ist eine Software zur Erstellung, Bearbeitung und Verwaltung von Informationen, die aus simplen Texten, aber auch aus komplexen Multimediaelementen (Bilder, Videos, Dokumente etc.) bestehen können. Dabei ist wichtig, dass die entsprechenden Inhalte im Regelfall ohne Programmierkenntnisse eingepflegt werden können.
Obwohl auch sog. Document-Management-Systeme (z. B. Alfresco) oder Offline-CMS wie Jekyll im weitesten Sinne zu den Content-Management-Systemen gehören, bezieht sich der Begriff des CMS i. d. R. auf Web-Content-Management-Systeme, die ausschließlich als Webanwendungen arbeiten, also über den Webbrowser administriert werden.
Diese WCMS erlauben es mehreren Benutzern, gemeinschaftlich an den hinterlegten Informationen zu arbeiten, und sind medienneutral in ihrer Ausgabe. Medienneutral bedeutet dabei, dass die hinterlegten Informationen unabhängig vom Ausgabeformat (HTML, PDF, XLS) bzw. der Gestaltung der Ausgabe (einfaches Wechseln von Designs) hinterlegt sind und so aus einem „Inhaltspool“ verschiedene Arten von Dokumenten erzeugt werden können. Dies wird dadurch ermöglicht, dass die Inhalte erst beim Aufruf durch den Nutzer dynamisch in ihr finales Ausgabeformat gebracht werden. Das unterscheidet Web-CMS vom klassischen Vorgehen mit HTML-Editor und FTP-Programm, bei dem die einzelnen Inhalte statisch, also schon in ihrer endgültigen Form, auf dem Server hinterlegt sind.
Zu den bekanntesten Open-Source-CMS gehören das Blogsystem Wordpress, die Enterprise-Systeme Drupal und Typo3 sowie Joomla!.
2.2 | Geschichte |
Die Wurzeln von Joomla! liegen im CMS Mambo, das seit der Jahrtausendwende vom australischen Unternehmen Miro entwickelt und im Jahr 2002 als Open-Source-Software veröffentlicht wurde. Mambo entwickelte sich schnell zu einem sehr beliebten System und wurde so z. B. im Jahr 2004 von der Zeitschrift Linux User and Developer als „Best Linux or Open Source Software“ ausgezeichnet. Im August 2005 entschied sich Miro dazu, die Mambo Foundation, einen gemeinnützigen Verein, zu gründen, um das Mambo-Projekt von Miro zu lösen und so zu gewährleisten, dass die Weiterentwicklung unabhängig vom Schicksal der Firma erfolgen kann.
Einige Tage später kam es jedoch zum Bruch zwischen dem aus Freiwilligen bestehenden Entwicklerteam und Miro, woraufhin das gesamte Entwicklerteam das Mambo-Projekt verließ, um sich unter dem Namen „Open Source Matters“ neu zu gruppieren. Als Grund für diesen Schritt gab das Entwicklerteam an, dass die Mambo Foundation ohne Beteiligung der Community gegründet worden sei und Miro weiterhin eine starke Kontrollfunktion ausübe, die mit einem Open-Source-Projekt nicht vereinbar wäre – so ließ sich z. B. der Geschäftsführer von Miro zum Vorsitzenden der Foundation wählen.
Das Entwicklerteam entschloss sich daraufhin, einen eigenen Ableger von Mambo auf den Markt zu bringen, der im September 2005 unter dem Namen Joomla! in der Version 1.0 erschien. Joomla! leitet sich vom Suaheli-Wort „Jumla“ ab, das in der Übersetzung „Alle zusammen“ bedeutet. Joomla! 1.0 war zu diesem Zeitpunkt im Wesentlichen nur eine leicht fehlerbereinigte Version von Mambo 4.5.2.3, zog jedoch aufgrund des Wechsels des gesamten Entwicklerteams große Teile der Mambo-Community mit sich.
Nach der Veröffentlichung von Joomla! 1.0 und der Stabilisierung des Projekts entschloss sich das Entwicklerteam, den alten Code, der teilweise noch aus dem Jahr 2000 stammte, über Bord zu werfen und eine von Grund auf neu geschriebene Joomla!-Version 1.5 zu erstellen, die im Januar 2008 erschien und dem Projekt nochmals einen enormen Aufwind gab. In den aktuellen Versionen findet sich dadurch kein Code des Vorgängers Mambo mehr.
2.3 | Organisation |
Das Joomla!-Projekt ist in den letzten Jahren massiv gewachsen und musste dabei seine Strukturen mehrfach an die veränderten Anforderungen anpassen. Die aktuelle Organisationsstruktur befindet sich zum Zeitpunkt des Erscheinens dieses Buchs in einem Übergangsprozess, ist also noch nicht vollständig umgesetzt worden.
Die Grundstruktur des Projekts entspricht auf den ersten Blick der eines klassischen Unternehmens (siehe Bild 2.1).
Bild 2.1
Basis des Projekts ist die juristische Person hinter Joomla!, nämlich die bereits erwähnte not-for-profit-Organisation „OpenSourceMatters Inc“ mit Sitz in New York.
OpenSourceMatters hat einen Vorstand, bestehend aus den Sonderrollen „Präsident/in“, „Vize-Präsident/in“, „Generalsekretär/in“ und „Schatzmeister/in“ sowie den Abteilungsleiter/innen der sieben Abteilungen, im Projektjargon als „Department Coordinator“ bezeichnet.
Derzeit sind die folgenden Abteilungen im Projekt vorgesehen:
Production: zuständig für die technische Entwicklung des eigenen Kernprodukts „Joomla! CMS“.
Legal: verteidigt die rechtlichen Interessen des Gesamtprojekts, insbesondere in Bezug auf die Marke „Joomla!“.
Marketing & Communication: koordiniert die interne und externe Kommunikation des Projekts und versucht die Verbreitung von Joomla! zu erhöhen.
Events: zuständig für alle Fragen rund um Veranstaltungen und Meetups.
Operations: kümmert sich um den Betrieb der Infrastruktur, den das Projekt benötigt, wie zum Beispiel die Website joomla.org.
Programs: betreut die verschiedenen Programme und Initiativen, an denen Joomla! beteiligt ist. Hierzu gehört zum Beispiel das „Google Summer of Code“-Programm oder das geplante Zertifizierungs-Programm für Joomla!-Administratoren und Dienstleister.
Local Communities: repräsentiert die lokalen Communities wie Usergroups oder nationale Vereine.
Jedes Department kann wiederum aus beliebig vielen Teams bestehen, die für jeweils einen bestimmten Aspekt zuständig sind. Im Department „Production“ könnte es hier z. B. ein Team für die Übersetzung von Joomla! in andere Sprachen geben, ein Team für die Entwicklung von Joomla! 4.x sowie ein Team für die Dokumentation. Die Anzahl der Teams unterliegt dabei keiner Begrenzung, sondern kann frei gewählt werden.
Auf der Ebene der Teams angekommen besteht jedes Team aus den Positionen „Teamleiter/in“ und „stellv. Teamleiter/in“ sowie einer beliebigen Anzahl von Teammitgliedern. Die Aufnahme in ein Team erfolgt über ein Bewerbungsverfahren, das die Teams individuell gestalten können. Ein Team wiederum wählt dann den Teamleiter sowie seinen Stellvertreter, die Teamleiter eines Departments wählen den Department Coordinator und alle Department Coordinators wählen die passenden Personen für die vier genannten Sonderposten auf Vorstandsebene.
Die Projektstruktur verfügt somit über einige bemerkenswerte Merkmale:
Absolut alle Mitarbeiter im Projekt, ganz egal auf welcher Ebene, arbeiten unbezahlt und ehrenamtlich.
Es gibt nicht „die Firma“ hinter dem Projekt, die die Entwicklung steuert, sondern die Richtungsfindung und Entwicklung erfolgt im Rahmen von demokratischen Prozessen.
Es gibt klare Prozesse für Abstimmungen, Teamgründungen und -auflösungen sowie die Aufnahme neuer Mitarbeiter.
An dieser Stelle sollte jedoch nicht verschwiegen werden, dass die neue Struktur in der Community nicht unumstritten ist. Die Abstimmung über den Wechsel zum neuen Aufbau ging denkbar knapp aus und der derzeit stattfindende Wechsel von der alten auf die neue Struktur ist massiv hinter dem aufgestellten Zeitplan. Kritiker äußern dabei vor allem die folgenden Kritikpunkte:
Die neue Struktur ist zu bürokratisch. Langatmige Prozesse verlangsamen die Entscheidungsfindung und nehmen allen Beteiligten die nötige Flexibilität.
In der neuen Struktur konzentriert sich zu viel „Macht“ auf einige wenige Menschen, nämlich den Vorstand von OpenSourceMatters. Ein System der gegenseitigen Prüfung von mehreren gleichberechtigten Instanzen, wie es in der alten Struktur der Fall war, fehlt.
Der Wechsel zur neuen Struktur würde das Projekt über Monate beschäftigen und lähmen.
Zum jetzigen Zeitpunkt (Februar 2017) ist noch nicht absehbar, wie die neue Struktur sich auf das Projekt auswirkt – man darf daher gespannt sein.
Als Mitglied des Joomla! Community Leadership Teams war ich, der Autor dieses Kapitels, direkt an der Abstimmung über die Adaption der neuen Struktur beteiligt und habe dabei gegen deren Einführung gestimmt. Ich habe mich bemüht, die Struktur dennoch so neutral wie möglich darzustellen und hoffe, dass mir das gelungen ist. Nichtsdestotrotz sind Sie herzlich eingeladen, die offizielle Beschreibung 1 des Strukturentwurfs zu lesen und sich ein eigenes Bild zu machen.
2.4 | Release-Strategie |
Mit der Veröffentlichung von Joomla! 3.2 hat das Joomla!-Projekt einen Wechsel der Release-Strategie beschlossen. Das System des sog. Time-Based-Releasecycle, das zum Release von Joomla! 1.6 im Jahr 2011 eingeführt wurde und auf der Idee von fest terminierten Veröffentlichungen und Langzeit- und Kurzzeitsupport-Versionen basierte, wurde aufgegeben und stattdessen eine Strategie auf Basis der beiden Grundsätze „schlanke, schnelle Releases“ und „semantische Versionierung“ eingeführt.
Schlanke, schnelle Releases bedeuten dabei, dass neue Joomla!-Versionen in relativ kurzen zeitlichen Abständen (im Idealfall ca. ein Release pro Quartal) veröffentlicht werden sollen und die jeweiligen Releases dabei jeweils nur relativ kleine überschaubare Sets an neuen Funktionen mitbringen sollen. Das gegenteilige Modell wäre z. B. die Veröffentlichung von nur einem Update pro Jahr, das dann aber wesentlich umfangreicher ist und eine Vielzahl von neuen Funktionen mitbringt. Dieser Ansatz erlaubt den Joomla!-Entwicklern, sehr schnell auf neue Anforderungen der Webwelt zu reagieren und führt zudem zu schnellen Erfolgserlebnissen für Entwickler, die eine Funktion zu Joomla! beisteuern.
Der zweite Grundsatz, die sogenannte semantische Versionierung, gibt vor, welche Art von Änderung sich auf welche Stelle der Versionsnummer auswirkt. Eine dreistellige Versionsnummer X.Y.Z lässt sich dabei in die folgenden Komponenten aufteilen:
X ist die sog. Majorversion. Eine Änderung dieser Ziffer ist notwendig, wenn das Joomla!-Projekt eine Änderung einbaut, die einen Bruch der Rückwärtskompatibilität zur Folge hat. Mit anderen Worten: Ändert sich die erste Stelle der Versionsnummer, müssen Entwickler ihre Erweiterungen an die neue Version anpassen, da diese ansonsten nicht mehr lauffähig sind. Somit ist der Wechsel von der einen zur anderen Majorversion ein etwas komplexerer Prozess, der im Joomla!-Jargon als Migration bezeichnet wird und in Kapitel 22 genauer beschrieben ist.
Y ist die sog. Minorversion. Hier ist eine Änderung immer dann notwendig, wenn eine neue Funktion zu Joomla! hinzugefügt wird. Diese Minorversionen erscheinen im oben bereits beschriebenen Quartalsrhythmus. Ein Update auf eine neue Minorversion ist sehr simpel und in der Regel mit einem einfachen Mausklick durchführbar.
Z ist die sog. Patchversion. Diese kleinste Art von Update enthält ausschließlich Fehlerbehebungen (auch als Patches bezeichnet) und kann ebenfalls bedenkenlos per Mausklick direkt in der Administration von Joomla! eingespielt werden.
Um den Nutzern von Joomla! eine gewisse langfristige Planungssicherheit zu geben, gibt das Joomla!-Projekt feste Mindestzeiträume an, in denen eine bestimmte Version noch mit Sicherheitsupdates und Fehlerbehebungen versorgt wird. Grundregel ist dabei, dass die jeweils letzte Minor-Version eines Major-Zweigs für zwei Jahre unterstützt wird.
Ein kleines Beispiel, um diesen etwas abstrakten Satz mit konkreten Inhalten zu füllen:
Wir nehmen einmal an, dass am 01.01.2018 eine fiktive Joomla!-Version 4.0 erscheint. Im weiteren Entwicklungsverlauf erscheinen für diesen neuen Versionszweig 4.x nun mehrere Minor-Releases, die neue Funktionen nachrüsten. Die letzte Minor-Version, in unserem fiktiven Fall wäre das zum Beispiel 4.9.0, erscheint dabei am 01.03.2020. Der Release-Termin dieser letzten Minor-Version wäre nun ausschlaggebend für das Ende des Supportzeitraums von zwei Jahren, womit der Support für die Joomla!-Version 4.x am 28.02.2022 enden würde. Im Rahmen dieses Supportzeitraums würde es weiterhin Fehlerbehebungen und Sicherheitsupdates geben, die sich dann auf die letzte Ziffer der Versionsnummer (z. B. als 4.9.1, 4.9.2 etc.) auswirken würden.
Joomla! bietet Entwicklern und Nutzern also eine langfristige Planungssicherheit und eignet sich daher perfekt für Projekte, die über einen längeren Zeitraum unterstützt werden müssen.
1https://docs.google.com/document/d/1gsUK0kePsBg6xiaUVdN6oExZ0hKEjBxH6bRVAeZy-IE/edit?usp=sharing
3 | Einrichten der Arbeitsumgebung |