Does MySQL care about Windows users?

Well .. management does!

Sun/MySQL executives have at many occasions made it clear that Windows is very important for them.
Jonathan Schwartz:
Robin Schumacher:

This is a very clear signal from management! Windows is an important platform and it is important for MySQL too. And you will find similar statements from key executives of MySQL. But do MySQL developers care about the signals from their management? Not much! Management is farther away than a small town in Russia (Danish slang for ’something we need not care about’) and Windows users are at a small village at some even more remote place!


Examples of carelessness to users’ data:

These are the bugs that reflect carelessness in developing Windows specific software components. It is not a small detail – it is very fundamental for Windows. Configuration data etc.  are the property of the user – not the property of the MySQL installer!

Issues with installers for Windows and the Configuration Wizard. Let us list a few (but there are dozens – search yourself):

Reality is that due to this, MySQL software is close to useless for lot of Windows users – should they be hit  by any of those issues – unless they get help to understand what is happening  (what they won’t get from MySQL – but many a times from us through our forums and support ticket system). Users are even scared when the Configuration Wizard returns the message ‘failed to apply security settings’.

All this started more than 2 years ago. Very little activity since then. It seems that MySQL developers think that this is too trivial to spend time on and that those people bothering about reporting such issues must be a bunch of teenage amateurs. They may be (some are!). But that does not a excuse not taking concerns seriously. It is true that all the issues are not very serious if you understand what is going on. But those users that don’t, hurry to uninstall everything related to MySQL (’failed .. security’ – Windows users are scared about that). Actually it is also a problem for us as a 3rd party vendor. People claim occasionally to our support that “SQLyog is insecure because I can connect to MySQL without using the password I have just defined when installing the server”. Every time we have to explain users that it is the Configuration Wizard that is insecure, and that with SQLyog (or any client) it is simple to do what the Configuration Wizard failed to do.

‘lower_case_table_names’ server variable is seriously broken since MySQL 4.0 and it gets worse every day. ’lower_case_table_names=2′ configuration setting in Windows is the only reasonable way with MySQL to ensure table naming integrity across platforms (you will not use the name ‘thisissometable’ but ‘ThisIsSomeTable – because the latter is much more readable. Also in any programming language you would use letter-case conventions to make code readable).

Examples on this:
lower_case_table_names is non-functional with VIEWS:
lower_case_table_names is non-functional with BACKUP/RESTORE:

Also here reports have existed for years with no activity.

Existing GUI tools are effectively discontinued before something else is properly in place. Most MySQL Administrator bug reports get classified as “won’t fix” because every feature in MA is planned to be migrated into Workbench. Same applies to Query Browser, but that worries me less as I have never really been able to use that program a meaningful way. The MA Tray Applet in particular is almost indispensable for Windows users developing and testing an application that is supposed to work with more MySQL versions and different configurations. Now Windows users are left in a vacuum. Existing software deteriorate, new one not functional (frankly in my opinion it will take very long time before it will, if it ever will. But Workbench developers of course have more positive expectations). This actually applies to users on all platforms, but it is my clear impression that  the GUI-tools – and MA in particular – are used most extensively by Windows users.

Specifically there seems to be quite a lot of issues that are related to 64 bit Windows. Some of the issues in category 2) may be and with issues in category 4) it is particularly annoying that the MA tray applet start/stop/configure service does not work on 64 bit systems. It simply fails to connect to Windows Service Manager on such systems.

Also in I had the reply “Windows 7 is an unsupported platform”. True that Win7 is not listed in the manual as a supported Operating System, but is OpenSuSE 11.2? Could you imagine a report with OpenSuSE 11.2 (that is not even an alpha – just a ‘developer milestone’) being rejected because of being “an unsupported platform”? Never!

Fact is that Win7 is now shipping and before the end of this year it will probably be the dominating Windows Operating System. And in relation to the matter that was discussed, there is no difference between Vista and 7. I refuse to believe that this is neither ignorance or just stupid formalism. It is a bad excuse only for doing nothing (and I do not blame the supporter, because I do not believe she took the decision herself).

Wake up to reality please! Win7 64-bit is the state-of -art Windows OS. MySQL missed the Vista train (it took almost one year before MySQL took Vista seriously) – don’t miss the 7-train because of sleeping too long!

Miscellaneous issues affecting Windows but not most Unix:

activity? nonono …

It is disputable of course how serious those are. Anyway one of those was a complete ‘showstopper’ for me some months ago. But that is not the point here.  The point is that every time (some) MySQL people observe that Windows cannot be fully controlled from a ‘cmd.exe’ prompt or a  Cygwin console they are overwhelmed by surprise!

So those were the symptoms, but what are the reasons?

A MySQL developer wrote to me lately “Mostly I develop on Linux. Sometimes I have to test on Windows. I never cared about [some specific configuration option] and never had problems. The main problem may be that most MySQL developers share this experience. Recently I was asked to develop cross-platform tests [..]. Someone mentioned that [the above mentioned configuration option] should be tested too. This was the moment when all the problems started. I found a bunch of problems. Partly ridiculous simple oversights. I found most were reported as bugs already …” and he advised that I should for instance blog about this to get attention because the bug reports only or mainly affecting Windows users are effectively ‘on ice’.

These are the culprits of the problem:
1) Unit-testing on Windows is not done during development. Development happens on Linux (and lately Solaris) and then ‘we’ can just afford a few hours to check on Windows. It fails of course because it is too late.
2) Also there seems to be no system that overall management guidelines have effect in the organisation of MySQL as regards to considering Windows important. People are allowed to go on with the attitude ‘should I really care about windows’. I do not claim that everybody has this attitude – not even the majority.  But if only a few core people have it is enough to be destructive.
3) Finally I have also noticed that supporters replying to bug reports will often not install MySQL as a service but start it as a user program instead. If the issue is that “SELECT 7″ returns ‘8′ instead of ‘7′ that of course does not matter. But for other reports it may do. For instance this one:
.. what is only reproducible when MySQL runs as a service with system privileges (and no doubt .. I myself was just as stupid as the MySQL people involved!) . That would have taken 2 minutes to sort out only if MySQL people use Windows (and even MySQL software for Windows) as Windows users do. But they treat Windows as an OS that is managable from ‘cmd.exe’ just like Unix is managable from a console or shell.  It is not the case.

Sometimes complete ignorance about Windows is exposed. One such example (no link and no name mentioned): A user reported some issue that MySQL would not start as a service on Windows. A MySQL person replied “On FreeBSD the script that starts the server does like this …”.