PHP-RFCs sind der Ort, an dem neue Sprachelemente, Verhaltensänderungen und auch Projektregeln ihren formellen Weg in das PHP-Ökosystem finden. Wer PHP produktiv betreibt, sollte diesen Prozess kennen, weil dort früh sichtbar wird, was im nächsten Release relevant werden kann. Ich zeige hier, wie der Ablauf funktioniert, wie ich Vorschläge bewerte und worauf Teams bei Upgrades achten sollten.
Die wichtigsten Punkte auf einen Blick
- PHP-RFCs sind formale Vorschläge für Änderungen an Sprache, Verhalten oder Projektregeln.
- Für sprachnahe Vorschläge gilt in der Regel eine mindestens zweiwöchige Diskussionsphase vor der Abstimmung.
- Die Hauptabstimmung braucht 2/3 Zustimmung; Nebenfragen dienen oft nur der Ausgestaltung.
- Für Entwickler ist nicht nur das Ergebnis wichtig, sondern auch BC-Risiko, Migrationsaufwand und Zielversion.
- Wer RFCs früh liest, erkennt kommende Änderungen oft vor den üblichen Upgrade-Notizen.
Was ein PHP-RFC in der Praxis bedeutet
Ein RFC ist im PHP-Kontext kein loses Brainstorming, sondern ein strukturierter Vorschlag, der von der Community diskutiert und am Ende angenommen oder abgelehnt wird. Für mich ist das der wichtigste Unterschied: Hier geht es nicht um Ideen im luftleeren Raum, sondern um konkrete Änderungen, die später Code, Verhalten oder sogar Projektprozesse betreffen können.
Das Spektrum ist breit. Ein RFC kann eine neue Sprachfunktion einführen, ein bestehendes Verhalten präzisieren, eine veraltete Schnittstelle ablösen oder auch Regeln für das Projekt selbst ändern. Gerade deshalb lohnt sich der Blick auf RFCs auch dann, wenn man nicht am Core mitarbeitet. Wer Anwendungen, Frameworks oder Plattformen betreut, erkennt darüber früh, ob eine Änderung nur akademisch klingt oder echte Auswirkungen auf den eigenen Stack hat.
Ich trenne RFCs gedanklich immer in drei Fragen: Was ändert sich? Wen trifft es? Wie teuer ist die Umstellung? Genau diese Reihenfolge hilft, das Signal vom Lärm zu trennen. Und wenn diese Einordnung sitzt, ist der nächste Schritt der eigentliche Ablauf des Verfahrens.

