Das Symfony-Framework

Inzwischen basieren die meisten unserer Projekte auf Symfony. Symfony stellt eine Reihe von Komponenten zur vereinfachten Entwicklung von Websites und -Applikationen zur Verfügung. Dazu gehören Komponenten zur Verarbeitung von Formulareingaben, Entwicklung von HTML-Templates oder zum Aufbau von Benutzer-Rechtesystemen innerhalb einer Anwendung.

Darüber hinaus schlägt Symfony als Framework eine Basisstruktur und „best practices“ vor, wie Websites und Webapplikationen aufgebaut und strukturiert werden sollten. Damit wird eine gewisse Einheitlichkeit verschiedener Symfony-basierter Projekte erzielt. Neben einer verkürzten Einarbeitungszeit wird es damit auch möglich, Funktionalität in Form von sog. „Bundles“ relativ einfach zwischen Projekten zu übertragen und wiederzuverwenden.

Die Bundles von Drittanbietern (z. B. zum vereinfachten Datenbankzugriff oder zur Migration von Datenbankstrukturen) stellen daher weitere wichtige Bausteine für aktuelle Websites und Webanwendungen dar.

Der Symfony Release-Zyklus

Im Oktober 2012 wurde der Symfony Release Prozess bekannt gegeben. Dieser sieht vor, dass im Mai und November eines jeden Jahres jeweils eine neue Version von Symfony veröffentlicht wird.

„Standard“-Versionen werden ab Veröffentlichung für 8 Monate mit Fehlerkorrekturen versorgt; sichheitsrelevante Fehler werden für 14 Monate beseitigt.

Alle zwei Jahre erscheint eine sog. „Long Term Support“ (LTS) Version. Diese Version wird für drei Jahre mit allen notwendigen Fehlerkorrekturen und für vier Jahre mit Korrekturen für sicherheitsrelevante Fehler versorgt.

Die erste „LTS“-Version war Symfony 2.3 im Mai 2013. Symfony 2.7 als nächste LTS-Version erscheint im Laufe des Monats. Außerdem wird Symfony 2.8 im November 2015 eine gesonderte LTS-Version sein.

Die LTS-Versionen eignen sich gut für Anwendungen, die nicht direkt auf den neuesten Funktionsumfang angewiesen sind. Dafür gibt es einen längeren Zeitraum der Unterstützung sowie ein Zeitfenster von einem Jahr, um von einem LTS-Release auf das nächste zu aktualisieren.

Das Symfony Stabilitätsversprechen

Beginnend mit der Version 2.3 wurde vom Symfony-Projekt ein Stabilitätsversprechen abgegeben. Dieses Versprechen erklärt die einfache Aktualisierung auf neue Symfony-Versionen zum wichtigsten Ziel des Symfony-Projekts. Die Entwicklung neuer Funktionalität wird im Zweifel dagegen zurückgestellt.

Diese Rückwärtskompatibilität bedeutet nicht, dass ein Umstieg auf eine neue Version komplett transparent, d. h. ohne Anpassungen oder das Risiko von neu auftretenden Fehlern, möglich ist. Offensichtlich würde eine absolute Sicherheit jegliche Art von Änderung verbieten.

Es wird aber gewährleistet, dass die notwendigen Anpassungen umfassend dokumentiert und jeweils sehr einfach sind, zumindest solange die von Symfony vorgeschlagenen Rahmenbedingungen (vgl. Einleitung) eingehalten werden.

Empfehlung: Frühe Updates auf alle LTS-Versionen

Die meisten Projekte sind nicht darauf angewiesen, sofort die neueste Symfony-Funktionalität nutzen zu können. Da die "Standard"-Versionen häufig erscheinen und dementsprechend nur kurze Zeit mit Updates versorgt werden, würde eine Nutzung dieser Versionen einen relativ hohen Aufwand für Updates nach sich ziehen. In der Regel empfiehlt sich daher die Nutzung der LTS-Versionen.

Bei Erscheinen einer neuen LTS-Version ist es sinnvoll, früh auf diese Version upzugraden. Je eher das Update erfolgt, desto länger kann das Projekt den Nutzen der Version genießen. Ein Update nur als Selbstzweck durchzuführen, wenn nicht gleichzeitig Weiterentwicklungsarbeiten im Projekt geplant sind, ist allerdings nur in Ausnahmefällen sinnvoll.

Sobald Weiterentwicklungsarbeiten geplant werden, sollte als erster Schritt das Upgrade auf die jeweils aktuelle LTS-Version erfolgen. Damit erreicht man nicht nur, dass die neu entwickelten Features den Funktionsumfang der aktuellen LTS-Version nutzen können. Wichtiger noch: Features, die nicht auf Basis der aktuellen LTS-Version entwickelt werden, müssen bei einem später erfolgenden Update auf diese Version eventuell direkt wieder angepasst werden. Hierdurch entstehen leicht unnötige Kosten.

Durch das regelmäßige Upgrade auf LTS-Versionen ist zudem sichergestellt, dass immer ein offizieller Support, Fehleraktualisierungen und Sicherheitsupdates genutzt werden können. Außerdem erfordern „Bundles“ von Drittanbietern mitunter relativ aktuelle Symfony-Versionen.

Die nächsten angekündigten LTS-Versionen von Symfony sind Symfony 2.7 (Ende Mai 2015) und Symfony 2.8 (November 2015).

Übrigens bringt das Überspringen einer LTS-Version hinsichtlich des Updateaufwands keinen Vorteil: Ein direkter Umstieg von 2.3 auf z. B. 2.8 macht – von Test-/QS-Arbeiten abgesehen – hinsichtlich des Aufwands keinen Unterschied zu einem Weg von 2.3 auf 2.7 und dann von dort getrennt zu 2.8.

Wir freuen uns über Feedback und Diskussionen via @mpdude_de oder @webfactory!