Про наши гаджеты. Понятные инструкции для всех

Open-source системы управления проектами. Как начать создание Open Source проекта в новом году

На недавно прошедшей конференции Application Developer Days 2012 мне довелось прочитать коротенький доклад о том, как создаются Open Source проекты на примере OpenVZ Web Panel. К сожалению, у меня было 10 минут, вместо положенных 30-40 и в результате 80% подготовленного материала оказалось “за бортом”. Организаторы, почему-то в последний момент передумали и убрали даже 5-минутную секцию с вопросами, так что остался без фидбэка. Но не буду сильно наезжать на организаторов - они старались как могли и конференция явно удалась, за что им огромное спасибо. Также очень порадовало и качество большинства докладов.


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

Большая часть всего, что написано ниже - абсолютно субъективно. Некоторые вещи можно считать крамольными, однако многое было буквально выстрадано на собственном опыте.

Текста довольно много. Для особо нетерпеливых - можно просто полистать слайды.

Немного о подопытном кролике проекте

OpenVZ Web Panel - это довольно популярная бесплатная веб-панель управления виртуальными серверами на технологии OpenVZ. В подтверждение этого можно сказать, что версия 2.0 была установлена на более чем 17 000 серверов. Для серверного продукта вполне солидная цифра.

Что представляет собой OpenVZ? Это одна из технологий контейнерной виртуализации серверов. Кому-то нравится и подходит для решения задач, кому-то не очень, но сейчас не об этом. OpenVZ по сути является плацдармом для коммерческого продукта Parallels Virtuozzo Containers. Изначально для OpenVZ не было хорошей бесплатной веб-панели управления. Сам я активно пользуюсь OpenVZ. Существовавшие бесплатные панели меня не устраивали по тем или иным причинам. В результате родился проект OpenVZ Web Panel.

Разработка была исключительно в целях удовлетворить свои потребности, поэтому на определенном этапе было решено сделать проект Open Source. Поделится своими наработками с другими людьми, которые, возможно, тоже были в поиске подобной панели.

Идея вашего проекта

Рекламный блок вы прочитали, теперь возвращаемся к сути топика. Итак вы собрались создать свой Open Source проект. Первое, что должно у вас быть - это классная идея. В отличие от коммерческих проектов у вас не будет отдела маркетинга, массированной рекламы в специализированных изданиях и на биллбордах. Рекламу по телевизору бесплатного браузера Google Chrome может позволить себе только компания Google.

Кроме того, идею, желательно, как можно быстрее проверить на практике. Желательно выпустить альфа-версию и посмотреть на реакцию аудитории. Если будут восторженные отклики и множество пожеланий - вы идете в верном направлении. Если все молчат, то это хороший повод задуматься.

Мотиваторы-демотиваторы

Любой создаваемый вами проект должен иметь какую-то внятную мотивацию. Проекты из разряда “это прикольная штука и такой проект повысит мою карму” на практике очень быстро угасают. Примеры более весомой мотивации: вы собираетесь сами использовать свой проект или у вас есть конкретный заказчик. В случае OpenVZ Web Panel работал первый вариант, то есть необходимо было удовлетворить собственные нужды. Без сильной мотивации довести проект даже до первого релиза будет очень сложно.

Иногда люди говорят: создам Open Source проект, а потом на нем заработаю. Это пример неправильной мотивации. На самом деле, если вы действительно хотите заработать, то думать об Open Source нужно в самую последнюю очередь. Иначе наиболее вероятен следующий план развития событий: проект сделан, как зарабатывать - не понятно. В итоге мотивация полностью утрачена и продолжать развитие проекта вы уже не захотите.

Эффективная разработка

Старайтесь оставаться сфокусированным на нескольких самых важных для вашего проекта вещах. Сообщество будет толкать вас в сторону самых разнообразных изменений, уводить от основного курса. Например, для OpenVZ Web Panel если бы я соглашался и реализовывал все запросы пользователей, то давно бы уже делал очередной Webmin, а не систему управления контейнерами.

Разработка должны быть максимально эффективна в плане времени. Это единственный и самый дорогой ваш ресурс. Зачастую, принятые решения могут идти в ущерб качеству или каким-то требованиям, но если они эффективны по времени, то скорее всего вы идете в правильном направлении.

Кроме того желательно, чтобы вы умели выполнять практически любую задачу, которая встретится в вашем проекте. Если вы планируете какие-то работы делегировать другим людям, а работать они будут на общественных началах, то, поверьте, работа пойдет самым неэффективным образом. Плюс велика вероятность, что они вас просто продинамят.

