HHVM, Hack, PHP-Spezifikation: Kann man Facebook wirklich über den Weg trauen?
Kommentare

Wie ernst meint es Facebook mit der Unterstützung der PHP Community? Das ist die große Frage, die vielen auf den Nägeln brennt, nachdem der Social-Media-Riese eine formale Spezifikation für PHP auf

Wie ernst meint es Facebook mit der Unterstützung der PHP Community? Das ist die große Frage, die vielen auf den Nägeln brennt, nachdem der Social-Media-Riese eine formale Spezifikation für PHP auf den Weg gebracht hat. „Ich [freue] mich sehr darüber. Auch wenn ich noch nicht weiß, warum Facebook das wirklich getan hat.“, schreibt beispielsweise PHPUnit-Erfinder Sebastian Bergmann in einem aktuellen Artikel. Kann man Facebook wirklich über den Weg trauen?

Spec First oder Code First?

Was in Sprachen wie C, C++, C#, Java, JavaScript zur Normalität gehört – nämlich neben der Runtime-Umgebung bzw. Implementierung der Sprache auch eine schriftliche Spezifikation vorzulegen -, war in den letzten 19 Jahren der Existenz von PHP schlicht nicht vorhanden.

Als Facebook dann auf der letzten OSCON sein Spezifikationsvorhaben für PHP ankündigte, schwenkte die Stimmung zwischen Staunen und Unglauben. Doch stand Facebook zu seinem Wort, legte den ersten Entwurf der Spec vor und sorgte damit für Freude im PHP-Lager. Schnell bildete sich eine Gruppe an Mitstreitern, die auch bereits erste Verbesserungen auf den Weg gebracht hat. Beispielsweise wurde das ursprünglich monolithisch vorliegende Spezifikationsdokument in besser verdauliche thematische Kapitel unterteilt.

Wie allerdings Spezifikation und Referenzimplementierung zusammenhängen sollten, wurde noch nicht genau ausdiskutiert. Aus anderen Sprach-Communitys ist der Spec-First-Ansatz bekannt: Etwa wurden in Java viele Spracherweiterungen und Standards zunächst auf dem Reißbrett entworfen und diskutiert, und zwar im Rahmen des Spezifizierungsgremiums JCP (Java Community Process), um dann in funktionierenden Code umgesetzt zu werden.

In PHP gilt traditionell das Prinzip „Code first„. Den Ton gibt die Implementierung in Form der Zend Engine an. Erst seit relativ kurzer Zeit, nämlich etwa seit 2008, gibt es überhaupt so etwas wie einen formalen Prozess, Spracherweiterungen über RFCs-Papiere von einer heterogen zusammengesetzten PHP-Kerngruppe beschließen zu lassen.

Spec First oder Code First – hatten wir Euch deshalb in einem Quickvote gefragt. Hier das Ergebnis:

Euer Votum fällt also deutlich zugunsten des „Spec First“-Ansatzes aus. Doch ist dieser realistisch?

Exkurs: Java

Wieder der Vergleich zu Java. Allgemeine Software-Probleme im Java Community Process zu diskutieren und in eine Standard-Lösung zu überführen, mit der alle Parteien zufrieden sind, gestaltete sich hier nicht immer einfach. Genauso erschwerten divergierende Unternehmens-Interessen den Prozess wie die Schwierigkeit von Sun, die Kontrolle abzugeben und wirklich demokratische Entscheidungen zuzulassen.

Insbesondere die Test-Suiten (Javas TCKs = Technology Compatibility Kits)), mit denen eine Implementierung auf Konformität zur Spezifikation überprüft werden kann, sind bis heute an Lizenz-Bedingungen gebunden. Die alternative Java-Implementierung Apache Harmony musste deshalb die Segel streichen, da sie ohne Lizenz-Zahlungen auskommen wollte, und auch die Klage des neuen Java-Hüters Oracle gegen Google wegen der Java-Nutzung in Android geht auf diese Lizenz-Problematik zurück.

Lessons learned

Am Beispiel Java sieht man zwei Dinge:

