Just posted this to the Joomla! General Development List (
http://groups.google.com/group/joomla-dev-general/browse_thread/thr...). Hope you don't mind I repeat it here:
Joomla! 2.0
I know: 1.6 is still in Alpha-2 today (or did I miss something: just saw a tweet, from 12 hours ago: "trying out Joomla 1.6 beta"). Some people think 1.6 will come soon (this book is supposed to be released half of February:
http://www.computerboek.nl/boek/9789012581301/basiscursus_joomla_1....). You can even win a "very special prize" predicting the exact release date (
http://brian.teeman.net/joomla-gps/when-will-joomla-16-be-released....). There has been some talking about 1.7 during the Joomla! Developers Conference December 5th, whereupon I saw a Twitter-comment "Get 1.6 done. Then talk 1.7" (
http://twitter.com/johanjanssens/status/6409910105). But still, we can think ahead: where do we want to go, what is the horizon, the direction, the aim. Not in detail, but the big picture.
Some ideas I, as a developer, have about Joomla!:
1. once we have ACL, there is no need anymore for the distinction between frontend and backend.
2. we need some fundamental OOP-redesign for better code reuse.
3. extensions should only be allowed if they strictly use an API to the Joomla!-Framework.
4. the central role of the menu could be revised
* ad 1. It is a trend in CMS-land (e.g. DotNetNuke in the transition from version 4 to 5). Drupal is closer at home as an example here. If you have rights to edit something, it doesn't matter if you come the frontend, backend... or the sideline.
* ad 2. I think these symptoms are related: 'cannot override everything', 'cannot extend a component' and 'so many static methods'. You can now only override the html-templates of a view. And even then: you'll have to copy the original file if you want to preserve some of the original functionality. If you want to add something to a component, you'll have to make a new component, copying the original one and adding/changing the things you need. That is a bad "code smell": extending and reusing should be something else than copying. That there are so many static methods in the framework could be a symptom that the original design was more procedural than OOP.
Thinking about a RESTful API for Joomla! I realised, that RESTful-thinking is not just a fancy way to add webservices to your application, but also an architectural choice: you minimise the tasks ("verbs") to CRUD and make resources ("nouns") of the rest. Ultimately it is about restructuring the objects.
* ad 3. A lot of the vulnarabilities in Joomla!-extensions (
http://docs.joomla.org/Vulnerable_Extensions_List) are caused by SQL-injection. If all database access and user interaction would only be possible if it is strictly done via the Joomla!-framework, then we can avoid those weaknesses. The use of filters for JRequest::getVar() should be obligate. The new JDatabaseQuery (or how was it called?) could become a database-layer that shields all database-access; if an extension has to use that layer in stead of making direct sql-statements, then some vulnarabilities can be totally solved by the framework.
* ad 4. Some modules depend more on articles than menu-items. Sometimes the distinction between components and modules gives all kinds of problems. There are several extensions trying to fix issues with modules/components/menus. Maybe we should have a look at it again and think about other ways to organise the content. Maybe tagging content and then use those tags to structure menus? My thoughts about this are still vague, but maybe someone has a bright vision.
More ideas?
If you have any ideas about those subjects or have other opinions about where Joomla! could go to, I'm very interested: please post it. This is certainly not meant as critic, but as a look from some distance, to see in what direction I would like to contribute. It is also not meant as dogma: these are just my ideas at the moment, but I would be glad to change them for better ones.
You need to be a member of All Together, As A Whole to add comments!
Join All Together, As A Whole