5 June 2015

Почему в России так мало committers в крупные open source проекты

Website developmentProgramming
Sandbox
Всю свою недолгую профессиональную карьеру я с удовольствием работал с крупными Open Source фреймворками — Lucene, Solr, Hadoop (map-reduce и yarn), Spark, Zeppelin, IPython, etc. Выбирая между разработкой проприетарного продукта и чего-то на основе open source, я всегда выбираю open source по следующим причинам:

Джедай-разработка. Джедай — это в первую очередь человек, который может в одиночку изменить судьбу вселенной (не подпадающий под принцип «один в поле не воин»). И некоторые open source фреймворки позволяют решать сложные технические проблемы простым деплоиментом готовых решений. Теоретически можно написать свой map-reduce, свою распределенную файловую систему и даже свою supertable realtime database. Но это займет много времени и будет по качеству хуже существующих решений.

А вот свой Spark за пределами долины уже не написать — просто слишком сложная система, требующая слишком много очень высококвалифицированных разработчиков. Но зачем все это писать, если весь big data стек организации можно поднять на 2 дня. Террабайты логов? Cassandra + Spark + Zeppelin. Из готовых docker контейнеров опытный человек может поставить все и за один день.

image

— Apache Spark релизится раз в 3 месяца с мажорными фичами. Это радикальное увеличение стабильности, появление новых инструментов (SparkSQl, Dataframe, GraphX), увеличение количества реализованных алгоритмов (Gradient boosting в MLLib). Solr за пару лет научился шардироваться и посему работать с большими данными. Hadoop переродился в Yarn. Эти фреймворки обзаводятся новой полезной функциональностью без приложения моих усилий. А значит, я могу более эффективно решать поставленные перед мной задачи. В проприетарном продукте жизнь становилось бы легче только тогда, когда я бы сильно вкладывался в то, чтобы сделать ее легче.

Хорошая документация. Очень мало top level apache проектов с плохой документацией. В apache incubator плохую документацию можно встретить чаще. Но даже в этом случаи — в силу открытости проекта у него есть пользователи, которые оставляют следы своих изысканий на StackOverflow. То что в проприетарном проекте обычно первый шаг — обратится непосредственно к автору кода, является самым крайним шагом в open source. За 2 года своего самого тесного общения со spark мне пришлось писать на dev mailing list всего дважды.

Сложившееся коммьюнити. В open source у меня всегда есть чувство плеча и принадлежности к какому то кругу, который всегда поможет в корректно поставленном техническом вопросе. Появляется ощущение, что у тебя замечательные коллеги по всему земному шару. И они останутся, если ты даже сменишь фирму, но не сменишь фреймворк.

Работа на себя. Работая с open source вы увеличиваете свою экспертизу в нем и быстро растете в зарплатно-профессиональном плане. Действительно, если понадобиться сменить работу — на рынке есть 5 контор, технологический стек которых вы уже примерно знаете и можете приносить пользу с первого дня. Вам не нужно по полгода входить в контекст переходя с одного проприетарного стека на другой. И фирмам тоже проще — можно нанять сотрудников, которых практически не надо обучать.

Все это является плюсом для сотрудников и работодателей в России. И для того, чтобы воспользоваться этими преимуществами, не надо быть committer. Достаточно быть contributor. Для тех, кто не знает, кратко расскажу, чем они отличаются. Сontributor — это человек, который предложил патч к проекту и его committer вмержил в мастер. Committer — это человек, который имеет право (и обязанность) регулярно коммитить и вмерживать патчи в мастер.

Contributor, таким образом, идеальный сотрудник в российских реалиях. Он хорошо знает проект, раз пользовался им достаточно, чтобы понять, где его можно улучшить. Он смог его улучшить. Он может собирать проект из сорсов и править сорсы, а значит, всегда сможет залезть в код и кастомизировать, если понадобится.

Контрибьютером быть классно — тебе не надо сдавать Spark Certification за 300 баксов, при этом никто не поставит под сомнение твою компетентность в этом фреймворке.

Committer обладает большей экспертизой в проекте, но куда важнее — большей властью.

image

