Facebook
Twitter
Google+
Kommentare
16

Symfony2 … (jetzt) eine gute Wahl?

Man steht ja immer mal wieder vor einer großen Entscheidung. Jeder von uns, ob Management oder „einfacher“ Entwickler kennt die Situation. Und sicherlich ist auch ein Architekt nicht vor so etwas gefeit. Nehmen wir also an, man liebäugelt mit der Entscheidung, auf Symfony2 zu setzen für kommende Projekte. Kann man ja machen, aber ist das jetzt schon eine gute Idee?

Fangen wir mal an die Fakten zusammenzuschreiben. Symfony2 wird dieses Jahr noch released. Ok, das ist hoffentlich ein Fakt. Man weiß ja nie. Laut ein paar Kernentwicklern stehen die meisten Konzepte schon ziemlich fest. Einige Konzepte haben sich seit Symfony 1.4 geändert. Das System ist schnell, schlank und modern aufgebaut. Die existierende Dokumentation ist mies. Doctrine2, welches auch genutzt werden soll ist noch nicht ganz final.

Ich glaub das war’s erstmal. Zumindest das Wissen, das ich besitze kompakt in ein paar Sätzen. So jetzt spekulieren wir mal. Skizzieren wir den besten Fall, dass alle Konzepte im Kopf von Fabien Potencier klar sind und auch umgesetzt sind in den nächsten Tagen. Doctrine2 ist auch am Start. Das kann ja alles sekündlich passieren. Wo ich aber wirklich Bauchschmerzen habe sind die fehlende Dokumentation und die nicht vorhandenen Best Practices.

Ich habe vor ein paar Wochen mit Symfony2 rumgespielt und eigentlich alles hinbekommen, was ich wollte. Das dumme ist nur, dass ich keine Ahnung habe, ob es wirklich der neue Symfony Weg ist. Ok, man könnte sagen, es ist wie beim Sport: Wer trifft hat Recht. Somit wäre jede Lösung ok. Aber irgendwie gefällt mir das nicht. Aus Versehen am Framework vorbeiarbeiten haben wir einmal gemacht und dieses Projekt war danach nicht mehr updatefähig und tümpelt jetzt immer noch in einer Symfony1.0 Version vor sich rum.

Ich hatte ja mal einen Artikel über „Don’t fight the framework“ geschrieben. Symfony2 ist also deshalb schon keine gute Idee im Moment, da man keine Ahnung hat, ob man gerade das Framework bekämpft oder nicht. Versteht mich aber bitte nicht falsch. Symfony2 wird an dem Tag, an dem es final und dokumentiert ist bestimmt eines der besten auf dem Markt erhältlichen Plattformen sein und es ist sicherlich auch keine dumme Idee sich jetzt mit dem Thema zu beschäftigen. Aber produktiv die Software einsetzten? Ich weiß ja nicht. Ich würde es noch nicht machen. Alles was ich damit derzeit baue hat immer eine kleine Notiz dabei „kann sein, dass es weggeworfen wird“.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

