Включите исполнение JavaScript в браузере, чтобы запустить приложение.
11 фев 2025

Open source проекты на Java

На Java работает огромное число open source проектов, от миниатюрных библиотек до сложных фреймворков. В этой экосистеме каждый может найти свое место: доработать документацию, провести тесты, оставить обратную связь и предложить изменения. Присоединение к таким проектам — отличный шанс для разработчиков не только прокачать навыки и стать частью сообщества, но и украсить свое резюме.

Java — строго типизированный объектно-ориентированный язык программирования. Мир «джавы» — это тысячи проектов open source, в разработке и поддержке которых теоретически может участвовать любой желающий. Пометка «контрибьючу в опенсорс» со ссылками на профиль разработчика делает резюме более солидным и подчеркивает опыт. В статье мы разбираем, что такое contribution, как выбрать опенсорс на Джаве, предложить код, пройти код-ревью и дождаться добавления в основную ветку.

Введение в Java и open source

Open source на Java можно разделить на несколько категорий:

  • фреймворки и библиотеки — Spring, Google Guava, Apache Commons, Play Framework, Atmosphere, Electronicarts Orbit, Spark, Netflix Ribbon, Spring Boot;
  • базы данных и хранилища — Thinkaurelius Titan, Apache Cassandra, Amplab Tachyon, Leveldb;
  • тестирование — Junit, Selenium, Mockito, JavaHamcrest, Cucumber jvm, JaCoCo;
  • Machine Learning и нейросети — Airbnb Aerosolve, Deeplearning4j, Apache Mahout, Stanfordnlp CoreNLP, Apache OpenNLP;
  • работа с облаками — Elasticsearch, Syncany, Apache Airavata, Aws sdk java;
  • парсинг и web-crawling — Sparklemotion Nokogiri, Jsoup, Webmagic, Antlr4, Apache Nutch. 

На «джаве» созданы и поддерживаются решения для работы с веб-серверами и серверами приложений, сокетами, http и ssh, интеграциями API различных систем. Инструментов так много, что для их сбора проще написать парсер с нужными характеристиками (количество звезд, дата обновления). На платформе GitVerse есть возможность отсортировать репозитории по языкам программирования. Реализован импорт репо из других платформ: копируются не только файлы, но и история изменений, ветки и коммиты.

К примеру, spring-framework — репозиторий, который активно развивается. У него больше 30 000 коммитов. Разработчики фреймворка поддерживают коммьюнити: участники  описывают проблемы (баги, падение тестов) и предлагают решения для усовершенствования (enhancement).

Запросы на изменение Spring представлены в разделе «Запросы» (Pull Request). Отправкой пулл реквеста автор как бы говорит владельцам репозитория (создателям): «Смотрите, я внес изменения в код. Не хотите ли принять и влить их?». 

На GitVerse можно зайти в репозиторий (repository), увидеть количество веток, коммитов, форков, запросов.

Почему стоит присоединяться к open source проектам на Java

Java Open Source projects — способ прокачать технические навыки, улучшить резюме, заявить о себе сообществу разработчиков.

Контрибьюшен в опенсорсе позволяет пройти весь цикл разработки: 

  1. Специалист использует библиотеку, фреймворк или другой продукт в повседневной работе и обнаруживает проблему. К примеру, отсутствует интеграция с нужным сервисом или нет полезной функции. Можно оставить комментарий в Issues и ждать, что кто-то из разработчиков решает проблему. А можно предложить изменения самостоятельно.
  2. Разработчик делает форк, пишет/изменяет код. 
  3. Автор изменений предлагает их владельцам репозитория (отправляет pull request).
  4. Pull request проходит код-ревью. В какие сроки старшие разработчики посмотрят пулл реквест, сказать сложно (зависит от проекта, важности задачи и других факторов). 
  5. Пул реквест одобряют, делают merge (мердж, слияние) с main- / master-веткой или другой. Реализованную функциональность и код контрибьютора теперь, возможно, будут использовать тысячи разработчиков (developers) по всему миру.

Не всегда pull request сразу получает статус Approved: предложенные изменения могут отклонить, оставить без рассмотрения или запросить дополнительные данные от автора кода.

