Laravel 5.5 came out yesterday, an LTS: two years of bug fixes, three of security fixes. Good news for projects that outlive the hype cycle, which is most of them.
The feature in every screenshot is package auto-discovery. A package declares its service provider in its own composer.json, and after composer require it is registered. No editing of config/app.php, no provider line copied from the readme.
Convenient. Now look at what got deleted. Installing a package used to be two steps, and the second step was consent: a line in my own config saying this code runs inside my application at boot. Now composer require is the whole ceremony. The list of code that runs at boot lives in vendor/, spread over other people’s files. php artisan package:discover shows it, and dont-discover in composer.json switches it off per package. But the default flipped from explicit to implicit.
For a debugbar I do not care. For anything that registers middleware, listens to events or wraps the exception handler, I want the registration in my repo, in a place where a diff will show it.
There is a quieter question under this one. Half of the packages I see are twenty lines of code wrapped in a provider, a facade and a config file. If the useful part is one class, take the one class. A dependency you can read in five minutes is cheaper than a convenience you have to trust.
Auto-discovery removes the friction. Friction was annoying. It was also the moment where somebody asked whether the package is needed at all. I did not like that moment either, and I will miss it.