joomla-x/joomla-pythagoras

Adopt much more external libraries, phase out Joomla Framework

jochendaum opened this issue · 5 comments

Joomla is trying to maintain and build way too many libraries of its own. I don't think it is realistic and the only frameworks successful in doing this have an apparently working business model to ensure their development can happen.

The Joomla community and Open Source Matters have agreed on values that run clearly contrary to such a business model, so the reality is that efforts to build its own framework are doomed. To be more frank, I believe it is not-invented-here syndrome.

To be perfectly frank, Joomla's ecosystem could barely accept third party libraries for core services (maybe third party implementations of PHP's SessionHandlerInterface or if Joomla adopts the PSR-6 caching interfaces adapters written for that). Third party libraries for other aspects of Joomla (for example Doctrine, Symfony's HTTP Foundation as a replacement for Joomla's application and session layers, or a PSR-7 adoption as a whole) would be too radical of a shift for the project and its development community who may not be strong PHP developers.

Can you explain what you mean by "too radical" and "could not"?

Look at Joomla's user base and how much of it still uses 1.5 and 2.5. Last time w3techs had published version information for Joomla, over 50% of the user base still had 1.5 sites in production. Development all but stopped on that branch toward the end of 2010 as 1.6 was pushed to a stable tag. We're reaching 5 years since 1.6's release, a release that introduced a lot of major changes. Extensions never adapted, users never migrated. That needs to speak volumes. Another release that introduces major paradigm shifts like the way 1.5 to 1.6 (2.5) was handled will kill what's left of Joomla.

Secondly, and this is not meant to be insulting to anyone, but look at the quality of code of Joomla's extensions. Any decent strength PHP developer would tell you they suck and what they're doing wrong. But they work, and that's really all users care about in the long run. Asking these folks who barely grasp the PHP or Joomla APIs (how often are extensions still using $_GET, or running database queries in layouts, or echoing HTML in controllers and models) to rewrite their code for some third party libraries for the sake of Joomla not having to maintain a few classes on its own anymore is going to kill what's left of Joomla.

If you want to make change, you have to focus more on the user at this point. I'm saying this as someone who'd love to make major changes to the underlying PHP architecture and knows full well what are bad practices in Joomla. A major release that is doing nothing for the end user and pissing off the extension community will kill what's left of Joomla.

Look at the past blog posts on Brian Teeman's blog, or Nicholas D.'s blog, or this CMS mailing list thread, or this LinkedIn discussion. The folks that are deploying sites couldn't give a damn about the architecture as long as it works. They want real user level features.

nibra commented

Third party libraries for other aspects of Joomla (for example Doctrine, Symfony's HTTP Foundation
as a replacement for Joomla's application and session layers, or a PSR-7 adoption as a whole)
would be too radical of a shift for the project

Well, those things were decided on, when Michael still was part of the J4 Architecture Group. Using those libraries may be radical, but it is exactly, what we're doing. That will not prevent us from providing adapters to mimic the current behavior as close as possible, so the transition will be soft.

And for the record while the developer in me agrees fully with pulling in those libraries and fixing the numerous holes and weaknesses in Joomla's API, I still say it's a bad idea. Let me save you folks some time, run symfony new joomla lts and 90% of J4 is done. Because that is the direction you are going; either J4 is going to turn into a hybrid Symfony/Laravel creation or the NIH thing is going to further itself massively.