MySQL
En 1979, Michael « Monty » Widenius travaille chez TcX, une petite entreprise, quand il développe un outil de reporting en BASIC. Les contraintes matérielles de l’époque sont sévères : 16 Ko de RAM, un processeur à 4 MHz. Dans cet environnement spartiate, Widenius apprend à écrire du code léger et rapide. Cette expérience forge son approche du développement logiciel. Sa position de copropriétaire chez TcX lui donne une liberté rare pour un programmeur : celle de contrôler son code. Cette conjonction entre compétence technique, propriété intellectuelle et autonomie va se révéler déterminante.
Durant les années 1990, les clients de TcX réclament une interface SQL pour manipuler leurs données. Widenius explore plusieurs pistes : acheter une licence de base de données commerciale, intégrer le code de mSQL... Aucune ne le satisfait vraiment. Il décide de créer sa propre solution. En mai 1996, MySQL version 1.0 sort, mais reste confinée à un cercle restreint. La première version publique (3.11.1) arrive en octobre 1996, d’abord uniquement pour Solaris. Un mois plus tard, Linux est supporté.
MySQL s’étend progressivement à d’autres systèmes d’exploitation. Ses fonctionnalités s’enrichissent au fil des versions. Le modèle de distribution repose sur une licence particulière : l’usage commercial est gratuit tant qu’on ne redistribue pas le logiciel avec ses propres produits. TcX vend aussi du support technique. Ces revenus financent le développement.
La version 3.22 de MySQL propose déjà une part substantielle du langage SQL. Son optimiseur impressionne, surtout pour un projet piloté majoritairement par un seul homme. Le système brille par sa rapidité et sa stabilité. Les API se multiplient, le rendant utilisable depuis presque tous les langages de programmation. Mais des lacunes demeurent : pas de transactions, pas de sous-requêtes, pas de clés étrangères, pas de procédures stockées ni de vues. Le verrouillage au niveau des tables ralentit parfois considérablement les opérations.
Vers 1999-2000, MySQL AB voit le jour en tant qu’entreprise distincte. L’équipe s’étoffe avec le recrutement de développeurs. Un partenariat avec Sleepycat se noue pour créer une interface SQL vers les fichiers Berkeley DB. L’objectif est de doter MySQL de capacités transactionnelles. La version 3.23 résulte de ces travaux.
L’intégration de Berkeley DB ne se déroule pas comme prévu. La stabilité n’est jamais vraiment au rendez-vous. Mais cet effort n’est pas vain : le code source de MySQL est maintenant équipé pour accueillir différents types de moteurs de stockage. En avril 2000, avec l’appui de Slashdot, la réplication maître-esclave fait son entrée. L’ancien moteur ISAM est remanié pour devenir MyISAM, qui apporte des améliorations dont la recherche en texte intégral.
Heikki Tuuri propose à la même période d’intégrer InnoDB, son propre moteur de stockage aux fonctionnalités similaires. L’interface de gestion des tables, née des travaux sur Berkeley DB, facilite cette intégration. MySQL version 4.0, combiné à InnoDB, est déclarée stable en mars 2003.
Mais la vraie innovation de la 4.0 est le cache des requêtes. Cette fonctionnalité améliore drastiquement les performances de nombreuses applications. Le code de réplication sur l’esclave est réécrit avec deux threads : un pour les entrées-sorties réseau depuis le maître, l’autre pour traiter les mises à jour. L’optimiseur gagne en efficacité. Le protocole client/serveur devient compatible SSL.
Pendant le développement de la 4.1, les travaux sur la branche 5.0 avancent. Cette version apporte les procédures stockées, les curseurs côté serveur, les déclencheurs, les vues, les transactions XA et des améliorations majeures de l’optimiseur. Pourquoi créer une branche séparée ? Les développeurs veulent éviter que l’ajout des procédures stockées ne retarde la stabilisation de la 4.1. La version 5.0 sort en alpha en décembre 2003. Deux branches en alpha coexistent temporairement, créant une certaine confusion.
Entre 2005 et 2006, Oracle rachète successivement Innobase puis Sleepycat, les deux fournisseurs de moteurs de stockage transactionnels de MySQL. Ces acquisitions suscitent des inquiétudes dans la communauté. Larry Ellison, le patron d’Oracle, commente avec désinvolture qu’il a parlé à presque toutes les entreprises du secteur. Il qualifie MySQL de société minuscule dont le chiffre d’affaires oscille entre 30 et 40 millions de dollars, à comparer aux 15 milliards de revenus annuels d’Oracle.
La trajectoire commerciale de MySQL AB suit pourtant une courbe ascendante. En 2001, Mårten Mickos prend la direction de l’entreprise et transforme une startup technique en une entreprise viable. Les revenus grimpent de 6,5 millions de dollars en 2002 à 75 millions en 2007. Le modèle économique repose d’abord sur la double licence pour les intégrateurs OEM, puis bascule vers les abonnements de support pour les utilisateurs finaux avec le lancement du MySQL Network en 2005. L’entreprise compte 8 millions d’installations actives en 2006, emploie 320 personnes réparties dans 25 pays dont 70% travaillent depuis chez elles. Mickos annonce cette année-là préparer une entrée en bourse pour 2008 avec un objectif de 100 millions de revenus.
Mais c’est Sun Microsystems qui frappe le premier. En janvier 2008, l’entreprise californienne annonce l’acquisition de MySQL AB pour environ 1 milliard de dollars. Jonathan Schwartz, le directeur général de Sun, qualifie cette opération de la plus importante de l’histoire de sa société. Il y voit une occasion de se repositionner au cœur de l’économie du web. Les chiffres parlent d’eux-mêmes : 75% des installations MySQL tournent sur du matériel d’autres fabricants que Sun, 80% utilisent Linux plutôt que Solaris. L’acquisition donne à Sun accès à une immense base installée auprès de laquelle vendre serveurs et logiciels. Avec ce milliard de dollars, MySQL établit un nouveau standard de valorisation pour les sociétés de logiciels libres.
L’intégration chez Sun se révèle chaotique. Widenius et Axmark, deux des trois fondateurs, quittent l’entreprise peu après le rachat. En 2009, Mickos démissionne à son tour pour devenir entrepreneur en résidence chez Benchmark Capital. Sun perd en quelques mois les leaders techniques et commerciaux qui avaient bâti le succès de MySQL.
La même année, Oracle annonce l’acquisition de Sun pour 7,4 milliards de dollars. MySQL devient ainsi propriété du principal concurrent commercial dans le domaine des bases de données. Cette perspective soulève de nombreuses interrogations. Oracle va-t-il continuer à développer MySQL ou chercher à l’étouffer pour protéger sa propre base de données ? Les entreprises qui dépendent de MySQL peuvent-elles encore lui faire confiance ? La Commission européenne examine l’opération de près avant de donner son feu vert, non sans demander des garanties sur le maintien du développement de MySQL.
Widenius lui-même ne reste pas inactif. Dès 2009, il démarre le développement de MariaDB, un fork de MySQL. Cette nouvelle base de données conserve une compatibilité totale avec MySQL tout en ajoutant ses propres améliorations. La fondation MariaDB à but non lucratif est créée en 2012. Le nom vient cette fois de Maria, l’autre fille du fondateur. Ce fork devient progressivement l’alternative de référence pour ceux qui se méfient d’Oracle. Wikipedia bascule vers MariaDB, Google aussi. Les distributions Linux commencent à remplacer MySQL par MariaDB dans leurs dépôts par défaut.
MySQL continue néanmoins son évolution sous la gouvernance d’Oracle. L’équipe reste en grande partie la même qu’avant le rachat. Des fonctionnalités NoSQL font leur apparition. Oracle maintient MySQL sous double licence GPL et commerciale.