There are a lot of complaints going around about Laravel these days, but a lot
of the important ones seem to be missing from the spotlight.
Bugfixes, issues and pull requests being left open for months with no
clarification of intent:
Hostility and/or trolling in issues, with a couple of regulars that are made no
effort towards silencing:
Laravel is a one man project run by Taylor Otwell exclusively, and there is no
interest in changing this. The community is fortunate enough to have Taylor's
employer give him one week of dedicated Laravel time per month. Laravel's future
if/when its author's position should change is uncertain to say the least.
Again, there is no organization or company behind the framework, everything is
privately owned by Taylor.
Dealing with criticism: https://twitter.com/taylorotwell/status/422837742716727296
Laravel being a one-man show: https://twitter.com/taylorotwell/status/420577120188768257
There is no process around the development of Laravel - changes and features are
added and reverted as Taylor sees personally fit with no intent of following
semver (semantic versioning), no intent of imposing feature freezes to minimize
the number of bugs or to do long-term support on older versions of the
framework. No changelog between minor versions are maintained, and short of
crawling the commit log there are several bugfix versions without documented
changes. Bugfix versions are of course not that as most new features are
introduced not as a minor version on a developing branch but on the main stable
branch tagged as bugfix versions.
Taylor removes a public filesystem function in a bugfix release because the core
framework isn't using it anywhere.
Taylor renames a bunch of core classes in 4.1.15 but changes his mind in 4.1.16
which is released few minutes afterwards.
After 11 bugfix versions, backwards compatibility methods are added to Route/
Router, but only after a pull request for it was up.
Undocumented in 4.1 - Sessions and cookies are refactored into application
middleware and the default native driver is silently replaced with the custom
file one, causing lots of upgrade issues.
Right before 4.1 release, URL generation is largely rewritten to allow for query
strings, causing several bugs. On the same day as 4.1 release, 4 bugfix versions
are released mostly to deal with these. After 8 bugfix releases, Symfony's
routing component is brought back in to fix most issues.
In version 4.0.8, the session store's IoC binding is updated from 'session' to
'session.store', breaking several packages.
After the launch of 4.1 the idea of Laravel expansions - paid packages/plugins -
was announced, along with a statement that the framework is now more or less
complete, confirming the fears that the open source bit of the framework is
being further downprioritized.
Laravel comes with a ton of __call and __callStatic methods that are very good
at hiding the underlying architecture of the framework, and the documentation
does a poor job of explaining this. New users will not know that MyModel::foo()
under the hood calls (new MyModel)->newQuery()->foo() unless they read and can
understand the source code. Calls to facades like DB:: and Session:: are usually
redirected from the Manager class to the underlying Connection or SessionStore
classes, but if you call an undefined method you still get "undefined method
If you're a hobbyist developer, the framework is fine, but you can get an
equally intuitive and developer-friendly framework out of Django or Ruby on
Rails - without having to deal with breaking changes in "bugfix" versions, and
with the guarantee that these frameworks will have a lifetime of up to decades,
while who knows what Laravel will be doing in a couple of years' time. If you're
a dev team leader or project manager, the lack of response and blatant disregard
for maintaining stability in the framework should be a serious warning sign.