Pull to refresh

Comments 46

Я всё же стараюсь не лезть в новый проект с косметикой, а найти действительно баги. Статический анализ тут тоже помогает. Вот, например, мой pull-request в JIT-компилятор Graal. Признаюсь, я даже не собрал его, когда закидывал пулл-реквест. Там своя доморощенная система сборки, никакой maven/gradle/ant/etc., которая к тому же плохо работала под виндой, её тоже чинить пришлось.

Статья больше о пороге входа в open source для новичков. Понятно, что когда заглядываешь под капот jfluid в visualvm, там не до code smell — слеза на глазах наворачивается.
Вот из-за этого подхода малкие баги висят годами, все заняты чем-то более возвышенным. И не только в народных разработках. Вот, в русской версии дров Nvidia опечатка на самом видном месте уже 8 лет висит.

Пройтись по проекту, прилизать интерфейс, поправить опечатки и двусмысленные надписи — это сразу +100500 к UX.
Вы меня неправильно поняли. Опечатка в интерфейсе — это «действительно баг». А использование в коде одной конструкции вместо другой, которая такой же длины, такой же понятности и, вероятно, даёт исчезающе малый прирост производительности, — это косметика. Я про косметику в коде, а не в том как приложение выглядит для пользователя.
А есть реальные тесты производительности?

Что-то это попахивает «не используйте двойные кавычки в PHP», когда уже давно нет никакий разницы (если вы конечно не экономите сотые от наносекунд). А когда она была, то ее никто никогда не замечал.

Подобные штуки компилятор/интерпретатор может сам распознать и оптимизировать без особых проблем и, возможно, именно так он и делает.
Так компиляторы разные есть. Их исходники не проверял. Кто-то в eclipse, кто-то в openjdk собирает. Не все используют последние версии JDK и т.п. В реализации этих функций смотрел.

А про реальные тесты производительности смог бы ответить Андрей. Но у него нет здесь аккаунта.

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


Надо помнить, что у такого pull-requesta есть и минусы. Например, засоряется история коммитов, усложняется git blame. Автоматизированные системы, которые назначают ответственного за исключение или предлагают ревьювера для кода, могут предложить человека, который внёс такую косметическую правку, а не реального автора кода.

А зачем Андрей? Сложно JMH запустить?

UFO just landed and posted this here
Надеюсь вам повезет! По своему опыту могу сказать, что мне сложнее провести pull request в проект с 270 звездами чем исправить потенциальные утечки в spring-boot. Так что логики никакой нет, пробуйте!
UFO just landed and posted this here
Любопытно. А есть возможность делать не паузу, а замедление? ну как-бы последовательное нажатие и отпускание паузы, чтобы игра не отваливалась от сокета, но не рендерила 60 фпс в бэкграунде?

Реальные проблемы, это то, что не считая мелких исправлений косметических недочетов, которые ни что иное, как в основном вклад ради вклада, то подготовка какого-то вклада в open source занимает кучу времени, за которое платят довольно мало работодателей, а в свободное время есть куча других занятий.


Про выложи свой проект вообще смешно. Я думаю, вы понимаете, чем отличается внутренний модуль в кампании и open source проект? Вот у меня есть модуль для работы с форматом todo.txt из python кода. Он лежит в открытом доступе и все-такое, но блин, я бы не назвал это open soruce проектом, например, потому что у него пока нет нормальной доки.


Со своим вкладом в крупных продукт такая же фигня. Обычно, если это не косметические всем понятные изменения, надо грамотно их написать, создать правильно описанные pull request и issue, протестировать и написать там автотесты/доку, а потом ждать у моря погоды. Потому что иногда автор забрасывает проект и все довольно печально (например, pyshop). Ну или не считает ваш pr важным.

Даже «косметические» улучшения увеличивают производительность и улучшают читаемость.

По поводу работы не поспотрю. В инвестбанках политика с open source преимущественно потребление. А бюрократии даже с легальным использованием библиотек хватает. В сравнении с этим пул реквест на github — приятная прогулка.

свободное время есть куча других занятий.

Тут каждый сам решает. Играть в игры, смотреть зомби ящик или opensource. Я в свободное время пару часов в неделю нахожу. Особенно, если это открытая часть моего личного проекта.

Андрей тоже не на работе ошибки в spring-boot правил.

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

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

