-
-
Notifications
You must be signed in to change notification settings - Fork 5.2k
[Review] Added detailed Backwards Compatibility Promise text #3439
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
840073c
7320ed0
dacd7ce
79ca9f7
0e925cb
44ecf16
afadaab
345410c
a3ad08c
31ab2db
502ed95
4c5a55d
c6e850d
db76288
54fd836
00c6ebe
efd3911
dcbe79a
af3a645
be76644
dfb3e8b
6501a35
0c6420f
69768dd
5a160c5
ef1f021
6d9edf1
8c6c7bf
4868452
e11335f
25443c0
11bb879
fd1d912
bdd3c03
2320906
90c4de6
be2251c
ce58ee9
0717192
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,44 @@ | ||
Our Backwards Compatibility Promise | ||
=================================== | ||
|
||
If you are using Symfony, we promise you backwards compatibility (BC) for all | ||
minor releases (2.5, 2.6, etc.). Ensuring smooth upgrades of your projects is our | ||
first priority. However, backwards compatibility comes in many different flavors. | ||
Ensuring smooth upgrades of your projects is our first priority. That's why | ||
we promise you backwards compatibility (BC) for all minor Symfony releases. | ||
|
||
You probably recognize this strategy as `Semantic Versioning`_. In short, | ||
Semantic Versioning means that only major releases (such as 2.0, 3.0 etc.) are | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 3.0, etc. |
||
allowed to break backwards compatibility. Minor releases (such as 2.5, 2.6 etc.) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 2.6, etc. ? |
||
may introduce new features, but must do so without breaking the existing API of | ||
that release branch (2.x in the previous example). | ||
|
||
.. caution:: | ||
|
||
This promise was introduced with Symfony 2.3 and does not apply to previous | ||
versions of Symfony. | ||
|
||
This page has two different target audiences: If you are using Symfony, it will | ||
tell you how to make sure that you will be able to upgrade smoothly to all | ||
future 2.x versions. If you are contributing to Symfony, this page will tell you | ||
the rules that you need to follow to ensure smooth upgrades for our users. | ||
However, backwards compatibility comes in many different flavors. In fact, almost | ||
every change that we make to the framework can potentially break an application. | ||
For example, if we add a new method to a class, this will break an application | ||
which extended this class and added the same method, but with a different | ||
method signature. | ||
|
||
Also, not every BC break has the same impact on application code. While some BC | ||
breaks require you to make significant changes to your classes or your | ||
architecture, others are fixed as easily as changing the name of a method. | ||
|
||
That's why we created this page for you. The section "Using Symfony Code" will | ||
tell you how you can ensure that your application won't break completely when | ||
upgrading to a newer version of the same major release branch. | ||
|
||
The second section, "Working on Symfony Code", is targeted at Symfony | ||
contributors. This section lists detailed rules that every contributor needs to | ||
follow to ensure smooth upgrades for our users. | ||
|
||
Using Symfony Code | ||
------------------ | ||
|
||
If you are using Symfony in your projects, the following guidelines will help | ||
you to ensure smooth upgrades to all future minor releases of Symfony (such as | ||
2.5, 2.6 and so on). | ||
you to ensure smooth upgrades to all future minor releases of your Symfony | ||
version. | ||
|
||
Using Our Interfaces | ||
~~~~~~~~~~~~~~~~~~~~ | ||
|
@@ -299,6 +317,7 @@ Change return type Yes [2]_ [5]_ No | |
.. [7] A type hint may only be added if passing a value with a different type | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @webmozart i think it would be useful to have links to the sami docu http://api.symfony.com/2.4/index.html and maybe direct links to interfaces per component. Right now is all spread out like butter but there are not further filters to actually allow for good usage for people that are implementing say only a component's interface set. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In general, the API docs need to be improved a lot for example to filter by |
||
previously generated a fatal error. | ||
|
||
.. _Semantic Versioning: http://semver.org/ | ||
.. _scalar type: http://php.net/manual/en/function.is-scalar.php | ||
.. _boolean values: http://php.net/manual/en/function.boolval.php | ||
.. _string values: http://www.php.net/manual/en/function.strval.php | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just use "The Backwards Compatibility Promise", we didn't speak of "our" release cycle neither
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure this feels right here. A promise is something personal, something that has only value if you know who it is from. So I think the first person and use of "our" here makes the document more credible.