Wednesday, May 7, 2008

The roadmap to JoomlaPack 1.2

Since mid-March there has been an ongoing development effort towards version 1.2 of the JoomlaPack backup component. There are several new features and enhancements in this version. This post is a brief summary of what we intend to implement. I thought this is the most appropriate very first post on our brand new blog :)

Major features for 1.2

  1. Native mode for both Joomla! 1.5.x and Joomla! 1.0.x using the same codebase
  2. Database Table Exclusion
  3. JoomlaPack Archive Format
  4. "Kickstart" script
  5. Reworked database only backup
  6. Single File Exclusion
  7. Front-end database only backup
  8. Multiple Database Backup

The first five features have already been implemented in SVN revision 100 (most of them have also been available in Alpha 2 released earlier in May), the next two are scheduled for Alpha 3 and the complete feature set will be available on the Beta releases.

Explaining the features

Native mode. So far JoomlaPack has been a component written for the 1.0.x branch of Joomla! and would only work on J! 1.5.x with the Legacy Plugin enabled. Acknowledging that Legacy mode is a resource hog, we decided to restructure the component in order to work as a native J! 1.5 component too. We did make it and now there are two packages disseminated for each release. The one ending in -j10 is a Joomla! 1.0.x native version, whereas the one ending in -j15 is the brand new Joomla! 1.5.x native version.

Database table exclusion. Some webmasters are obliged to run several J!-powered websites on the same database, or they share J!'s database with other scripts' tables. A long-running wish on their part is the ability to exclude arbitrary tables from the backup set. Your wish is our command!

JoomlaPack Archive Format. You have certainly noticed that CRC calculation gives certain hosts a really hard time: invalid CRC calculations cause decompression to fail, high server load on CRC calculation causes JoomlaPack to crash and stuff like that. This is why I thought of simplifying the archive format to something similar to a trimmed-down ZIP file, which doesn't contain the Central Directory record (saving some space and reducing CzipCreator's potential failure points) and having no CRC stored. There is an option to toggle between ZIP and JPA and there is also going to be a PHP unpacking script for JPA archives. Right now, the compression part is ready, the extraction part is under development.

Kickstart script. Currently, as soon as the user downloads the backup archive he has to extract it, upload it to the new server through FTP, fix permissions, rename .htaccess, run the installation, remove the installation directory, restore .htaccess and access the restored site. This is tedious. How about transferring the ZIP to the target server, running a script locally which extracts the archive, launches the installation and removes the installation script afterwards? This is the concept behind what I call "Kickstart". Think of it as a bootstrapper for the installation process. Kickstart is available in the SVN, requires PHP Safe Mode to be disabled and currently lacks documentation.

Reworked database only backup. Most people intended to use this feature to grab a phpMyAdmin-usable database dump of their site. The standard JoomlaPack functionality was to create a database dump suitable for use with JoomlaPack Installer (JPI & JPI2) or the standard Joomla! installer. This behaviour has changed to what most of the users expected: a database dump usable by third party MySQL utilities.

Single File Exclusion. On rare occasions we face hosts storing account configuration files on the server's root. To make things worse, these are owned by another (system administrator) user account, making them unreadable, occasionally causing JoomlaPack to fail. Some other times there is just one pesky big file we'd like to exclude from, let's say, DocMan's documents folder.

Front-end database only backup. Self explanatory, it is. Right now you are only to backup your entire site using front-end only tools. Now you're going to be able to backup just your database.

Multiple Database Backup. I have a site which hosts Joomla! alongside a home grown script. This script uses a different database but I need it for my J! site to function, as its functionality is embedded with com_wrapper. Currently, there is no way to backup another database. This is not very hard to do and at least one user asked for it, so I thought "let's do it". And it's a feature no other backup component has!