На конференции OSCON, посвященной обсуждению открытого и свободного ПО, Соломон Хайкс рассказал о том, чему научился на своем собственном опыте в процессе создания успешного Open Source-проекта. Отметим, что до основания компании Docker он не был разработчиком Open Source
По словам Хайкса, главная задача компании Docker, продвигающей одноименную Open Source-технологию контейнеризации, состоит в том, чтобы создать инструменты для массовых инноваций, которые инкапсулируют и скрывают сложные компоненты технологий и тем самым открывают возможности для творчества. Такими универсальными средствами для инноваций он считает Интернет вещей и программируемый Интернет. Решить эту задачу позволит модель Open Source.
В настоящее время Docker имеет порядка 50 различных репозиториев проектов с открытыми кодами, предназначенных для разработки ПО. Свой вклад в развитие этих проектов вносят примерно 2000 разработчиков.
По словам Хайкса, сейчас на Github размещены примерно 18 тыс. запросов (issue): «Это значит, что 18 тыс. человек говорят, что им что-то не нравится, просят что-то добавить или просто предлагают свою помощь». Всего по всем своим репозиториям Docker каждый месяц получает от разработчиков около 1200 патчей, т. е. кодов, предназначенные либо для решения проблемы в имеющемся функционале, либо для добавления нового функционала. Самое трудное, считает Хайкс, состоит в том, чтобы разобраться со всеми поступающими патчами и решить, какие из них подходят, а какие нет.
«Когда мы начинали, то практически ничего не знали про Open Source и учились по ходу дела», — сказал он. Первый усвоенный урок заключался в том, что слово «нет» является временным, а слово «да» — это навсегда. На практике это значит, что если при рассмотрении запроса на добавление какого-либо кода в проект, возникают сомнения, то нужно говорить «нет». Если же сказать «да», то уже никогда не удастся удалить этот код.
Когда функционал добавлен, он надолго остается в проекте и убрать его очень трудно. Поэтому лучше сразу сказать «нет», хотя это не всегда бывает легко, потому что люди, которые посылают патчи, расстраиваются, если плоды их труда не попадают в проект. «Не нужно поддаваться такому давлению», — советует Хайкс.
Второй урок, полученный в ходе работы с Open Source, заключается в том, что здесь все игроки находятся в равных условиях: существует огромное количество разработчиков, которые потенциально могут участвовать в любом проекте и решать любые задачи. Но чтобы воспользоваться преимуществами открытых кодов, нужно понимать, что такой подход может дать, а что не может. «Open Source — это не волшебное средство, которое сделает ваш продукт великим или подскажет, какую задачу следует решать, — сказал Хайкс. — Но если у вас есть интересная идея и конкретный фокус, то открытый подход вам поможет, и мы его активно используем».