
« SQLite est explicitement et sans équivoque "Open Source, pas Open Contribution" »
SQLite est un moteur de base de données relationnelle léger accessible par le langage SQL. Contrairement aux serveurs de bases de données traditionnels, comme MySQL ou PostgreSQL, sa particularité est de ne pas reproduire le schéma habituel client-serveur, mais d'être directement intégré aux programmes. Un nouveau fork de SQLite, appelé libSQL, vise à moderniser le très populaire SGBD embarqué SQLite, son fondateur se plaignant que « SQLite est explicitement et sans équivoque ‘’Open Source, pas Open Contribution" ».
SQLite est un système de gestion de base de données relationnelle complet, renfermé dans un seul fichier. SQL, ou langage d'interrogation structuré, est le langage de programmation standard de l'industrie pour le stockage et la récupération de données. Parmi les gestionnaires de bases de données SQL les plus connus, citons Oracle, DB2 d'IBM, SQL Server et Access de Microsoft, ainsi que les logiciels libres MySQL et PostgreSQL.
Glauber Costa est fondateur et PDG de ChiselStrike, dont le produit génère des applications back-end à partir de classes TypeScript. Dans ce qu'il appelle le manifeste pour libSQL, lui et son équipe soutiennent que SQLite doit être enrichi de nouvelles fonctionnalités essentielles. Il s'agit notamment de :
- prise en charge des bases de données distribuées disponibles sur plusieurs serveurs ;
- prise en charge des E/S asynchrones via la nouvelle API Linux io_uring ;
- utilisation de l'eBPF pour optimiser SQLite en permettant à certaines opérations de s'exécuter dans le noyau ;
- ajout de la prise en charge des fonctions définies par l'utilisateur dans Wasm (WebAssembly) afin de permettre l'utilisation d'autres langages, qui compilent en Wasm, à la place du C. Le projet libSQL prévoit d'utiliser Rust aux côtés de C pour mettre en œuvre ces changements.
Mais pourquoi un fork, et ne pas faire des propositions au projet SQLite lui-même ? Le problème est que le projet SQLite a un objectif restreint : être une base de données embarquée rapide, petite et fiable.
La taille ne fait pas tout pour le modeste créateur de SQLite, Richard Hipp. Dans un monde de personnes obsédées par la transformation de la plus petite idée en quelque chose de rentable, le logiciel le plus connu du Dr Richard Hipp se distingue pour deux raisons : il renonce activement à ses droits d'auteur et, à une époque où les installations de plusieurs mégaoctets sont en plein essor, il s'est imposé une limite à la taille de son produit : 250 Ko. Et il s'en tient à ces deux objectifs. « Je pense que nous avons 15 kilo-octets d'espace libre », dit-il en parlant de la marge de manœuvre laissée dans le code.
Le code est open source, mais il ne s'agit pas d'un projet public au même titre que la plupart des autres applications open source bien connues, y compris Linux lui-même. Le Dr D. Richard Hipp, dirige toujours le projet.
Il a confié en 2007 que « notre objectif n'est pas d'ajouter toutes sortes de cloches et de sifflets, mais plutôt de garder SQLite petit et rapide ». Il a ajouté : « D'autres personnes sont libres de faire une copie de SQLite et de forker l'arbre s'ils le souhaitent ... cela ne me fera pas de peine. Mais il s'est transformé en un logiciel très compliqué, et il faut des efforts soutenus pour le maintenir en bon état. »
Selon l'équipe de développement de SQLite, le SGBD est probablement l'un des cinq modules logiciels les plus déployés, toutes descriptions confondues. Étant donné que SQLite est largement utilisé dans tous les smartphones et qu'il y a plus de 4,0 milliards de smartphones en service, chacun contenant des centaines de fichiers de base de données SQLite, il est probable qu'il y ait plus d'un trillion de bases de données SQLite en service.
L'intégralité de la base de données (déclarations, tables, index et données) est en effet stockée dans un fichier indépendant de la plateforme. Grâce à son extrême légèreté, SQLite est l’un des moteurs de base de données les plus utilisés au monde. Il est utilisé dans de nombreux logiciels grand public, et est également très populaire sur les systèmes embarqués, notamment sur la plupart des smartphones modernes.
Ainsi, son produit fait désormais partie du système d'exploitation Mac OS X d'Apple ainsi que de son application de traitement des photos Aperture. Il est également utilisé par Google, Adobe, Sun et un certain nombre d'autres grands noms. Mais il ne reçoit aucune redevance pour les millions de copies utilisées par les utilisateurs commerciaux et non commerciaux. La raison ? Il a placé SQLite dans le domaine public. Il contient la note suivante : « L'auteur décline tout droit d'auteur sur ce code source. À la place d'un avis juridique, voici une bénédiction : puissiez-vous faire le bien et non le mal. Puissiez-vous trouver le pardon pour vous-même et pardonner aux autres. Puissiez-vous partager librement, sans jamais prendre plus que vous ne donnez. »
Il s'agit d'une approche inhabituelle, même dans le monde des logiciels libres. La plupart des codes open source font l'objet d'un accord tel que la licence GNU GPL (general public licence), qui comprend des conditions garantissant que le logiciel reste libre. « J'ai examiné toutes les licences », explique Hipp, « et je me suis dit : pourquoi ne pas simplement le mettre dans le domaine public ? Pourquoi y mettre ces restrictions ? Je n'ai jamais espéré gagner un centime. Je voulais simplement le mettre à la disposition d'autres personnes pour résoudre leur problème. »
« Nous n'essayons pas de concurrencer ces autres moteurs », déclare Hipp. « Notre objectif n'est pas d'ajouter toutes sortes de cloches et de sifflets, mais plutôt de garder SQLite petit et rapide. Nous avons fixé une limite arbitraire pour que l'empreinte de la bibliothèque reste inférieure à 250 Ko. »
Toutefois, l'application peut prendre en charge des bases de données allant jusqu'à des téraoctets, y compris des éléments de la taille d'un gigaoctet. Étant écrite en C, elle peut être compilée pour fonctionner sur à peu près n'importe quel système d'exploitation. Samuel Neff est ingénieur logiciel senior chez B-Line Medical dans le Maryland, aux États-Unis. Il aime SQLite parce qu'il ne nécessite aucune configuration ni installation. Le code est librement disponible, ce qui lui permet de l'étendre facilement en le personnalisant, et ses performances sont excellentes.
Lors des tests, SQLite était quatre fois plus rapide que le serveur SQL de Microsoft. La comparaison est toutefois injuste, car SQL Server est conçu pour desservir des réseaux entiers et pour prendre en charge d'énormes bases de données avec des milliers d'utilisateurs, alors que SQLite est principalement destiné à un seul utilisateur sur une seule machine. Malgré tout, l'expérience de Neff montre les avantages de l'utilisation d'un logiciel étroitement codé qui ne fait pas plus que ce qui est nécessaire.
« J’ai commencé le 29 mai 2000. Il a un peu plus de vingt ans », déclare le Dr Richard Hipp. Il travaillait sur un projet qui utilisait un serveur de base de données, mais de temps en temps, la base de données était hors ligne. « Mon programme affichait alors un message d'erreur indiquant que la base de données ne fonctionnait pas, et c'est moi qui en étais responsable. Alors j'ai dit, ce n'est pas une application exigeante pour la base de données, pourquoi ne pas simplement parler directement au disque, et construire un moteur...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.