Symfony 2.3.0, the first LTS, is now available

We were all waiting for it and many of us have been working hard for the last four years to make it happen. Today, Symfony 2.3.0 is available and this is the first long-term support release for Symfony version 2.

I'm so happy that we were able to achieve this important milestone in the life of the framework. THANK YOU for making it possible.

What does it mean? Since the introduction of a more formal release process, a new standard version of Symfony is released every six month and it is maintained for eight months. But every two years, we mark a release as being a long term support release. The big difference is that it is maintained for a three years period.

That gives us the best of two different worlds: small teams and agile companies can benefit from the latest features by upgrading every six months (they have two months to upgrade); large teams and traditional companies can standardize on a release for three years and they have an additional year to migrate to the next long term support release.

And 2.3.0 is our first long term support release. We, the community, are going to maintain it for the next three years (until May 2016).

Numbers

Traditionally, I like to give some numbers about releases. Here are some facts for 2.3. The Symfony 2.3.0 release was a bit special as we only had three months instead of six. Anyway, 2.3 is made of 437 pull requests containing 1,260 commits submitted by 50 developers for the code; documentation enjoyed 839 commits by 44 authors.

1,260 commits on a 3 month period means that, on average, 14 commits were pushed every single day. 437 pull requests means almost 5 pull requests merged per day. That's a new record!

Features

What about the most interesting changes? Let's recap what I've written about in the Live on the edge section of this blog during the last couple of months:

Symfony 2.3 also comes with two new components and one new bridge:

Upgrading

Upgrading from 2.2 to 2.3 should be painless.

If you are using the Symfony Standard Edition, you should notice that some bundles were removed to avoid license issues. As of 2.3, all the code in the Standard Edition and its dependencies is under a MIT-like license. Here is the diff for the composer.json file:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
diff --git a/composer.json b/composer.json
index c2d7588..5705d76 100644
--- a/composer.json
+++ b/composer.json
@@ -1,32 +1,35 @@
 {
     "name": "symfony/framework-standard-edition",
+    "license": "MIT",
+    "type": "project",
     "description": "The \"Symfony Standard Edition\" distribution",
     "autoload": {
         "psr-0": { "": "src/" }
     },
     "require": {
         "php": ">=5.3.3",
-        "symfony/symfony": "2.2.*",
-        "doctrine/orm": "~2.2,>=2.2.3",
+        "symfony/symfony": "2.3.*",
+        "doctrine/orm": ">=2.2.3,<2.4-dev",
         "doctrine/doctrine-bundle": "1.2.*",
         "twig/extensions": "1.0.*",
-        "symfony/assetic-bundle": "2.1.*",
-        "symfony/swiftmailer-bundle": "2.2.*",
-        "symfony/monolog-bundle": "2.2.*",
-        "sensio/distribution-bundle": "2.2.*",
-        "sensio/framework-extra-bundle": "2.2.*",
-        "sensio/generator-bundle": "2.2.*",
-        "jms/security-extra-bundle": "1.4.*",
-        "jms/di-extra-bundle": "1.3.*"
+        "symfony/assetic-bundle": "2.3.*",
+        "symfony/swiftmailer-bundle": "2.3.*",
+        "symfony/monolog-bundle": "2.3.*",
+        "sensio/distribution-bundle": "2.3.*",
+        "sensio/framework-extra-bundle": "2.3.*",
+        "sensio/generator-bundle": "2.3.*",
+        "incenteev/composer-parameter-handler": "~2.0"
     },
     "scripts": {
         "post-install-cmd": [
+            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
             "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
             "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
             "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
             "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
         ],
         "post-update-cmd": [
+            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
             "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
             "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
             "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
@@ -36,12 +39,15 @@
     "config": {
         "bin-dir": "bin"
     },
-    "minimum-stability": "alpha",
+    "minimum-stability": "stable",
     "extra": {
         "symfony-app-dir": "app",
         "symfony-web-dir": "web",
+        "incenteev-parameters": {
+            "file": "app/config/parameters.yml"
+        },
         "branch-alias": {
-            "dev-master": "2.2-dev"
+            "dev-master": "2.3-dev"
         }
     }
 }

All the backward compatibility layers from previous versions have been removed, so it's time to read again all UPGRADE files and check that you've migrated all your code. For changes specific to the 2.3 release, follow the instructions in the UPGRADE document. If you started your project with the Symfony Standard Edition, you might also want to read the UPGRADE-2.3.md file.

Installing

If you are starting a new project on Symfony 2.3, based on the full-stack framework, you have several options:

  • Create a new project via Composer (recommended):

    1
    $ php composer.phar create-project symfony/framework-standard-edition somewhere/ 2.3.0``
    
  • Download an archive for the Symfony Standard Edition;

If you are using some of the Symfony components in your new application, just use the 2.3.0 version or the 2.3 branch:

Let's celebrate! And remember that we should now focus on stability over features.

Comments

Congrats!
Thanks to the Symfony community, Thanks to Sensio Labs
good bye real life!
Migrating ^^
Migrating too :)
FIrst off, nice work, congrats to the first lts release! :)

