Sirs, Gentlemen and Scholars,
I am appreciative of all of the discussion that has happened on the mysql_deprecation RFC (https://wiki.php.net/rfc/mysql_deprecation). It has helped me understand how we feel collectively about ext/mysql and how to deprecate it. I believe that clarifying what the term 'deprecation' means could help everyone to understand what we are trying to accomplish.
To quote wikipedia on the word 'deprecation':
In the process of authoring computer software, its standards or documentation, or other technical standards, deprecation is a status applied to features, characteristics, or practices to indicate that they should be avoided, typically because they have been superseded.
I think we all agree that ext/mysql should be avoided and that it has been superseded. What I want to point out is that deprecation is a process. The real question is: have we taken the proper steps in that process?
I believe we haven't taken all the proper steps. Have we spent efforts educating the community? Yes. Are those efforts proportionate to the magnitude of the usage? No; ext/mysql has widespread adoption and needs widespread education and training resources.
Despite that, I think we can deprecate ext/mysql in PHP 5.5. Some time frames:
- PHP 5.5 will not be released until at least sometime in 2013, probably after March because that's when 5.4 was released.
- After that point, it will take 6-12 months before distribution systems integrate and release it.
- After distribution systems have released it, there will be a few months or more before people upgrade.
We are looking at 1 and 1/2 to 2 years before the deprecation warning would hit the logs for the majority of users. That should be plenty of time for the following:
- The manual should state that ext/mysql will be deprecated in version PHP 5.5 and warnings will be generated.
- A resource on our website needs to explain what needs to be taken before 5.5 to avoid these warnings. It should also explain what deprecation means (particularly that ext/mysql is not being removed yet)
- A resource needs to explain how to upgrade to
mysqli
orPDO
.
- The use-last-opened-connection feature is widely used. This is one case we need to specifically address.
Those three things are critical and should be completed before 5.5 is released; the ones below are additional things that could be done:
- Outreach campaigns should take place to point the masses to these resources.
- Large software groups should be specifically contacted to explain all of this.
However, if we cannot commit to doing these things then I would advise against deprecating ext/mysql in version 5.5.