Он может «протащить» в проект патч, выгодный его работодателю. Он может забанить патч, если он не выгоден. Он может определять пути развития проекта. Но власть идет не бесплатно. Он реально должен работать над формированием и поддержанием своего авторитета — читать бесконечные, бесполезные патчи, писать архитектурные гугло-доки, отвечать на вопросы. Делать это в свободное время почти нереально — это громадный труд. Поэтому коммитер делает это за счет работодателя. А что работодателю с этого? Посмотрим на список коммитеров в Spark:
Aaron Davidson Databricks
Andrew Or Databricks
Andrew Xia Alibaba
Andy Konwinski Databricks
Ankur Dave UC Berkeley
Charles Reiss UC Berkeley
Cheng Lian Databricks
Davies Liu Databricks
Haoyuan Li UC Berkeley
Imran Rashid Cloudera
Jason Dai Intel
Joseph Bradley Databricks
Joseph Gonzalez UC Berkeley
Josh Rosen Databricks
Kay Ousterhout UC Berkeley
Mark Hamstra ClearStory Data
Matei Zaharia Databricks, MIT
Michael Armbrust Databricks
Mosharaf Chowdhury UC Berkeley
Mridul Muralidharam Yahoo!
Nick Pentreath Mxit
Patrick Wendell Databricks
Prashant Sharma Imaginea, Pramati, Databricks
Ram Sriharsha Hortonworks
Reynold Xin Databricks
Robert Evans Yahoo!
Ryan LeCompte Quantifind
Sandy Ryza Cloudera
Sean McNamara Webtrends
Sean Owen Cloudera
Shane Huang National University of Singapore
Shivaram Venkataraman UC Berkeley
Stephen Haberman Bizo
Tathagata Das Databricks
Thomas Dudziak Groupon
Thomas Graves Yahoo!
Xiangrui Meng Databricks
Yin Huai Databricks

Spark зарождался в UC Berkley, поэтому вычтем всех из Berkley. Databricks — компания, которую образовали основатели Spark, зарабатывает на Databricks Cloud — analytic tool поверх Спарка. Spark является по факту их главным продуктом, поэтому они должны в него вкладываться. Yahoo всегда строила свою инфраструктуру на отрытых решениях — сначала это был Hadoop, теперь Spark. Компаниям такого рода нужны коммитеры по следующим причинам:
  • В инфраструктуру на этом фреймворке у них вложены по крайне мере десятки миллионов долларов (кластеры по тысячи машин в Yahoo). Контроля такого рода вложений не бывает слишком много. Нельзя допускать изменений в проекте, которые не позволят перейти на более новую версию в силу обратно несовместимых изменений или архитектурных решений, которые не укладываются в видение компании;
  • В любой большой компании обычно приходится делать локальные патчи в open source, чтобы заставить работать для специфических условий или требований. Если эти патчи будут большими и серьезным, это создаст проблемы при переходе на новую версию. Поэтому такие патчи надо стараться вмерживать в upstream. Протащить большой патч в большой проект, без того, чтобы какой либо коммитер был в этом заинтересован практически невозможно;
  • Компания видит свои приоритеты и коммитер старается транслировать эти приоритеты в комьюнити.

Я не знаю наверняка, но думаю, что Alibaba имеет не меньше инвестиций в инфраструктуру, чем Yahoo. Groupon меньше, но все же. Для ClearData Spark — основной движок.

Intel нужно точно знать, что Spark хорошо совместим с Intel. Cloudera, Hortonworks — являются вендорами хадупа (а значит и Спарка). Они должны транслировать не только свои интересы, но и интересы заказчика. Компании, для которых Big Data и IT — основной бизнес, куда сильнее заинтересованы в committers. MapR, SAP, Oracle, IBM — сейчас активно ищут коммитеров Cпарка (хотя я не понимаю, как можно активно искать всего 30 людей, которых все поименно знают). И они готовы платить хорошие деньги. Стать комитером Спарка в долине — гарантировано поднять свою зарплату в 2 раза, если она была уже высока.

Компании, которые готовы платить большие деньги за коммитеров, в России отсутствуют. IT-интеграторы не имеют размах IBM и SAP не только в плане оборота, но и в плане амбиций определять развитие отрасли. Они следуют тенденциям, формируемым в долине. Committer просто не сможет принести им пользы.

Продуктовые же компании в России либо малы, либо сидят на проприетарном технологическом стеке. Yandex пытается развиваться по модели Google, где вся разработка in house. Как я понимаю, это позиция основана на идеи, что разработка внутри быстрее и эффективнее любого open source, когда компания в состоянии создать критическую массу опытных специалистов. С деталями инфраструктуры ВКонтакте не знаком, но она тоже проприетарная. Одноклассники точно пользуются Spark, почему их не видно в коммьюнити — не могу сказать.

Таким образом, будучи committer, выиграть по деньгам или возможностям в России на фоне простого contributor считаю очень сложным.

Отсутствие компаний в России, которые хотели бы держать committers (которым было бы выгодно), считаю основной проблемой низкого количества committers.
Tags:open sourceпрограммированиеcommitter
Hubs: Website development Programming
+26
32.8k 72
Comments 48