For those who weren't already aware, this site was created using the Joomla! Content Management System. Personally, I think it looks quite good, but why exactly did I choose to go with Joomla!?
I can quite happily write software all day, so why go with a CMS someone else has written when I could enjoy the challenge of writing my own bespoke platform?
In this post, I'll be explaining the reasoning behind my choice, and why I continue to use Joomla where appropriate.
It Looks Good
Firstly, I'm not a designer, I'm a developer. I can quite happily write and use APIs, tinker with frameworks and develop logic to complete a range of tasks. What I can't do (no matter how hard I try) is sit and think "If I move this here, and make that blue it should look good". Just take a look at my Project Management Suite or the LottoPredict API site for proof of this. The underlying capabilities of both are pretty powerful, but the front-ends look like a dogs dinner. In all fairness, I've not paid much attention to the aesthetics of either, but therein lies the crux of the issue.
I can make a UI look nice, but what takes a designer a few minutes to design might take me hours. It is definitely an evolutionary process if I try and improve the look and feel of something, although the results are sometimes worth the effort - my photography site looks quite good, for example.
Of course, if you come to me with a plan of how something should look, I can implement it. What I lack is the creative flair for actually designing the thing in the first place! If I have to do the designing, it's often an un-necessary waste of my time to try and do so from scratch.
For me, this is the real pay-off with Joomla. Someone else has done all the look n feel work for me. I can download a template that looks good and just go with it. If I want to modify it, I can, but even that's less work than starting from scratch as most things will be how I want them.
My old site, Benscomputer.no-ip.org ran on a CMS that I built for myself using BASH. It was a lot of work to write, but it worked and eventually looked quite good (if somewhat dated by todays standards), but changing the look and feel was an absolute nightmare unless you wanted older articles to retain the old look (half the pages were automatically created as static pages).
With Joomla! I don't need to worry about that, if I fancy a change I simply install a new template, test it and then apply it for the world to see! I still suck at deciding what I want, so template hunting can be hard, but it's worlds apart from what I used to go through.
Someone else fixes bugs
No-one wants their web applications to be vulnerable, but the nature of software is that there will always be a hole somewhere. With my custom built CMS it was down to me to find these holes and fix them. With Joomla! someone else does that work for me (though I do still try to find bugs and fire them into the Bugsquad). All I need do is make sure I keep the install up to date and I'm reasonably well covered.
I Can Still Extend
I mentioned earlier that my true focus lies in functionality, so what if Joomla! doesn't do something I need/want? The answer's simple, I build that functionality. Whether that's in the form of a patch to be submitted to JoomlaCode or as an extension makes little difference. Of course, if I do it as an extension I again need to waste time worrying about aesthetics, but even that's simplified somewhat. Have a look at the results retrieval screen on the LottoPredict API page and then compare that to the mod_lotto Joomla Module I wrote. OK one has received a lot more attention than the other, but the effort involved in the aesthetics of the module was a lot less, simply because I didn't have to meticulously plan how I'd make it look, Joomla! did some of the work for me.
Hell, depending on what I need, I may not even need to write any code. The Joomla Extensions Directory (JED) isn't exactly sparse, and even if an extension doesn't do exactly what I need there's always the option to extend its functionality myself. One of the beauties of the JED is that all software is released under the GNU GPL so I'm free to tweak and amend as needed.
This isn't unique to Joomla! or even to Open Source Software, but the level of community support is something that should always be considered. Were I to write a bespoke CMS, I'd have a community of 1 for support. Any additional support I could find would be in quite an abstract format, and the grunt-work of diagnosing issues would be entirely down to me.
With Joomla! I can try and resolve the issue myself (this should always be your first step!), and if I have no luck pop over to the Joomla Forums to ask for help. Whilst the responsibility for diagnosis still lies with me, it's quite possible others are also experiencing an issue, or have resolved a similar issue in the past. The wisdom of many and all that.
It does carry the risk of looking an absolute tit when you're tired and ask stupid questions, but that's outweighed by the alternative of not having any support at all.
Would I Use Something Else?
I'm a strong believer in using the right tool for the job, but there's no denying the draw of familiarity. If Joomla! wasn't best suited to my needs I'd certainly consider another system, but my growing familiarity with the framework lends a huge advantage to Joomla!. Whilst I could certainly extend the likes of Wordpress, Drupal or SilverStripe, I'm not as familiar with those platforms so the learning curve could hamper progress. It may be, of course, that a task arises that isn't easily achievable within the Joomla framework. I'd then have the choice of extending the Joomla framework or using a different CMS, in most cases I'd have to opt for the latter (with a possible view to extending the framework in the future).
For now, though, Joomla! seems to satisfy most of my needs. I'll continue to create crappy interfaces for projects that don't need that aesthetic touch, but the amount I use Joomla! is likely to steadily increase. As in the case of LottoPredict, sometimes it's better to create a single API (it started as a stand-alone site) that can be used by Joomla! and non-Joomla! based projects.
There must be Drawbacks
Every system has it's shortcomings, and some of these are often in the eyes of the individual users. Personally, I'd far rather interact with a framework written by me than by someone else. It's only because I can be lazy and won't need to use the documentation as much though!
Documentation is one area where I feel Joomla! isn't as strong as it could be. A lot of the documentation could be improved (or in some cases - Added), but that's a job for the whole community to take on. I do try and update the documentation when I notice an issue, it just needs more Joomla! users to do the same and the documentation could become first rate.
Although not Joomla! specific, there are situations where a full-blown CMS is overkill. Some of my projects require something very light-weight, using as few resources on the server as is feasibly possible. Using any CMS in this instance would be a good example of using the wrong tool for the job (if you're creating an API that could be easily implemented with flat PHP files, why pull in a full framework?).
Occasionally an extension won't work quite as expected. For example some may have noticed that the Twitter module has dissapeared from my home page, this is because it was slowing the page load dramatically (and it was supposed to be caching!). Normally, this means either raising a support issue with the developer, or trying another extension. Unfortunately, that was the closest thing to my intended use, so I need to either fix the module or write my own (or of course put a support ticket in with the original dev). I have the choice to do any or all of these though!
Other than that, I've not really noticed too many drawbacks. Everything except personal preference can be easily remedied, and it's not like I don't have to use other frameworks anyway, so using the Joomla Framework isn't too big an issue. No matter what system you use, there will always be a gap between what you expect of an extension and what it can actually achieve, so in my mind this is more of a user issue than anything (bugs excepted of course)
The main reason I use Joomla! is that it's often the right tool for the job, and saves me a lot of time and effort when it comes to designing the final look of a project. It brings a wide range of benefits, with limited drawbacks as long as you correctly assess the needs of your project.
From an egotistical developers point of view (I'm not that egotistical really), the wide user-base is also an extreme benefit. Code I write could potentially be used on millions of sites, whether it's as a component or a patch that most users will never see. There's something quite nice in seeing your work actually being used.
I do still, occasionally, need to create a bespoke platform and will probably continue to do so when necessary. It's all about the right tool for the job, but I'm finding that those situations are arising less and less. Whilst I don't forsee a future where I use Joomla! for everything, I can well imagine that the Joomla! framework may come to dominate a lot of my development.
If you've read this far and don't know what Joomla! is, I applaud you for your persistence! You can download Joomla! for free here, and Version 3 is out later this year (though those on 2.5 should probably stay there until 3.5 is released - Long Term Support and all that).
If you've a bit of time free, consider helping improve Joomla! for the benefit of all. I gave some ideas of how to do this in the post Use Joomla? Pull your finger out!