Drupal 7 and SQL Server – our PDO journey

Drupal 7 completed a 3-year journey earlier this year by exiting beta stages and declaring itself ready for prime time. Our team (the SQL Server Drivers for PHP team) was fortunate to be part of that journey by working closely with the Drupal community to add SQL Server support to this release. We learned a great deal along the way and helped deliver in Drupal 7 release that benefits the Drupal community, Microsoft, and most importantly the Drupal users. In this post, I’d like to provide some insight to the part of the Drupal 7 journey that we shared.

The journey for us began almost a year ago (in February 2010) when an unusual request happened across my desk – Damien Tournoud, from the Drupal Core team, had sent an email to Microsoft expressing interest in adding support for SQL Server to Drupal 7. To be perfectly honest, we knew there had been a fair bit of interest for a while within the Drupal community to support SQL Server as evident in this thread and this thread. However, we also know that Drupal 7 had decided to move to PDO…and we didn’t have a PDO driver – yet. Since I had only recently joined the SQL Server Driver for PHP team and was ramping up fast on the team’s PDO effort, getting our work included in Drupal 7 was interesting proposition, albeit a daunting one.

The SQL Server team strongly believes in partnering with key customers during the development process via our Technology Adoption Program, but doing this in the PHP space is relatively new for us. Fortunately, because PDO is fairly well defined, we were able to move quickly on the technical side and didn't feel there was a need for such partnerships for this release. Of course, we did plan to have a CTP (i.e. Beta) available for broader testing and feedback on our implementation.

After doing the homework to make sure we could deliver on time, we welcomed the opportunity to work with Drupal 7 for early technology adoption for our PDO driver. As I mentioned before, there weren’t many precedents within Microsoft for open source projects and we had a fair amount of work in getting things worked out. Doing this on an extremely tight timeline wasn’t a trivial task, but we managed it. We must thank Pierre Couzy from Microsoft France for providing terrific support in getting things off the ground.

At the same time we were figuring out how to work with the Commerce Guys, Damien, Pierre and I were also working out the technical details and timelines - including an incredibly optimistic goal to jointly announce our releases (our PDO driver, their Drupal 7 SQL Server Module) at DrupalCon San Francisco 2010. On our end, we decided to modify our release plan into to include two CTPs (i.e. betas) instead of the originally planned single CTP. We were almost done with our code refactoring at that time and we were wiring up the PDO API layer to the functional layer (see this post on the new architecture), but we felt that two CTP’s would provide the opportunity for more valuable feedback. We converged on the completion dates and began sending Damien private builds to test with.

Working with Damien over the next two weeks was both intense and fun. That balance of intensity and fun was crucial to our success. We ran into several issues, but none that we couldn’t resolve or work around and continue our momentum. We didn’t let up and soon we were ready to release our new PDO driver via the first CTP in April along with the Drupal 7 SQL Server Module. The actual announcement at DrupalCon San Francisco 2010 was complicated by the ash cloud emanating from Iceland, but by most accounts the joint announcement was a success.

One of the best things to come out of the Drupal effort was some great feedback on our driver. Damien’s knowledge and expertise in database support for Drupal is impressive (Damien also drives/owns the PostgreSQL and SQLite database support in Drupal). Part of what made this interoperability effort a success was that we had the “rights” in place – attitude, environment, incentive, and people (read this interview on the SQL Server JumpIn! Camp for more of my thoughts on the “rights”).

The announcement at DrupalCon did not mark the completion of our work, however. We didn’t have time to incorporate all the feedback we had received, so we were back at the drawing board to incorporate some of the feedback that would require some parts of the PDO driver to be redesigned. We made those design changes and included the new PDO driver in our next CTP (good thing we decided on TWO CTPs!). We would realize later that we had some of the best feedback on our PDO driver in those early weeks! Our team received feedback from several sources that we made the right choice in the design changes and simplified their adoption of our PDO driver.

Drupal 7 in the meanwhile was making great progress, and our relationship with the Drupal community was now established and growing. At the JumpIn! Camp at Zurich we met another Drupal developer, Marcus Deglos, who later wrote the ZoomIt module when he learned about the Deep Zoom technology (he authored the module in a few hours!). The ZoomIt module is just one more example of interoperability between Microsoft and Drupal. This post on Drupal interoperability with Microsoft technologies lists even more modules that demonstrate great interoperability between Drupal and several Microsoft technologies.

Our relationship with Drupal has continued. We have worked with the Drupal Core group to figure out how Microsoft could assist in setting up an automated testing infrastructure for Drupal Core on Windows. Now, tests are automatically scheduled on Drupal 7 Core on Windows with SQL Server (see their test status dashboard).

Along the way, more people from Microsoft got involved in this journey that built on the initial momentum and special mention is deserved by Pierre Couzy and Grace Francisco for their fantastic efforts. We also got the opportunity to meet and work with some really great folks from the Drupal community.

With SQL Server support introduced in Drupal 7 and with PHP support or Windows significantly improved in recent years, Drupal 7 deployments now can benefit from the robust scalability and security offered by SQL Server, as well as its cool features like online backup, high availability, business intelligence, etc. The Commerce Guys have provided a Drupal 7 Developer Preview distribution available via the Web Platform Installer as well as WebMatrix. Having reached this foundational milestone, we still have some ground to cover – we don’t have a cloud solution yet. We have received several inquiries about running Drupal 7 on Windows Azure, and we are exploring this option.

Until then, we encourage you to try Drupal 7 with SQL Server and send us your feedback.

Ashay Chaudhary
Program Manager, SQL Server PHP Driver

BuzzNet Tags: drupal,php,sql server,jumpincamp,mssql,sqlsrv,pdo,pdo_sqlsrv