In 2025, we're celebrating 20 years of Symfony. Over these years, thousands of people have contributed code to Symfony. Some folks fixed a small typo in a comment, while others added more than 100,000 lines of code. All contributions are welcome and essential in a project as large and impactful as Symfony.
Wouter de Jong, a Symfony Core Team member and one of the top contributors to the Symfony Docs, has published a blog post packed with statistics about the Symfony codebase, including many charts that make it easy to explore data such as:
- Merged pull requests by type (feature, bug, minor) per year
- First-time commit authors over time
- Breakdown of authors by number of lines contributed
- Cyclomatic complexity metrics (average, p99, worst case)
- And much more
Here's an example of one of the interesting stats included in the blog post:
This chart shows how many lines of code written in a given year are still
present and unchanged in the latest Symfony releases. For example, when
Symfony 2.0 was released in 2011, around 70% of its code was written that
same year. In Symfony 8.0, around 11% of the code was written in 2025.
Interestingly, 2019 is the year that contributed the largest amount of code
still in use today. This is mainly because that year marked the transition
from the legacy array() syntax to the short array syntax [].
In the original post, there is a graph labelled "Added LOC per LOC still present", where Wouter mentions that he does not fully understand what the multiplier exactly means. I tried to approach it from a different angle.
This graph becomes clearer when viewed through a physical analogy. If we treat the total codebase size as “distance” (or the system’s mass) and the amount of code changed per release as "velocity", then plotting changes against total LOC is a state-based, not time-based, description of development. The slope of the graph corresponds to looking at acceleration with respect to distance rather than time, which in physics maps to the spatial gradient of kinetic energy - that is, force.
Read positively, this "force" represents capacity rather than resistance. It shows that the Symfony community and its maintainers are able to continuously apply the necessary effort to move an increasingly large and complex system forward. For a 20-year-old codebase that has grown many times over, touching more code per release is not a sign of decline, but evidence of sustained maintenance, broader stewardship, and a strong commitment to long-term stability.
And finally: happy 20th anniversary, Symfony!