So läuft ein RFC vom Entwurf bis zur Entscheidung
Die offizielle PHP-Wiki-Dokumentation beschreibt den Weg recht klar: Ein Vorschlag beginnt als Entwurf auf dem Wiki, wird auf der Internals-Liste angekündigt, diskutiert und später zur Abstimmung gestellt. Für sprachnahe Änderungen sind dabei mindestens zwei Wochen Diskussion vorgesehen, andere Vorschläge brauchen mindestens eine Woche. Die Abstimmung selbst läuft ebenfalls mindestens zwei Wochen.
Das wirkt formell, ist aber sinnvoll. Ein gutes RFC lebt nicht davon, schnell durchgewunken zu werden, sondern davon, dass offene Fragen sichtbar werden, bevor sie sich später in Bugs, Missverständnissen oder unnötigen BC-Brüchen rächen.
| Phase | Was passiert | Was ich prüfe |
|---|---|---|
| Entwurf | Der Vorschlag wird im Wiki angelegt. | Ist das Problem sauber beschrieben oder nur die Lösung? |
| Diskussion | Die Community kommentiert, kritisiert und verbessert den Text. | Sind die Gegenargumente ernsthaft adressiert? |
| Abstimmung | Ein eigener [VOTE]-Thread startet, die Wahl ist befristet. | Ist klar, worüber genau abgestimmt wird? |
| Ergebnis | Accepted, Declined oder zurück in die Diskussion. | Ist das Ergebnis wirklich final oder nur vorläufig? |
| Implementierung | Patch, Doku und Zielversion werden ergänzt. | Ab wann ist die Änderung tatsächlich verfügbar? |
Die Hauptabstimmung verlangt eine 2/3-Mehrheit. Das ist wichtig, weil viele Leser automatisch von einer einfachen Mehrheit ausgehen. Bei PHP ist die Hürde für zentrale Änderungen bewusst höher gesetzt. Genau diese Schwelle macht den Prozess robust, aber sie erklärt auch, warum nicht jede gute Idee sofort landet.
Wenn man den Ablauf versteht, liest man RFCs automatisch sachlicher. Die spannendere Frage ist dann nicht mehr, ob überhaupt abgestimmt wird, sondern welche Art von Änderung vor einem liegt.
Welche RFCs für Entwickler besonders wichtig sind
Nicht jedes RFC hat denselben Einfluss auf den Alltag. Manche Vorschläge betreffen vor allem das Projekt selbst, andere verändern direkt die Art, wie Anwendungen geschrieben, getestet oder migriert werden. Ich sortiere sie gern nach ihrer praktischen Tragweite.
| Typ | Worum es geht | Typische Auswirkung |
|---|---|---|
| Feature-RFC | Neue Sprachelemente, neue Funktionen, neue Möglichkeiten im Core. | Mehr Ausdruckskraft, aber oft auch Anpassungen in Codebeispielen, Lintern und Tests. |
| Verhaltens- oder BC-RFC | Bestehende Funktionen werden strenger, präziser oder anders interpretiert. | Bestehender Code kann Warnungen, Fehler oder andere Ergebnisse liefern. |
| Deprecation- oder Removal-RFC | Alte Funktionen werden zurückgebaut oder entfernt. | Migrationsarbeit, besonders in Legacy-Projekten und großen Frameworks. |
| Policy-RFC | Regeln für Voting, Release-Prozess oder Projektorganisation. | Wenig direkter Einfluss auf App-Code, aber relevant für das Ökosystem. |
Für Entwickler sind vor allem Feature-, Verhaltens- und Deprecation-RFCs relevant. Ein neues Sprachkonstrukt kann Arbeit sparen, aber eine strengere Typprüfung kann denselben Code plötzlich scheitern lassen. Ein BC-Break bedeutet dabei nicht nur „kaputter Code“, sondern oft auch subtilere Effekte wie andere Fehlermeldungen, geänderte Randfälle oder eine andere Performance im Grenzbereich.
Gerade bei großen Webanwendungen ist diese Unterscheidung praktisch. Eine Syntaxergänzung ist meist leicht zu bewerten. Schwieriger wird es, wenn ein RFC die Semantik eines bestehenden Verhaltens verschiebt. Dann entscheidet nicht das Feature selbst, sondern der Migrationsaufwand über den echten Wert.
Damit ist die Art des RFCs geklärt. Als Nächstes braucht man eine schnelle Methode, um den Inhalt selbst sauber zu lesen, ohne sich im Detail zu verlieren.
Wie ich einen RFC schnell bewerte
Ich lese RFCs nie linear von oben nach unten und nehme das Ergebnis dann einfach hin. Ich springe zuerst zu den Stellen, an denen sich die praktische Wirkung zeigt. Das spart Zeit und verhindert, dass man sich von gutem Stil oder überzeugender Rhetorik blenden lässt.
- Problemstellung lesen - Welches echte Problem soll gelöst werden?
- Scope prüfen - Betrifft es Syntax, Runtime, Standardbibliothek oder nur Projektregeln?
- BC-Risiko einschätzen - Welche bestehenden Anwendungen oder Libraries könnten reagieren?
- Migrationspfad suchen - Gibt es eine klare Strategie für bestehende Projekte?
- Alternativen vergleichen - Wurden andere Lösungen ernsthaft geprüft?
Ich achte außerdem auf die Begriffe im Text. Wenn dort von „edge cases“, „deprecation“, „migration path“ oder „implementation details“ die Rede ist, steckt oft schon der eigentliche Aufwand in diesen Abschnitten. Wer nur die Überschrift liest, übersieht leicht die Stellen, an denen das Risiko liegt.
Hilfreich ist auch die Frage, ob das RFC nur einen Wunsch formuliert oder ob es bereits belastbare Tests, Patches und eine saubere Übergangslogik gibt. Je konkreter dieser Teil ausfällt, desto höher ist die Wahrscheinlichkeit, dass der Vorschlag nicht an der Realität scheitert.
Wenn die Bewertung steht, kommt der Punkt, der für produktive Teams am wichtigsten ist: Was bedeutet das konkret für bestehende Projekte?
Was ein RFC für bestehende Projekte bedeutet
Ein angenommenes RFC ist noch nicht automatisch ein akutes Problem. Erst wenn die Änderung in einer konkreten PHP-Version landet, wird sie für Deployments, CI-Pipelines und Releasepläne relevant. Genau hier passieren die meisten Fehleinschätzungen: Teams verwechseln „Accepted“ mit „morgen live“.
Ich prüfe bei jedem relevanten RFC zuerst drei Dinge: den Zielpfad, das erwartete Verhalten und den Aufwand für die Anpassung. Daraus ergibt sich meist sehr schnell, ob ein Projekt nur beobachtet werden muss oder ob sofortige Arbeit ansteht.
- Codebasis scannen - Bei Deprecations und Verhaltensänderungen suche ich gezielt nach betroffenen Aufrufen oder Mustern.
- Tests verschärfen - Ich lasse die Suite gegen die nächste PHP-Version laufen, sobald das praktisch möglich ist.
- CI und Static Analysis anpassen - Linters, Typprüfer und Build-Checks sollten die neue Realität widerspiegeln.
- Releasefenster planen - Größere Änderungen gehören nicht zwischen zwei Deployments gedrückt, sondern in einen klaren Migrationsschritt.
- Team informieren - Gerade bei Frameworks oder internen Plattformen sollten alle wissen, warum sich Verhalten ändert.
Für Infrastruktur- und Security-orientierte Teams ist das besonders wichtig. Eine kleine Semantikänderung kann zum Beispiel Warnungen in Logs auslösen, die Monitoring-Regeln beeinflussen oder alte Workarounds überflüssig machen. Das ist selten spektakulär, aber in produktiven Umgebungen oft teurer als eine neue Funktion.
Wer diese Auswirkungen sauber einschätzt, vermeidet die typischen Denkfehler. Genau die kommen im nächsten Abschnitt auf den Tisch.
Welche Missverständnisse Teams teuer zu stehen kommen
Einige Irrtümer tauchen bei fast jedem PHP-Release wieder auf. Sie sind nicht dramatisch, aber sie sorgen regelmäßig dafür, dass Änderungen entweder zu spät oder mit falschen Erwartungen behandelt werden.
- „Accepted“ heißt sofort verfügbar - nein, entscheidend ist die Version, in der die Implementierung landet.
- Jedes RFC betrifft den Anwendungscode - nein, viele Vorschläge drehen sich um Governance oder interne Projektregeln.
- Eine neue Funktion ist automatisch sicherer - nicht unbedingt, sie kann auch neue Komplexität einführen.
- Nur große RFCs sind relevant - kleine Verhaltensänderungen sind oft die nervigsten, weil sie Randfälle treffen.
- Abgelehnte Vorschläge sind erledigt - nicht immer, denn stark überarbeitete Ideen können später wiederkommen.
Ein weiterer Stolperstein ist die Abstimmung selbst. In PHP sind Hauptabstimmungen nicht einfach Meinungsbilder, sondern formale Entscheidungen mit klaren Regeln. Nebenabstimmungen können Details klären, ändern aber nichts daran, dass die Grundrichtung sauber begründet sein muss. Wer das ignoriert, liest oft nur die Oberfläche eines Vorschlags und nicht die Entscheidung dahinter.
Ich halte deshalb nichts davon, RFCs nur als Newsfeed zu konsumieren. Sie sind eher ein Frühwarnsystem für technische und organisatorische Entwicklung. Und genau so sollte man sie auch lesen.
Woran ich bei neuen RFCs zuerst achte
Wenn ich heute ein neues RFC aufmache, prüfe ich zuerst drei Punkte: Ist es sprachrelevant, wie groß ist das BC-Risiko und gibt es einen realistischen Pfad in bestehende Projekte? Diese drei Fragen reichen oft schon, um aus einem langen Dokument eine klare Arbeitsentscheidung zu machen.
- Sprachänderungen zuerst lesen, weil sie langfristig die größte Reichweite haben.
- BC-Risiken nicht nur auf Syntax, sondern auch auf Verhalten und Tests beziehen.
- Auf Zielversion und Implementierungsstand achten, nicht nur auf den politischen Ausgang.
- Für produktive Systeme früh einen Testlauf gegen die nächste PHP-Version einplanen.
Stand 2026 ist genau das für mich die sinnvollste Routine: nicht jedes RFC gleich wichtig nehmen, aber keines der relevanten Themen zu spät sehen. Wer so arbeitet, spart sich Überraschungen bei Upgrades und trifft technische Entscheidungen mit deutlich weniger Reibung.