Как стать участником проекта с открытым исходным кодом

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

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

С чего начать

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

1- Используйте этот проект в продакшене как можно чаще.

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

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

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

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

В качестве примера, около 2,5 лет назад, когда я писал на C#, мы использовали RestSharp в качестве http-клиента, как и большинство других разработчиков. В то время у нас возникла проблема со сравнением двух почти одинаковых DateTime; мы исследовали ее и обнаружили, что RestSharp пропустил формат DateTime при десериализации json-строки. И я решил исправить эту проблему, открыв pull request. После этого мой запрос слился, и я стал соавтором RestSharp.


2- Взгляните на исходный код

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

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

Другой пример изучения исходного кода — когда мы использовали Consul в нашем проекте, я посмотрел исходный код и увидел объявление массива без указания длины (объявление длины при инициализации — это улучшение производительности для массивов в Golang). Поэтому я сделал вклад в одну строчку, указав длину этого массива. Даже это меня удовлетворило 🙂

Есть еще одна вещь, которую нужно сделать в исходном коде: «Измерение тестового покрытия». Написание модульных тестов для увеличения тестового покрытия — это еще один способ внести свой вклад в проект. Например, я готовлю pr к Kubernetes, который содержит модульные тесты, увеличивающие тестовое покрытие.


3- Читайте документацию и применяйте примеры

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

Помню, я следовал примеру из документации по Istio, применил его и получил ошибку. Я понял, что в примере есть опечатка в конфигурации yaml. Я создал pr и исправил документацию, чтобы сэкономить время других разработчиков.


4- Используйте клиент этого проекта (если он существует).

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

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


Поиск проблем

Поиск проблем для решения — еще один вариант начать вносить свой вклад, но для новичка это может быть сложно. Вы всегда можете начать поиск проблем, помеченных как GoodFirstIssue.

Когда я писал Java, мы использовали OpenFeign в наших проектах Spring Boot. Я решил поискать выпуски, чтобы узнать, есть ли простой вариант участия в проекте. И я нашел его!

Я начал решать эту проблему и открыл для нее pr. Она была принята авторами, и я получил свое имя в контрибьюторах.

Существуют сайты, которые помогают найти проекты, в которые можно внести свой вклад. Вы можете фильтровать проекты по тегам или языкам.

codetriage.com

Up For Grabs

Хотите внести свой вклад в открытый исходный код, но не знаете, с чего начать?

up-for-grabs.net

Вы также можете использовать Github напрямую для поиска проектов с помощью фильтрации:

Поиск — label:first-timers-only — GitHub

GitHub — это место, где люди создают программное обеспечение. Более 83 миллионов человек используют GitHub для поиска, форка и внесения вклада в более чем 200 миллионов проектов.

github.com

6- Создайте проект с открытым исходным кодом

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

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

Вы также можете внести свой вклад в проект docker-shell:

Trendyol / docker-shell

Простая интерактивная подсказка для docker

docker-shell

Простая интерактивная подсказка для Docker. Вдохновлен kube-prompt, использует go-prompt.

Оглавление

  • Особенности:
  • Установка
    • Homebrew
    • Сборка из исходного кода
  • Как использовать
  • Как вносить вклад

Особенности

  • Предлагать команды docker
  • Список идентификаторов и имен контейнеров после команд docker exec/start/stop
  • Предлагать параметры команды на основе введенной команды
  • Список изображений из хаба docker после команды docker pull v1.2.0
  • Предложите маппинг портов после команды docker run v1.3.0
  • Предложение доступных образов после команды docker run v1.3.0

Установка

Homebrew

Вы можете установить с помощью homebrew:

brew tap trendyol/trendyol-tap

brew install docker-shell
Войдите в полноэкранный режим Выйти из полноэкранного режима

Сборка из исходного кода

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

git clone git@github.com:Trendyol/docker-shell.git

cd docker-shell

sudo go build -o /usr/local/bin/docker-shell .

docker-shell
Войти в полноэкранный режим Выйти из полноэкранного режима

Как использовать

После установки вы можете набрать docker-shell и запустить интерактивную оболочку.

Предложение образа из docker hub:

Предложение по сопоставлению портов:

Как внести свой вклад

Вклад приветствуется и будет полностью признан…

Посмотреть на GitHub

Еще один созданный мной проект с открытым исходным кодом — это проект «kubernetes-kitap», который представляет собой книгу, написанную на турецком языке для Kubernetes, чтобы помочь турецким разработчикам понять Kubernetes:

mstrYoda / kubernetes-kitap

Hoş geldiniz

Open Source severler olarak bir araya gelip, Kubernetes için Türkçe kaynak olması açısından bu kitabı hazırladık ve siz değerli okuyuculara sunduk.

Kitabın adresi: https://mstryoda.github.io/kubernetes-kitap/#/

Konu Başlıkları

  • Giriş

    • Kubernetes Nedir
    • Kubernetes Cluster Mimarisi
    • Pod ve Container Kavramı
  • Kubernetes Node Elemanları

    • etcd
    • api-сервер
    • kubelet
    • kube-proxy
    • контроллер-менеджер
    • планировщик
  • Разработка Ortamı Kurulumu

    • вид
    • minikube
    • k3s
    • k3d
    • microk8s
  • Kubectl Kullanımı

    • kubeconfig
    • Kubectl İşlemleri
      • Kubectl Apply
      • Список ресурсов
      • Редактирование ресурсов
      • JsonPath ile Field filtreleme
      • Развертывание Oluşturmak
      • Масштаб развертывания
  • Controllerlar

    • Контроллер Kavramı Nedir
    • Развертывания
    • StatefulSets
    • DaemonSets
    • ReplicaSets
  • Под Genel Bakış

    • Pod Yaşam Döngüsü
      • Container Statüleri
      • Pod Durumları
      • Init Container
    • Pod Preset
    • Статический контейнер
    • Эфемерный контейнер
    • Podların Çalışacağı Nodeları Belirleme
      • İhtiyaç ve Örnek Senaryolar
      • NodeSelector Alanı
      • Taint ve Tolerant Kavramı
      • Node Affinity ve Pod Affinity Kavramı
  • Uygulama Kaynaklarının Konfigürasyonu

    • ResourceQuata Objesi
    • LimitRange Objesi
  • Проверка здоровья İşlemleri

    • Проверка здоровья Yöntemleri
    • LivenessProbe
    • ReadinessProbe
    • StartupProbe
  • HorizontalPodAutoscaler ile Scaling

    • Ram & Cpu Bazlı Uygulama Scale Etme
    • Custom Metrikler ile Scaling
Посмотреть на GitHub

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


Бонус: Вот еще один сайт, который может быть полезен для начала работы с открытым исходным кодом:

Open Source Guides | Learn how to start and grow your project.

Узнайте, как запустить и развить свой проект.

opensource.guide

Вы можете следить за мной на:

mstrYoda (Emre Savcı) — GitHub

Sr. Software Engineer @Trendyol | K8S <3 | Loves Golang & Java |Interestrated in CQRS, DDD, event sourcing and architectural patterns. Создатель docker-shell — mstrYoda

github.com

Twitter


Спасибо, что читали до сих пор. Берегите себя до следующего сообщения.

Оцените статью
devanswers.ru
Добавить комментарий