http://habrahabr.ru/company/allmychanges/blog/260275/
Друзья, сегодня я хочу рассказать вам о том, как появился на свет сервис
Allmychanges.com. Дело было в далеком 2013 году. Солнечным осенним днем я обдумывал идеи для реализации в рамках двухдневного хакатона Django Dash. Хотелось сделать какой-нибудь сервис для разработчиков, но не очередной континуос-интегрейшн-в-облаке, а что то более интересное и полезное.
Проблема номер один
И вот, в результате возникла такая идея – а что если сделать сервис, которому даешь URL, а он сам находит и показывает ChangeLog проекта? Ведь какая проблема с большинством, да что там с большинством – со всеми софтверными проектами – сложно найти, что у них изменилось от версии к версии. А в release notes, порой, можно найти интересные и полезные вещи. Разработчики
Django, к примеру, пишут не только от том что изменилось, но и про всякие деприкешены и про то, как мигрировать с одной мажорной версии на другую.
В общем, невероятно ценно иметь такое место, куда можно посмотреть и оценить возможный масштаб бедствия после апгрейда всех зависимостей. Когда такого места нет, после обновления часто случается такое:
Однако даже для проекта, мейнтейнеры которого заботливо ведут ChangeLog, найти его бывает проблематично. Почему? Да потому что фреймворки и библиотеки пишут люди, а люди все разные. Кто то записывает release notes в файлике
NEWS
, кто то в
ChangeLog
, a некоторые разбрасывают их по отдельным файликам типа
docs/src/releases/1.7.rst
. Хуже всех те, кто то вообще не ведет человеческих релиз ноутов и заставляет вас ползать по гит-логу и собирать крупицы знаний по коммит-мессаджам.
Проблема номер два
Вторая проблема, которая логично проистекает из первой – невозможность регулярно получать обновления каждого из проектов, который тебе интересен. Ну нельзя подписаться на изменения одного файлика
CHANGES
лежащего на гитхабе! Некоторые мэйнтейнеры библиотек решают эту проблему, начиная писать о релизах в блог или, что лучше, используя
GitHub Releases, но и в этом случае у вас появляются разные места и способы подписки на обновления. Это всё равно, что выстраивать пирамидки из камней – рано или поздно где-то что-то развалится:
Как бы то ни было, но в рамках Django Dash 2013 мы не стали браться за решение всех перечисленных проблем, и задались целью сделать минимальный MVP, способный показывать release notes любого проекта на гитхабе. И на это у нас было 48 часов. У нас, это у меня и двух моих коллег:
Гены Чибисова и
Гены Кандаурова.
Первая версия
AllMyChanges.com была одностраничным приложением на
angular.js и бэкенда на
Django. Фронтенд рисовал всё красиво (ведь именно этим фронтенды обычно и занимаются), а бэкенд выполнял всю сложную работу – клонировал репозиторий, искал там changelog, используя сложные эвристики, а если не находил, то группировал коммит-мессаджи так, чтобы сформировать release notes из них, экономя тем самым силы и время пользователей.
И всё это работало. Работало отлично.
Жаль только, что единственный судья Django Dash наш сервис не оценил. Быть может, он его даже и не попробовал. Но плох тот основатель стартапа который остановится после средненькой оценки на хакатоне. Короче, я решил сервис развивать, и наверное, сейчас это единственный из проектов, сделанных на Django Dash 2013, который до сих пор жив.
Быстро сказка сказывается да не быстро стартап делается
Особенно, когда делается он ради удовольствия и в свободное от работы время.
Примерно через 9 месяцев появилась новая версия
AllMyChanges, которая решала вторую проблему и давала возможность подписаться на любые release notes и получать уведомления о выходе новых релизов.
В отличие от сервисов, которые просто отслеживать выход новых версий (VersionEye, Gemnasium, Libraries.io и т.д.),
Allmychanges не только присылает нотифайку, эй, друг, смотри ангулар версии 1.2.3 вышел. В дополнение к этому мы присылаем полное описание того, что изменилось в версии 1.2.3, особенным образом выделяя места в тексте, которые относятся к исправлению ошибок, уязвимостей или ведут к обратной несовместимости.
Так же отличается и принцип работы с библиотеками. Почти все сервисы которые отслеживают выход новых версий, завязаны на конкретный язык или несколько языков, а данные берут с репозиториев типа PyPi или Ruby Gems. При этом они, как правило, работают с понятием "проект" и там нет возможности подписаться на отдельный фреймворк или библиотеку.
AllMyChanges в этом плане более гибок. Он не только доставляет вам полные release notes, но и позволяет подписываться абсолютно на всё, для чего возможно извлечь номера версий и текстовое описание. К примеру, вы можете начать вести changelog правил дорожного движения прямо на github в обычном текстовом файлике.
Затем кинуть ссылку на файлик в AllMyChanges и всё – кто угодно сможет подписаться на публикацию новых изменений ПДД! И не забудьте про семантическое версионирование.
Вы нужны нам. Да, ты, ты и ты
Этому проекту есть куда развиваться и несомненно он будет улучшаться гораздо быстрее если вы все, вот прямо сейчас, отложите чтение хабра и начнете усиленно им пользоваться. Нам нужны ваши идеи и советы для того, чтобы двигаться в правильном направлении, так что, обязательно пишите на
support@allmychanges.com или в
Gitter чатик.