Now, I see jms/security-extra-bundle has been dropped. While keeping licenses clean is a good thing, what about projects relying heavily on features like @PreAuthorize, @Secure and so on? There doesn't seem to be an alternative to these features in the base Symfony bundles, so we feel a bit left alone here... Or is it just a "symbolic" move of Symfony to remove it from their official composer file for licensing purposes?
Congratulations and thank you!
@Mike: As the Symfony Standard Edition is under the MIT license, we did not want to have anything else in its deps. That helps people developing GPL projects on top of Symfony. That said, if you are developing your own project, using dependencies under an Apache license should not be a problem at all. So, feel free to add them back.
@Mike Those bundles were only dropped from the standard edition, but that doesn't mean you cannot install them yourself.
Congratulations!
Great Job, Thanks to the Symfony community and Congrats
Great work everyone ....
Congratulations on this big milestone!
finally !! :)
Congratulations on this BIG milestone!

I honestly think that having a LTS version in Symfony2 will definitely help in big companies adopting it

So, let's celebrate!
YES!!!
This is a great accomplishment. Congratulations and thank you to all that worked so hard on it!
Congratulations! This is awesome news.
Great job! Thank you.
great to see it's official, we're going to upgrade now :)
Thanks to the whole Symfony community for an awesome product!
great!!!!!
Thank you!
+1
Very nice! Great work everyone!
Great job ! Thanks to all of you !

Migration already done with the magic `php composer.phar update` (and some minor fixes)
Very nice !
Wow, this is big news. Thank you very much for this release. Awesome work. Congratulations!
https://www.youtube.com/watch?v=K6OQ0r5EVWA
Awesome !! Congrats.
Finally, congratulations to all team ^^
Sucessfully migrated ;)
Lovely stuff! Congrats to all involved.
Congratulations and thanks for your hard work!
Nice!
Congrats! Good job!
Great news! Congratulations.

Thanks for your hard work!
Great work! Thank you.
MIgration in progress. Happy to see LTS version, congrats!
composer.json, here i come
Migrating...

Congratulations to all team and contributors. Thanks for your very hard work.
Awesome and composer now have an option to get info for parameters.yml which is quite helpful.

Thanks and thumbs up for the team.
Thank you very much, our company waited very long to get the sf2 LTS!
Thanks everyone for all the work you've put down! This is definitely a milestone.
What we need in Symfony it Message/Job Queues. As simple and powerfull in one time - in symfony style. Supports modern IronIO, Amazon SMQ/SNQ, RabbinMQ, BeanStalkD, Redis, Push Queues. Queues it really accelerator of web projects. We must beat ZendFramework and Laravel in this.
Nice work! Thanks!
Great news! Just migrated!
+1 Message/Job Queues
Thanks but your upgrade document is missing the BC break for BCrypt. It is mentioned in a changelog but you do not link it in this blog post or the upgrade sheet
Adding "jms/security-extra-bundle": "1.4.*" or "jms/security-extra-bundle": "1.5.*" with nothing else but defaults on composer.json fails.

what should i put?
+1 Adding "jms/security-extra-bundle": "1.4.*"
The domination of the package have changed. You can try "1.4.*@dev"
Congratulations ^^
@fabpot There is missing info from the upgrade docs.
In 2.3 you now have to add the Debug::enable call otherwise debug is not enabled.
So coming from a 2.2 project to 2.3 you need to check your app_dev.php files against the new ones as they won't be changed by composer of course.
If you started your project with the Symfony Standard Edition, you might also want to read the UPGRADE-2.3.md file that explains the changes that you might need to do in your project: https://github.com/symfony/symfony-standard/blob/2.3/UPGRADE-2.3.md

Comments are closed.

To ensure that comments stay relevant, they are closed for old posts.