Все компании, команды, проекты и люди отличаются между собой. Поэтому конкретные способы реализации концепции InnerSource в каждом случае свои. Однако в основе любой реализации всегда лежат четыре главных принципов InnerSource. Эти принципы пришли из успешных продуктов с открытым исходным кодом — open source — и необходимы для получения выше изложенных приемуществ.
Вот эти принципы:
-
Открытость
-
Прозрачность
-
Приоритетное менторство
-
Добровольная Контрибьюция Кода
Рассмотрим каждый из этих принципов в деталях.
Открытость
Проекты в open source работают таким образом, что любой участник может внести свой вклад. Нужный проект легко найти и он хорошо документирован с помощью файлов README.md и CONTRIBUTING.md в репозитории. В InnerSource любой сотрудник компании должен иметь возможность легко найти желаемый проект и начать работу без помощи авторов проекта. Контактная информация принимающей команды должна присутствовать во всех необходимых каналах коммуникации. Информация о том, что команда готова принимать InnerSource контрибьюции, должна распростроняться с помощью принятых в компании способов. Например, в небольших проектах можно постоянно «транслировать» информацию о задачах, которые были сделаны с помощью InnerSource. В больших проектах это может привести к слишком большому количеству информационного шума, и более целесообразно работать над простотой обнаружения проекта в компании. Главный принцип, которым нужно руководствоваться, это использование правильных каналов коммуникаций, которые работают в вашей компании.
Само собой, список выше не является исчерпывающим. Открытость проекта напрямую зависит от того, насколько проект успешен с точки зрения InnerSource. Чем больше он открыт, тем меньше препятствий для потенциальных контрибьюторов. Чем больше он закрыт, тем труднее кому-либо внести свой вклад и отправить контрибьюцию.
Прозрачность
Команда должна быть прозрачной для того, чтобы иметь возможность принимать полезные контрибьюции. Это значит что у гостевых команд должно быть понимание:
-
Проекта/репозитория и его предназначения
-
Требований к функционалу
-
Прогресса по новому функционалу
-
Принимаемых решений командой-владельцем
По возможности, вся информация должна в подробностях распространяться по компании, начиная с объяснения использованных терминов и заканчивая особыми сценариями использования, специфичными для проекта. Коммуникация должна осуществляться таким образом, чтобы её можно было легко прочесть и понять тем, кто не является частью основной команды.
Приоритетное менторство
Менторство с помощью Trusted Commiters гостевых контрибьюторов – один из основных аспектов InnerSource. Важность работы с Контрибьюторами из гостевых команд повышается и они получают достаточное количество информации о проекте и репозитории для его успешного изменения. В процессе этого они начинают лучше понимать способ работы хост-команды как со стороны обычного потребителя, так и представителя проекта. С течением времени и опытом, коммитеры могут получить бошее продвинутую роль в проекте — роль Trusted Committer.
Очень важно, чтобы наставничество было приоритетным для хост-команды. Принимающая команда должна стараться найти время для помощи и обучения гостевых контрибьюторов в удобное для контрибьютора время, а не тогда, когда это удобно хост-команде. Инженерам принимающей команды, возможно, потребуется культурное изменение для понимания того факта, что вместо самостоятельного написания надо помогать другим писать код. Наставничество помогает преуспеть в разработке как гостевой команде, так и команде-владельцу, так как в долгосрочной перспективе это окажется взаимовыгодным. Улучшая код, гостевой контрибьютор улучшает отношения внутри организации, которых в противном случае могло бы и не быть. Признание контрибьютора Trusted Commiter`ом расценивается как положительная оценка работы гостевого контрибьютора.
Добровольная Контрибьюция Кода
Слово Добровольная означает участие гостевой и хост-команды в InnerSource по собственному желанию. Гостевая команда добровольно отправляет код хост-команде, а та в свою очередь принимает его тоже на добровольных началах. Такое взаимодействие означает, что каждая команда уверена, что её участие ценно для другой команды. Принимающая команда не обязана принимать входящую контрибьюцию, которая не полностью соответствует миссии продукта. Гостевая команда не обязана отправлять контрибьюцию, который не соответствует её собственной миссии и приоритетам. Слово Код подчёркивает, что коллаборация между гостевой и хост-командой происходит на уровне кода. Участие гостевой команды в создании документации, обновлении требований, заведении баг-репортов и т.д. — это отлично, но сотрудничество должно доходить до уровня отправки кода. Только при работе с кодом возможно получить преимущества, которые мы обсудили.