Довольно трудным вопросом в плане эффективности является вопрос автоматизации процессов. С одной стороны вы же программист и предпочитаете действовать по принципу “за час написать и за 5 минут долететь”. Это принцип работает очень часто в ущерб вашему времени. Автоматизировать надо только то, что действительно повторяется из раза в раз.

В Open Source проектах обычно нет профессиональных тестеров, которые внимательно проверят все тест-кейсы и заведут вам баги, поэтому тестировать свой продукт, в первую очередь, будете вы сами. Это значит, что нужно заставлять себя писать функциональные и юнит-тесты, иначе вынуждены будете либо тратить время на ручное тестирование, либо пропускать в релиз серьезные проблемы. Тут, конечно, можно сказать: «спасибо, Кэп». Однако, в угоду экономии времени очень часто в проектах страдает именно этот пункт.

И последний момент. Если хотите вести разработку более-менее серьезно - занимайтесь учетом времени. Поставьте Redmine, заводите не только баги, но и задачи, пишите сколько потратили на них времени. Только тогда вы начнете понимать сколько в действительности стоит та или иная фича. В следующий раз вы уже вряд ли потратите два дня на автоматизацию одноразовой процедуры, которая делается вручную за полчаса. Кроме того, если вдруг появится спонсор, то будет гораздо легче объяснять стоимость той или иной фичи.

В рамках работы над OpenVZ Web Panel ко мне не раз обращались с просьбой собрать продукт в виде пакета под «любимую ОС». Причем под любимой ОС порой фигурировал и ArchLinux и Gentoo. Я ничего не имею против этих дистрибутивов, но сообщество их пользователей настолько мало по сравнению с тем же CentOS или Debian, что я потрачу кучу времени на очень сомнительную в плане пользы задачу. У панели есть замечательный Shell-инсталлятор. Я знаю, что он менее предпочтителен по сравнению с пакетами. Однако я также очень хорошо знаю, что поддержка пакетов на должном уровне для, скажем, пяти дистрибутивов Linux - это очень затратная задача в плане времени. Пока Shell-инсталлятор экономит мне уйму времени на разработку. Самое забавное, что если любителя Debian (который уже пятый по счету обещает прислать пакет, но ни один так нормальный пакет и не прислал), я еще попрошу попробовать собрать пакет под CentOS, то… ну вы меня поняли.

Качество продукта

Довольно часто пользователи Open Source продуктов недовольны их качеством. Если вы хотите сломать этот стереотип, не забываете о качестве продукта.

Под качеством нужно понимать не только тестирование продукта. Качество должно быть во всем - в дизайне, в юзабилити, во вспомогательных инструментах, сайте продукта, документации, технической поддержке.

Ниже скриншот фронт-энда для менеджера закачек wget. Подход программиста к дизайну интерфейса в чистом виде: «есть опция - должна быть на экране».

А вот скриншот WordPress. Можно любить или не любить этот продукт, но признать то, что люди явно работают над качеством продукта - стоит.

Нередко в Open Source проектах можно увидеть графический интерфейс, где в изобилии хаотично разбросаны элементы управления, а логика работы понятна только автору. Не забывайте о пользователях, пробуйте проводить ревью того, что вы делаете представляя себя в роли типичного пользователя. Если что-то работает не очевидным образом, будьте уверены - большая часть пользователей обязательно запутается и совершит ошибку. Характерный признак такой проблемы - в issue tracker’е уже 20-ый тикет на одну и ту же тему - где находится элемент управления. В этой ситуации люди часто ограничиваются просто добавлением информации в FAQ или Knowledge Base. На самом деле FAQ и Knowledge Base надо регулярно просматривать на предмет решения проблем в продукте и уменьшения списка часто задаваемых вопросов.

Не нужно забывать и о таком моменте, что качество кода на самом деле ваших пользователей интересует в последнюю очередь. А вот удобство использования, отсутствие как run-time так и логических ошибок очень сильно влияет на впечатление о продукте. Зачастую авторы стремятся к гармонии в плане кода и забывают об удобстве продукта. Понятно, что качество кода коррелирует с качеством продукта, но акцент желательно все-таки делать именно на втором моменте. В конце концов, многие успешные Open Source проекты имеют довольно унылый по качеству код. Хороший повод призадуматься (но не подумайте, что я агитирую вас писать говнокод).

Технологии

Open Source проекты предоставляют отличную возможность для обкатки новых технологий и проведения экспериментов. Обязательно пользуйтесь этим моментом. В корпоративных приложениях можно годами ждать перехода на использование какой-то модной и крайне удобной технологии. Здесь же вы сами себе CEO и CTO и все технические, архитектурные и стратегические решения можете принимать единолично.

Однако не стоит забывать и о конечных пользователях. Если у вас веб-приложение будте уверены, что большинство из них едва ли понимает, чем HTML3 отличается от HTML5. Однако если вы полностью откажетесь от поддержки IE, то они это обязательно заметят и просто не поймут. Пользователю в первую очередь важен контент, а не ваши технологические навороты.

В Open Source разработке вы менее ограничены в применении сторонних библиотек и фреймворков. Например, в OpenVZ Web Panel для UI используется известная библиотека ExtJS. Если вы захотите использовать эти библиотеку в своем коммерческом продукте, то нужно будет раскошелиться на весьма недешевую лицензию. С другой стороны работая с библиотекой ExtJS в рамках Open Source проекта вы можете получить ценный опыт ее практического использования и далее этот опыт применить в коммерческом проекте.

Отсутствие бюджета на разработку также толкает на поиск альтернатив дорогим платным компонентам. Нередко оказывается, что такие компоненты на порядок проще интегрировать и поддерживать, чем коммерческие аналоги. В конце концов, вы даже можете посодействовать развитию другого Open Source проекта, исправляя какие-то проблемы.

Инструменты

Существует довольно много удобных инструментов, помогающих в разработке Open Source проекта. Многие из них вы знаете и, наверняка, пользовались. Однако по настоящему их начинаешь ценить, когда работаешь над коммерческим проектом, где по тем или иным причинам эти инструменты не доступны. Вспоминаешь корпоративный Exchange и SharePoint и начинаешь грустить по Gmail и MediaWiki.

Не стоит также забывать о том, что ряд компаний стимулируют разработку Open Source проектов, раздавая таким проектам бесплатные лицензии на собственные коммерческие проекты. Например Atlassian может дать вам бесплатную лицензию на Jira или Confluence. Для разработки OpenVZ Web Panel некоторое время я использовал IDE RubyMine, бесплатную лицензию на который любезно предоставляли товарищи из JetBrains (пользуясь случаем передаю им привет и требую продления лицензии:)). В рамках интеграции с биллингом WHMCS, также понадобилась лицензия на продукт. Официально они не предоставляют бесплатных лицензий, но интерес был взаимный, поэтому лицензия была оперативно предоставлена. Поэтому, если вас интересует какой-то коммерческий продукт, который бы помогал в разработке проекта, обращайтесь к производителям этого продукта. Скорее всего вы сможете получить бесплатную лицензию, внятно объяснив зачем вам нужен именно их продукт.

Сообщество

Часто люди думают, что сообщество позволяет решать любые проблемы проекта. Это абсолютно неверно. Во-первых, если только вы не пишите инструмент для разработчиков, то среди пользователей оказывается, что нет программистов. Да и разбираться в дебрях вашего говнокода они почему-то не спешат. Если же вдруг вам прислали патч, то на проверку окажется, что в лучшем случае это костылик, который и работать-то не будет для большинства пользователей.

Очень сложно уговорить людей тестировать сырой продукт. Даже фичи, которые запрашивал сам пользователь он предпочитает проверить только после релиза.

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

Если же вам нужно перевести интерфейс на другой язык, попробовать причесать документацию, предложить что-то на обсуждение - сообщество всегда к вашим услугам. Устраивать холивары и бесконечные обсуждения - это тоже конек некоторых людей практически в любом сообществе.

И как обычно, в любом сообществе есть тот, кто чем-то недоволен и считает, что вы должны бросить все дела и заниматься только его проблемами. В конце концов он же пожертвовал вам 10 долларов.

Деньги?!

Я уже говорил о том, что если собрались заработать на проекте, то скорее всего этот проект не стоит начинать как Open Source. Отказаться от такой схемы в будущем будет очень сложно. С другой стороны как-то мотивировать разработку в финансовом плане все равно нужно. Даже на элементарную поддержку проекта вы можете нести расходы, например на хостинг, железо и прочее.

Ряд моих знакомых, почему-то продолжают свято верить, в что подобные проекты вполне могут жить на пожертвования. Не могут. На вскидку сейчас не могу вспомнить ни одного проекта, где видел более-менее внятную собранную сумму рядом с кнопкой Donate (тут важно не путать спонсорство и пожертвования). Если вы не создатель Википедии и на сайте проекта не висит личной фотографии с грусными глазами, то пожертвований вам едва ли хватит даже на хостинг сайта проекта. Не буду говорить о собственном проекте, т.к. для него статистика не публична. Но недавно заглядывал на сайт проекта Gitlab. Довольно интересное начинание, много заинтересованных. Внизу «градусник» с прогресом сбора суммы в 1000 долларов. Заглядывал туда 3 недели назад и сегодня. Собранная сумма изменилась меньше чем на 150 долларов. Причем это даже очень неплохо по сравнению со другими.

Более реальные способы заработка - это продажа альтернативных лицензии (подходит для встраиваемых в другие системы продуктов) и коммерческая поддержка (подходит для сложных в освоении продуктов). Для меня же лично, наиболее симпатичным выглядит вариант наличия спонсора-клиента или спонсоров, заинтересованного в развитии вашего проекта.

Правда, с появлением спонсора очень желательно не допустить пару типичных ошибок. Первое - это потеря всех прав продукт и передача их заказчику. Второе - это бесконечная работа над кастом-версиями продукта без возможности работы над главной линией. И то и другое в конечном итоге приведет к тому, что вы будете вынуждены закрыть проект именно как Open Source.

Выводы, куда ж без них

Старайтесь, чтобы в проект был в первую очередь интересен вам самим и решал какую-то вашу проблему. Большинство успешных Open Source проектов, которые приходят сейчас в голову, шли именно по такому пути. Это и Rails и Nginx и многие другие.

Если вы решили крупно заработать с помощью создания Open Source проекта, то заранее тщательно продумайте бизнес-модель. Скорее всего, лучше делать проект закрытым.

Помните о самом дорогом вашем ресурсе - времени. В конце концов, у вас наверняка есть основная работа и хоть какая-нибудь личная жизнь.

И последнее, создавайте законченный продукт, которым можно будет гордиться. Не останавливайтесь на «супер технологичной», но альфа-версии. Самое трудное и в коммерческой и в Open Source разработке - это довести продукт до релиза. Потом сможете ездить по конференциям и рассказывать всем о вашем успешном начинании (как, например, это делает автор Sphinx’а:)).

P.S. Все вышенаписанное - исключительно личное мнение. Я, как и многие другие, склонен ошибаться, учиться на своих ошибках и делать многие вещи неправильно, но при этом пытаться учить других:)

Свободное программное обеспечение - неотъемлемая часть бизнеса Google. В этой компании проекты буквально рождаются и умирают с open source. Без Linux и открытого ПО не существовало бы компании Google в том виде, в каком мы её знаем. Google не только использует СПО в повседневной деятельности, но и постоянно выкладывает в открытое достояние собственные наработки. Например, за три месяца текущего года Google открыла Chrome для iOS , Upspin (фреймворк для глобального единого пространства имён), E2EMail (экспериментальный почтовый сервис с оконечным шифрованием), перцептуальный JPEG-энкодер Guetzli . Это только самые крупные проекты, которыми Google поделилась с сообществом в 2017 году.

Всего за время своей работы Google опубликовала код уже более 2000 проектов. Только как их посмотреть? Теперь вдобавок к репозиториям на GitHub все open source проекты Google доступны по единому адресу . Это новый портал свободного программного обеспечения поисковой компании.

В Уилл Норрис (Will Norris), разработчик группы Google Open Source Programs Office, пишет: «Свободное и открытое программное обеспечение лежало в нашем техническом и организационном основании с самого начала существования Google. Начиная с серверов под Linux, и заканчивая внутренней корпоративной культурой Google, когда кто угодно из другой команды разработки может выпустить патч для вашего кода. Open source является частью всего, что мы делаем. В обмен, мы публикуем миллионы строк open source кода, поддерживаем программы вроде Google Summer of Code и Google Code-in , спонсируем проекты open source и сообщества через организации вроде Software Freedom Conservancy , Apache Software Foundation и ».

И вот сейчас, спустя 18 лет после своего основания, компания Google открыла портал , который объединяет все открытые проекты Google, с сопутствующей информацией об использовании, выпуске и поддержке свободного программного обеспечения.

Зачем Google делает это? Если верить сайту, компания уверена, что СПО является всеобщим благом . Когда софт открыт и доступен для всех, это поощряет сотрудничество и продвижение технологий и «решает реальные мировые проблемы».

Наверное, так оно и есть на самом деле.

