Summary

  • Проект W3C 2009 года описывал браузерный интерфейс к локальной базе данных с вариантом SQL. Уже тогда документ отмечал, что все заинтересованные разработчики использовали SQLite, а отсылка к его диалекту не заменяет самостоятельного описания языка.
  • 1 ноября 2010 года рабочая группа Web Applications решила выпустить Web SQL Database как рабочую записку вместо продвижения к Рекомендации. Записка от 18 ноября закрепила проблему независимых реализаций; обзор W3C 2011 года обозначил переход к IndexedDB.

Считать реализации легко. Разобраться, что именно они реализуют, сложнее. Два браузера могли одинаково выполнить запрос Web SQL потому, что передали его одному и тому же SQLite. Такое совпадение полезно сайту, который работает сегодня. Для стандарта оно не доказывает, что правила языка можно взять из текста и воплотить в другом движке.

Рабочий проект W3C декабря 2009 года подробно описывал асинхронный доступ: открыть базу, выполнить инструкцию внутри транзакции, получить строки результата. Но язык инструкций назывался вариантом SQL. Границы этого варианта оставались привязаны к SQLite. Документ прямо говорил, что все заинтересованные разработчики выбрали этот движок и что ссылка на него не годится в качестве стандарта. Редактор приглашал желающего сделать независимый backend, чтобы можно было определить сам диалект.

В письме в открытую рассылку W3C от апреля 2009 года инженер Mozilla Владимир Вукичевич не ругал SQLite: он писал, что любит его и поддерживал включение в Gecko. Его тревожило превращение конкретных решений движка о типах и синтаксисе в поведение, доступное каждой странице. Запрос, написанный под SQLite, мог не работать с другой базой. Требование «делать как SQLite» заставило бы производителей браузеров принять также будущие изменения библиотеки и её сопровождение безопасности. Это позиция участника дискуссии, а не подсчёт уже случившихся сбоев.

Для автора сайта проблема скрывалась за успехом. Запрос проходит в двух браузерах — значит, выглядит переносимым. Но оба могут разделять неписаные привычки SQLite. Третий производитель либо повторяет эти привычки, либо получает страницы с другим результатом. Нужны были ограниченный, явно записанный язык и испытания для реализации, не наследующей ответ из того же кода.

Протокол заседания W3C 1 ноября 2010 года фиксирует две реализации, отсутствие готовности продвигать проект, общий SQLite и отсутствие отдельного описания подмножества SQL. Группа согласилась переиздать текст как рабочую записку. Возобновление при новом интересе оставалось возможным; участники также указали, что для возвращения к Рекомендации придётся заново проходить процедуру интеллектуальной собственности. Публикация обсуждения не приравнивала его к завершённому стандарту.

В рабочей записке от 18 ноября 2010 года остановка объяснена необходимостью нескольких независимых реализаций. При этом раздел о языке по-прежнему требовал от браузеров диалект SQLite 3.6.19. Номер версии библиотеки занимал место самостоятельной границы языка. W3C продолжал работу над Web Storage и IndexedDB, а в обзоре августа 2011 года назвал SQL-базу в браузере оставленным направлением в пользу IndexedDB.

Исходные документы не говорят, когда каждый браузер удалил Web SQL, и не считают сайты, которые от него зависели. Для оценки последствий потребовались бы версии браузеров и перечни приложений. Но причина остановки стандарта установлена точно: два продукта с общим движком не были двумя независимыми доказательствами воспроизводимости языка.

Первичные документы