Managing custom programming and integrations for Joomla! CMS

At CNP Integrations the Joomla! CMS is our company’s core focus and key area of expertise. The central power of this open source platform for content management and client solutions is the diverse collection of over 9000 extensions and the vibrant support from a global development community. Joomla is the most popular CMS system in Europe and the second most popular in the US with 2.8% of all web portals in the world using Joomla! CMS. Considering that 70% of the web is still using static web pages, the current trend suggests that dynamic web sites which leverage Joomla! CMS will only grow in popularity. As this need in the marketplace grows for dynamic web portals there too will be a greater need for administrators to adopt effective software management practices if they want to remain cost effective and competitive.  To manage the associated costs or extensibility requirements for maintenance on any dynamic portal you need a solid version control, change logging and data backup strategy.

While the flexibility of the Joomla content management system and platform can allow you to accomplish a lot right out of the box there are often times when you will need custom programming to extend component features, to create custom workflows with UI (User interface) presentations or to integrate your portal with legacy systems and other technology platforms. This is the ery crossroads where you need to be thinking ahead for the long term maintenance of your code base. You are now entering in to the realm of software development management.

It is an easy mistake the can get out of hand quickly if you are not mindful of a proper process.

It is a real easy trap that we can anyone can fall into, where you or your developer quickly makes a few changes to solve a crisis or tweak something to keep your client happy. You are crazy busy and …oopps you forget to comment or document it. If you do not have discipline or take the right approach by implementing a change management and versioning process up front, for managing your custom programming, you will definitely pay for it later. It takes quite a lot in most cases to backtrack especially if you have had more than one person working with the code.

I understand php code but I am not a programmer myself. However, as a project manager I have seen the lack of good software management practices leave folks in a quandary of problems that are often difficult or impossible to restore. We have taken on many challenging projects that should have been easy in principle but because the previous developers tried to just “get er done” vs thinking about the long term maintenance, we are left cleaning up a “hazardous waste dump” of “spaghetti” code. They have not done their clients any favors by going for the quick fix, quick buck or taking shortcuts.

Hunting around in 1000’s of lines of code to test code relationships or to find modifications that past developers have made can be very time consuming. Time is money and it surely takes less time to manage you code properly than it does finding “needles in hey stacks of code”.

SVN Tools with Built-in Version Control and Change Logs

Bottom line…. Use an SVN system or some type versioning tool or documentation process to manage the code that is changed. We used to do this all manually in text files and spread sheets but there are many great tools available today that allow you to track changes as well as track the evolution of your code over time by reviewing timelines and doing automated code comparisons. We have made this approach a fundamental part of our support policy and you should make sure you make this a priority in your process as well.

Examples of two popular code management and version control software solutions you should consider:

  1. Github is a popular solution and is used by the Joomla development community for managing the Joomla! CMS and the Joomla Platform code repositories. https://github.com/
  2. ProjectLocker is a solution we use to manage our client sites and our developers like this because is reduces the time required for developing change logs and doing code comparisons.  http://projectlocker.com/

Make frequent backups for version control of configuration settings.

The idea of version control also holds true from a configuration standpoint. For example if you have a complicated Joomla! CMS configuration with many components and you are going to take on any risky or major reconfiguration. Such as installing a new template and reconfiguring several parameters of numerous components. Think ahead because you may want or need to revert back if something goes wrong.  A great tool we use for this in Joomla! CMS is the Akeeba Back-up extension. https://www.akeebabackup.com/

This extension allows you to back up and restore your joomla configurations as well as create clone sites for migration to other hosting environments or downloading for archival purposes.

Conclusion:

Make sure if you are going to make extensive or risky configuration changes backup your site first. Remember to test your backups since “an untested backup is not a backup”. If you plan to make changes to files in the code of your extensions or plan to integrate any custom features using custom programming make sure you use version control to manage your code or make sure that the development company you are working with does. I promise this will save you money in the long run and help you sleep better knowing you are a.) doing things right and b.) that your code is safe and soundly managed.