Нужно заметить, что портал Google - это не репозиторий вроде GitHub, а скорее инфорационно-справочный портал, здесь стоят ссылки на соответствующие репозитории GitHub. Таким образом, вряд ли можно опасаться, что Google откажется от размещения кода на GitHub, самом удобном сайте для совместной работы, который уже стал стандартом де-факто в своей области.

Уилл Норрис пишет, что компания не знает, какие проекты станут популярными и получат всеобщее признание, поэтому они поощряют своих сотрудников публиковать весь код, какой только возможно . Соответственно, здесь можно найти разные проекты по масштабу и уровню поддержки. Есть и крупные известные проекты вроде , и , есть и маленькие «любительские» проекты, которые сотрудники, вероятно, создали в свободное от основных обязанностей время (20% времени рабочего программисты Google могут работать над проектами на своё усмотрение). Например, и . Некоторые из проектов полностью поддерживаются и развиваются сотрудниками Google и сообществом, другие являются экспериментальными, сделанными просто ради удовольствия.

Есть кое-что ещё. Новый портал Google - это не просто собрание открытых проектов, сделанных в компании. Здесь компания ещё и делится своим опытом и корпоративными практиками разработки открытого программного обеспечения. В опубликована копия всей внутренней документации Google по разработке open source (за исключением нескольких документов). Это именно то, что видят и читают сотрудники компании. Здесь несколько разделов. Один из них посвящён - в том числе создание патчей для больших проектов и написание собственных маленьких проектов в 20% свободного времени. Другой раздел объясняет практики OSS внутри компании. Там разъясняется, под какими лицензиями можно брать и использовать код. Например, код под лицензиями AGPL использовать . Здесь размещён тщательно отобранный каталог из тысяч пакетов, рекомендованных для использования. Наконец, третий раздел посвящён инициатив свободного ПО: различным студенческим программам, проводимым мероприятиям, выдаваемым грантам и т. д.

Очевидно, что Google видит свободное ПО как неотъемлемую часть своей деятельности - и стремится максимально поддерживать и использовать его.

Open source становится важной частью бизнеса не только Google, но и многих других компаний. Как и предсказывали отцы-основатели, свободный софт распространяется как вирус, заставляя создателей производных программ тоже выпускать их под свободными лицензиями. Как сказал исполнительный директор Linux Foundation Джим Землин (Jim Zemlin), свободное ПО станет новым . Он имеет в виду, что 80% ценности любых технологий - от смартфонов или других сфер ИТ - будет происходить от свободного софта, и только 20% - от проприетарного. Процесс постепенно идёт. Исследования показывают, что в 2015 году .

Практика в open-source проектах поможет при составлении портфолио для трудоустройства. В статье приведены рекомендации по изучению этой тематики.

Прежде чем вы начнете…

3. Мгновенные ответы DuckDuckGo

Если кто не знал, DuckDuckGo – поисковая система, не собирающая информацию о пользователях. Мгновенные ответы - фича, которая позволяет получать ответы без необходимости открывать сайт. Сотни людей успели принять участие в разработке этой фичи, много идей для разработки лежит на этой странице . Также DuckDuckGo предоставляет хорошую документацию и рекомендует новым пользователям создавать шпаргалки для сервиса. Чтобы посмотреть, как выглядят такие шпаргалки, достаточно вбить в поисковик фразу «wordpress cheat sheet» . Если у вас возникли трудности, есть канал в Slack и вики-страница в Github-репозитории .

4.

5. Проекты Mozilla

Вне сомнений, Mozilla – одна из лидирующих организаций по количеству open-source проектов. Делать свой вклад в развитие проектов Mozilla может показаться не очень простым на первый взгляд, поскольку сложно найти задачи, помеченные как «для новичков», из-за того, что в целом задач много. К счастью, был создан отдельный сайт , где можно фильтровать задачи в зависимости от своих интересов. Новичку стоит обратить внимание на фильтр simple bugs внизу в секции фильтров!

6. Pinax

Pinax – это открытая опенсорсная платформа, сделанная с использованием веб-фреймворка Django. Это экосистема для повторно используемых приложений на Django, тем, шаблонов для нового проекта. В их репозитории на Github в разделе Issues есть задачи для новичков, помеченные first-timers-only . Они аккуратно задокументированы, таким образом, чтобы вы знали, что вам следует делать.

Я хочу еще проектов, что делать?

  • Ищите по меткам в интересующих вас репозиториях. Наверняка там будет какая-нибудь задача в issues, которая помечена как легко решаемая.
  • Зайдите на следующие ресурсы:

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

Впервые я узнал про мир открытого ПО где-то в году 2009, когда начал серьёзно заниматься программированием и зарабатывать этим.
Но впервые отправил pull request в open-source проект году только в 2012. Это было попытка добавления Redis в качестве провайдера для кэша в Joomla Framework. Скажем так, попытка была не самая удачная, но попробовать очень хотелось.

Вернулся я к open-source позже - в 2015.
Я долгое время пытался придумать и реализовать с друзьями и коллегами разные идеи, «замутить стартап» и тд. Но всё почему-то захлёбывалось, лично мне не хватало мотивации.
Тогда я попытался взглянуть на эту ситуацию и понять почему это происходит.
Я понял, что всё дело в том, что меня интересовали не сами идеи, стартапы, бизнес, мне была интересна разработка и программирование.
И поняв это, я решил что если мне интересно программирование как таковое, то почему бы не направить это в полезное русло и не помочь улучшить инструменты, которыми я пользуюсь. Так я начал периодически отправлять pull request"ы в проекты, которые мне нравятся (Yii2 , Design Patterns , Django)

Почему это интересно?

1. Знакомство с новыми людьми
За всё время, что я контрибьютил в открытый код, я познакомился с большим числом отличных людей. Все они невероятные профессионалы, с которыми приятно общаться, делиться, узнавать новое. У каждого из нас есть возможность пообщаться с создателями любимых продуктов, получить от них отзыв. В целом коммьюнити - одна из самых важных составляющих таких проектов.
2. Участие во всемирно известных проектах
Вы можете работать в маленькой компании или жить где-то очень далеко, но у каждого есть возможность поучаствовать в развитии проектов, которыми пользуется весь мир. Facebook, Google, Ebay и другие выкладывают свои разработки во всеобщий доступ и мы имеем отличный шанс стать частью сообщества разработчиков таких интернет-гигантов.
3. Это весело
На самом деле, разработка ПО с открытым кодом зачастую бывает очень весёлым занятием, сопровождающимся живым общением.
Вот несколько примеров.
4. Признание
Это довольно интересное и тёплое чувство, когда Ваш код вливают в ветку известного проекта. Вы понимаете, что Вы действительно хорошо поработали, что в конце концов Вы что-то можете.
Если Вы вдруг теряете интерес к программированию или Вам кажется, что у Вас что-то не получается, попробуйте Open Source - и Вы поймёте насколько «лечебным» он может быть.

Почему это полезно?

1. Новый неповторимый опыт разработки
Тот опыт, который вы получаете при разработке ПО с открытым кодом, Вы вряд ли получите где-то ещё.
Я помню как я волновался, когда отправлял свой первый pull request. Я перечитывал каждую строчку кода, проверял code-style и т.д.
Осознание того, что Ваш код увидят тысячи других разработчиков , сами создатели проекта, заставляет вас думать, что Вы пишите в своём коде и это очень важно.

Кроме того, open-source разработка прививает хорошие навыки, такие как соблюдение стандартов кода, написание тестов и многое другое.
К тому же, здесь всегда есть возможность сделать code review чужого кода, если Вы устали от непосредственно написания кода. Это тоже бывает очень полезно и для кого-то это действительно новый опыт.

2. Возможность изучить что-то новое
Лично я люблю изучать новые языки программирования. Прочитав пару-тройку книг, хочется попровать язык в реальных условиях.
Но так как мне никогда в голову не приходят хорошие идеи (ха-ха:)), я ищу интересные проекты с открытым кодом на новом языке, и пробую контрибьютить в них.
Бояться показаться новичком не стоит, никто за это журить не будет, если будут какие-то недочёты, Вы всегда можете их исправить. А если Ваш код всё же вмержили, значит Вы действительно поняли ту или иную часть языка и проекта и можете гордиться собой.
3. Отличная галочка в резюме
После того, как я начал контрибьютить, мне всё чаще и чаще пишут HRы со словами - «нам нравится Ваша активность на GitHub, приходите к нам на собеседование».
Я думаю для работодателя ссылка в Вашем резюме на Ваши pull request"ы, принятые в крупные проекты, скажет о том, что вы действительно пишите достойный код, если его одобрило большое количество людей.
Кроме того, намного круче вместо сухого, вырванного из контектста примера кода, прислать работодателю ссылку на принятый pull request.
4. Знай свой инструмент
Участие в разработке продуктов, которыми Вы постоянно пользуетесь, помогает Вам лучше понять его - как он устроен внутри, как работает, какие люди в конце концов стоят за ним.
Кроме того, Вы всегда будете знать какие новые «фичи» появляются в проекте, какие есть нерешённые проблемы и многое другое.
5. Персональное развитие
Open source разработка помогает развить не только навыки программирования. Вот, на мой взгляд, небольшой список того, какие персональные качества развиваются ещё:
  • Умение общаться
  • Внимательность и аккуратность
  • Уровень английского языка

Этот список можно продолжать ещё.
Кроме того, я считаю, что в каждом человеке присутствует желание помогать другому человеку, и как раз-таки Open Source разработка даёт такую возможность.

Заключение

В конце я хотел бы сказать вот о чём - единственное о чём я жалею, что мне не всегда хватает свободного времени участвовать в open-source разработке. Замечательно, когда компания, в которой Вы работаете, понимает важность такого участия для разработчиков и самой компании и выделяет для этого часть рабочего времени (а я такое встречал).
Тем не менее, даже если Ваша компания не делает этого, старайтесь хоть иногда участвовать в разработке открытого ПО, это сделает Вас настоящим профессионалом и подарит отличный опыт.

Разработчика из США, который описал личный опыт участия в open source проекте. Из этого материала вы узнаете:

  • что такое open source проекты;
  • как вы можете внести свой вклад;
  • где искать проекты и задачи.

Почему стоит браться за open source проекты?

В первую очередь - это бесплатная практика программирования. Также вы можете пополнить такими проектами ваше резюме, и, поверьте, если вы сможете объяснить ваш вклад в общее дело, получить должность «джуна» будет гораздо проще, чем в случае «просто закончил курсы».

Open source проект на пальцах

Любите ли вы гулять по парку? Возможно не сейчас, потому что уже ноябрь, как говорят «зима близко!». Уверен, в хорошую погоду вы с удовольствием бродите меж деревьев по ухоженным аллеям. Но что, если бы ваш любимый парк забросили муниципальные службы? Очень быстро начался бы беспорядок. Везде валялся бы мусор вперемешку с отходами жизнедеятельности собак в томительном ожидании, что в них кто-нибудь наконец-то вступит. Вряд ли вы бы продолжали ходить туда на прогулки.

А теперь представьте более радостную картину: группа добровольцев взяла под свою ответственность содержание своего любимого парка. Она регулярно выделяет средства, чтобы превратить нечто неухоженное и заброшенное во что-то очень красивое и полезное другим людям. И делает это не только ради личного удовольствия, но и к радости общественности. Скорее всего, ваш любимый парк содержат на наши с вами налоги, но в целом приведенная выше ситуация описывает то, как работают open source проекты. Хотя любое программное обеспечение, по сути, рассчитано на конечного пользователя, как разработчик вы можете внести свой вклад в open source проект, тем самым сделать мир лучше с помощью нового доступного ПО. Если вы хотите принять участие в open source проекте, нужно понять, кто его курирует и постараться наладить взаимодействие с этими людьми. Я вовсе не имею в виду, замучить их до полусмерти вопросами и ожидать всеобъемлющей опеки во время работы. Вы - взрослый самостоятельный человек (даже если вдруг ещё не взрослый, то быть самостоятельным - отличная идея!). Надеюсь, вам уже не нужно вести за руку и расписывать каждый шаг. В этом я вам не помощник. Зато я могу дать вам несколько дельных советов, которые помогут вам при попытке внести свой первый вклад и потенциально включить ваш кусок кода в проект с открытым исходным кодом.

Поиск проекта

Если вы ищете открытый проект, чтобы принять в нём участие, найдите такой, который вам действительно интересен. Желательно, чтобы в нём было много задач, из которых можно выбирать. Не соглашайтесь на первый попавшийся проект. В таком случае вы будете больше заинтересованы и сможете серьезно отнестись к задачам.

Где искать проекты Open Source

Их можно найти в открытых репозиториях GitHub. Собственно, там все их и ищут. Там очень много .

Поиск хорошей первой задачи

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

Когда вы найдете подходящую задачу, напишите комментарий кураторам проекта о том, что вы хотели бы над ней поработать. Чаще всего вам дадут добро, но возможно по какой-то причине попросят выбрать другой вариант. Не думайте, что вы не можете начать пока не пришел ответ, но будьте гибкими, если вас попросят остановиться и заняться чем-то другим. Для моего первого задания я выбрал то, где было необходимо немножко подправить css. Мне казалось, что я могу это реализовать и это не угнетало меня.

Начало и ознакомление

Начало работы в проекте может казаться обманчиво легким, но при этом иметь много подводных камней. Когда вы выбрали задачу для решения, вам нужно развернуть проект на своей машине. Скорее всего, исходники проекта будут «тяжелыми» (хотя это зависит от проекта). Возможно, вам придется установить большое количество зависимостей просто для того что бы запустить проект.

В проекте, на который я попал, таких моментов было немного, но это не значит что это было просто. Например, нам пришлось установить специфические версии Ruby и специфические версии Rails, PostgreSQL, Phantom JS и Gemfile с перечнем Gems для инсталляции. Казалось, что это не так уж и много требований, но я столкнулся с большой проблемой с поиском специфической версии Ruby, необходимой для разработки проекта и работающей на моем компьютере. Наконец, я использовал RVM для переключения версий: это еще одна вещь которой я научился, только для того чтобы просто установить проект и заставить его работать на компьютере. Когда же я запустил проект, то увидел, что тот написан на Angular и Coffee Script, с применением Active Record для взаимодействия с данными поступающими из бек-энда. Это были новые для нас вещи, и с ними нужно было разобраться самостоятельно до начала работы над проектом.

Поиск других задач

Возможно, прямо сейчас вам это не нужно, и даже не пригодится в ближайшем будущем, но я столкнулся с этим практически сразу. Огромное везение сразу заметить, что в проекте что-то работает не так. Если вы нашли такой баг, переходите на рабочий сайт и посмотрите так ли это там. Не спешите писать в поддержку, возможно, всё работает. Обычно кураторы контролируют ситуацию и критичных ошибок быть не должно. Но если вы всё-таки обнаружили то, что требует внимания, найдите и проверьте среди задач, которые уже существуют. Скорее всего, проблемная задача уже была записана и скорее всего вам не надо ничего делать. Хотя, возможно, стоит решить ее самостоятельно, когда вы закончите то, над чем работаете.

Когда вы оформляете и записываете новую задачу, убедитесь, что вы как можно более подробно описали её. Используйте скриншоты, чтобы наглядно показать, что вы пытаетесь сказать и максимально упростить понимание вопроса постороннему, который заглянет на сайт и увидит описываемую проблему. В моем случае я закончил, добавив две дополнительных задачи, кроме той, что была закреплена за мной. Я даже не смог сделать пул реквест (это было связано с ограничениями безопасности). Мне казалось, что я сделал два шага назад для проекта, но на самом деле описание и оформление задач все равно двигает проект вперед. Создание pull request (PR) Вы решили поставленную перед вами задачу. Прежде, чем писать отчёт о проделанной работе, покажите решение тому, кто сможет его оценить. Предварительный просмотр - отличная идея всегда, но для вашего первого вклада в открытый проект он просто необходим . Вы же не хотите краснеть из-за недоработанного или неправильно работающего куска кода? По этой же причине кураторы проекта предложат вам пройти все необходимые тесты перед пул реквестом. Поэтому проверьте себя загодя, чтобы быть уверенным в своей работе и поправить её в случае необходимости до получения подтверждения от кураторов. Убедитесь, что вы придерживаетесь названий или стилистики, которая принята кураторами проекта. Вы можете найти информацию в файле CONTRIBUTING.md , он есть в большинстве проектов. Также там вы сможете уточнить, в каком виде вы должны создавать commit message, как должно выглядеть описание вашего pull request и как оформить новую задачу.

Покинуть задачу

Иногда понимаете, что не справляетесь со взятой задачей. Или вам казалось, что у вас есть время на проект, но на деле его не оказалось, вам на голову свалилась срочная работа и вам нужно заняться ею. Это в норме вещей. Главное, отпишитесь от задачи и оставьте сообщение кураторам, чтобы они знали, что вы не сможете продолжать заниматься проектом. Но ни в коем случае не бросайте задачу, не сообщив кураторам и не отписавшись от неё.

Заключение

Я считаю, что от участия в разработке открытого проекта - одна сплошная польза. Вы практикуетесь и в тоже время делаете что-то полезное для других людей. С другой стороны, данный проект может стать еще один пунктом в вашем резюме и дать дополнительные плюсы при борьбе за получение желаемой должности. Буквально в прошлую пятницу я общался с программистом, который устроился на свою работу (очень крутую и интересную, такую, которая может изменить мир к лучшему, и я действительно не шучу) именно благодаря его работе над open source проектами.
Что ещё почитать:
Загрузка...