Monday, 30 June 2008
The first category is Sun-MySQL acquisition and integration. To be specific, the first blog entry in this category didn't even touch upon Sun; on 7 January 2008, I noted that nearly all of us 400 MySQLers met in Orlando, Florida. Then and there, on 16 January, we announced that Sun acquires MySQL. The same day, I spoke to the MySQL founders Monty and David on their Sun feelings, and bragged that we "taught Sun a lesson", with links to our singing of "Helan gÃƒÂ¥r" on stage.
At the end of that week, I shared that I was appointed MySQL's Ambassador to Sun, and reflected about the most action-packed week of my MySQL life until then.
Then, the Sun ambassadorial visits started. I picked Finland first, and took two new Sun colleagues to the student corporation where we spent most of the 1980s.
Then, I announced our Integration Kickoff in Menlo Park 29-31 January 2008. I spoke about Jonathan's Hippocratic oath. Our co-founder Monty met with Sun CEO Jonathan Schwartz and CTO Greg Papadopoulos. Josh Berkus of PostgreSQL fame joined the three-day mtg.
Follow-up activities started, such as a study group on MySQL culture. On 26 February 2008, the deal was closed, and MySQL became officially part of Sun.
Then, the MySQL World Tour started, first on IRC. The week of 10-14 March was the most hectic one. We used what I called Decadence Airlines. My blog link evidently caused Google to identify NetJets if you google for "Decadence Airlines". We started in Sweden, didn't get immigration cards in Moscow, shot with Kalashnikovs in Izhevsk, saw oodles of churches in Kiev, and downgraded from Decadence Airlines to Lufthansa when flying from Hamburg to Munich.
We then had a great meeting with Sun Fellows and Distinguished Engineers at Tech@Sun.
April, May and June I largely spent with commercial Meetup-Mashup meetings worldwide: Paris and Milan in Europe was followed by Tokyo, where I observed clothing sizes and Finland Swedish cultural imperialism. In Beijing, my presentation was captured on video. Prague, Istanbul and St Petersburg were mentioned only on an aggregated level in my reflections on The Why and How To of Localising Presentations beyond English.
Moreover, Sun also did some anthropology studies of MySQL. And we were present at CommunityOne and JavaOne.
For business readers who understand Swedish, I pointed out my five Sun-MySQL integration columns in Forum fÃƒÂ¶r Ekonomi och Teknik.
I concluded the quarter through thanking Ingrid Vos and VÃƒÂ©ronique Loquet, who did MySQL's PR in Germany and France for many years.
MySQL Community related blog entries is the second category. I did fewer of those than before, with Giuseppe Maxia the Data Charmer appointed our new Community Team Leader. But I did speak on the Open Source Yearbook at CeBIT, I did have lunch with Mayflower, I did promote MySQL Forge 2.0 and I did spend time with Jim Grisanzio in Japan, pondering the definition of Community. In Japan I also saw a demo of the Senna / Tritonn fast full text search engine, and I noted that our Community provided free hosting of MySQL 5.1 and 6.0 databases.
I recommended everyone to check out MySQL Workbench, our DB design tool, the successor of DB Designer 4.
We opened the MySQL Summer of Code, for which we accepted fourteen projects.
I met with Mark Shuttleworth of Ubuntu in Prague, and in St Petersburg I got all excited about using NetBeans as an IDE for developing and learning the C/C++ code that constitutes MySQL itself.
We concluded June by hoping to foster more participation through starting to use Bazaar for version control.
The MySQL Users Conference in April was a third big blog category. The UC started by Jonathan Schwartz and Rich Green crashing the community pre-conference dinner party. We handed out the MySQL Community Awards for 2008. One of the winners, Sheeri Kritzer Cabral blogged and vlogged profusely. I shared my observations of the first morning's keynotes through my 8mm fisheye lense. Photography was done by more talented people than myself, with Julian Cash doing light painting. And Barton George podcasted.
Other categories aren't big enough to make up subcategories. In May, I had the debatable pleasure of re-stating that MySQL Server is Open Source. I described the separate / improved release model of MySQL Cluster.
I noted Sandro Groganz started a new Open Source marketing consultancy, and Symbian going FOSS.
I concluded the quarter by noting that our founders donated 200 000 dollars to the Software Freedom Law Center, and joking about the drawing on MySQL being born at TeknologfÃƒÂ¶reningen.
That is, if you don't count the category of personal blog entries. I noted that Germany smells good, with something at least resembling a ban on public smoking. I bragged about having run 1259 km in 2007 and about having run a half marathon in 1:46:05. And in the winter, I went skiing with Ãƒâ€“tzi and my son Alexander, with whom I conquered K2 and the Wildspitze in Austria.
Looking forward to a busy second half of the year!
In October 2003, Mick Carney (the first MySQLer in Sales in France) convinced us to choose VÃƒÂ©ronique Loquet and her company Al'x Communication as MySQL's French PR agency.
And what an excellent choice it was! VÃƒÂ©ronique and her Paris team have been with us now for nearly five years. Her contacts are excellent, as are her organising skills. She practically embodies PR for les logiciels libres (Free and Open Source Software) in France.
VÃƒÂ©ronique has visited the MySQL Users Conference in Santa Clara several times, and of course introduced us to numerous French journalists, fixing plenty of meetings for MÃƒÂ¥rten, Zack, myself and others.
Being acquired by Sun Microsystems does have many more ups than it has downs, but one of the big downs is that we won't be working with VÃƒÂ©ronique any longer.
Merci, VÃƒÂ©ronique! Tu vas nous manquer.
- Al'x Communication: http://www.alx-communication.com/
Sunday, 29 June 2008
Thumbs up after a half marathon finished in record time
"From a fat bastard to a running dynamo" was what a fellow member of the MySQL Running Club SMSed me when I had proudly announced my personal record of 1:46:05 (as measured "on the safe side" by my own watch; the organisers timed me at 01:45:58) on the MÃƒÂ¼nchner Stadtlauf half marathon in Munich today.
Full of energy before the race
While I may never have fully qualified for the attribute "fat", I certainly was very bad at sports at school. My average speed on 21 km today (11,9 km/h; 5:03 minutes/km) was the same as my average speed on 2400 m at school, which was the distance that I did at school at the Cooper test (where the point is to run as far as you can for 12 minutes).
The route as plotted by my Garmin Forerunner 305
The MÃƒÂ¼nchner Stadtlauf half marathon has a very scenic route, starting at the central square Marienplatz and going past the Theatinerkirche by the Hofgarten into the Englischer Garten, where most of the run takes place.
Waiting for the start at the Rathaus on the Marienplatz
The start was 8:00 in the morning. I located the sign saying "1:45-2:00" and went just past it, as I was sure I wouldn't make 1:45 but certainly aimed for less than 2:00.
The shoe chip
On my right shoe, I had a one-time chip for measuring my time, which we got from Sport Scheck, the organising sports store, along with the orange T-shirts. Good thing Germany doesn't play Holland in the football finals today, as our attire would have been considered treason by most runners.
Plenty of runners
Despite standing at the right spot ("1:45-2:00"), I ended up passing lots and lots of slower racers during the first 20 km of the race. The paths for running are narrow, and doesn't really carry the capacity for this amount of runners. It's especially hard to run past groups of two or more runners next to each other. Oh well, running a race is meant to be fun, and it is fun, but still: Perhaps it would be a good idea to suggest some traffic rules like "slower runners to the right" and "no more than two fellow runners next to each other".
At km 20 in the Hofgarten
Given how this went, I'm likely to want to run another race.
At the Theatinerkirche on the way back
Feeling more confident to reach the goal, now in the WeinstraÃƒÅ¸e
The next goal is the 35th MÃƒÂ¶viken runt in Nagu, Finland next Saturday 5.7.2008. Nagu IF started five years before the MÃƒÂ¼nchner Stadtlauf, which had their 30th event today.
Sophia ArnÃƒÂ¶ proudly (I hope) took pictures of her father
Running is fun!
Update 30.6.2008: Based on the statistics from Mika Timing, it turns out I was #1346 out of 5288 finishers (men). This means 25 % were faster than me and 75 % were slower than me. The median time was 1:55:04.
My hand-made statistics for men:
- Winner - 1:08:25
- 1 % - 1:24:53
- 5 % - 1:31:56
- 10 % - 1:37:04
- 20 % - 1:43:23
- 25 % - 1:45:43
- 30 % - 1:48:02
- 33,3 % - 1:49:12
- 40 % - 1:51:37
- 50 % - 1:55:04
- 60 % - 1:58:49
- 66,7 % - 2:01:34
- 70 % - 2:03:09
- 75 % - 2:05:46
- 80 % - 2:09:14
- 90 % - 2:18:00
- 95 % - 2:24:35
- 99 % - 2:39:39
- Last - 2:55:15
- MÃƒÂ¼nchner Stadtlauf: http://www.ganz-muenchen.de/freizeitfitness/sport/laufen/muenchner_stadtlauf/sport_scheck/start.html
- Results for MÃƒÂ¼nchner Stadtlauf half marathon from Mika Timing:Ã‚Â http://results.mikatiming.de/2008/muenchen_sportscheck/
- MÃƒÂ¶viken runt / Nagu IF: http://naguif.net/
- My running stats for 2007: http://blogs.mysql.com/kaj/2008/01/05/1259-km/
Friday, 27 June 2008
Under the title of "From MySQL to Sun", I'm writing a monthly column to a Swedish-language business publication called "Forum fÃƒÂ¶r Ekonomi och Teknik", about the Sun-MySQL integration.
If you happen to read Swedish, you may want to take a look at the five articles that have appeared so far:
TF has a tradition of each year publishing "Katalogen", a membership directory and year book, to finance its activities. The way for sponsors to stand out in this yearbook is to have the funniest cartoon. And we're happy to support TF, where "MySQL was born" (Swedish: "MySQL fÃƒÂ¶ddes pÃƒÂ¥ TF") as we humbly claim in our ad this year:
Note: The "mother" giving birth to MySQL's mascot dolphin Sakila is TF's building Urdsgjallar, which has the shape of a drinking horn seen from an aerial perspective. According to legend, it has "no two perpendicular walls". The name of the building derives from Gjallarhorn of Norse mythology). And the two "teknologer" (students at a University of Technology, generally in Finland or Sweden) are wearing "teknologmÃƒÂ¶ssor", hats that denote membership and are decorated by a tassel (Swedish "tofs"). The drawing was made by Bosse Ãƒâ€“sterberg (architect, song-writer and artist), who made drawings for Katalogen already in 1981.
- TeknologfÃƒÂ¶reningen (TF): http://en.wikipedia.org/wiki/TeknologfÃƒÂ¶reningen
- Bosse Ãƒâ€“sterberg (in Swedish): http://www.finskaakademien.se/ordbrukare.php
Ingrid and her Munich based team have accompanied MySQL AB -- and specifically MySQL GmbH -- now for over six years. It has been a fantastic ride together. She has introduced us to numerous German journalists, and fixed plenty of meetings for MÃƒÂ¥rten, myself and others. Always with efficiency, a positive attitude, a happy smile and a friendly Austrian touch.
Being acquired by Sun Microsystems means changes in how we do lots of things, and one of those changes is that we won't be working with Ingrid any longer.
Thank you, Ingrid! I'll miss you.
In 2000, MySQL co-founder David Axmark first told me about having met with Eben Moglen. His descriptions of Eben were always filled with respect and admiration -- respect for a person who can keep his integrity and views of how software law should shape the world, and admiration for Eben's pragmatism and ability to make a difference in the real world.
|David Axmark||Michael "Monty" Widenius||Eben Moglen|
Over the years since David's first encounters, Eben and his later estabished Software Freedom Law Center have repeatedly provided MySQL and its founders with insightful advice. As a startup, initially without any VC financing, MySQL hasn't always been able to compensate proportionately to the value created.
In recognition of the value created for MySQL through SFLC's advice, especially on how Eben helped defend MySQL as a GPL developer against license breaches, David and Monty have decided to donate 100 000 dollars each to the SFLC. David and Monty hope this token of appreciation can help the SFLC to give legal advice to support some of today's startups, who build their business on Free Software. They also hope to inspire other Open Source entrepreneurs to support the SFLC.
Note: SFLC provides legal representation and other law-related services to protect and advance Free and Open Source Software. Founded in 2005, the Center now represents many of the most important and well-established free software and open source projects.
- Software Freedom Law Center: http://www.softwarefreedom.org/
- David Axmark: http://en.wikipedia.org/wiki/David_Axmark
- Michael "Monty" Widenius: http://en.wikipedia.org/wiki/Michael Widenius
- Eben Moglen: http://en.wikipedia.org/wiki/Eben_Moglen
- MySQL DevZone Interview with David: http://dev.mysql.com/tech-resources/interviews/david-axmark.html
- SFLC Services: http://www.softwarefreedom.org/services/
- SFLC Donations: http://www.softwarefreedom.org/donate/
- MySQL Thanks the Free Software Foundation (7 Nov 2002): http://www.mysql.com/news-and-events/generate-article.php?id=178
- MySQL Thanks the Software Freedom Law Center (8 May 2007): http://blogs.mysql.com/kaj/2007/05/08/software-freedom-law-center/
Wednesday, 25 June 2008
If you for some reason missed the news yesterday: Symbian, the largest mobile operating system, will soon be Open Source. The software will be made available "over the next two years" and is intended to be released under Eclipse Public License (EPL) 1.0.
Looking at the Symbian press release:
Mobile leaders to unify the Symbian software platform and set the future of mobile free
Foundation to be established to provide royalty-free open platform and accelerate innovation
LONDON, UK; June 24, 2008 - Nokia, Sony Ericsson, Motorola and NTT DOCOMO announced today their intent to unite Symbian OSÃ¢â€žÂ¢, S60, UIQ and MOAP(S) to create one open mobile software platform. Together with AT&T, LG Electronics, Samsung Electronics, STMicroelectronics, Texas Instruments and Vodafone they plan to establish the Symbian Foundation to extend the appeal of this unified software platform. Membership of this non-profit Foundation will be open to all organizations. This initiative is supported by current shareholders and management of Symbian Limited, who have been actively involved in its development. Plans for the Foundation have already received wide support from other industry leaders.
To enable the Foundation, Nokia today announced plans to acquire the remaining shares of Symbian Limited that Nokia does not already own and then contribute the Symbian and S60 software to the Foundation. Sony Ericsson and Motorola today announced their intention to contribute technology from UIQ and DOCOMO has also indicated its willingness to contribute its MOAP(S) assets. From these contributions, the Foundation will provide a unified platform with common UI framework. A full platform will be available for all Foundation members under a royalty-free license, from the FoundationÃ¢â‚¬â„¢s first day of operations.
Personally, I'm a happy Symbian user (Nokia E61i) and certainly welcome the move. Hey, Symbian's market share is already well over half of the mobile market. This is a move in the right direction, at the right moment in time.
Ah, and did I mention that MySQL runs on Symbian?
- Symbian enlightened by LAMP (entry on my blog from Dec 2007): http://blogs.mysql.com/kaj/2007/12/10/symbian-enlightened-by-lamp/
- Symbian press release: http://www.symbian.com/news/pr/2008/pr200810018.html
- TechCrunchIT / Nik Cubrilovic: http://www.techcrunchit.com/2008/06/24/symbian-goes-open-source-courtesy-of-nokia/
- Om Malik -- Symbian, iPhone & the New Mobile Reality: http://gigaom.com/2008/06/24/symbian-iphone-the-new-mobile-reality/
Thursday, 19 June 2008
We have migrated all MySQL code trees that were available in BitKeeper. This means not just current GA and development versions of MySQL Server and MySQL Cluster, but also the history all the way back to MySQL 3.23.22 released about eight years ago. And we've also migrated non-MySQL-server FOSS applications to Bazaar, such as MySQL Workbench (formerly not in BitKeeper but in Subversion, also known as svn) and our internal QA suites.
We would like to thank BitKeeper for the fruitful relationship that has lasted for 5 years. BitKeeper has helped MySQL to achieve its goals in a professional way and to scale from simple version control to a more productive workflow.
Despite BitKeeper's strong features, we wanted to find a more open product, since our goal remains to expand our external contributor base. For that, we need a freely distributable product to build a new policy of cooperation. For this, BitKeeper had published a free client for the community; however, this client is unfortunately limited to a few read-only operations. The community has been asking for more functionality, and we have taken these requests to heart.
It is because of our commitment to the development community that we decided to switch. We can't encourage contributions without providing the appropriate tools for the task. Before opting for Bazaar, we evaluated several candidate Revision Control Systems, looking for the following features:
- ease of use for a distributed development organization
- feature set compatible with BitKeeper
- availability in all major operating systems (Linux, Windows, Mac OS X, Solaris).
All the above requirements have played a decisive role in our choice, and countless email messages have been exchanged in the internal mailing lists to weight the pros and cons of replacement candidates. In the end, the features and openness of Bazaar was agreed to be the best alternative. The engineers at Canonical, under former MySQLer Elliot Murphy's guidance, have worked wonders in adapting Bazaar to what they know about our requirements. Bazaar has been under intense development lately, resulting in 5 releases that have enhanced and stabilized the product since January, and these fixes have been of great benefit to us.
Side note: After being acquired by Sun, we learned that Sun will standardise on Mercurial. However, our decision on Bazaar was in the works already before MySQL was acquired and won't affect Sun's policy.
What is in it for the MySQL community? A more open environment for sharing MySQL code, and for working on it. Using Launchpad (http://launchpad.net), the Bazaar public web interface, Sun can now offer a better code repository for internal and external work on MySQL. This repository is now available at http://launchpad.net/mysql-server.
For readers not familiar with Bazaar and Launchpad, I recommend Canonical's Projects page for clarifications. However, do note one thing: That page says that "Launchpad is a collaborative system developed by Canonical, and used to keep track of many aspects of open source development including bug tracking.". We're using Launchpad as a code repository, but we'll continue to use our own same bug tracking system, at http://bugs.mysql.com.
The "Installing from the Development Source Tree" chapter of the MySQL 5.1 manual has been updated to reflect the switch to Bazaar.
Over the weeks and months to come, you can expect articles and blog posts about how to work with Bazaar. As we are still in the infancy of this new experience, we will welcome community advice and articles on this matter. Please contact us at 'community' 'AT' 'mysql' 'DOT' 'com', or just blog about your thoughts. We are listening!
- BitKeeper: http://www.bitkeeper.com
- Bazaar: http://bazaar-vcs.org
- Ubuntu: http://www.ubuntu.com
- Canonical: http://www.canonical.com
- Canonical's Projects page: http://www.canonical.com/projects
- Launchpad: http://launchpad.net
- MySQL's code repository: http://launchpad.net/mysql-server
- MySQL's related projects: http://launchpad.net/mysql
- Elliot Murphy's Launchpad page: https://launchpad.net/~statik
- MySQL 5.1 Manual page: "Installing from the Development Source Tree" http://dev.mysql.com/doc/refman/5.1/en/installing-source-tree.html
- Daniel Fischer's article "Getting started with Bazaar for MySQL code": http://dev.mysql.com/tech-resources/articles/getting-started-with-bazaar-for-mysql.html
Let me try to grab your attention by first sharing my perhaps somewhat controversial conclusion:
English as a language of communication is much overrated. In an international setting, English may be sufficient for conveying meaning, but it has severe deficiencies when it comes to establishing a social relationship, to showing respect, to building trust, and to having fun.
For many years, I have attempted at learning how to say "thank you" and "please don't smoke" and "where is the toilet" in the local language. So I know to say "gdye tualet" in Russia, "where are the restrooms" in the US, or just a simplified "donde baÃƒÂ±os" in the Spanish speaking world.
Now, early this year, I got the assignment to travel around the Sun locations of the world. And I decided to raise my ambition level. I wanted to give a five-to-ten minute introduction to my presentation in the local language, no matter what language that may be.
The inspiration for that ambition I got from the enthusiastic reception of merely greeting the audience in the local language. In 2001, I got a rock star reception in Belgrade, Serbia -- just for saying "Dobar dan svima!" (good day to you all). Last year in Seoul, Korea, I got plentiful applause just for saying "Anyong haseo". Such enthusiasm felt a bit undeserved for two-three words, so I decided to see what would happen if I raise the bar.
Now, I've given 5-10 minute presentations in Italian, Japanese, Chinese, Czech, Turkish and Russian. As I don't really speak any of those languages, what I did was reading aloud from a script. And I'd like to share my experiences.
My recipe for delivering a presentation in a language I don't speak is this:
- Write the presentation in a language you know
- Target the message to the audience
- say who you are, where you're from, why you're here
- be clear on your key message, the simpler the better
- sprinkle in some humour, but don't be too ambitious
- make sure your text is not generic, but specific to the audience
- Ask a local to translate the presentation (Thanks Giuseppe for translating my original French meetup presentation to Italian! Thanks Kazumi-san for Japanese! And thanks to all Sun colleagues in Beijing, Prague, Istanbul and St Petersburg for your translation help -- without it, none of this would have happened!)
- If the language has an unknown or just hard to read character set, then transcribe it (I did so for Japanese, Chinese and Russian, but not for Italian, Czech or Turkish)
- Study by reading a page or two (spend at least 15-30 mins) on how to pronounce that language
- Add notes to your script, to make your pronunciation intelligible
- Emphasis: Some languages put stress on seemingly random syllables, such as Russian -- deNOTe THOse SYLlables SOMehow
- Tone: In some languages, tone carries meaning -- such as Chinese
- Add notes to your script, to make your speech enjoyable
- denote the *words* that you want to *underline* when *speaking* (if you stress every word in the same way, your speech will be boring and monotonous)
- denote when you want to ask the audience for questions, such as <raise your hand, wait for audience response>
- Practice your speech with one or more locals
- over the phone beforehand
- in the destination just before the presentation
- have fun when doing it
- Read the presentation aloud from your paper script
- keep eye contact
- don't be too fast, don't be too slow
- enjoy the audience feedback
- have fun! enjoy!
- Ask how it went, afterwards
- how many percent did the audience understand?
- ask for honest (not just polite) feedback in private
- Optionally: Arrange for your speech to be recorded
The outcome from following this recipe has by far exceeded my high expectations:
- the Italians, Japanese, Chinese, Czech, Turks, and Russians all gave me their undivided attention during all of the 5-10 minutes
- based on informal feedback, I estimate that 80-90% of the contents of my Chinese was understood (my ambition level was "at least 70%"), with Japanese exceeding 90%, and the other languages exceeding 95%
- a Japanese blogged about having goose bumps when listening to a gai-jin speaking (or rather pretending to speak) Japanese
- the extroverted Chinese interrupted my speech in Beijing for about eight times, for applause
- all audiences laughed at the intended spots (in particular where towards the end of the presentation, I self-deprecatingly said "As I'm sure you've noticed by now, I *don't* speak <language>")
- several Turkish attendees thanked me afterwards in person, in a way that seemed even more sincere than polite (and by all means, it was polite)
- the usually notoriously quiet Russians bombarded me with 50 minutes of questions after my presentation, and also the equally quiet Japanese had more questions than we had time
I've discussed and analysed the reasons behind this positive feedback, with colleagues at Sun. My going theory is this:
- I show that I'm the stupid foreigner here -- common courtesy would require me to know the local language, not the locals to know a foreign language
- going out of my comfort zone, I attract attention and show respect to the locals
- making mistakes in the local language, I show I'm ready to invest in the relationship
- as so few others are ready for this extra effort, the expectation level for the quality of my language skills is surprisingly low
- the attitude I display gains trust and comfort -- and better business level interaction
I always feel strange when people apologise to me for their lack of knowledge of English. True, my command of the English language may exceed that of some taxi drivers in St Petersburg, London or New York. Yet, English is and probably will remain my third language. My native language is Swedish, and I feel more comfortable in German than in English, at least when the topic isn't strictly related to my professional life. English is also chronologically my third language, as I learned Finnish before English at school. In consequence, when I state that the official common language of MySQL is Bad English, I consider myself a case in point. And the statement seems a relief for everyone when I say it.
All in all, there's nothing wrong with English. It's a good language, like many others. But just like in biology, monoculture comes with many risks, and diversity is good. Let's celebrate it, let's enjoy it, and let's reap business benefits out of it!
- Sun Meetup-Mashup in Italy: http://youtube.com/watch?v=UjwdhFpNR8s
- A slightly more English-centric view of Italian (by Monty Python): http://www.youtube.com/watch?v=k9TVYCffHEE
- A video of my presentation in Chinese: http://video.google.com/videoplay?docid=3036893738929286405&hl=en
- My blog entry on speaking Chinese: http://blogs.mysql.com/kaj/2008/04/28/nushimen-xianshengmen-a-speech-in-chinese-on-video/
- Chinese comments: http://www.google.cn/search?sourceid=navclient&hl=zh-CN&ie=UTF-8&rls=IBMA,IBMA:2008-18,IBMA:zh-CN&q=MySQL+Ã¥Å’â€”Ã¤ÂºÂ¬+Kaj
- Pics from Beijing event: http://event.full-design.com/Sun/MySQL/photos/photos.htm
Wednesday, 18 June 2008
Using NetBeans as an IDE (Integrated Development Environment) for coding and learning MySQL.
Now, that's a simple answer, and that's because it's a simple and beautiful thought. But let's start from the beginning.
In my days as a coder, I enjoyed the command line. I've used various coding editors, and I've disliked the hassle of learning new IDEs, who sometimes are more of a straightjacket than a productivity enabler. So call me conservative if you will, but I've written my PHP stuff directly in an editor.
Those who write the C and C++ code of MySQL are likely even more conservative than I am, and for a good reason: They've set up an environment that they're happy with and used to. They are about as likely to change their development environment away from the vim/emacs/gdb/gcc stack as football fans change their favourite football teams.
So you can imagine that Vladimir had a bit of an uphill battle when he wanted to demo the C / C++ extensions to NetBeans.
But then Vladimir started to describe how the NetBeans team had used MySQL as a test case even before MySQL became a candidate for "eat your own dog food" through Sun's acquisition of MySQL. It's a real-world complex piece of software, and if an IDE can handle MySQL, it can probably handle most applications.
And the NetBeans team was able to successfully support MySQL:
- MySQL can be directly imported as a NetBeans project
- NetBeans can show dependencies between MySQL routine calls
- NetBeans can show all occurences of a C variable in MySQL's source code, in a scope-sensitive way (i.e. not a simple grep)
- NetBeans shows all occurences, across the code base, of a particular class, function, field, macro etc.
- NetBeans can rename any identifier in-place, such as "a" to something more meaningful (see demo)
- NetBeans integrates debugging, even of MySQL
- NetBeans provides easy navigation of code
Now this was enough even for a sceptic like me to become eager. During his demo, Vladimir used the Discovery Wizard to import MySQL and was then quickly able to dispel my deeply rooted skepticism against "unnecessary straightjacket GUIs that prevent real work". I got a sting in my heart, longing back to do some Real Work, i.e. coding (of which I've done much too little this century).
My conclusion is that
- NetBeans is a great way to learn the MySQL source code
- learning the MySQL source code is simplified both for our community and for our own engineers
- usage is so simple and provides so many advantages that it's worthy of a try
So I didn't leave the meeting before Vladimir had promised me three things:
- to write a MySQL Forge Wiki article with pointers to all resources necessary to open MySQL as a NetBeans project
- to write a MySQL Dev Zone article, expanding on the Wiki article, on how to productively use NetBeans when learning and developing the MySQL code base (from downloading NetBeans over importing MySQL to debugging MySQL, including the key productivity-enhancing benefits of NetBeans)
- to try his best to come to the MySQL Developer Meeting in Riga in September, to demo NetBeans to our engineers
In return, I promised Vladimir
- to introduce Vladimir to key MySQL engineers that may evaluate the IDE
- to set up a MySQL University slot on development MySQL with NetBeans
- to encourage MySQLers (employees and community) to provide the NetBeans time with feedback that may improve upon, say, the debugging properties
In short, stay tuned for some practical tips on how to work on the MySQL code base from the NetBeans integrated development environment.
I showed a draft of my blog entry to a small group of developers from the MySQL Engineering Team and here are some points I found interesting in their feedback:
- "I was an emacs hacker once, but since then I got my behind kicked by a VB-developer, a dreamweaver clicker, and a drag-n-drop flash code designer so I opened my eyes to a bigger world. Now I use NetBeans."
- "There are some small shortcomings, like attaching debug process, but it works very well in most cases."
- "I tried the NetBeans C/C++ package. I liked that I don't need to download all the Java bloat just to use C/C++. Something I used to miss with Eclipse - just packaged for the C/C++ developer. Bravo!"
- "Please allow me the luxury of obeying to my habits and staying away from IDEs (being a 10+ years exclusive vi/gcc/gdb command line user this is a lot of inertia that I don't like to lose right now)."
- "NetBeans has a neat little re-factoring goodie: change the name of a variable in one place and NetBeans can change it in other places for you."
- "My colleague seems to enjoy the ease of extending NetBeans by plug-ins. He has written a plug-in which integrates PHP test runs and presents the results as HTML during a weekend. Can you mention http://blogs.sun.com/netbeansphp/ ?"
- "The only feature which I don't like - which is a killer feature for me as I'm a typical "MSIU" (most stupid imaginable user) - is the automatic close and reload of modified files. Accidently remove a file outside of NetBeans, go back to NetBeans and *damn* NetBeans has closed the file. Anyway, this has been reported to the responsible dev already."
- "Class browsing and debugging worked well for C/C++. And yes, performance was very much acceptable."
- NetBeans C/C++ Support: http://cnd.netbeans.org/
- NetBeans IDE 6.1 Features: C/C++ Development: http://www.netbeans.org/features/cpp/
- Find Usages and Rename in NetBeans (3 minute demo): http://wiki.netbeans.org/wiki/attach/CndRefactoring/Refactoring.htm
- NetBeans for PHP: http://blogs.sun.com/netbeansphp/
- NetBeans C/C++ mailing list: firstname.lastname@example.org -- registration and subscription: http://cnd.netbeans.org/servlets/ProjectMailingListList