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 de base de données SQL de cette façon ? C'est ainsi que tout a commencé. »
Au cours des deux dernières années, SQLite a suscité un intérêt croissant. Apple l'a utilisé dans OS X 10.4, sorti en avril 2005, dans le cadre d'Apple Mail (pour son index de messages) et pour prendre en charge ses services Core Data. SQLite est également intégré à PHP 5.0, le langage de script open source extrêmement populaire pour les applications web. Il est présent dans Symbian 9.5, un système d'exploitation embarqué pour les smartphones.
Le petit moteur de base de données fait également partie du nouveau Google Gears, qui permet aux applications web de fonctionner hors ligne. Plus récemment, Adobe a annoncé l'inclusion de SQLite dans Adobe Integrated Runtime pour les applications de bureau basées sur son moteur multimédia Flash. « Les performances sont excellentes », déclare Ben Forsaith, responsable du développement commercial chez Adobe UK. « Il s'agit d'une source ouverte. Il est léger, vraiment petit et largement adopté. »
En réponse aux nouvelles d'aujourd'hui, un développeur sur Hacker News a commenté que « SQLite est aussi proche de l'étalon-or de la qualité logicielle que nous avons dans le monde open source. SQLite est le seul programme que j'ai jamais utilisé qui s'améliore de manière fiable à chaque version et ne régresse jamais. Se pourrait-il que ce soit précisément parce qu'ils n'utilisent pas d'"outils modernes" et n'acceptent pas les contributions extérieures ? »
C'est un cas difficile à prouver, mais le projet SQLite démontre que l'open source peut bien fonctionner avec des modèles qui sont assez différents de la collaboration communautaire qui est devenue courante.
Comme le note C, le succès de SQLite combiné à son développement relativement fermé rend difficile la réussite d'un fork. Une autre option est de packager SQLite avec des fonctionnalités supplémentaires, mais cela a des limites, auxquelles Costa fait allusion. L'équipe libSQL ajoute que « si et quand SQLite changera sa politique pour accepter des contributions, nous serons heureux de réintégrer notre travail dans le produit de base et de continuer dans cet univers ».
Source : The ChiselStrike team
Et vous ?
Que pensez-vous de SQLite ?
Pensez-vous que son fork, libSQL, pourra répondre au besoin de nouvelles fonctionnalités dans SQLite ?
Pourquoi un fork, et ne pas faire des propositions au projet SQLite lui-même ?
Selon vous, la plainte du fondateur de SQLite est-elle pertinente ?
Voir aussi :
Il y'aurait plus de mille milliards de bases de données SQLite en utilisation active, faisant du SGBD le composant logiciel le plus largement déployé et utilisé
La majorité des serveurs PostgreSQL sur Internet ne seraient pas sécurisés, selon Jonathan Mortensen, alors qu'il est souvent considéré comme un système plus fiable et plus robuste que MySQL