A few days ago, the following graph about the technical debt of some relevant PHP projects went very popular on Twitter:
This graph shows the estimated amount of time that it would take for each project to fix all the problems found by the SensioLabsInsight analysis service.
Some of you made a lot of interesting questions and comments about the graph and we’d like to clarify some things in this article.
Important information is missing
First of all, as any other graph, there is a lot of missing information that should be considered to better analyze the results. For starters, project age is a determining factor in its quality. WordPress and phpBB were released more than 10 years ago, before most of the modern PHP features were available. This put those projects in a competitive disadvantage over other more modern applications such as Composer or Doctrine.
Another important factor missing on the graph is the project size. Projects with large codebases, such as WordPress or Drupal, are always going to have more technical debt than small projects such as Silex or Twig. However, large projects usually have lots of contributing developers and thus, technical debt could be more easily assessed on large projects.
SensioLabsInsight is not a Symfony service
SensioLabsInsight is a service provided by SensioLabs, the company behind the Symfony project. Since all the Symfony ecosystem products (Symfony, Silex, Twig) got excellent results on the analysis, some of you expressed concerns about the analysis impartiality.
First, SensioLabsInsight is not a Symfony-focused service. Our motto is “PHP Quality Done right” and we analyze any PHP project or library applying the same analysis rules.
Nevertheless, if you analyze Symfony applications, we apply additional rules specially designed for that framework. And the same goes for Drupal, Laravel and Silex projects. We apply special rules for those projects, meaning that their analyses are stricter.
But if your project is not based on Drupal, Laravel, Silex or Symfony, the special rules are not applied and therefore, the analysis results aren’t impacted. Moreover, if some of the analysis rules affect your project in an unfair way, you can ignore those rules from the technical debt calculation.
Tracking technical debt evolution
Some developers interpreted this graph as an absolute score grading the quality of a project. This would mean for instance that Drupal is better than WordPress and Laravel is better than CakePHP. This is simply not true.
This graph only shows the still photo of the total technical debt of some PHP projects at a given time. The truly interesting metric is the evolution of the technical debt. If this value increases in time, the technical debt is out of control and using that project may be risky for companies. If the technical debt decreases in time, the project will eventually reach a manageable debt level.
Analyze your own projects
SensioLabsInsight lets you analyze your PHP projects for free and that’s the best way to fully understand how the code quality analyses work and to get a first glimpse of your technical debt.
Analyzing the technical debt of your PHP projects may be useful for comparing them with those of your competitors, to check if your contractors are doing a good job and as an objective quality review before delivering some project.