У меня на работе, в одном из проектов, используется модуль XML::WBXML. Это модуль для работы с бинарным XML — WAP Binary XML.
К сожалению, модуль обновлялся последний раз в 2006 году, т.е. 9 лет назад. С тех пор от Дэвида Глессера (David Glasser), автора модуля, не было ни слуху, ни духу, багрепорты висели неотвеченными, баги, соответственно, неисправленными. Модуль был забыл и заброшен.
Нужно было что-то с этим делать. Ниже я хочу поделиться своим опытом получения контроля над заброшенным модулем Perl.
В частности, один из багов модуля заключался в том, что при установке не проходили тесты (make test выдавал ошибку) и установка прерывалась. Ошибка же проистекала из того, что за последние 9 лет произошли изменения в библиотеке libwbxml2, которая используется в самом модуле. Библиотека стала выдавать ответы немного в другом виде и тест из-за этого сломался.
Для исправления этой ошибки достаточно было исправить одну строчку в самом тесте. Действие элементарное, но из-за него ломалась вся стройная процедура автоматической установки. Нужно было скачивать исходники модуля, накладывать патч, собирать модуль… И так каждый раз. Неудобно. Правильным решением было бы отправить патч самому автору модуля, но — как уже было сказано выше — автор пропал 9 лет назад и на бегрепорты не реагировал.
В связи с этим, я решил попробовать сделать свой модуль для CPAN, с блэкджеком и шлюхами.
Форкнул исходный модуль и выложил новый модуль на CPAN под немного видоизмененным названием XML::WB. Ну и, конечно, исправил ошибку в тестах. Теперь модуль можно было поставить стандартным образом прямо из CPAN'а, без ручных манипуляций с исходниками. Пришлось, однако, исправить остальной код в проекте, который использовал этот модуль, так как название изменилось.
Но меня всё терзала мысль, что всё-таки я не совсем по фен-шую сделал. По-хорошему, надо было не делать новый модуль, а стать мейнтейнером оригинального и исправить ошибку прямо в оригинальноми модуле, чтобы тем, кто его использует, не нужно было ничего менять и переключаться на новый модуль.
В это время, по какому-то совпадению, я прочитал новоcть на perlnews.ru, в которой мимоходом упоминалось о возможности получения контроля над заброшенным модулем. В комментариях к новости мне подсказали, что для этого есть более-менее стандартизированная процедура, которая описана тут. В основном всё сводится к «попытайтесь связаться с автором всеми возможными способами, а уж если не получится, тогда, может быть, модуль будет передан вам».
И вот, для начала, я написал автору письмо на все его емейлы, какие нашел, и приготовился ждать ответа. Но перспективы мне казались сомнительными (уж если чувак 9 лет не появлялся).
Через несколько дней я опубликовал пост у себя в блоге, где написал, что вот, мол, сделал форк модуля, если вдруг кому надо. В комментариях к посту мне тут же подкинули ссылку на сайт человека, очень похожего на автора оригинального модуля. Я посмотрел его сайт, посмотрел его Гитхаб… Вроде похоже, но уверенности не было. Этот человек пишет на JS, про Perl никаких упоминаний. Но — чем чёрт не шутит:)
Написал ему письмо. В копию, как полагается, добавил modules@perl.org. И, о чудо! — этот человек мне ответил и он действительно оказался Дэвидом Глессером, автором модуля. Мы обменялись с ним парой писем, оказалось, что он давно уже не занимается Перлом, вместо этого он сейчас пилит на JS фреймворк Meteor, а про Перловый модуль уже почти забыл. Он был бы рад передать мне модуль, но совершенно не помнит пароля к своему аккаунту на CPAN, а емейлы, к которым был привязан аккаунт, тоже давно уже все устарели. Например, там использовался его емейл на mit.edu, который у него был 10 лет назад, когда он там учился.
Я уж думал — всё, тупик. Но тут, вдруг, пришло письмо от Нейла Бауерса (Neil Bowers), одного из администраторов CPAN. Он прочитал нашу переписку с Дэвидом и решил нашу проблему — просто взял и назначил меня мейнтейнером модуля.
Ну, а поскольку у меня уже был готовый исправленный модуль, мне осталось только переименовать его обратно в оригинальный и загрузить на CPAN обновленную версию.
Вдобавок, я разместил модуль на Гитхабе (оригинальный модуль был написан, когда Гитхаба еще не существовало) и явно указал лицензию — perl_5 — что означает, что модуль распространяется на тех же условиях, что и сам Перл.
Надеюсь, я не единственный человек, который пользуется этим модулем, и кому-то от этого будет польза:)
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий