[isf-wifidog] MySQL support - shouldn't we skip it?

Benoit Grégoire bock at step.polymtl.ca
Dim 22 Jan 21:45:18 EST 2006

> I agree with nukeing it for you 1.0 release.  6-8 weeks is not enough
> time to get something like that in.  I also agree with Francois about
> working toward PDO.  I can start working on a mySql schema for a future
> release that will work with PDO.
> How do you guys feel?

The initial schema isn't the problem, it could be trivially ported.  Nor is 
the data abstraction layer (moving to PDO is still a good idea, but becomes a 
very low priority if we have only one database to support).  The real 
problems are:

-The schema isn't hand written, it's auto-generated to avoid mistakes, and to 
allow incremental upgrades without losing data.  That means that a script 
must be able to generate the MySql schema from the postgres one with no human 
-Maintaining support for two or more different databases is a nightmare for 
updating schemas automatically and without losing data.  Schema manipulation 
SQL tend to be quite unportable.
-It's unrealistic to demand that every developper test every change to every 
commit touching sql with both databases (after all the rationale for also 
supporting MySql is to lower the barrier of entry, not raise it).  That means 
that we need some pretty darn complete unit tests for SQL queries.  There are 
currently 352 different SQL queries in the wifidog codebase.  Some of them 
can be tested implicitely, but others have several forms that would have to 
be tested individually.  Obviously it would be very good to have such a 
library, but it's at least several week of full time work.
-Mysql doesn't support triggers in a meaningfull way before version 5.1, yet 
it becomes critical that the schema defends against invalid data if we expect 
the SQL to destabilise because it has to work with both databases.
-Even with MySql 5.1, we still couldn't use stored procedures (unless we 
maintain two sets), as MySql doesn't support any of the 6 languages in 
postgres, and postgres doesn't support the one that MySql supports.
-General SQL support in MySql is now much closer to PostgresSQL's, but there 
are still annoying little differences that may be hard to detect, and even 
harder to debug.

I've written other messages  in the archives on the difficulties of pulling 
this off.  Wifidog isn't your average Blog or other web toy as far as SQL 
complexity is concerned.  Supporting MySql is possible, but at a huge cost in 
human ressources, and yet would remain somewhat of a second class citizen.

Nobody ever claimed that MySql support would actually bring any benefits 
except popularity and finding webhosting more easily.  The latter is kind of 
a mot point for now as we'd require a super-recent MySql.  The former just 
isn't worth the hundreds of hours of additional work plus the constant 
bickering between developpers that one developer's change broke something in 
the other database.

The sad truth is that the big SQL vendor's best interests (business wise) is 
to keep the SQL "standards" only supported enough so that expertise is 
somewhat portable, but code never is.  Untill that changes, supporting 
multiple databases for anything but projecs only requiring very basic SQL is 
hugely expensive. 

I think that the likely result of supporting MySql is the following:

-Most user's/reviewer's first impression of wifidog would be with MySql
-As MySql suport would have frequent issues, and that wifidog would get the 
reputation that's it's low quality software as a result.  

The result of dropping it entirely is the following:

-We are now free to use database technologies that have been available for 15 
years to harden the schema and make some operations easier, because we no 
longuer have to target to the lowest common denominator, resulting in a 
better quality product.

So I personally hope MySql support never materialises.  However it the spirit 
of open source, I would try help someone who is truly commited to doing it.
Benoit Grégoire, http://benoitg.coeus.ca/
-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: non disponible
Type: application/pgp-signature
Taille: 189 octets
Desc: non disponible
Url: http://listes.ilesansfil.org/pipermail/wifidog/attachments/20060122/ec2d5034/attachment.pgp

More information about the WiFiDog mailing list