Это перевод заметки Исчезновение набора тестов или очередная часть MySQL стала закрытой? (Disappearing test cases or did another part of MySQL just become closed source?)
Около недели назад я изучал MySQL 5.5.27 и заметил любопытную деталь. Несмотря на то, что новый релиз MySQL содержал обычный набор исправлений, ни один из них не сопровождался тестом.
Теперь, позвольте мне рассказать кое-что об этих тестах. Много лет MySQL использовал свой собственный фреймворк для тестов под названием mysql-test. Первая его версия была написана ещё в 1999 году. Со временем он собрал в себе много тестов. Тесты для нового функционала и тесты на регрессию гарантировали, что ошибка, будучи исправленной, никогда не появится снова. У нас в MySQL AB (а позже и в Sun Microsystems) были достаточно строгие правила по поводу них — каждое новое исправление должно было сопровождаться тестом для него. И потому что эти тесты всегда выполнялись на множестве платформ для каждого коммита (инструментом непрерывной интеграции, названным Pushbuild — внутренняя разработка Кристиана Нильсена (Kristian Nielsen)), мы были достаточно уверены, что любая исправленная ошибка будет оставаться таковой всегда. Я больше не имею отношения к MySQL, но я всё ещё не могу представить, что Oracle ослабит это правило. Значит, тесты должны быть где-то в другом месте.
Одно из изменений в 5.5.27 добавляет расширение в скрипт mysql-test-run
(управляющий скрипт набора mysql-test
), которое заставляет его искать тесты в новой директории. В дополнение к обычному месту (то есть директория mysql-test
/ в дереве исходников) скрипт будет искать тесты также и в директории internal/mysql-test/
. Значит ли это, что набор тестов больше не является открытым кодом? Oracle не ответили на мой вопрос. Однако, есть сведения, что это скорее всего так. Например, это сообщение с коммитом показывает, что новые тесты действительно ссылаются на директорию internal, которая не включена в распространяемый архив исходников MySQL.
Тесты MySQL всегда были важной частью дерева исходников MySQL. Они представляли особую ценность для разработчиков систем хранения данных и для других людей, пишущих расширения для MySQL, например, в Facebook, Twitter, Taobao. Также они полезны для для дистрибутивов Linux, которые добавляют свои патчи к MySQL, и даже пользователям, которые не изменяли код — они всё ещё хотят убедиться, что конкретная ошибка была исправлена, или что их самосборные варианты не имеют явных ошибок.
В мае, на Ubuntu Developer Summit в Окленде, у Oracle было 7 представителей, которые обещали, что Oracle будет более дружелюбна к контрибьютерам и дистрибьютерам. Грустно наблюдать, что вместо этого дерево исходников MySQL закрывается.
MySQL AB никогда не умела хорошо создавать сообщество разработчиков вокруг проекта. Не много разработчиков и контрибьютеров проекта не состоят в MySQL AB, и компания не слишком старается для увеличения их количества. Но теперь Oracle обратила на них внимание и намеренно добивает всё, что осталось от сообщества. Без набора тестов MySQL становится непрозрачным для внешних разработчиков, как любая часть закрытого ПО, и только наиболее опытные и хорошо знакомые с кодовой базой MySQL смогут продолжать с ней работать.
UPDATE: Сложно найти что-либо более ценное для сторонних разработчиков, чем этот набор тестов. Поспорить с этим может разве что история изменений. Она группирует изменения в этих миллионах строк кода в наборы изменений, один набор на какую-либо функцию или определённое исправление. Это позволяет увидеть, кто изменил определённую строчку в коде, когда и почему. Похоже, что Oracle собирается закрыть и эту информацию тоже. Публичные деревья исходников MySQL на Launchpad с историей изменений больше не обновляются.
И вообще, существует ли хоть один успешный Open Source проект, лишенный сообщества разработчиков?
UPDATE 2: Мы не единственные, на кого повлияет эта проблема. Смотрите также:
- mysqlha.blogspot.com/2012/08/less-open-source.html
- ronaldbradford.com/blog/when-is-a-crashing-mysql-bug-not-a-bug-2012-08-15/
Перевод кончается здесь, UPDATE-ы выше присутствуют в оригинальном посте.
Это мой первый перевод, поэтому, если вы видите лучший вариант перевода в некоторых местах или обнаружили ошибки — напишите мне в личку.
Автор: KawaiDesu