Joomla! An Intro

Wow, what an honor to be invited to Chez Marcel and talk a little about one of my hobbies. Marcel, if I may borrow your trusty waiter? François, I have brought with me one of my favorite VQAs with me, would you mind fetching the 2006 Cave Springs Riesling from the chiller and pour for our friends?

François! Ah, I see you are working on your personal website. Does Marcel know you're doing this on company time? I see you're keeping a list of wines Marcel has recommended over the years for him. Very nice! But you really need not manipulate all that HTML, we have extensions for that.

I know Marcel is a fan of Drupal – and in my time, I've been fortunate enough to spend some very quality time with some of the people from the Drupal camp. I, however, am I Joomla! groupie, and I'd love to show you how easy it is to build your own personal website.

Joomla! out of the box provides a very robust feature set, and with the recent release of 1.5 Stable, the programing API allows it to be extended far beyond most people's wildest dreams.

Highlighting some of the features Joomla! supports out of the box would take up an entire article all on its own, but here we'll touch on some of the highlights!

For starters, Joomla! includes 4 different authentication systems. The standard Joomla! authentication system which binds to its own internal database, a GMail implementation (that I wouldn't recommend using as it's insecure), an OpenID implementation that allows users to authenticate via an OpenID user name from any source (currently adopted by Microsoft, AOL, Yahoo, Google and others) and finally a LDAP implementation. The LDAP authentication plug n has been tested against OpenLDAP and even Microsoft Active Directory giving the ability to have a single sign on solution.

By default, Joomla! uses TinyMCE as its main content editor giving the user a very powerful WYSIWYG solution to maintain their articles. Not only does it include the basic Bold, Italics, Underline features, but helps the user add bullets, formatting, embedded media, and even advanced table editing.

The media manager provides a very robust way to upload and manage different typesof media in a folder style method. Uploading new media is as simple as browsing your local hard drive to find the media, and selecting the upload option.

With the recent release of 1.5, Joomla! brings to the table full UTF8 support – this allows all content be written in most languages, including right to left. Included with the download is English but multiple groups have come together to add other language support for both the front end and back end.

If you have a large website, you'll find that web page generation can take up a large amount of CPU time. If you are on a shared hosting server, this can cause some headache. Joomla! provides a caching layer that significantly improves the performance. Both file and APC caching is recommended for a shared host; if you are planning on dedicated hardware with multiple servers, you may want to look at using memcache for your requirements as it allows for load balancing.

Extensions are a large part of Joomla! They fall under one of three categories; Components, Modules, and Plugins.

Components are the meat of the application. They provide specific functionality such as:

*Dynamic form builders
*Business or organizational directories
*Document management
*Image and multimedia galleries
*E-commerce and shopping cart engines
*Forums and chat software
*Calendars
*Blogging software
*Directory services
*Email newsletters
*Data collection and reporting tools
*Banner advertising systems
*Subscription services

Modules, on the other hand, provide mini windows into information – usually found on the sides, or around the main content. These are placed in specific positions as defined by the users template. They can also reference data from installed components. For example, one might have a forum component installed, with a module that displays latest forum posts. These modules might also be custom HTML – allowing you to put things like specific images, or data on the side.

Plugins are a very specific extension. They provide extra functionality to the Joomla! Web application itself – for example, additional authentication systems, editors, or content modifiers (code highlighting, rating, and email cloaking are included by default).

Finally, one of the best things about Joomla! is the community. Our community consists of over 180 thousand users on the forums, 2800 extensions in the directory, 16 books, and many, many websites devoted to templates, and hints and tricks. You can even view a collected list of websites that use Joomla! at the joomlaplace.org website.

In future articles, we're going to look at installation and basic usage, some advanced topics, and then continue into looking at some specific extensions to help Francois with his wine list. Until then, “Go straight home, and don't play in the traffic”.

As a side note, I should mention that Joomla! does not have the same fine grained ACLs that drupal has - and at this point, that is the only thing I can honestly say drupal does better. But, we're out to change that.

-- Jason Kendall