16 Comments

  1. Wenn man sowieso z.B. Doctrine ODM in Verbindung mit MongoDB nutzen möchte, ist Symfony2 heute schon unschlagbar – ist alles richtig gut integriert und die Twig-Integration finde ich auch gut. Aber das mit der Doku und den vielen nicht-backwards-kompatiblen Änderungen stimmt schon. Für wichtige Projekte noch zu früh.. in 3-4 Monaten wirds richtig rocken. Wird ein spannendes PHP-Framework-Jahr!!

    Reply
  2. Es ist zur Zeit schwer, wenn man ein neues Projekt startet und mit einen Framework arbeiten will, da eine Entscheidung zu treffen was man benutzen will/kann. ZF2 ist keine Option, Symfony2 hat die bereits genannten Maengel bei der Doku, Symfony1+Doctrine2 auch nicht der Brueller und Zend+Doctrine2 waere auch nur eine Notloesung da Zend doch irgendwo „veraltet“ ist. Wenn man zukunftsorientiert entscheidet ist Symfony2 die beste Wahl.

    Reply
  3. Ich musste mich vor kurzem für ein kommendes Projekt (ab Mitte 2011) für ein Framework entscheiden. Zur Auswahl standen letztlich nur Symfony 2 und Zend Framework 2. Meine Wahl fiel eindeutig auf das Zend Framework 2. Was dort momentan alles umgestellt und erweitert bzw. verbessert wird, ist absolut fantastisch. Ich find’s toll, dass sich Zend der großen Probleme angenommen hat. Vor allem, was Performance, Erweiterbarkeit, Einfachheit und Einheitlichkeit angeht.

    Für strategische Entscheidungen war auch die Frage wichtig, ob nur Community-betrieben oder gemischt (Firma + Community). Dass Zend mitmischt, stellt sicher, dass das Projekt weiter vorangetrieben wird. Es gibt regelmäßige Release-Zyklen, sehr gute Dokumentation und viele Best Practice Anleitungen. Die sehr gute und immer größer werdende Klassenbibliothek war ein weiterer Grund für ZF.

    Symfony 2 werde ich gelegentlich für private Projekte nutzen. Symfony hat seinen eigenen Charme, hinkt meiner Meinung aber beim Einsatz für Enterprise-Anwendungen hinterher. Toll sind die Möglichkeiten, CLI-Skripte zu schreiben, was im ZF hoffentlich bald auch umgesetzt wird.

    Reply
  4. Ich habe mir auch vor kurzem Symfony2 angeschaut und kam zu ähnlichen Schlüssen – vor allem die Doku ist noch sehr mangelhaft, was bei Version 1 ja eigentlich immer das Aushängeschild dieses Frameworks war. Nun gut, wer mit dem Zend Framework arbeitet, ist Kummer bei der Doku natürlich gewohnt 😉

    Jedenfalls werde ich, so schick ich Symfony 2 auch finde, wohl noch eine Weile warten, bis das ganze etwas stabiler und die Doku besser ist. Bei den Projekten, die ich in der Regel mache (weniger Websites, mehr Applikationen mit wenigen Entry-Points und um so mehr AJAX) ist das Framework ohnehin eher zweitrangig – die interessanten Dinge spielen sich fein säuberlich gekapselt in Models oder Komponenten-Bibliotheken ab.

    Reply
  5. Ich denke auch es ist zu früh um jetzt schon was damit an zu fangen. Aber man kann es einplanen für Entwicklungen ab Q2 diesen Jahres.
    Derzeit werden wirklich ab und an dort noch ganze APIs und Namespaces geändert.

    Daher warte ich auch auf das finale Release bevor ich damit irgendetwas mache, die Previews zeigen mir wo der Weg hingeht, aber es tut sich doch zu viel um jetzt schon produktiv darauf zu setzen. Auch brauch ich mir jetzt nix einprägen was sich noch erheblich ändern könnte, und wenn die Doku da ist wird die Einarbeitung auch so viel einfacher.

    Fabien warnt ja selbst davor daß sich noch einiges erheblich ändern kann.

    Wenn es rauskommt und dann so gut dokumentiert ist wie symfony 1 dann wird es sowas von rocken.

    @Rene: Bei Symfony ist Sensio im Boot, auf die ist auch mehr Verlass als auf Zend, die doch alle Arbeit der Community überlassen und nur ihren Namen drauf schreiben wollen.

    Reply
  6. @Jan Markmann

    > Bei Symfony ist Sensio im Boot, auf die ist auch mehr Verlass als
    > auf Zend, die doch alle Arbeit der Community überlassen und nur
    > ihren Namen drauf schreiben wollen.

    Wie kommst du zu dieser Behauptung, dass die Firma Zend die ganze Arbeit der Community überlassen würde? Ein paar Links zu handfesten Fakten würden mir schon reichen… 😉

    Ansonsten kann ich im Wesentlichen nur zustimmen. Sowohl Symfony 2 als auch ZF 2 müssen sich noch ein wenig die Hörner abstossen. Vor allem das ZF 2 wird noch einige Monate brauchen…

    Reply
  7. Ich finde Symfony2 auch sehr interessant. Leider fehlt, wie schon mehrfach erwähnt jegliche Einleitung/Dokumentation. Wovor ich allerdings Angst habe ist die Problematik, Updates/Upgrades. Sensio/Symfony hat sich da ja bis jetzt nicht sehr mit Ruhm bekleckert. Das Upgrade von 1.0 auf 1.1 hat bei uns in der Firma auch nach 5 Anläufen nicht geklappt.
    Jetzt stehen wir immer noch auf dem alten Stand.
    Jetzt befürchte ich, dass das wieder so geht. Selbst wenn wir jetzt auf Symfony2 umsteigen würden.
    Die angesprochnen API-Änderungen machen mir da keine guten Hoffnungen.

    Reply
  8. So, mal ein paar Praxiserfahrungen von mir.

    Ich habe es gewagt, mit Symfony2 ein neues Projekt zu schreiben. Das Projekt ist sehr komplex, es gibt verschiedene Benutzerrollen, etliche Tabellen, die in Relation miteinander stehen und seeeehr viele Controller und noch mehr Templates. Außerdem nutzen die Templates Widgets (nenne ich jetzt mal so)
    Symfony2 ist das erste fertige Framework, das ich nutze. Davor habe ich mit meinem eigenen entwickelt.

    Was mir aufgefallen ist
    – Symfony2 erleichtert dank Doctrine den Zugriff auf Datenbanken
    – Twig ist genial
    – Es gibt für alles erdenkliche Events, wo man sich einhängen kann
    – Die Konsole ist nice 🙂

    Negativ:
    – Die Doku ist beschissen. Sorry, aber anders kann man es nicht sagen. Wie oft habe ich mich schon dabei erwischt, den Code von SF2 zu durchsuchen, um herauszufinden, was ein bestimmtes Interfaces macht, welche Parameter erwartet werden und was wann in welcher Reihenfolge ausgeführt wird?
    – Die Formularklasse ist meiner Meinung nach nicht optimal umgesetzt. Das Einfügen von Validatoren ist sehr kompliziert, solange man nicht mit Entitäten von Doctrine arbeitet.
    Aktuell suche ich eine Möglichkeit, eine hochgeladene Datei zu validieren, erhalte dabei jedoch ständig SF2-Fehlermeldungen, die Google nicht kennt.

    Allgemein habe ich den Eindruck, dass ich mit vielen Problemen allein bin. Egal, nach was man googelt, nie findet man wirklich viel zum Thema. Und wenn, dann nur auf Englisch.

    Wer kein Englisch kann, sollte es direkt bleiben lassen.

    Im SF2-Forum bekommt man jedoch meist nach ein paar Stunden eine Antwort und ist somit mit seinen Problemen nicht ganz allein.

    Hätte ich vorher gewusst, wie es um die Dokumentation von SF2 steht, hätte ich es nicht genutzt. Doch jetzt ist das Projekt zu etwa 60% fertig und eine Neuentwicklung in Zend / Kohana / whatever wäre zeitlich nicht drin.

    Meine Hoffnung besteht jetzt darin, dass ich die restlichen Komponenten noch mit Google und dem SF2-Forum hinbekomme oder dass die Doku besser wird 🙂

    Bin ich der Einzige mit diesen Erfahrungen?

    Reply
  9. Achja: Die meisten kostenlos erhältlichen Bundles sind Schrott. Die Doku ist noch schlechter als die von Doctrine und man bekommt die Dinger nicht zum Laufen.

    Vielleicht wäre Zend doch die bessere Wahl gewesen…

    Reply
  10. @Simon: Schön, dass Du mal ein paar Erfahrungen mitteilst. SF2 ist ja nun schon ne Weile released worden. Schade, dass sich da bzgl. Doku nicht viel verbessert hat.

    Wir von foobugs wollten kürzlich auch mal nen SF2-Projekt starten und sind schon beim Setup verzweifelt. Lag daran, dass wir es möglichst individuell und nach unseren Vorstellungen installieren wollten, ohne die ganzen externen, abhängigen Module, die wir teilweise nicht brauchen. Und ist es innerhalb von 30 min. nicht gelungen, wir haben dann doch den Default-Installer genommen. Individuelle Konfigurationen machten auch Probleme, vor allem, wenn man komplett auf YAML verzichten will. Irgendwann haben wir es dann sein gelassen. Wir werden zukünftig mehr mit dem Zend Framework machen.

    Fazit: Symfony 2 ist okay und eine gelungenes PHP-Framework. Jedoch kann ich es nur für den privaten Einsatz empfehlen. Für komplexere Business-Zwecke sollte man das Zend Framework einsetzen.

    Reply
  11. @René: Leider muss ich dir da widersprechen. Wir setzen Symfony2 jetzt für alle unsere Projekte in und sind sehr zufrieden. Das es auch für Hochlastwebseiten geeignet ist sieht man daran, dass z.B. wetter.com und youporn.com auf sf2 aufsetzen. Bald kommen stern.de und ftd.de dazu.

    Wir sind begeistert.

    Reply
  12. @Nils: Ich weiß, dass SF2 für diverse größeren Webseiten eingesetzt wird. Es ging mir bei meiner Schlussfolgerung nicht um „hochlast-fähig“ oder nicht. Prinzipiell kann man jedes Framework hochlast-fähig machen, ist nur ne Frage des Aufwands. Es gibt viele andere Faktoren, die in einem Business eine wichtige Rolle spielen. Sowohl technische als auch wirtschaftliche.

    Bsp: Technisch war für mich der initiale Aufwand beim Setup zu hoch und konnte nicht nach unseren Bedürfnissen umgesetzt werden. So ein Aufwand betreibt man nicht regelmäßig, aber er hinterlässt einen ersten Eindruck. Dass dieser bei der Anpassung der Konfiguration nicht verbessert wurde, kam als weiterer Kritikpunkt hinzu. Wir sind keine SF2-Profis, aber definitiv in Sachen PHP absolut fit und haben ganz konkrete Anforderungen und Vorstellungen von dem, was ein Framework uns liefern soll.

    Kurz gesagt: Wieviel Aufwand muss man investieren, um mit Framework X ans Ziel zu kommen? Bei SF2 muss man viel im Quellcode lesen und debuggen, weil entsprechende Doku fehlte. Für bestimmte Dinge (z.B. SOAP, LDAP) muss man Teile eines anderen Frameworks nehmen (z.B. Zend Framework), weil die in SF2 schlicht nicht vorhanden sind (auch nicht als Bundle). Und selbst entwickeln will man sowas nicht.

    Hinzu kommt auch noch die Frage, wie schnell mein Team skalieren kann, wenn mein Produkt gut läuft und weiter entwickelt werden muss. Und da bestätigt Ralf meine Erfahrungen. Entwickler für Symfony sind spärlicher gesäht als für das Zend Framework. Prinzipiell sollte sich jeder gute PHP-Entwickler für jedes Framework entwickeln können. Aber als Firma spart es Zeit, wenn gewisse Grundlagen vorhanden sind und schnell mit der Entwicklung begonnen werden kann.

    Ich will SF2 nicht schlecht machen, genauso will ich ZF1/2 nicht in den Himmel loben. Beide haben ihre Vor- und Nachteile. Mit beiden kann man sehr gute Anwendungen entwickeln. Nur braucht man mit dem einen Framework eventuell länger als mit dem anderen. Ich freue mich auf jeden Fall zu wissen, dass die SF- als auf ZF-Entwickler zukünftig enger zusammen arbeiten wollen, um Best Practices standardisiert umsetzen zu wollen.

    PS: Beim ZF2 merkt man sehr deutlich, dass Zend dahinter steckt. Bei Nutzung weiterer Zend-Produkte (wie z.B. Zend Studio, Zend Server) bemerkt man die sehr gute Integration. Ja, diese Produkte kosten Geld, machen aber in größeren Anwendungsumgebungen auf jeden Fall Sinn, weil sich die Kosten recht schnell amortisieren.

    Reply
  13. Mein letzter Kommentar zu diesem Post ist ja länger als ein Jahr her und ob der jüngsten Aktivität hier erscheint es mir sinnvoll, hier nochmal ein Update zu hinterlassen, denn meine Meinung von damals hat sich inzwischen deutlich geändert (was interessiert mich auch meine Meinung von Gestern – hach, ich hätte doch Politiker werden sollen :-)).

    Was mich nämlich bei den jüngsten Kommentaren gewundert hat, ist die Beschwerde über die immer noch unzureichende Doku. Während ich im Januar 2011 noch zugestimmt hätte, kann ich das inzwischen nicht mehr nachvollziehen. Die Einführungstutorials sind super und für alles weitere ist ein Handbuch mit rund 700 Seiten verfügbar, das auch als PDF zum Offline lesen runtergeladen werden kann. Dieses ist qualitativ durchaus mit der exzellenten Doku von Symfony 1.x vergleichbar und besser als alles, was Zend in dieser Hinsicht je produziert hat.

    Auch das Setup hat sich erheblich verbessert: Einmal git clone in ein Verzeichnis meiner Wahl, und schwupp, es läuft alles. Okay, ggf. muß ich bei bestimmten Verzeichnissen noch die Schreibrechte einrichten – aber das sagt mir das mitgelieferte Skript zum Check der Installation auch sofort. Also bequemer geht es eigentlich kaum.

    Alle Standardaufgaben, sei es Verwaltung von Datenbankschemata, Einspielen von Testdaten, Caching, Authentisierung, Benutzerrollen, etc.pp. sind out-of-the-box sofort gelöst und erfordern zu großen Teilen nicht mal Code, sondern lediglich einfache Annotations und ein Paar Einträge in Konfigurationsdateien. Mit Zend Framework brauche ich erheblich länger und muß viel mehr Code schreiben, um die gleichen Funktionalitäten abzubilden (mal ganz davon abgesehen, daß der Datenbanklayer vom ZF immer noch die mieseste Grütze unter der Sonne ist :-)).

    Die genannten Komponenten, die in Symfony nicht vorhanden sind, sind auch kein Problem. Was gebraucht wird ist da und mal ganz ehrlich: Die Sachen, die in Zend vorhanden sind, in Symfony aber nicht, sind entweder dort schlecht umgesetzt (PDF) oder überflüssig, weil im PHP-Core enthalten (SOAP).

    Insofern – ginge es nach mir, würde ich lieber heute als morgen auf Symfony 2 umsteigen. Leider scheitert das derzeit noch daran, daß bei meinen Kunden aktuell überall Zend Framework im Einsatz ist. Daher wird’s wohl erstmal bei kleinen Seitenprojekten bleiben.

    Reply
  14. @Markus: Handbuch mit 700 Seiten? Wo gibt es das? Wenn da wirklich alles gut erklärt wird, ändert das meine Meinung.

    @Nils: Du kennst Dich nicht zufällig mit dem ImageValidator aus und weißt, wie man ein Formular dazu bewegen kann, den zu benutzen? Die Doku hilft mir da nicht weiter. (Oder ich habe die richtige Stelle noch nicht gefunden)

    Hat sich eigentlich jemand ein Buch zum Framework gekauft? Gibt es da Empfehlungen?
    An sich gefällt mir SF2 schon, nur die Dokumentation steht dem reibungslosen Einsatz im Wege.

    Reply
  15. @Simon Okay, das mit den 700 Seiten bezog sich wohl auf „inklusive Übersetzungen“ oder so – hatte die Zahl noch so von irgendwoher im Kopf, weiß aber nicht mehr, woher ich sie hatte. Tatsächlich sind es 215 Seiten (auch schon okay) und geben tut’s das hier:

    http://symfony.com/doc/current/book/index.html

    Zusätzlich gibt’s noch ein Cookbook mit allerhand Fertiglösungen für jede Menge Standardsituationen, eine API-Doku uvm.:

    http://symfony.com/doc/current/index.html

    Also auch wenn es keine 700 Seiten sind, ist es ne Menge. Und, wie gesagt, die Zend Doku sieht dagegen eher alt aus, das wäre also kein Pro-Zend-Argument.

    Reply
  16. Ah, jetzt hab ich die PDF gefunden 🙂 Danke!
    Aber leider finde ich da auch keine Antwort auf mein Problem.

    Zend ist also noch schlechter dokumentiert? Gut… Dann bin ich froh, mich für Symfony entschieden zu haben!

    Meine Frage wandert dann mal wieder ins Forum… 🙂

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen