Oracle закручивает гайки

в 15:32, , рубрики: mariadb, mysql, mysql-test, oracle, tags is everywhere

Это перевод заметки Исчезновение набора тестов или очередная часть 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: Мы не единственные, на кого повлияет эта проблема. Смотрите также:


Перевод кончается здесь, UPDATE-ы выше присутствуют в оригинальном посте.
Это мой первый перевод, поэтому, если вы видите лучший вариант перевода в некоторых местах или обнаружили ошибки — напишите мне в личку.

Автор: KawaiDesu

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js