Как я могу найти хороший проект с открытым исходным кодом, чтобы присоединиться? [закрыто]

152

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

Моя проблема в том, что я не знаю, как найти проект, в который я буду вписываться.

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

Там есть аналогичный вопрос здесь , но этот вопрос имеет отношение к занятости и ограничивается PHP / Drupal.

попса
источник
9
Круто, я просто взглянул на ArsTechnica и увидел этот вопрос в статье. Вот ссылка. arstechnica.com/business/guides/2012/03/…
Эван Плейс,

Ответы:

111

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

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

Поскольку генерация множества отдельных исправлений исправлений довольно утомительна для любой существенной разработки, я клонировал репозиторий в ветку на git hub и начал отбрасывать код. Через несколько недель и несколько тысяч строк кода мы с руководителем проекта работали над интеграцией и тестированием моих исправлений в библиотеке таким образом, чтобы это согласовывалось с остальной базой кода.

Это был бесценный процесс, из которого я многому научился:

  • Когда я начинал, я не знал, как использовать Git, и к концу я мог умело создавать удаленные ветви отслеживания и объединять или перемещать их в основную ветку, не нарушая пот.
  • Я начал в VS 2008 и в итоге перешел на Linux и Monodevelop, чтобы работать над написанием кода (потому что VS - отсталый юникод, а окончания строк - такая боль в git). Оказывается, в * nix не так много, что вы не можете сделать в * дау.
  • Я никогда прежде не проводил никаких модульных тестов, Nunit - это очень просто, а написание модульных тестов - довольно элементарный материал.
  • Я должен был научиться глотать язык и слушать, а также практиковать терпение. Нет смысла твердо стоять на вашей позиции в проекте с открытым исходным кодом, потому что все вовлеченные в это люди осведомлены (возможно, в большей степени, чем вы) и способны принять / отклонить ваши идеи, основанные на сути, а не на доставке. Это чрезвычайно унизительно и в то же время полезно.
  • Просто взгляд другого опытного разработчика на большую базу моего кода указывал на недостатки в моем стиле, которые я никогда раньше не рассматривал (а также на недостатки в его коде). Для меня я понял, что проще / лучше определять константы, чем использовать набор магических чисел с подробным комментированием.

Этот конкретный проект был основан на создании и декодировании сетевых пакетов на всех уровнях сетевых протоколов. Я лично заинтересован в создании сетей более низкого уровня, поэтому было здорово поговорить с другим разработчиком, имеющим общий интерес и знания в этой области.

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

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

Если вы не можете найти уже существующий проект в одной из основных сетей репозиториев с открытым исходным кодом (github, sourceforge, google code), подумайте о приложении, которое вы действительно хотели бы использовать, но которое еще не существует, и запустите свое собственное.

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

Обновить:

Я просто подумал об этом и понял, что не удосужился упомянуть, на какой проект ссылаются многие мои ответы. Для тех, кто хочет знать, это SharpPcap . Ведущий разработчик Крис Морган очень профессионален и точен. Он чертовски хорошо справляется с управлением проектом и многому научил меня, что нужно для разработки проекта OSS.

Из-за личных временных ограничений я не смог добавить код более года, но я все еще пытаюсь дать ответ, скрываясь за переполнением стека и время от времени отвечая на вопросы о SharpPcap.

Эван Плейс
источник
Можете ли вы предложить какой-нибудь популярный сайт на этот счет?
Aditya P
2
@AdityaGameProgrammer Я бы уделил больше внимания поиску конкретного проекта, а не хостинга с открытым исходным кодом. Хостинг сайтов - это просто свалка для проектов с открытым исходным кодом, и некоторые проекты будут мигрировать на другие сайты, если будут найдены лучшие функции (т. Е. Поддерживаются конкретные лицензии, улучшена поддержка контроля версий, улучшены средства отслеживания ошибок и т. Д.). Я уже назвал несколько. ИМХО, github, google code и sourceforge являются самыми популярными. Launchpad (использует управление версиями Bazaar) - это место, где вы найдете большую часть разработки Ububtu / linux.
Эван Плейс
2
@AdityaGameProgrammer (продолжение) Github, sourceforge и google code - это бурлящие массы проектов. Поскольку sourceforge существует дольше, вы, вероятно, найдете гораздо больше мертвых / осиротевших проектов. Намного проще найти проект, к которому можно присоединиться, если вы потратите некоторое время на то, чтобы сначала рассмотреть, что вас интересует. Исключение составляют случаи, когда вы хотите разместить свой собственный проект. Затем потратьте некоторое время на поиск возможностей, которые лучше всего соответствуют вашему обычному рабочему процессу разработки.
Эван Плейс,
Спасибо. Мои предыдущие попытки найти кого-то на sourceforge привели меня к огромному количеству мертвых / осиротевших проектов.
Адитья П
28

Вот что я предлагаю сделать, чтобы найти идеальное соответствие:

  1. Если у вас есть проект с открытым исходным кодом, который вы уже используете, знаете и заботитесь о нем, он должен стать вашим первым кандидатом. В противном случае подумайте, что бы вы хотели сделать в целом, и найдите проект в этой области.

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

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

Выясните: вам нравится там гулять, или это для вас затягивание? Чувствуется ли, что у этого проекта хорошее и энергичное сообщество, или он медленно умирает? Кажется, что основные люди там поощряют и наставляют новичков, или вы будете самостоятельно?

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

Еще несколько мыслей:

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

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

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

Последнее и самое важное: если вас обожгут в одном месте, двигайтесь дальше; не сдавайся

Надеюсь, это поможет.

kdubinets
источник
2
+1 за «рассмотреть вопрос о начале с вспомогательных ролей». Написание тестов действительно легко, и внимательный взгляд на тесты дает хорошее представление о том, чего пытается достичь код. Документация - это хороший способ понять «большую картину», а проверка ошибок - это хорошая точка входа с низким барьером, чтобы сломать лед. Работа над вещами, которые разработчики обычно пренебрегают, демонстрирует, что вы сосредоточены на улучшении проекта, и ваш вклад зависит не только от эго. Проблемы с эго могут осложнить жизнь сопровождающим проекта, поэтому они следят за такими вещами.
Эван Плейс
9

Я настоятельно рекомендую вам найти проект с открытым исходным кодом, который вызывает у вас искренний интерес и которым вы активно пользуетесь .

Причина проста: это делает разницу между рутиной и хобби.

Посмотрите на свой компьютер. Какое программное обеспечение вы поставили на него, который является открытым исходным кодом? Предположение может быть Chrome или Firefox, или, возможно, Open Office или клиент Instant Messenger. Они идеальны или есть какая-то крошечная вещь, которую вы хотели бы изменить, если бы могли?

Если есть, то сейчас самое время что-то с этим сделать.


источник
8

Я бы предложил найти (или запустить) проект, как это делали люди годами, начать использовать программное обеспечение с открытым исходным кодом для выполнения каких-либо задач. Это может показаться вам тривиальным, даже, может быть, слишком упрощенным. Тем не менее, действительно сложно описать удовлетворение от использования чего-либо, поиска ошибки, получения исходного кода и его исправления. Или, возможно, изменить его так, чтобы он работал так, как вы хотите, чтобы он работал.

Кроме того, не просто взломать ради "участия". 95% моих патчей к ядру Linux никогда не увидят свет, я точно знаю , что никто не захочет их, кроме меня, и я, вероятно, буду вынужден пройти психиатрическую экспертизу, если какой-нибудь другой компетентный хакер ядра когда-либо увидит их. Но я все еще наслаждаюсь моей реализацией, piglatin_printk()которая началась как кляп 1 апреля несколько лет назад :)

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

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

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

Тим Пост
источник
+1 piglatin_printk ()? Звучит смешно. Я хотел бы увидеть это в действии. Не удивительно, что большинство ваших патчей Linux Kernel были отклонены, в проекте, который критичен, не так много места для веселья / творчества. К счастью, существует множество небольших проектов, которые имеют гораздо меньший барьер для доступа к принятию кода - даже если вклады требуют некоторой работы, прежде чем будут зафиксированы.
Эван Плейс
1
@EvanPlaice Они не были отклонены, просто никогда не подавались;)
Тим Пост
7

OpenHatch был создан специально для этого.

Цитировать:

OpenHatch - это некоммерческая организация, которая занимается поиском потенциальных поставщиков бесплатных программ с сообществами, инструментами и обучением.

Вы можете просматривать проекты по типу, технологии, уровню квалификации и т. Д. И находить то, что соответствует вашему уровню.

PHW
источник
Отличный маленький сайт :) Можно также проверить freecode.com
nha
4

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

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

Контрольная сумма
источник
3

Специально для этого существует новый веб-сайт под названием « Код 52», который поощряет новых разработчиков подключаться к открытому исходному коду , начиная новый проект OSS каждую неделю.

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

Маркус Своп
источник
1
Я изучал это и хочу добавить несколько заметок. Code52 возглавляют 3 разработчика из компании Readify, которые утверждают, что завоевали звание «Партнер года Microsoft 2012 года». Хотя проекты размещаются на GitHub, каждый из них написан на WinJS (то есть нацелена на Win8) и имеет публичную лицензию Microsoft. На первый взгляд, MPL является копией левого, но имеет определенные ограничения, требующие, чтобы производные наследовали ту же или аналогичную лицензию. Т.е. это больше похоже на лицензию GPL, чем гораздо менее ограничительную лицензию MIT.
Эван Плейс
Проект выглядит очень привлекательно, но я не могу избавиться от ощущения, что это недавно созданная программа Open Share Developer Digital Sharecropping, созданная Microsoft для наполнения новой экосистемы Windows 8, не тратя ни копейки. Не похоже, что это шляпа из фольги с шеей, но у MS нет лучшей репутации в интеграции с Open Source.
Эван Плейс
1
-1 Похоже этот сайт в основном умер (больше никаких обновлений) больше года назад
Майкл Даррант
3

Я рекомендую прочитать: http://open-advice.org/ .

Он направлен на помощь тем, кто создает и поддерживает сообщества, и тем, кто не уверен, к какому из них они хотят присоединиться или как это сделать.

Если это не удастся, найдите проект, у которого есть задание, которое резонирует с вами, или раскошелитесь и внесите свой вклад в проект, который уже полезен для вас.

Удачи.

user549213
источник
3

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

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

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

Десять проектов для начинающих, чтобы поддержать и учиться у

Я надеюсь, что вы найдете это полезным, и вы всегда можете добавить больше, если найдете интересные!

Eenvincible
источник
Вы не могли бы объяснить больше о том, что он делает, и почему вы рекомендуете ответить на заданный вопрос? «Ответы только на ссылки» не очень приветствуются на Stack Exchange
gnat
2

Предлагаю начать проект самостоятельно на интересующую вас тему.

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

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

Опыт научит вас, что такое хорошая и плохая практика.

Брайан Р. Бонди
источник
1
Хотя я думаю, что это отличная идея, делать это как начинающий проект может быть пугающим. Особенно, когда у вас нет обзоров кода или других людей, которые могут добавить ввод. Мои собственные проекты прошли много переписываний и тысячи строк кода, потому что никто не сказал мне, что X был лучше, и проблема у меня все еще есть. Присоединение к уже существующему проекту значительно
ускорит процесс
@TheLQ: Я полагаю, что это зависит от уровня вашего опыта, если вы будете делать что-то с нуля, то вы многому научитесь и многому научитесь, если присоединитесь к команде, у которой уже есть много дел. На мой взгляд, есть что-то плохое или плохое в вашем или чужом проекте.
Брайан Р. Бонди
@TheLQ Я полностью согласен. Присоединение к уже существующему проекту - это очень ценный опыт, поскольку он дает представление о том, как управляются проекты с открытым исходным кодом и как организована организация. После работы над чьим-то успешным проектом, прыжок к созданию моего собственного был прогулкой в ​​парке.
Эван Плейс
2

Я владелец проекта в Google Code и ищу авторов. (Однако я не буду злоупотреблять этим ответом для рекламы.) Поэтому мое мнение может быть интересным для вас.

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

Чем меньше проект, тем меньше участников уже есть, тем выше шансы на то, что участники будут разыскиваться, и вы сможете напрямую связаться с авторами / владельцами проекта. Скажите им: а) каков ваш опыт, б) где вы видите, что он может быть применен в проекте в) чего вы думаете, что можете достичь.

Помните: просто знание одного или двух основных языков программирования - это не опыт.

Инго
источник
Как бы вы посоветовали кому-то определиться с тем, что им интересно, или накопить опыт в этих областях?
Адам Лир
2
@ Анна, я не уверена, что понимаю твой вопрос. Я имею в виду, что есть сотни тем - от низкоуровневых вещей, таких как сетевые протоколы или внутренняя работа GPU, до сильно абстрактных, почти математических тем (разбор, системы типов, теория категорий и т. Д.). Величайший гений не справится с ними всеми и будет рад, если кто-то станет экспертом в области, в которой он, гений, не является. Но каковы ваши интересы на самом деле, кто может сказать это, кроме вас?
Инго
1
Да, обнаружение интересов, возможно, довольно личное (или совет сводится к тому, чтобы «попробовать разные вещи и посмотреть, что вам нравится»), но как насчет получения опыта? Вы говорите, что это больше, чем просто знание пары языков. Итак, учитывая новую тему / тему, что бы вы сделали, чтобы получить этот опыт? Для меня присоединение к проекту OSS было бы частью этого процесса, но если я правильно вас понял, вы предлагаете стать экспертом, прежде чем присоединиться к проекту.
Адам Лир
Что бы я сделал? Читать книги. Читать PDF-файлы. Обсудите с кем-то, кого вы знаете, или в сети. Попробуйте что-нибудь. Практика. Ответьте на все вопросы по SO, которые возникают по этой теме. Тогда однажды заметьте, что мало кто знает лучше вас. - Не воспринимайте меня слишком буквально в отношении «эксперта», но помните, что в проектах с открытым исходным кодом, поскольку это добровольно, нет способа заставить кого-то делать работу - отсюда люди, которые знают, что делают и которые хотят делать это только приветствуется.
Инго