Table of Contents

Request for Comments: Backwards Compatibility

Introduction

Breaking 'BC' in PHP is always controversial, as it breaks code that has been running previously causing code or server maintainers to either revert to a previous version, or attempt to fix the code affected.

PHP has historically been pretty good at maintaining BC, however like all pieces of software this is a fine balancing act between the realities of development and the needs of developers.

Opinion: As PHP faces more competition in the Core market of Server side scripting languages, The knowldge that PHP is a mature language that will run code developed today for at least 6-8 years (and maybe more) without changes being required is a key selling point. This is something that less mature languages can not hope to offer.

So with this in mind, It would be helpfull for end users, and php core developers to have a common understanding of when, why and if BC may be broken.

Reasons for BC Changes.

“Class A Reasons”

“Class B Reasons”

“Class C Reasons”

Examples

When can BC be broken

Process for introducing BC.

For Class B and C reasons, an RFC should be proposed.

It should include:

Once discussed / completed, a vote should occur. Obviously if it fails, another vote can be called again if the proposer wishes.

Other notes

Depreciation warnings should point to the RFC discussing the change. So users have a clear understanding of why it was done, and how to work around it..

Changelog

Created - Sept 2011