Wednesday, 26 September 2007

MySQL Heidelberg Developer Mtg: Looking back

As noted already in March and described more closely in July, we had a MySQL Developer Meeting in Heidelberg, opened up for selected members of the MySQL community. Since yesterday, I'm back and reflecting upon how it all went.

The first reflection is that I'm biased, since I was organising the meeting together with above all Patrik Backman (for the agenda) and Georg Richter (for the lion's share of all real work, such as the coordination with our venue, Marriott Hotel). But I would still like to concur with the many MySQLers who think it was "the best MySQL Developers Meeting ever".

So what made the meeting a success?

We got plenty of work done. Our motto was "Working Together", making use of finally being together while going about our already defined goals. We had next to no overall one-to-many presentations (the type where each VP in turn preaches his favourite themes and people doze off waiting for the status report to end). Instead, each small development team met with other small development teams, based on detailed advance planning on which teams really need to meet. And we had plenty of seemingly random one-on-one corridor interactions, many of which were carefully pre-planned by goal-oriented meeting attendees.

We had lots of fun. We met in five-six different restaurants in the Old Town of Heidelberg. We had a great river boat cruise. We had a good team event seeing the Falconry close to Heidelberg. We went to the Kulturbrauerei to see how beer is brewed. And we concluded the team event by a superb evening in the old castle of Heidelberg. We ended that evening by some country-wise singing, started by the Ukraine and including the largest (employee-wise) countries of Germany, Russia, the US, Canada, Sweden, Finland, Australia, and Italy.

Our infrastructure was working. Heidelberg Marriot was our best-working hotel so far. Excellent food (including edible, healthy options, but not totally forgetting the mandatory junk). Internet worked all the time, even in the rooms. And this was no coincidence. Hey, this was Germany. And we have plenty of locals in Germany, and in particular, Georg met plenty of times with whomever needed to be seen locally from an organisation standpoint -- right in front of his doorstep. (No wonder Georg got standing ovations at our closing Gala Dinner at Heidelberg Castle.)

We improved our meeting practices. We followed through on some of our innovations from smaller team meetings (like the one last December in Berlin). Team Leads were in charge of the days being but to productive use -- with over 150 people, no single individual can ensure that time is used efficiently be all Developers. We insisted on good meeting preparations, and good meeting notes being talked. We spread the last-minute notes in outdoor roll-calls each morning, and in the daily Heidelberger Nachrichten ("Heidelberg Chronicle") handouts.

We had Team Exhibitions and MySQL University Sessions. Nearly all thought that the Team Exhibitions invigorated all of us -- where proud MySQLers demoed what they themselves had identified as Cool Stuff to be highlighted for their fellow MySQLers. And the twelve University Sessions spread the knowledge of the intimate details of how to code MySQL.

We had external guests, both customers and community members. Both categories gave us positive feedback for having been invited. We are deeply thankful for the input they gave us, Keeping It Real. But not only did they keep us real -- they also made us a lot more polite and courteous than at some previous internal meetings. I heard very few negative comments or raised voices. Concerns were not wiped under the rug, but they were raised in a very constructive manner.

Thank you to all participants, external and internal, which made this event possible!

Tuesday, 11 September 2007

Ruby creator Yukihiro "Matz" Matsumoto at MySQL UC Japan

One of the most appreciated keynotes at the ongoing Japanese MySQL Users Conference was by Yukihiro "Matz" Matsumoto, the creator of the Ruby language.

Me and Matz at MySQL UC Japan Day 1 2007-09-11

Matz was preceded by an impressive set of keynoters, moderated by MySQL K.K. President Larry Stefonic, also Senior Vice President of Asia Pacific at MySQL AB :

  • His Excellency Mr. Stefan Noreén, Ambassador of Sweden to Japan

  • MÃ¥rten Mickos, CEO, MySQL AB

  • Masahiko Yoshida-san, Director, Hewlett-Packard Japan, Ltd.

  • Kenji Mukai-san, Vice President, General Manager, IT Architecture Solutions Unit, Sumisho Computer Systems Corporation

  • Hirokazu Seto-san, Senior Manager, Alliance & Solutions, Marketing & Operations, Dell Inc.

Matz carries the title of Fellow at Network Applied Communication Laboratory Ltd. For the predominantly business oriented audience, Matz described the history of Free Software, of Open Source, and of Ruby, mentioning the mandatory names: Richard Stallman, Eric Raymond, Linus Torvalds, and, for Ruby on Rails, David Heinemeier Hansson. With Linus, Matz shares the original motivation for starting their respective now-famous Free Software project: Fun!

The presentation was a great success and even Matz's jokes were translated into English, creating a time-delayed wave of laughter in the non-Japanese part of the audience. I wonder whether my own afternoon session in English will be equally well treated, when translated into Japanese.

Re-engineered ODBC 5.1 driver for MySQL

MySQL is today releasing a new ODBC driver, under the version number ODBC 5.1. It is a partial rewrite of the the original MyODBC 3.51 code base, originally developed by Monty and Venu Anuganti, including individual parts of the current 65K ODBC 5 code base. It is designed to work with all MySQL versions starting with MySQL 4.1.

The original ODBC 3.51 driver was incomplete and admittedly somewhat of a quick hack, containing some debatable code. For that reason, Connector/ODBC 5 started as a complete rewrite. After 2 years it had 65 KLOC, but no tests and was in part overdesigned. That project was started but never finished, and had some deep Qt dependencies.

In the meantime, the original ODBC 3.51 has had 6 new releases and over 200 bugs fixed. As for ODBC 5.1, debatable parts of the code have been rewritten. The new ODBC 5.1 driver thus shares almost solely its major version number with the old ODBC 5 driver, which never went past Beta stage. The development of the old ODBC 5 driver has now stopped.

The new ODBC 5.1 driver, like 3.51, supports all relevant platforms (including Win64). While ODBC mostly is relevant for Windows, we have some (but not many) Linux based ODBC users.

Overall, ODBC 3.51 (released as 3.51.20) is now in a better state than ever. The ODBC QA team has written several hundred new tests. Without doubt, the 3.51 code base is now a good fundament for the new ODBC 5.1 version.

ODBC 3.51 supports a subset of the ODBC Core interface, plus some Level 1 and Level 2 features. ODBC 5.1 should be a complete implementation of the ODBC Core interface, plus more Level 1 and 2 features.

We aren't going to reach complete Level 1 conformance because we won't be supporting asynchronous execution. and we won't support SQLProcedureColumns() as we at this point cannot get stored procedure parameter info from the server.

The stumbling blocks for full level 2 conformance are in/out and out parameters, and bookmarks, related to MySQL Server.

New features include Unicode support, and descriptors for connectors and metadata as required by Level 3. The following features are already supported in ODBC 5.1.0

  • Support for SQL_C_WCHAR.

  • Support for Unicode functions (SQLConnectW, etc.)

  • Descriptor support (SQLGetDescField, SQLGetDescRec, etc.)

Before ODBC 5.1 goes beta, you can expect the following functions

MySQL has a number of beta customers identified by the Support team. They represent user bases for which Unicode is interesting. From the Community of MySQL users, we are looking for testers who can expand upon the quality assurance done inside MySQL, which is based on automated tests.

Especially, we're looking for beta testers who work with closed source applications like Microsoft Access, PowerBuilder, and Borland tools. Testers should contact Lenz Grimmer or Kaj Arnö in the MySQL community team (at, who will establish the contact between the ODBC team and the beta testers.