Як я можу знайти хороший проект з відкритим кодом, щоб приєднатися? [зачинено]


152

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

Моя проблема полягає в тому, що я не знаю, як знайти проект, куди б я вписався.

Як знайти проект, сприятливий для початківців? Які атрибути слід шукати? Які ознаки попередження про те, що проект може бути невідповідним ? Чи є інструменти там, щоб допомогти людям з проектами з відкритим кодом?

Там є аналогічне питання тут , але це питання має відношення до зайнятості і обмежується PHP / Drupal.


9
Класно, я просто подивився на ArsTechnica і побачив це питання, представлене як стаття. Ось посилання. arstechnica.com/business/guides/2012/03/…
Еван Плейс

Відповіді:


111

Мій перший внесок з відкритим кодом був для бібліотеки, яку я раніше використовував (і дуже страждав би) без попереднього платного проекту. Під час мого початкового використання я помітив помилку в коді, тому створив патч, приєднався до проекту та подав його на розгляд.

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

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

Це був неоціненний процес, з якого я багато чому навчився:

  • Коли я почав, я не знав, як користуватися Git, до кінця я міг вміло створювати віддалені гілки відстеження і об'єднувати або переставляти їх у головну гілку, не порушуючи поту.
  • Я почав у VS 2008 і закінчив переходити до Linux та Monodevelop, щоб працювати над написанням коду (адже VS затримка unicode та закінчення рядків - така біль у git). Виявляється, це не так багато, що ви не можете зробити в * nix, що ви можете зробити в * dows.
  • Я ніколи не робив жодного одиничного тестування раніше, Nunit - це шматок пирога для використання, а написання одиничних тестів - це досить елементарна штука.
  • Мені довелося навчитися ковтати мову і слухати, а також практикувати терпіння. Немає сенсу стояти на твердій позиції щодо вашої позиції щодо проекту з відкритим кодом, тому що всі залучені знають (можливо, більше, ніж ви самі) та здатні приймати / відкидати ваші ідеї на основі нересурсу. Це надзвичайно принизливо і корисно водночас.
  • Просто маючи на увазі ще одного кваліфікованого розробника на велику базу мого коду, вказували на недоліки в моєму стилі, які я ніколи не розглядав (як і я вказував на недоліки в його коді). Для мене я дізнався, що простіше / краще визначити константи, ніж використовувати купу магічних чисел із детальним коментуванням.

Цей конкретний проект базувався на створенні та декодуванні мережевих пакетів на всіх рівнях мережевих протоколів. У мене особистий інтерес до мереж нижчого рівня, тому було чудово вести дискусії з іншим розробником із спільним інтересом та знаннями в цій галузі.

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

Після встановлення основи заслуг з адміністраторами проектів почніть шукати більше обов'язків, таких як, пропонувати нові функції або просити призначити їх для виконання запитів на функції.

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

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

Оновлення:

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

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


чи можете ви запропонувати якийсь популярний сайт з цього приводу?
Aditya P

2
@AdityaGameProgrammer Я ставлю більше уваги на пошук конкретного проекту, не відкритого хостинг-сайту. Хостинг-сайти - це лише демпінг-майданчик для проектів з відкритим кодом, і деякі проекти будуть мігрувати на різні сайти, якщо можна знайти кращі можливості (тобто підтримуються конкретні ліцензії, краща підтримка контролю версій, кращі відстежувачі помилок тощо). Я вже назвав декілька. IMHO, github, google-код та sourceforge - найпопулярніші. Launchpad (використовує базарний контроль версій) - це місце, де ви знайдете більшість розробок Ububtu / Linux.
Еван Плейс

2
@AdityaGameProgrammer (продовження) Код Github, sourceforge та google - це все велика маса проектів. Оскільки sourceforge вже довше, ви, мабуть, знайдете набагато більше проектів мертвих / сиріт. Набагато простіше знайти проект, до якого можна приєднатися, якщо спочатку потрібно трохи розглянути, що вас цікавить. Виняток - якщо ви хочете розмістити власний проект. Потім знайдіть деякий час для розгляду функцій, які найкраще відповідають вашому звичному робочому процесу розвитку.
Еван Плейс

Дякую. Мої попередні спроби знайти одного з джерел джерела привели мене до величезної кількості проектів мертвих / осиротілих.
Адітя П

28

Ось, що я пропоную зробити, щоб знайти ідеальну відповідність:

  1. Якщо у вас є проект з відкритим кодом, який ви вже використовуєте, знаєте і дбаєте про це, вам слід спробувати ваш перший кандидат. Інакше подумайте над тим, чим би ви хотіли займатися взагалі, і шукайте проект у цій галузі.

  2. Коли ви знайшли потенційний проект, не кидайтеся в нього. Спробуйте використовувати його самостійно. Це так добре в дії, як здавалося з опису та відгуків? Якщо ні, то це не повний стоп-шоу; можливо, це можливість для вас заскочити і по-справжньому змінити значення. Адже нікому не потрібен інший розробник для ідеального продукту. Але це дасть вам важливе розуміння того, чи бажаєте ви бути частиною цього проекту, тоді як ви отримаєте досвід з перших рук із новими технологіями у галузі, яка вас цікавить.

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

Згадаймо: чи тобі подобається зависати там, чи це тягне тебе? Чи відчуваєте ви, що цей проект має добру та енергійну спільноту чи повільно вмирає? Чи здається, що основні люди там заохочують та наставляють новачків чи ви будете самостійно?

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

Ще кілька думок:

Якщо проект, який вас справді цікавить, - це гучний проект з великою кількістю розробників та активністю навколо нього, напевно, вам буде важко створити там достатню репутацію, щоб отримати, скажімо, права чи цікаву роль у громаді. У цьому випадку розгляньте можливість приєднатись до пов'язаного спін-оф проекту з меншою видимістю. Наприклад, замість того, щоб намагатися почати робити внесок у jQuery, спробуйте знайти плагін jQuery, який вам добре підійде. Пізніше ви можете розглянути «рух вгору».

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

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

Останнє і найважливіше: якщо ви згоріли в одному місці, рухайтеся далі; не здавайся

Сподіваюся, що це допомагає.


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

9

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

Причина проста: це робить різницю між хором та хобі.

Погляньте на свій комп’ютер. Яке програмне забезпечення ви поставили для цього, що є Open Source? Здогадується, що це Chrome або Firefox, а можливо, Open Office чи клієнт Instant Messenger. Вони ідеальні чи є просто якась крихітна річ, яку ви хотіли б змінити, якщо зможете?

Якщо є, то зараз саме час щось зробити.


8

Я б запропонував знайти (або запустити) проект так само, як це роблять люди протягом багатьох років, почати використовувати програмне забезпечення з відкритим кодом, щоб робити щось. Це може здатися вам банальним, навіть, можливо, спрощеним. Однак задоволення від використання чого-небудь, пошуку помилки, захоплення джерела та виправлення справді важко описати. Або, можливо, змінивши його, щоб він працював так, як ви хочете, щоб він працював.

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

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

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

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


+1 piglatin_printk ()? Звучить весело. Я хотів би бачити це в дії. Не дивно, що більшість ваших патчів Linux Kernel було відхилено, в проекті, що є критичним, не так багато місця для розваг / творчості. На щастя, існує багато менших проектів, які мають значно нижчий бар'єр для вступу до коду - навіть якщо внески потребують певної роботи, перш ніж зробити їх.
Еван Плейс

1
@EvanPlaice Їх не відхиляли, просто ніколи не надсилали;)
Tim Post

7

OpenHatch створений спеціально для цього.

Цитувати:

OpenHatch - це неприбуткова організація, яка присвячена сумісності потенційних учасників безкоштовного програмного забезпечення з громадами, інструментами та освітою.

Ви можете переглядати проекти за типом, технологією, необхідним рівнем кваліфікації тощо та знаходити, що відповідає вашому рівню.


Великий маленький сайт :) Можна також перевірити freecode.com
Nha

4

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

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


3

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

Ідея полягає в тому, що людям, які раніше ніколи не брали участь у відкритому кодексі, здається набагато менш страшним, і, сподіваємось, вони будуть схильні брати участь у інших проектах з питань ОС.


1
Я розглядав це і маю додати кілька записок. Code52 очолюють 3 розробники від компанії Readify, які стверджують, що виграли титул «Партнер року 2012 Майкрософт». Хоча проекти розміщуються на GitHub, кожен із проектів написаний у WinJS (тобто цільовий Win8) та має публічну ліцензію Microsoft. З короткого погляду MPL залишається копією, але містить певні обмеження, що вимагають, щоб похідні особи успадкували ту саму чи подібну ліцензію. Тобто це більше схоже на ліцензію GPL, ніж на значно менш обмежувальну ліцензію MIT.
Еван Плейс

Проект виглядає дуже привабливо, але я не можу похитнути почуття, що це нещодавно заснована програма з відкритим кодом для розробників цифрових технологій Sharecropping, створена корпорацією Microsoft для заселення нової екосистеми Windows 8, не витрачаючи ні копійки. Як би це не виглядало як капелюшок із шипшини, що носить шию бороди, але MS не має найкращої репутації, коли справа стосується інтеграції з Open Source.
Еван Плейс

1
-1 Схоже, цей сайт в основному помер (більше оновлень) більше року тому
Michael Durrant

3

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

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

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

Удачі.


3

Коли я почав, я шукав в Інтернеті варіанти, і мені виявилося складним знайти щось, в яке ти зможеш занурити зуби як для початківців.

У деяких проектах важко зробити свій внесок не тому, що вони занадто розвинені, а тому, що громада не вітає. Тож, не відволікайтеся, коли ви вдаряєтесь про стіну.

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

Десять проектів для початківців для підтримки та навчання

Я сподіваюся, що Ви вважаєте це корисним і завжди можете додати більше, якщо знайдете класних!


Ви б не хотіли пояснити детальніше про те, що це робить, і чому ви рекомендуєте це відповісти на поставлене запитання? "Відповіді лише на посилання" не дуже вітаються на Stack Exchange
gnat

2

Я пропоную розпочати проект самостійно з теми, яка вас цікавить.

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

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

Досвід навчить вас, що таке хороша та яка погана практика.


1
Хоча я думаю, що це чудова ідея, але робити це як проект для початківців може залякати. Особливо, коли у вас немає оглядів коду чи інших людей, які можуть додати інформацію. Мої власні проекти пережили багато переписувань і тисячі рядків коду, тому що ніхто не сказав мені, що "Х" краще, проблема, яка все ще є. Приєднання до налагодженого проекту пришвидшить навчання набагато краще
TheLQ

@TheLQ: Це залежить від рівня вашого досвіду, я думаю, що робити щось з нуля, ви навчите багато уроків і того, чого ви не навчились би, приєднавшись до команди, в якій вже багато зроблено. На мій погляд, товари та товари про ваш власний чи чужий проект.
Брайан Р. Бонді

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

2

Я власник проекту в коді google і шукаю учасників. (Але я не зловживаю цією відповіддю для реклами.) Отже, моя думка може бути цікавою для вас.

Спочатку доведеться з’ясувати, що вас цікавить. Потім розробити досвід у деяких сферах, які стосуються ваших інтересів. Тоді знайдіть проект, де потрібна ваша необхідна експертиза.

Чим менший проект, тим менше учасників вже є, тим більше шансів на те, що учасників пошуку шукають, і ви можете зв’язатися безпосередньо з авторами / власниками проектів. Скажіть їм а) у чому полягає ваша експертиза; б) там, де ви бачите, що це може бути застосоване в проекті; в) те, що ви думаєте, що можете досягти.

Пам'ятайте: просто знання однієї або двох основних програмних мов - це не досвід.


Як би ви порадили комусь розібратися в тому, що їх цікавить, або набути досвіду в цих сферах?
Адам Лір

2
@Anna Я не впевнений, що розумію твоє запитання. Я маю на увазі, що існує сотні тем - від низьких рівнів, таких як мережеві протоколи або внутрішні розробки графічного процесора, до високо абстрактних, майже математичних тем (розбір, системи типів, теорія категорій тощо). Найбільший геній не освоїть їх усіх і буде радий мати когось, хто є експертом у галузі, де він, геній, не є. Але які ваші інтереси насправді, хто може це сказати, крім вас?
Інго

1
Так, виявлення інтересів, можливо, досить особисте (або порада означає "спробувати різні речі та побачити, що тобі подобається"), але як бути із здобуттям досвіду? Ви кажете, що це більше, ніж просто знати пару мов. Отже, враховуючи нову тему / тематику, що б ви зробили, щоб отримати цей досвід? Для мене приєднання до проекту OSS було б частиною цього процесу, але якщо я вас правильно читаю, ви припускаєте, що перед тим, як приєднатися до проекту, ви повинні бути експертом.
Адам Лір

Що б я зробив? Читати книги. Читання PDF-файлів. Обговоріть з кимсь, кого ви знаєте, або в мережі. Спробуйте щось. Практика. Дайте відповіді на всі запитання щодо ТА, які виникають щодо цієї теми. Потім одного дня помічайте, що мало хто знає краще вас. - Не сприймайте мене занадто буквально щодо "експерта", але пам’ятайте, що у проектах з відкритим кодом, оскільки це добровільно, немає можливості когось змусити робити роботу - отже, людей, які знають, чим вони займаються та хочуть робити саме те , що найкраще вітається
Інго
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.