1.) Es ist nicht trivial, die unterschiedlichen Interessen in einem Spezifizierungsprozess auszugleichen, ohne dass die Ergebnisse aus einem fahlen Kompromiss bestehen. Gibt es eine tonangebende Partei, die die Richtung vorgibt – wie bei Java derzeit Oracle -, sind Lösungen kohärenter und auch schneller zu erreichen.

2.) Der Spec-First-Ansatz hat in der Java-Welt auch zu Spezifikationen geführt, die sich in der Praxis nicht bewähren konnten. Um die Gefahr einer „verfrühten Spezifizierung“ zu bannen, ist man bei Oracle eher wieder zu einer Code-First-Mentalität zurückgekehrt. Standardisiert wird das, was sich in der Praxis bewährt hat. Spezifikation und Referenzimplementierung gehen deshalb meist Hand in Hand.

Und PHP?

Was das für die PHP-Welt bedeutet?

Zunächst einmal scheint Sarah Golemon von Facebook die PHP-Spezifikation ebenfalls als Dokument zu sehen, das zumindest langfristig gleichzeitig mit der Implementierung aktualisiert wird. Auf der Mailing-Liste schreibt sie:

In the long term, this document will be developed alongside the PHP implementation to document new syntax in a formal manner, such as the recent addition of the pow operator, variadics, and splat.

Der zweite spannende Punkt betrifft das Kräfteverhältnis in der PHP-Core-Gruppe. Hier stellt Zend sicherlich eine der stärksten Fraktionen, die derzeit mit dem PHPNG-Projekt – der nächsten Generation einer PHP Engine -, die Richtung der nächsten PHP-Version 7 bestimmen will. Darüber, dass der Quasi-Alleingang Zends bei anderen Core-Mitgliedern nicht unbedingt Beifall erntet, haben wir berichtet (siehe: Zoff um die Zukunft von PHP: HHVM versus PHPNG). Wird sich Zend in der Zukunft „herablassen“, Spezifikationen von PHP-Neuerungen vorab mit anderen Mitgliedern zu diskutieren?

Der „Alleingang-Mentalität“ von Zend ist es wohl auch geschuldet, dass Zend es für möglich hält, PHP 7 innerhalb eines Jahres zu verabschieden. Nicht-Zend-Entwickler sehen noch erheblichen Diskussionsbedarf, was die Ausgestaltung von PHP 7 anbelangt.

Wie heißt es so schön in einem afrikanischen Sprichwort: Willst du schnell ans Ziel kommen, gehe alleine. Willst du weit kommen, gehe in der Gruppe.

Und Facebook?

Was Facebook mit der Spezifikation will, liegt auf der Hand. Es wird so einfacher, alternative PHP-Implementierungen wie Facebooks HHVM auf Konformität zu PHP zu überprüfen. Wie Sebastian Bergmann schön in seinem Artikel herausarbeitet, hatte das IBM früher bereits mit seinem „Project Zero“ versucht, dem PHP-to-Java-Bytecode-Compiler, indem IBM auf eigene Faust zahllose Tests für den PHP-Interpreter geschrieben hat. Facebook liefert jetzt die Tests zur Spezifikation gleich mit.

Wir teilen die Freude Sebastian Bergmanns darüber, wie Facebook mit Projekten wie HHVM, Hack und die PHP-Spezifikation die PHP-Szene aufrollt und damit Innovationen ermöglicht. Warum Facebook das getan hat, ist uns aber klar: Kann sich HHVM ganz offiziell als 100% PHP-konform bezeichnen, steht es auf einer Stufe mit der Zend Engine. Das Rennen wäre eröffnet. Und vermutlich wird Facebook, anstatt sich auf die langen Diskussionen in der PHP-Core-Gruppe einzulassen, lieber Hack weiterentwickeln, so wie es den eigenen Bedürfnissen besser entspricht. Altruismus ist in der IT-Branche ein allzu rares Pflänzchen.

Die Frage lautet aber: Was gewänne Facebook eigentlich, wenn HHVM die Zend Engine als populärste PHP Engine ablösen würde?

Darauf haben auch wir keine Antwort.

Aufmacherbild: Hand Shaped mouse Cursor thumb up like facebook von Shutterstock / Urheberrecht: Sarawut Aiemsinsuk

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -