A TEXT POST

10 reasons why Joomla is a great platform for Web Applications

Joomla is one of the most successful and widely adopted Open Source projects in history.
For those who don’t know it, it is a PHP application that you can install on a web browser and build a website.

It’s mainly considered as a Web Content Management System, due to its administrator interface that lets anyone with a minimal IT experience to build and maintain a website.

This is why Joomla is so famous, it’s because it’s both easy and powerful.

What most people don’t know is that Joomla has a great Framework under its interface. The Framework is a set of PHP classes and methods on top of which the CMS was built.

An advanced user could choose not to use the Joomla CMS, but use the Joomla Framework to build a web project without worrying about how the low level functions work. This improves both the speed of development, and the security of the application, since most of the filtering and security controls are done on a lower level, and the application developer doesn’t have to worry about that.

I strongly believe Joomla should be released also as a standalone Framework, not only as a CMS, because the Framework makes Joomla a perfect platform to build Web Applications. 

Let’s see why.

1. Nooku exists.


Nooku is a PHP Framework developed and maintained by Mathias Verraes and Johan Janssens, founder of Joomla and lead developer of the Joomla 1.5 core.

After shipping Joomla 1.5 Johan started to build work on a multilingual extension, called Nooku Content. He thought that most of the code could be reused if only the Joomla API was better, so he basically went on with his own work, building a set of libraries that take care of many things while building Joomla extensions, reducing code, time and overhead, making the famous principle DRY (Don’t Repeat Yourself) a common practice. 
These libraries have evolved (and are still evolving day-by-day) in a very powerful PHP 5 Framework built with great principles in mind, design patterns and Domain Driven Design, RESTful applications out-of-the box and so on. I’ll write a specific article about that in the next days.

So while you’ll continue to use the Joomla 1.5 API for a lot of things, Nooku is something that will get you excited.

2. Overall architecture


The architecture of Joomla is really well thought. A typical single web page is composed by a central part, containing the main page content, surrounded by a number of widgets that provide additional content, such as the header, the footer, the sidebar.

That’s how Joomla is organized: the main content is provided by a component, surrounded by modules. A really natural approach. 

Each of those are obviously extendible. On another level we can find the plugins, that are pieces of code triggered on specific actions, that run and can modify the workflow of an application or simply add useful stuff.

3. Menu system


One of the greatest strengths of Joomla is the menu system. It is extremely well organized and thought. A website is not a collection of pages, but a structure of menus that are accessible from the user interface.
Each menu item can have lots of configuration options and define how the webapp works.

4. User management system


Nearly almost web app has to deal with users, as users are the people behind their computers and smartphones that use out app.

Joomla provides the user login/logout system, session management, registration process and a user administration interface.

5. Template architecture


Each webapp needs a nice interface, isn’t it true? The functionalities are great, but what about great functionalities and a great design? That’s a superb webapp.
Joomla has an extraordinary marketplace for templates, so if you’re not in the mood of designing your own, you can simply download a free template or buy a commercial one.

6. Integrated multilingual capabilities


Every web application is hopefully built to scale. If your app has 10 users, you certainly want them to be 100 by the end of the year, and so on. Growth is what everyone wants, so you’ll probably reach the point where one of your users will require you an interface in his language, or you’ll want to expand your market. 
Joomla provides useful API to make multilingual sites out the box, with Nooku Content or another extension as a translation manager.

7. Integrated Human-Readable (SEF) links


One of the things that makes me recognize Joomla sites around the web is their URLs. You can find a lot of parameters and unreadable things in there.
Joomla provides an option to turn those links into beautiful human readable links, also favorite by the search engines and site owners as they contain keywords and can improve your ranking. This system works great with the menu system, and there’s a nice system anyone can use to make their extensions work with this system, and it’s a really quick and modular thing to do.

8. Access Control


Any website needs to assign to different users different permissions. Joomla 1.5 has an access control system that is quickly extendible using custom code, and Joomla 1.6, expected before the end of 2010, will also improve the management of the permissions from the administrator interface.

8. Administrator interface


Nearly every configuration option can be set from the administrator interface, and it’s very quick and easy (considering the use of Nooku) to create an administration panel for an extension, so while the frontend of the website provides a lot of useful functionality to the app users, the backend shows you other tools to manage everything you need.

9. An impressive number of open source extensions


As a web application developer I know you’ll often write your own extensions. Joomla has a great number of extensions you can play with, since it’s pretty easy to write PHP code that runs with its framework. This means you’ll often find code that’s written poorly, or takes too much resources that the code you could write.

Well, what’s the problem? Just read the code and write your own version of an extension, since Joomla is Open Source and the GPL license requires its extensions to be GPL.

The Nookusphere is also populated by very talented developers, and even though now there’s only a relatively small number of extensions written with it, I think that in the near future we’ll see great work coming from them.

10. Caching


If your web application gets past the first problem all web applications have (that is, being used by a lot of people so you can worry about other problems, like performance), integrated cache management is something you’ll be grateful to have.

Is there something more?