Я всегда старался выносить в опенсорс все, что может быть полезно людям вне моей компании. Помимо стремления не только брать от сообщества, но и отдавать, это приносит ряд бенефитов для самой организации.
Всю статью я построил на примерах опыта Taiga UI — огромной библиотеки компонентов под Angular, которая долго развивалась внутри компании, а 10 месяцев назад была выложена в опенсорс. Несмотря на то, что примеры взяты из опыта фронтовой библиотеки, все пункты применимы и актуальны для любого другого стека.
Причина 1: растет ИТ-бренд
Хороший опенсорс положительно влияет на ИТ-бренд компании. Компанию чаще упоминают, ее решения обсуждают и рекомендуют. Люди начинают пользоваться технологией и с большей вероятностью захотят прийти работать в вашу компанию. Лучше всего это работает, когда весь код проекта хорошо написан и аккуратно структурирован. Пару раз слышал мнение: «О, если ребята пишут подобный код, то, похоже, круто работать с такими профессионалами» — и сам его разделяю.
В качестве небольшого эксперимента в последние несколько месяцев я попросил включить в первичную беседу с кандидатами на Angular вопрос о том, сталкивались ли они с опенсорсами нашей компании. В выборку попало более ста кандидатов, и около четверти из них слышали или использовали Taiga UI. Это радует.
Было и несколько случаев, когда кандидат изначально шел с желанием попасть в команду Taiga UI, но в процессе собеседований находил себе иную команду.
Также подобные проекты повышают публичность и узнаваемость отдельных разработчиков. Как один из создателей Taiga UI, я спросил на конференции MoscowJS 50, есть ли в зале те, кто пришел на доклад исключительно потому, что знает, что я сделал эту библиотеку. Было десятка полтора поднятых рук.
Причина 2: тестирование лучше, идей больше
Это скриншот из Taiga UI с поиском issue по слову BUG. За 10 месяцев опенсорса пользователи из комьюнити зарепортили и поправили несколько сотен как мелких, так и довольно серьезных багов. Это значит, что в библиотеке были какие-то проблемы, которые могли всплыть у реальных пользователей наших интерфейсов. Но уже никогда не всплывут, потому что их обнаружили внешние пользователи библиотеки, зарепортили, а мы вовремя их пофиксили. Чем больше пользователей, тем меньше вероятность пропустить какой-то косяк к себе на реальный продакшен.
Кроме того, люди не только репортят баги, но и приходят с отличными идеями. У разработчиков другой компании может быть иной взгляд на то, как решать ту или иную проблему. Еще более непривычный взгляд будет у людей из других стран и культур. В первые месяцы нам принесли несколько хороших идей, часть из которых сильно поменяли Тайгу, а другая часть будет включена в следующий мажорный релиз.
Пользователи из комьюнити уже зарепортили небольшую уязвимость в безопасности окружения разработки, внесли несколько идей и изменений, которые еще больше улучшили гибкость библиотеки. Или, например, был случай, когда сотрудник канадской фирмы пришел и рассказал нам о том, что в Канаде все сайты должны быть доступными для людей с ограниченными возможностями здоровья. При этом он похвалил нашу библиотеку за грамотный подход к доступности. Было приятно.
Причина 3: получаете дополнительные руки
Пользователи библиотеки могут периодически контрибьютить к вам. Получается, кто-то со стороны пришел и сделал за вас вашу работу, разве не отлично?
За 10 месяцев в Taiga UI пришло больше 50 внешних контрибьюторов. Порой люди приходят сами: могут поправить пару строчек в документации, а могут и принести солидную глобальную фичу. За счет сообщества библиотека уже переведена на 10+ языков.
Мы стараемся мотивировать такие активности: вешаем бейджики вроде Good first issue или Contributions welcome, участвуем в Hacktoberfest. Если человек пришел с хорошей идеей, поддерживаем и спрашиваем, не желает ли он реализовать ее самостоятельно. В ответ предлагаем детальное ревью, советы и поддержку процесса.
Причина 4: решения становятся универсальными
Когда вы работаете над опенсорс-проектом, то отвязываетесь от бизнес-контекста. Это может показаться минусом, ведь так вы фокусируетесь не на конкретных проблемах компании, которая платит вам деньги.
Но, по опыту, такая отвязка контекста позволяет разрабатывать более гибкие решения, которые подойдут не только нашей компании, но и любым другим. Это легко заметить, когда бизнес приходит с новыми хотелками, а нам не нужно дорабатывать инструмент под них: он уже учитывает такой кейс.
Такой подход можно использовать и при обычной разработке внутри компании, но не всегда в команде есть человек, который готов поставить гибкость инструмента превыше удобства текущего конкретного заказчика и грамотно обосновать это. С опенсорсом такой ситуации не возникает.
Причина 5: бесплатная инфраструктура и тулинг
Еще один плюс опенсорса — вы пользуетесь практически всем бесплатно. Компании не нужно платить за машины для CI/CD, хостинг или какой-то продвинутый тулинг. Многие платные сервисы или инструменты для простоты и ускорения разработки позволяют пользоваться ими абсолютно бесплатно, если вы делаете это в рамках опенсорс-проектов.
Наша Taiga UI полностью построена на подобных бесплатных технологиях: CI/CD от Github, хостинг на Github Pages, фича окружения на Firebase, все выполнения команд и сборки кэшируются облачным NX Cloud и прочие инструменты, которые решают массу проблем и стоят приличных денег для корпоративных клиентов.
Вместо заключения
Конечно, плюсы опенсорса на этом не заканчиваются. Developer Experience репозитория стал гораздо лучше, к нам стали чаще контрибьютить и разработчики внутри компании. А время диагностики багов сократилось в десятки раз за счет возможности быстро воспроизвести их в независимом окружении в онлайн-IDE вроде Stackblitz, что также упростило и создание примеров. Но это все уже более мелкие детали работы.
Для меня эти пять пунктов наиболее важные и приятные, и я рад, что наша библиотека обросла подобным сообществом. Думаю, этот пример хорошо отражает суть опенсорса.
Комментарии (7)
i360u
06.12.2021 15:53+12Причина 1: растет ИТ-бренд
Это еще нужно создать что-то, от чего действительно растет бренд. Задача сравнимая с созданием успешного стартапа: все хотят, мало у кого получается.
Причина 2: тестирование лучше, идей больше
Нагрузка на команду точно больше. Требования к документации и оформлению проектов - существенно выше, чем для внутренних разработок. Качество внешних идей - уровень "давайте срочно заменим master на main" и добавим "инклюзивности" в документацию.
Причина 3: получаете дополнительные руки
Чтобы кто-то начал действительно что-то полезное контрибьютить, нужно очень постараться. Скорее вы будете тратить время на долгие объяснения, почему никак не можете принять пулл-реквест с супер-полезной фичей, которая никому кроме самого контрибьютора не нужна (но ломает при этом пол проекта), стараясь его никак не обидеть.
Причина 4: решения становятся универсальными
Что порождает обратную проблему: необходимость адаптации гибких и универсальных решений под конкретные нужды. Постоянно всплывает что-то неожиданное.
Причина 5: бесплатная инфраструктура и тулинг
Да, это работает. Но соотношение плюсов и минусов не всегда в пользу плюсов.
Я сам обеими руками "ЗА" Open Source движуху. Только не стоит думать, что в этом деле все так радужно и волшебно. Грамотная работа с сообществом - это труд, отнимающий много сил и ресурсов и требующий определенного опыта.
MarsiBarsi Автор
06.12.2021 16:12+3Да, я на самом деле не стараюсь донести мысль, что все опенсорсы радужные. Абсолютно все перечисленные причины собраны с конкретного большого проекта, в котором это сработало (да приправлены мыслями с десятка проектов поменьше). Это ретроспектива за прошедший год и она правда меня очень радует.
Применимо ли это к большинству проектов или случайная ошибка выжившего — решать уже вам :)
testovich-tovich
07.12.2021 13:29+3Работал в компании, где пару лет все собирались пилить опенсорс. До самой разработки не дошло, т.к. сначала были проблемы с идеями. Далее менеджмент решил, что разработчики будут рады развивать бренд компании в свое время за даром. Так в итоге и не задалось
Хотя уверен, что если менеджмент идет навстречу, то это и плюс для компании и плюс в резюме. И хороший вклад в развитие комьюнити
MFilonen2
Для большинства компаний создание опенсорса – больше проблема. За универсальность приходится платить временем, а разработчиков со стороны вычитывать и исправлять случайно занесенные баги.
А вот крупные компании действительно зачастую в этом недорабатывают.Особенно бесит отсутствие опенсорса от Apple и Samsung (стиль их оболочки можно было бы использовать для сторонних приложений на андроиде).
MarsiBarsi Автор
Согласен, в небольших компаниях может быть не так легко увидеть потенциальный опенсорс продукт, да и нужно несколько раз подумать, актуально ли будет такое решение через некоторое время.
А вот если в компании уже есть условные несколько отделов с разными доменными областям, да кто-то решил сделать общую штуку для всех, то тогда точно как минимум задуматься стоит :)
KvanTTT
А как же Swift?
MFilonen2
Не имел ввиду его полное отсутствие, скорее, почти полное. По-моему, ни одного нативного приложения даже нет в опенсорсе, хоть для примера бы сделали какую-нибудь Погоду.
Это не говоря уже о куче компонентов, которые используются в интерфейсе iOS годами, а потом появляются в списке фишек, добавленных в последней версии, которые ты не будешь использовать еще несколько лет.