Мой первый вклад с открытым исходным кодом был для библиотеки, которую я ранее использовал (и без этого сильно пострадал бы) в предыдущем платном проекте. Во время первого использования я обнаружил ошибку в коде, поэтому создал патч, присоединился к проекту и отправил его на рассмотрение.
Спустя 8 месяцев, когда у меня появилось немного свободного времени, я решил, что верну (и поработаю над своими навыками разработки), внеся больше в проект. Поэтому я клонировал репозиторий и начал знакомиться с базой кода. После нескольких недель отправки небольших исправлений исправлений в кодовую базу и отслеживания запросов функций, я взял запрос функций, чтобы добавить довольно существенный модуль в проект.
Поскольку генерация множества отдельных исправлений исправлений довольно утомительна для любой существенной разработки, я клонировал репозиторий в ветку на git hub и начал отбрасывать код. Через несколько недель и несколько тысяч строк кода мы с руководителем проекта работали над интеграцией и тестированием моих исправлений в библиотеке таким образом, чтобы это согласовывалось с остальной базой кода.
Это был бесценный процесс, из которого я многому научился:
- Когда я начинал, я не знал, как использовать Git, и к концу я мог умело создавать удаленные ветви отслеживания и объединять или перемещать их в основную ветку, не нарушая пот.
- Я начал в VS 2008 и в итоге перешел на Linux и Monodevelop, чтобы работать над написанием кода (потому что VS - отсталый юникод, а окончания строк - такая боль в git). Оказывается, в * nix не так много, что вы не можете сделать в * дау.
- Я никогда прежде не проводил никаких модульных тестов, Nunit - это очень просто, а написание модульных тестов - довольно элементарный материал.
- Я должен был научиться глотать язык и слушать, а также практиковать терпение. Нет смысла твердо стоять на вашей позиции в проекте с открытым исходным кодом, потому что все вовлеченные в это люди осведомлены (возможно, в большей степени, чем вы) и способны принять / отклонить ваши идеи, основанные на сути, а не на доставке. Это чрезвычайно унизительно и в то же время полезно.
- Просто взгляд другого опытного разработчика на большую базу моего кода указывал на недостатки в моем стиле, которые я никогда раньше не рассматривал (а также на недостатки в его коде). Для меня я понял, что проще / лучше определять константы, чем использовать набор магических чисел с подробным комментированием.
Этот конкретный проект был основан на создании и декодировании сетевых пакетов на всех уровнях сетевых протоколов. Я лично заинтересован в создании сетей более низкого уровня, поэтому было здорово поговорить с другим разработчиком, имеющим общий интерес и знания в этой области.
Если вы хотите просто промочить ноги: найдите проект, который вы уже используете; клонировать хранилище; и начните видеть, можете ли вы исправить некоторые ошибки и / или добавить некоторые юнит-тесты. Кажется пугающим смотреть на чужую кодовую базу свежими глазами, но это чрезвычайно ценный навык для изучения. Отправьте несколько патчей. Сначала вы можете ожидать, что ваш код будет тщательно проверен. Не беспокойтесь об этом, это нормальная часть процесса, чтобы завоевать доверие администраторов проекта.
После создания базы с проектами администраторы начинают искать больше обязанностей, таких как предложение новых функций или просьба быть назначенными для реализации запросов функций.
Если вы не можете найти уже существующий проект в одной из основных сетей репозиториев с открытым исходным кодом (github, sourceforge, google code), подумайте о приложении, которое вы действительно хотели бы использовать, но которое еще не существует, и запустите свое собственное.
Будьте готовы смириться и ожидать отклонения работы в пользу дальнейших пересмотров. Миф о том, что любой может добавить код в проект с открытым исходным кодом, полностью ложен. Между вами всегда есть привратник и принудительный доступ. Чем лучше ваш код, тем меньше он будет тщательно проверяться в долгосрочной перспективе, поскольку вы получаете доверие администраторов проекта. Если это ваш проект, вы будете этим привратником.
Обновить:
Я просто подумал об этом и понял, что не удосужился упомянуть, на какой проект ссылаются многие мои ответы. Для тех, кто хочет знать, это SharpPcap . Ведущий разработчик Крис Морган очень профессионален и точен. Он чертовски хорошо справляется с управлением проектом и многому научил меня, что нужно для разработки проекта OSS.
Из-за личных временных ограничений я не смог добавить код более года, но я все еще пытаюсь дать ответ, скрываясь за переполнением стека и время от времени отвечая на вопросы о SharpPcap.