Cover

Inhalt

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

Die Autoren:

David Jardin, Köln, d.jardin@djumla.de
Elisa Foltyn, Nürnberg, book@coolcat-creations.com

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 Markenschutz­Gesetzgebung 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.

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

Image

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).

Image

Bild 2.1 Neue Organisationstruktur des Joomla!-Projekts

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:

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.

Image

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:

  1. 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.

  2. 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.

  3. 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