Відкрити вихідні (майже) все

Чи варто нам відкрити вихідні Grit або залишити його пропрієтарним?


Якщо залишити пропрієтарним, то це створило б перешкоду для конкуруючих Git-хостингів, даючи нам перевагу. Відкрити вихідні означало, що тисячі людей по всьому світу зможуть використовувати його щоб розробити цікаві інструменти, створюючи ще більш яскраву екосистему Git.
Після невеликої суперечки, ми вирішили відкрити вихідні Grit. Я не пам'ятаю всіх подробиць обговорення, але це рішення, зроблене майже чотири роки тому, призвело до того, що я вважаю однією з наших головних цінностей: відкрити вихідні (майже) все.

Чому відкрити вихідні (майже) все круто?

Якщо ваш код популярний настільки, що привертає сторонніх контрибуторів, то ви створите підсилює ефект. який допомагає виконувати більше роботи дешевше. Більше користувачів означає що досліджується більше сценаріїв використання, що означає більш надійний код. Наш проект resque був поліпшений 115 різними розробниками поза компанією, і ще сотнями, що пропонують сторонні плагіни, що розширюють функціональність resque. Кожне виправлення помилки, яке ви приймаєте в проект, це заощаджений час і роздратування споживача, якого вдалося уникнути.

Розумні люди люблять спілкуватися з іншими розумними людьми. Розумні розробники люблять працювати з розумним кодом. Коли ви публікуєте корисний код, ви залучаєте таланти. Кожен раз, коли талановитий розробник дивиться у відкритий код вашого проекту, ви виграєте. У мене було багато відмінних бесід на технічних конференціях про моє відкритому коді. Деякі з цих зустрічей привели до ідей, які вилилися в кращі рішення проблем з моїми проектами. В індустрії з настільки великою кількістю креативних і продуктивних розробників, правильний погляд на ваш код може зіграти важливу роль.

Після того, як ви найняли всіх цих крутих людей за допомогою їх вкладу, націлювання на відкритий код це разюче ефективний спосіб зберегти ці таланти. Давайте подивимося, круті розробники можуть вибрати місце роботи прямо зараз. Ці ж розробники знають цінність відкритої розробки і захочуть зібрати портфоліо проектів, якими вони могли б похвалитися перед друзями або потенційними майбутніми роботодавцями. Парадокс! Щоб зробити розробників щасливими, ви повинні допомогти їм стати більш привабливими для інших роботодавців. Але тут немає нічого страшного, так як це якраз ті розробники, які ви хочете щоб працювали на вас. Так що розслабтеся і дайте їм працювати над відкритими проектами, або вони підуть куди-небудь, де їм дозволять.

Коли я починаю новий проект, я припускаю що він, врешті-решт, буде відкритий (навіть якщо це малоймовірно). Така установка без зусиль призводить до модульності. Якщо ви думаєте про те, як інші люди, поза вашої компанії, можуть використовувати ваш код, менше шансів, що ви станете використовувати пропрієтарні компоненти або жорстко пов'язані інтерфейси. Це, в свою чергу, призводить до більш чистого і більш підтримуваного коду. Навіть внутрішній код повинен прикидатися відкритим.

Ви коли-небудь розробляли чудову бібліотеку або інструмент на одному місці роботи, а потім звільнялися, щоб приєднатися до іншої компанії тільки для того, щоб переписати цей код або стати нещасними через його відсутність? Я так, і це відстій. Публікація коду дозволяє різко скоротити дублювання зусиль. Менше дублювання означає більше роботи над більш важливими речами.

Нарешті, це правильно. Зараз майже неможливо щось робити без прямого виконання великої кількості відкритого коду. Якщо ви користуєтеся Інтернетом, то ви користуєтеся відкритим кодом. Цей код уособлює мільйони людино-годин, які були витрачені для загального блага. Ми все виходила задоволення від цієї вигоди, і я вірю, що ми все морально зобов'язані відплатити цієї спільноти. Якщо програмне забезпечення це океан, то відкритий код це прилив, що знімає з мілини кораблі.

Гаразд, але що я не повинен відкривати?

Це просто. Не відкривайте нічого, що є основою бізнесу.

Ось кілька прикладів того, що ми не відриваємо, і чому:

  • Основне Rails-додаток (його простіше продавати, коли воно закрите)
  • Sinatra-додаток для управління завданнями (спеціально тісно зав'язано на github.com)

А ось приклади того, що ми відкрили, і чому:

  • Grit (адаптер для Git загального призначення, корисний для розробки безлічі інструментів)
  • Ernie (RPC-сервер загального призначення для BERT)
  • Resque (черги загального призначення)
  • Jekyll (генератор статичних сайтів загального призначення)
  • Gollum (wiki загального призначення)
  • Charlock_Holmes (визначник кодувань символів загального призначення)
  • Albino (підсвічування синтаксису загального призначення)
  • Linguist (визначник типів файлів загального призначення).

Зверніть увагу, все, що ми тримаємо закритим має конкретну бізнес-цінність, яка може бути порушена, якщо це потрапить до наших конкурентів. Все, що ми відкрили, це інструменти загального призначення, які можуть бути використані різними людьми і компаніями для розробки різних речей.

Яка Єдино Вірна Ліцензія?

Я віддаю перевагу MIT і майже все, що ми в GitHub відкриваємо, поширюється під цією ліцензією.

Я люблю цю ліцензію з кількох причин:

  • Вона коротка. Будь-хто може її прочитати і зрозуміти що саме вона означає без необхідності витратити купу грошей на консультації з високооктановими юристами.
  • Вона надає достатньо захисту, щоб бути впевненим, що ви не засудить мене, якщо щось піде не так, коли ви використовуєте мій код.
  • Всі розуміють її правові наслідки. Дивні ліцензії, на кшталт WTFPL і Пивний ліцензії (Beer license) претендують на звання «найвільнішою ліцензії» але зовсім не досягають цієї мети. Ці хитрі ліцензії занадто розпливчасті і нездійсненні, що бути застосовними для деяких компаній. З іншого боку, GPL надто обмежує і догматична, щоб бути придатною в багатьох випадках. Я хочу, щоб мій код був корисний всім. Всім. Ось що повинно означати Відкритий, і ось що повинно означати Вільний.

Як я можу почати?

P.S. Від себе хочу запропонувати Новомосковсктелям взяти участь в опитуванні, щоб виявити долю відкритих проектів Новомосковсктелей.