Laravel LTS is a Trap

With the release of Laravel 5.1 also came the announcement of long term support (LTS), whereby Laravel:

For LTS releases, such as Laravel 5.1, bug fixes are provided for 2 years and security fixes are provided for 3 years.

Before moving on let me be clear that I think it’s great Laravel formalized their support policy. It demonstrates their dedication to the project and the community. Unfortunately, it also sets a trap.

As creator of Laravel Shift — the automated way to upgrade Laravel — I’ve noticed something interesting. The Shift to upgrade to the latest version of Laravel (currently 5.2) is the least popular. In addition, more than half of the people that upgrade from previous versions stop at Laravel 5.1.

I believe this is due to LTS. Developers are lured by the long term support and get trapped on the LTS version in two ways.

First, it lures the paranoid developer coding in dark rooms lit only by the monitor. They get trapped by LTS versions because they believe Laravel is doomed. Which is a common fear of open-source projects (especially PHP frameworks). So, I get it.

But when you shine some light on it, this line of thinking is pretty dim. On one hand, you’re pessimistic enough to believe Laravel will epically fail. Yet, you’re optimistic enough they will maintain their support policy after they fail so hard? Interesting. Either way, decisions based on fear are rarely good.

Second, it lures the white-boarding architect designing only enterprise-grade software. They get trapped by LTS versions because they believe in stability. Makes sense. By choosing an LTS version you could write a Laravel app and let it sit for 3 years. Seems great.

In reality, it’s lazy. You’re deferring a large amount of technical debt. During the time your app sits, Laravel may release 6 more versions. Instead of paying that technical debt incrementally (as well as gaining new features and enhancements) you will have to pay the full amount when you upgrade to the next supported LTS version. I guess it’s a good thing Laravel Shift is around :-)

So what’s the big deal?

The more developers that get trapped by LTS, the more of a drag it creates on the Laravel community. Potentially having adverse affects on its growth.

Using LTS as a minimum compatibility line for a Laravel package or other third-party code is understandable. But freezing your apps to an LTS version is not. Your apps should run the latest stable version of Laravel.