Кратко

  • Официальная история выпусков относит к 2.0-alpha-2 от 20 сентября 2001 года отказ от имени SQLus, возвращение pager и B-tree как единственного backend, удаление Dbbe и драйверов GDBM и памяти, а также отказ от авторских прав на весь код.
  • Документ SQLite о номерах версий относит GDBM к выпускам 1.0–1.0.32, а собственный B-tree — к серии 2.x. Первая цифра тогда обозначала формат файла базы данных.

Свободный код и жёсткий выбор внутри программы

Сегодняшняя страница SQLite об авторских правах перечисляет право копировать, менять, компилировать, продавать и распространять поставляемую библиотеку. Это права пользователя на код. Они не обязывают разработчиков поставлять несколько вариантов хранения. Журнал изменений ставит юридическое и техническое решения рядом, но не утверждает, будто первое вызвало второе. Их последствия следует разбирать по отдельности.

В прежней серии SQLite работал поверх GDBM. 4 апреля 2001 года выпуск 1.0.28 добавил ограниченную поддержку транзакций: блокировка таблиц уже была, отката и атомарного завершения ещё не было. Слово «транзакция» появилось в возможностях SQL, но судьбу данных при сбое определяла реализация хранения. Pager добавили 15 апреля, причём сам журнал отмечал, что он пока не использовался.

Летом план поменялся. В 1.0.32 от 23 июля pager и B-tree удалили: их собирались использовать в будущей библиотеке SQL-сервера под именем SQLus. В сентябре от имени SQLus отказались, вернули два компонента в SQLite и сделали их единственным backend. Абстракция Dbbe, позволявшая отделять SQL от конкретного драйвера, исчезла вместе с GDBM и вариантом в памяти. Журнал не раскрывает внутреннюю полемику. Зато он точно указывает, что осталось в выпуске.

Цифра в названии отвечала за данные

По объяснению номеров версий, ведущая цифра в те годы обозначала файловый формат. Переход с 1 на 2 нельзя свести к новой вывеске. Ветка 2.x использовала собственный B-tree, рассчитанный на текстовые ключи и данные. Полноценная поддержка двоичных данных и Unicode появилась в другом поколении, SQLite 3. Приписывать её продукту сентября 2001 года — значит пропустить настоящий масштаб тогдашней смены хранилища.

20 сентября вышла лишь alpha-2. 27 сентября alpha-3 исправила откат и блокировки, вернув файловый формат к варианту первой alpha. 28 сентября выпуск 2.0.0 добавил автоматическую сборку двоичных файлов для Linux и Windows и их размещение на сайте. Юридическая свобода была объявлена раньше, чем завершилась эта короткая цепочка технических правок и доставки пользователю.

Любой желающий мог взять код и вернуть иной драйвер в собственном ответвлении. Но труд по поддержке такого драйвера не появлялся автоматически вместе со свободой копирования. Проект выбрал одну официальную реализацию и одновременно открыл исходники всем. Эта история показывает, сколько разных решений прячется за простой фразой «программа стала свободной».