| Музыка: | James Horner - A Promis Kept |
| Entry tags: | it |
Процесс разработки MySQL
Случайно попал на MySQL day, на которой
слушал рассказ Кости Осипова,
одного из разработчиков mysql, о том,
как mysql стала из маленького проекта
большим.
Он показал картинку под названием Mysql Roadmap,
датированную 2002 годом, которую он раскритиковал
за план одновременной поддержки 6 различных версий
программного продукта, за план уменьшения
времени цикла выпуска новой версии.
Костя определил маленький проект, как проект,
в котором есть один человек, который держит
весь проект в голове и может заменить
любого исполнителя. И, соответственно,
большой проект, это когда такой человек
перестает существовать.
Он рассказал, что создатель mysql
продал свою долю людям, которые
хотят вывести компанию на IPO
и получить это этого прибыль.
Для этого компании приходится зарабатывать
(сейчас они прибавляют 40% продаж каждый год).
Новые продажи -- новая функциональность,
из-за чего они не успевают исправлять
входящий поток ошибок в уже существующей
функциональности.
По ходу дела рассказал, что автор innodb,
продал свою innodb oracle
за 15 или 30 млн. долларов,
а создатель mysql пару лет назад
запустил создание двух альтернативных
транзакционных движков Maria и Falcon,
оба из которых обломились, уточнил,
в том смысле, что их создание займет
заметно больше времени, чем предполагалось.
Рассказал, что несколько лет назад SAP
хотела работать на mysql, и заплатила
~10 млн. долларов за попытку запустить
SAP на mysql. Но из-за фактического отсутствия
у mysql собственного транзакционного движка,
SAP предложила продолжить переговоры
после того, как такой движок появится.
Костя делился опытом о распределенной
многокультурной разработке. Первым пунктом
правил распределенной разработки был такой:
no html email. Дальше было про то, что нельзя
ни в коем случае в письмах переходить
на личности и ругаться, когда нет ежедневного
личного общения такие вещи имеют тенденцию
разрастаться. Важно выбирать, какие вопросы
решать в письмах, а какие в личной беседе (телефон).
Рассказал забавно про индийцев: если на них накричать,
то он закрываются и начинают врать. Про китайцев:
если ты их начальник, то они тебе не будут возражать,
а сделают, как ты скажешь. Чтобы узнать их мнение,
нужно переспросить 10 раз.
Рассказал, что в mysql используют bazaar в качестве
системы контроля версий исходных кодов, git не выбрали
из-за того, что нет платной поддержки и есть проблемы
с совместимостью с windows.
Рассказал, про цикл разработки: каждая команда (отвечающая
за свой модуль mysql) имеет свой branch разработки,
после каждого check-in запускается компиляция
и запускаются т.н. regression тесты (всё это
делается на различных платформах).
Каждая команда должна делать merge своего дерева
в общее главное дерево "хотя бы раз в две недели",
этот merge делается человеком под названием Merge Captain,
который лично отвечает за то, что главное дерево не сломается.
Принято, что главное дерево не должно быть сломанным никогда,
т.е. всегда должно компилироваться и проходить regression тесты
Что-то еще забыл наверняка, в понедельник, говорят,
в сети будет pdf на слайды, дам ссылку
Зашел в столовую перекусить, называется