There is a lot of exciting stuff happening inside of MySQL AB. But due to the distributed nature of our company it's hardly possible to get a good overview about what the various teams of our development department are currently working on and what they have achieved since the last time we met.
So one cool new idea for our currently ongoing MySQL Developer Meeting in Heidelberg was to let developers show off their work to each other. They were encouraged to prepare demos, either in the form of slide shows or by running live demonstrations from their laptops. Last Thursday and Saturday we allocated time for these team exhibitions and the exhibitors set up tables in the meeting rooms for others to sit next to them, see the new and cool stuff and chat about it. The non-exhibiting attendees received a sheet of paper where they could collect signatures for each demo point they visited, the one that managed to see the most demos was eligible for winning a price. I managed to visit ~8 of them on Thursday - there was way more stuff to look at than what one could actually get done in the given time frame. Therefore we decided to repeat some of Thursday's exhibitions and included some new ones on Saturday.
Here is a recap of the exhibitions I saw on Thursday:
- Alexey 'Holyfoot' Botchkov demoed the new and improved GIS (geospacial information) functionality that I already blogged about some time ago. It provides a number of new GIS functions and most of the already existing ones no longer use MBRs. Holyfoot actually prepared a visual demo application that displayed a map of the earth by getting the polygons to draw out of the database. It was then highlighting the current country under the mouse cursor, displaying some additional information about it. Moving the mouse across country borders immediately switched the highlighting to the respective state. When using the old, MBR-based functions this would only happen when you crossed the borders of the bounding rectangle.
- My fellow colleague Giuseppe Maxia performed some MySQL Proxy Magic, misusing the MySQL Proxy for some fun stuff and also demonstrating some useful use cases (e.g. crosstabs). See his blog entry for some examples of what he was showing.
- Jay Pipes demoed his work on MySQL Forge 2.0, now with more Ajax magic, rating and commenting on projects and snippets as well as the obligatory rounded corners! There's still some work to be done, but I look forward to seeing it go live soon.
- Monty Tailor explained his work on NDB/Connectors, which provides bindings to many programming languages like Ruby, Perl, Lua, PHP and others. They make it possible to connect to a MySQL Cluster without having to go through the MySQL API, if you don't need to use SQL and just want to use MySQL Cluster as a highly available datastore (similar to memcached). It was interesting to compare the various test scripts for each language with each other - the Perl version looked quite ugly in comparison to the Ruby code...
- An alpha version of the MySQL Workbench was demoed by Johannes Taxacher from the GUI team. He demonstrated how one can visually create tables and set up the relations between them. The GUI is quite nice, but they support Windows only for now - Mac OS X and Linux are also planned, however.
- Kent Boortz from the build team showed off his work on creating a self-contained ODBC build environment. I was quite impressed by the complexity and steps involved in creating the binary packages of the ODBC driver we provide. As we support quite a number of platforms, Kent had to come up with all kinds of interesting tweaks for exotic architectures and strange compilers.
- Jess Balint from the Connectors team demoed the ODBC 5.1 driver by connecting to a MySQL Server using MS Access or with a MS Visual C++ application. It was nice to observe the functional UTF-8 support.
- Paul DuBois, long time member of our documentation team explained the build system they created in order to cope with the massive amount of build targets that are being created from the DocBook sources of the reference manual. In addition to various formats of the manual itself (e.g. PDF, HTML, Windows Help), they also build the manual pages that are included in our *nix distributions as well as some README files and the Changelogs. It is written in Ruby and is capable of distributing the build jobs to several machines.
That's all I was able to see on Thursday. I just wish I had some more time to see all of the other demos. On Saturday I saw the following demos:
- Marc Alff was demoing LTP-GCOV, a tool that visualizes the output of gcov as HTML pages and allows one to find out which code has been covered during the test suite run. It would be great if we could combine it with our internal pushbuild system, which automatically rebuilds the MySQL Server and runs the test suite on a number of platforms for every ChangeSet that is being pushed into a source tree. We already perform gcov build runs to make sure that new code is properly covered by the tests, but this tool would be a very helpful addition, allowing us to find code with low coverage much easier.
- Kristian Nielsen showed an early implementation of a multi-threaded ndbd, the process that runs on a MySQL Cluster data node. This should boost performance on multi-core systems (the current implementation is single-threaded). However, it's still in an early prototype phase, but looks interesting!
- Chad Miller demonstrated an alternative revision control system: bzr. Similar to BitKeeper, it is a fully distributed system which does not require a central server. Creating a local branch of an existing MySQL code tree was quite easy and it seems to be very similar in using it. What impressed me in particular was its capability of connecting to remote SVN repositories - it is actually possible to use bzr locally to work against a remote Subversion server! This should give us a good opportunity to start testing it against our existing SVN trees and gather some more practical experience with it.
All in all I was very impressed and excited to learn about all the cool things that are going on inside of the development team. Even though there is always a lot of work to be done and they're busy getting the MySQL 5.1 release out the door, they still find time to experiment and come up with great ideas and improvements in other areas as well. I got the impression that everybody really enjoyed being able to show off his work and also receiving good feedback from the others that were passing by. I hope we will repeat these team exhibitions at our next meeting!