With version 1.7 "almost" out the door, the CiviCRM planning team spent most of this week's team meeting evaluating potential "big ticket" items for 1.8 and discussing future platform requirements for CiviCRM.

The platform issues are:

  • When do we drop support for PHP 4.x?
  • When do we drop support for MySQL 4.1

There are compelling technical and management arguments for requiring PHP 5.x and MySQL 5. On the management side, we estimate that it costs the project approximately 4-6 person-weeks of extra time to code, test and debug the PHP 4 version. As the codebase grows - this cost of supporting two very different programming models grows. These are resources that we'd prefer to use improving the overall functionality, usability and quality of the software.

On the technical side, PHP 5 has performance and security improvements , along with more advanced programming features which we'd like to take advantage of. At the recent OSCMS conference, Rasmus Lerdorf ("father of PHP") was pleading with folks to drop support for PHP 4.

MySQL 5 added support for key database features which can potentially help with scaling and simplifying the query engine. These include Stored Procedures, Views, and Triggers. If you're interested, the MySQL site has a useful overview of 5.0 improvements.

Our big concern is giving folks enough time to respond to this change, and make sure their host / servers are up to speed. After some spirited discussion, we decided on the following course of action:

  • Version 1.8 will be the last release to support PHP 4 and MySQL 4.1
  • 1.8 will include the enhanced duplicate detection and merging functionality that is critical to many of our users.
  • We will limit the number of other changes in 1.8 in order to deliver it in a 6-8 week cycle - target release date is June 1. We'll be announcing an updated 1.8 roadmap shortly.
  • We will continue to support 1.8 with critical bug fixes and security updates through the end of 2007.
  • The release after 1.8 will be designated 2.0 in recognition of the platform requirements changes.

The consensus on the team is that this is a decent game-plan which we hope will benefit the project and the community as we move forward.


Supporting PHP 4 requires restrictions on use of many object-oriented features. MySQL 4.1 may not support triggers and user-defined functions, but CiviCRM extensively abstracts the database. Database abstraction achieves the same effects as triggers and user-defined functions. CiviCRM doesn't currently use MySQL to its full potential. Transactions and cascade deletes should more widely used. Once MySQL 5.1 (or maybe 5.2) comes out with its improved subquery optimization, there may be value in dropping earlier versions.

Most higher quality hosts are now offering php5 in conjunction with php4 (And you need a high quality host to run CiviCRM). So dropping php4 may not be that big of an issue. MySQL 5 however is less widely supported, so it may be the tougher transition. Though we're talking a timeframe of 10 months. Hopefully in that time hosts will be able to get their butts in gear.

Sounds like a good plan to me. I've already transitioned my sites to php5 and mysql5 long ago. While a number of web host providers still don't offer php5 or mysql5 by default, my experience is that there are enough that do, and many that don't can offer php5 and mysql5 on request.