Вы правы, что написание поддерживаемого кода и прототипа различаются. В последнее время я разгребали Авгеевы конюшни на работе. При этом в opensource замечал за собой стремление поговнокодить. Борюсь с энтропией своего кода всеми силами. SonarQube/SonarLint бьет мне за код по рукам. Посмотрите, может и вам пригодится
Ну, у меня на том проекте даже 100% покрытые тестами главного модуля есть :)
Ну и + pylint с набором и CI.
Но вот с документацией пока беда :(
Вдруг кто-то из тех кто хочет сделать вклад в open source и читает сейчас комментарии вам поможет с документированием.
UFO just landed and posted this here
Я например правил небольшой баг в NetBeans, самое сложное было — подписание соглашения о контрибуции ораклу всех прав на код. Плюс мы с коллегой по прошлой работе фиксили баг в Hibernate, коллега потом отправлял его в апстрим — тоже особо никаких трудностей не было. Так что особо ничего сверхсложного в этом нет.
Это точно. Все зависит от мейнтейнеров проекта. В pivotal легко подписать лицензию
UFO just landed and posted this here
Спасибо, думаю что он следит за комментариями. Скинул ему ссылку на статью

а вот это точно правильный фикс?
int end = value.indexOf("\""); превратилось в int end = value.indexOf('\"');

Мелочи жизни, так тоже можно писать. Главное чтобы "'" не превратилось в ''' :D

Искать по гитхабам достаточно долго. Может организовать какой-то сервис, где авторы сами напишут, что в их проекте надо сделать/доделать?
Или может есть такой?
UFO just landed and posted this here
В проектах где много открытых тикетов и авторы сами заинтересованы в новых контрибьюторах, обычно есть какой-нибудь специальный тэг на тикетах типа «good first issue» — несложная вещь, до которой просто руки не дошли, но новичок вполне может с ней справиться.

Но помните, что не все проекты вообще заинтересованы в новых контрибьюторах.

В свое время так же занимался правкой багов во freecol. Одновременно писал к нему новый ИИ, который бы никогда не закончил.
Пока писал ИИ, с его помощью нашел баг в сервере.
В целом помощь в рефакторинге, исправил пару багов в клиенте и один в сервере.
Вроде бы участвовал только пару месяцев, зато очень хорошо помогло войти в курс дела разработки на Java. По времени ушло где-то 80 часов рабочего времени летом, а опыт использую до сих пор.


Если хотите чему-то научиться — ставьте себе невыполнимые задачи и шаг за шагом ее реализуйте. А опенсорс для этого самое лучшее начало. Гнаться за деньгами вот так вот сразу — бесперспективно. В любой области.

Мой первый опыт пулл реквеста на гитхабе — вообще не код) В одной из игр, в которые я довольно увлечённо играл, был неполный и изобилующий опечатками перевод, я тихо злился, а потом решил сделать хорошее дело — вылизал опечатки, постарался сделать адекватный перевод жаргонизмов, допилил те места, которые не были переведены(с каждым обновлением игры добавляется несколько строк в языковые файлы, так что это даже не косяк предыдущего переводчика — он просто не стал продолжать). Никаких проблем не возникло, и мой пулл реквест приняли после новогодних праздников, чему я очень рад, хоть это и не имеет отношения к программированию) И возможно, теперь мне будет легче начать участвовать в опенсорсе)
Как новичку сделать вклад в open source проект с 20К звездами?

Да хоть 65536К, какая разница-то?


Количество звёзд говорит о проекте примерно столько же, сколько говорит длина усов об уровне IQ их обладателя.


Есть в проекте мешающий лично тебе баг или интересная лично тебе фича — берёшь, делаешь её и засылаешь PR. Количество стразиков в профиле проекта тут совершенно роли не играет.


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

Скупая айтишная слеза скатилась по щеке читателя.

Количество стразиков в профиле проекта тут совершенно роли не играет.

Думаю, количество звёзд коррелирует с забюрократизированностью проекта.

Скупая айтишная слеза скатилась по щеке читателя.

В случае войны, правда, скупая слеза скатится по щеке офицера по рядовым…

Да хоть 65536К, какая разница-то?

Сложнее принимают pull request. Когда изменение одного символа проходит через:
1) создать стори в JIRA
2) создать бранч в git server project
3) создать бранч в git front project
4) исправить кавычку в server
5) добавить тест в front
6) прогнать все тесты
7) pull request
8) merge 1
9) merge 2
10) close story
Сложнее принимают pull request.

Вы же понимаете, что это не от звёздочек зависит, а от владельца проекта.
20К может быть и у какого-нибудь гипотетического leftpad-а, написанного одним человеком за вечер. А звёздочки набрались за те десять лет, что он лежит на гитхабе.

Тут зависит. Проект очень популярен в java community — spring-boot существует чуть больше чем три года.
Тогда стоило писать не про «20К звёзд», а про востребованность и популярность.
Популярным может быть и проект с репозиторием на собственных серверах.
Те же Apache Commons только недавно стали переходить на GitHub в качестве основного репозитория.
Вас огорчило содержание статьи?
Apache Commons — это скорее наследие. DBCP уже не торт, logging — капролит, io разве что местами удобнее nio из новых релизов java.
Sign up to leave a comment.

Articles