Symfony is a framework for web PHP. It is written in PHP and is distributed under an MIT licence for free.
In the PHP world, the Symfony framework is one of the most famous, most popular,most used and most appreciated frameworks. These features are due to the fact that, it has a large and powerful community behind, a consistent and thorough documentation, it can be learned relatively quickly due to the resources available online, it offers a new certification system and an ever growing number of users.
Symfony was inspired by other web frameworks such as Ruby on Rails, Django and Spring, and it targets the development of enterprise applications.
The work on this framework began approximately 11 years ago in Paris, in the winter of 2004, and the first version was launched in October 2005. The person who created and founded this framework is Fabien Potencier, who developed the project for his company Sensio, a French software company founded in 1998. Because of this, the framework was called Sensio Framework (all the classes began with the sf prefix, e.g. sfRequest, sfRouting, sfResponse).
The purpose of the framework was to offer the possibility to develop web applications faster, more intuitively and more securely.
After successfully implementing the framework in some internal projects, Fabien decided to allow other people to use the framework in order to collect feedback from its users.
Once it was decided to launch the project as open-source, it was called "symfony" (being later renamed "Symfony" starting with version 2), a name which kept the theme and the prefix for the classes.
To become a successful project, it needed a well-written documentation in English. To do this, Fabien asked his friend, François Zaninotto, with whom he worked at Sensio, to help him create the online documentation. In the end, the framework received a remarkable documentation, which lead to the framework's increase in popularity and, implicitly, to an increase in the number of developers who started using it.
François coordinated the documentation project and is one of the people who became actively involved in promoting the framework. Due to him and his tutorials, many web app developers started using the framework. 2008 brought about some bad news, as he decided to leave the Symfony core team because of some divergent opinions related to the philosophy of writing code which was introduced in version 1.1.
Version 1.0 was launched in the beginning of 2007 (minimum required PHP version: 5.0). It was the first stable version launched, and it received support for 3 years. January 2010 brought about the end of maintenance for version 1.0, a natural step in the project development.
The launch of version 1.0 occurred not long after the birth of Fabien's first child.
Version 1.1 was launched in mid-2008 (minimum required PHP version: 5.1), but it was not compatible with the previous version, which made the update of old projects to the new version difficult.
Version 1.2 was launched immediately after the previous one, at the end of 2008 (minimum required PHP version: 5.2). Migration between these two versions was much easier, since there were no major changes in terms of structure.
The last versions of the 1.x branch were launched one year later, at the end of 2009. Versions 1.3 and 1.4 were launched simultaneously (minimum required PHP version: 5.2.4). Both were identical, but version 1.4 did not have deprecated functionality and it was recommended when starting a new project with this version.
The stable version that got long-term support (LTS1), was 1.4, which was the last version of the 1.x branch. The support period ended in 2013.
Symfony 1.4 = Symfony 1.3 - deprecated items
Because versions 1.x used PHP version < 5.3 (a version which introduced the namespace concept) what was needed was inclusion syntax for a file, so that a class could be defined inside it.
require_once '/path/to/sfCoreAutoload.class.PHP'; sfCoreAutoload::register();
The project site launched www.symfony-project.org - 300k unique visitors per month.
Subversion was used as versioning system.
Symfony could be installed via PEAR.
Switiching from version 1.x to version 2.x was a huge step. Version 1.x was very different from version 2. It was more of a revolution than an evolution of the framework.
The company behind Symfony, namely SensioLabs, made an inspired move and decided to rewrite the framework from scratch.
The first launch of Symfony 2 was not perfect, but was promising. Symfony 2.0 was launched in July 2011 (minimum required PHP version 5.3.2). It was based on git submodules (Composer did not exist at the time).[https://www.dunebook.com/the-history-of-symfony/]
The launch of version 2.0 happened not long after the birth of Fabien's second child. It seems the parenting makes people prone to productive activities at night time, when the little one does not let you sleep.
Versions 2.1, launched in September 2012 (minimum required PHP version: 5.3.3), and 2.2, launched in March 2013 (minimum required PHP version: 5.3.3), were similar to what we use nowadays, but, in spite of all this, it requires quite a great effort to migrate from this version to the next versions.
Version 2.3 was launched in June 2013 and was the first LTS1 version in the 2.x branch. Version 2.3 was developed in only 3 months, the normal development span being 6 months. After this version, the changes introduced by the previous versions (2.4, 2.5 şi 2.6) were not so drastic and did not generally introduce incompatibilities. Version 2.3 promised that only major versions would be allowed to feature incompatibilities with previous versions. This commitment can also be found in the semantic versioning strategy.
Version 2.4 was the first in the 2.x branch which did not introduce any incompatibility with the previous version.
Versions 2.7 and 2.8 were launched in 2015, May and November (minimum required PHP version: 5.3.9). Both versions have a three-year support period.
Version 2.8 was launched at the same time with version 3.0.
Symfony 2.8 = Symfony 3.0 + compatibility with previous versions
The use of PHP 5.3. had major impact, because it introduced namespace, closure, anonymous functions, late static binding, SPL2 enhancement and many others
Because namespace was used, some drastic change had to be made when naming clasees and the sf prefix became history
The PEAR installer was replaced by Pyrus, a modern, robust installer.
Doctrine was used as ORM.
git was used for versioning.
Compared to version 2.8, version 3.0 does not introduce any new functionality. Deprecated functionalities were eliminated. Version 3.0 was launched in November 2015 (minimum required PHP version: 5.5.9), just before the third Symfony conference in Paris, in December 2015. It is the first version which uses the new version launch system, based on five minor versions. This process is based on semantic versioning (x.y.z+1=> bug fixing; x.y+1 => compatible changes; x+1 => potentially incompatible changes) and follows a pre-established launch calendar:
Any new minor version (ex. 2.8, 3.2, 4.1) is launched every six months, in May and November each year.
Version 3.0 is the only version which was not launched immediately after the birth of one of Fabien's children. Version 3.1 was launched in May 2015.
The new version launch system offers predictability about the time when the versions will be launched, but not about what each version will bring about. In the latter aspect, the greatest influence will be that of the community. If there will be new functionalities which are meant to be introduced in the framework and there will be enough people to handle them, we will definitely see them in subsequent versions.
Symfony 4 is due in November 2017. We do not know what it contains yet, but we are confident it will bring about useful functionalities to the ones using it.
We thank the community and the core team for creating a framework used by so many developers, a benchmark in PHP world.
Symfony core-team, Symfony 2015 Conference - Paris
Long Term Support
by Ovidiu Mățan
by Mihai Câsu
by Radu Murzea
by Adrian Șuteu