Контрибьютить в опенсорсные репозитории важно еще и по той причине, что профиль разработчика попадает в список ревьюеров (Contributors). 

HR-менеджеры или другие девелоперы могут зайти в профиль, проследить активность специалиста, посмотреть рейтинг, оценить написанный им код. На GitVerse можно запросить список пользователей с сортировкой по заданным критериям, а также перейти в карточку конкретного девелопера.

Как выбрать подходящий open source проект на Java

Крупные репо с тысячами контрибьюторов часто сложны для новичков. Конкуренция высока, мелкие баги быстро фиксят, а крупные изменения под силу реализовать только специалистам уровня Senior. 

Но есть способы найти готовые проекты, в которые можно законтрибьютить изменения:

  1. Искать новые репозитории, в которых не так много контрибьюторов и нет конкуренции. Важно, чтобы репозиторий не был заброшен. Не подходят репо, в которых нет активности больше 3–6 месяцев.
  2. Использовать рекомендации разработчиков. Задачи, которые относительно быстро может реализовать специалист с небольшим опытом, владельцы репозитория часто помечают как good first issue. Появился сервис goodfirstissue.dev, где можно найти задачи на Java и других ЯП.
  3. Контрибьютить изменения документации. Самый простой способ стать контрибьютором опенсорс-проекта для junior- и middle-специалиста — предложить обновления в этой области. 

У каждого репозитория есть файл readme.md. В нем может находиться информация: 

  • что за продукт, для чего используется, кому подходит;
  • как установить и начать работу (токены, примеры запросов);
  • примеры кода, функциональности;
  • ответы на типичные вопросы пользователей и разработчиков, а также другие.

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

На этапе развития репозитория также происходят изменения, которые не всегда отражены в документации. Если разработчик видит, что методы/запросы/response/переменные и т.д. устарели, также может обновить информацию и отправить пулреквест на рассмотрение владельцев репозитория.

Также можно:

  • Оценить feature request. В разделе Issues можно выбрать темы с пометками discuss, help wanted, feedback_needed. Они означают, что появился спорный вопрос. Ответы, дискуссии, помощь — это тоже вклад в опенсорс. Пространство для обмена идеями и общения в GitVerse будет доступно в разделе «Обсуждения». Оно будет реализовано по примеру Гитхаба. На GitVerse есть воозможность отправлять «Предложения от сообщества» через запрос на слияние.
  • Отревьюить pull request. Вариант подходит для случаев, когда на пользователя назначен пулреквест. Можно оставить пометки, как лучше назвать класс или метод, как исправить стиль написания кода и так далее.

Как начать работу

Чтобы создать первый пул-реквест для ревью и проверить, как это работает на практике, software developer может:

  • создать или импортировать репозиторий на github. В настройках можно указать владельца, название репозитория, описание, выставить public или private, добавить файл Readme.md, gitignore и т.д. GitVerse позволяет перенести репозиторий проекта из других источников;
  • перейти в настройки и добавить пользователя, от имени которого можно отправить запрос на pull request (с предлагаемыми изменениями). Добавлять ревьюеров на GitVerse можно только из списка соавторов;
  • создать пулл реквест через «Запросы» и добавить изменения. К примеру, обновить текст в пустом Readme.md; 
  • добавить ревью с комментарием и описанием;
  • смерджить пулл реквест (одобрить запрос на слияние); 

Изменения, которые предложил пользователь и которые мы подтвердили, появляются в  проекте. Посмотреть коммиты пулл реквеста и изменения можно в разделе «Коммиты».

GitVerse позволяет закрыть запрос без слияния.

Для репозиториев на языке Java на GitVerse доступна опция AI-ревью. При отправке пулл реквеста можно получить анализ кода от искусственного интеллекта. Для этого необходимо создать pull request и нажать «Начать AI-ревью».

После выбора языка анализа кода (RU, ENG) появляется информация по обнаруженным ошибкам, реализованным в коммите изменениям, рекомендациям по исправлению.

В случае с опенсорсными проектами на Java или других языках программирования схема похожа. Нужно сделать fork, внести изменения, отправить pull request и дождаться одобрения, чтобы подлить свои предложения в текущий опенсорс-проект.