Мій перший внесок з відкритим кодом був для бібліотеки, яку я раніше використовував (і дуже страждав би) без попереднього платного проекту. Під час мого початкового використання я помітив помилку в коді, тому створив патч, приєднався до проекту та подав його на розгляд.
Приблизно через 8 місяців, коли у мене було трохи вільного часу, я вирішив, що повернусь (і попрацюю над своїми навичками розвитку), доклавши більше до проекту. Тому я клонував сховище і почав знайомитися з кодовою базою даних. Після кількох тижнів подання незначних виправлень виправлень до бази даних коду та моніторингу запитів на функції, я підібрав запит на функцію, щоб додати досить великий модуль до проекту.
Оскільки генерування багатьох індивідуальних виправлень виправлень є досить стомлюючим для будь-якого значного розвитку, я клонував сховище до гілки на git hub і почав пробивати код. Кілька тижнів і кілька тисяч рядків коду пізніше я та керівник проекту працювали над інтеграцією та тестуванням моїх виправлень у бібліотеці таким чином, щоб вони співпрацювали з рештою кодової бази.
Це був неоціненний процес, з якого я багато чому навчився:
- Коли я почав, я не знав, як користуватися Git, до кінця я міг вміло створювати віддалені гілки відстеження і об'єднувати або переставляти їх у головну гілку, не порушуючи поту.
- Я почав у VS 2008 і закінчив переходити до Linux та Monodevelop, щоб працювати над написанням коду (адже VS затримка unicode та закінчення рядків - така біль у git). Виявляється, це не так багато, що ви не можете зробити в * nix, що ви можете зробити в * dows.
- Я ніколи не робив жодного одиничного тестування раніше, Nunit - це шматок пирога для використання, а написання одиничних тестів - це досить елементарна штука.
- Мені довелося навчитися ковтати мову і слухати, а також практикувати терпіння. Немає сенсу стояти на твердій позиції щодо вашої позиції щодо проекту з відкритим кодом, тому що всі залучені знають (можливо, більше, ніж ви самі) та здатні приймати / відкидати ваші ідеї на основі нересурсу. Це надзвичайно принизливо і корисно водночас.
- Просто маючи на увазі ще одного кваліфікованого розробника на велику базу мого коду, вказували на недоліки в моєму стилі, які я ніколи не розглядав (як і я вказував на недоліки в його коді). Для мене я дізнався, що простіше / краще визначити константи, ніж використовувати купу магічних чисел із детальним коментуванням.
Цей конкретний проект базувався на створенні та декодуванні мережевих пакетів на всіх рівнях мережевих протоколів. У мене особистий інтерес до мереж нижчого рівня, тому було чудово вести дискусії з іншим розробником із спільним інтересом та знаннями в цій галузі.
Якщо ви хочете просто промокнути ноги: знайдіть проект, який ви вже використовуєте; клонувати сховище; і почніть бачити, чи зможете виправити деякі помилки та / або додати кілька тестових одиниць. Дуже залякано дивитись на чужу кодову базу свіжими очима, але навчитися надзвичайно цінним навичкам. Надішліть кілька патчів. Ви можете сподіватися, що ваш код буде ретельно вивчений спочатку. Не хвилюйтеся з цього приводу, це нормальна частина процесу завоювання довіри адміністраторів проекту.
Після встановлення основи заслуг з адміністраторами проектів почніть шукати більше обов'язків, таких як, пропонувати нові функції або просити призначити їх для виконання запитів на функції.
Якщо ви не можете знайти вже існуючий проект в одній з основних мереж сховища з відкритим кодом (github, sourceforge, google code), придумайте додаток, яке ви дійсно хотіли б використовувати, яке ще не існує, і запустіть свій власний.
Будьте готові бути приниженими та очікуйте, що робота буде відхилена на користь подальшого перегляду. Міф про те, що кожен може додати код до проекту з відкритим кодом, є абсолютно помилковим. Завжди є воротар між вами та натискати на доступ. Чим краще ваш код, тим менше він буде вивчатися в довгостроковій перспективі, оскільки ви отримаєте довіру адміністраторів проекту. Якщо це ваш проект, ви будете тим воротарем.
Оновлення:
Я просто подумав про це і зрозумів, що не намагаюся згадати, на який проект посилається багато моєї відповіді. Для тих, хто хоче знати, це SharpPcap . Провідний розробник Кріс Морган - дуже професійний і важливий. Він виконує певну роботу, керуючи проектом, і багато чого навчив мене про те, що потрібно для дозрівання проекту ОС.
Через особисті обмеження в часі я не міг вносити код протягом більше року, але все ще намагаюся повернутись, ховаючись на переповнення стека та періодично відповідаючи на питання щодо SharpPcap.