I used to develop projects with PHP only, without a framework.
Different classes, functions, etc.
Until it became a mess and I was looking for something more structural.
Laravel came onto my journey and I love(d) it.
Finally having a structured way of writing projects with Model, View and Controller structures with the Blade engine and the elegant Eloquent Model.
The problem is: the projects that I built before 2015 with PHP4 and PHP5, they basically still run and work (only having switched from mysql to mysqli or PDO). Even if I upgrade them to PHP7 or PHP8.
My Laravel projects have turned into monsters that require self-care every six months in the tight update schemes of Laravel and PHP.
- Updating to a new version of Laravel takes 15 minutes to 1-2 hours, according to Laravel.
- In reality, things break. Especially, third-party packages can’t keep up with the tight upgrade schedule of Laravel.
- An example is when upgrading from Laravel 6 to Laravel 7. Laravel 7 supports PHP8, while some first-party packages like Telescope version 3.* only work with PHP7. And some third-party packages only work with Laravel 7 and with PHP8. This makes the hopping from version to version very hard.
- Even first party packages phase out quickly. The required substitute is not always the best. For example Laravel Breeze instead of the laravel/ui package.
This is not sustainable for an indie or sole entrepreneur.
It is also probably one of the reasons that this Laravel developer estimates that more than 60% of Laravel sites run a version that is older than 2 years.
Everything running with subfunctionalities that change.
E.g. compiling your stylesheets needs to happen with: Gulp/Elixir in 2015, then with Mix, now with Laravel Vite.
When running npm run, it usually gives an error that you need to debug.
I see the point, Laravel is still fun for big projects and organizations.
And yes, for most projects it is probably still easier to build on a great boilerplate, than the start from scratch.
But for small organizations that have little developers, it is pretty tough to update everything.
Is Laravel Shift the solution?
Laravel Shift could help, but with a price of $29 per upgrade, this is not too expensive if you take expensive western business programming prices into account.
For less developed countries and people that have less financial resources, upgrading an app a few versions to the newest Laravel version can easily cost a few hundred dollars.
The awesome of Laravel
I don’t want to let this article sound too negative.
It is just a desire for Laravel users and developers to perhaps start a brainstorm if there is a way to keep the core less variable or more resilient to future PHP-upgrades, that would hopefully result in more up-to-date sites with the latest PHP (and Laravel) version.
Anyway, I do not see the perfect solution. I understand that a web app takes some care.
Perhaps an easier long-term support (LTS) version that doesn’t break every half year with more robust core functionalities.
Just to recap, there are many pros about Laravel:
- Less spaghetti-code
- Great structure
- So much options and first party packages. Like Vapor for serverless, Cashier for billing, etc.
- Large community
Have any other suggestions? Don’t hesitate to dropping them in the comment.