Это история, которую я рассказал нескольким людям, но вы слышите впервые.
В 2012 году был конкурс под названием GitHub Game Off, участники которого создавали игры с геймплеем на основе git. Я решил создать клон Missile Command, в котором вы отбрасываете плохие запросы на вытягивание и пропускаете объединенные запросы на основе заголовка, описания и информации о пользователе. Я получил запросы на вытягивание из Bootstrap, Rails и других крупных проектов. Даже не просматривая код, вы начинаете распознавать неверные запросы на вытягивание с первого взгляда. "Попробуй!"
Я хотел один суперсложный уровень и подумал, что было бы забавно использовать репозиторий Fortran. Такие вещи есть на GitHub - убедитесь сами. В то время у OpenCMISS было много участников и пул-реквестов, поэтому я загрузил данные и начал играть. То, что я увидел, было невероятным:
pull-запросы Fortran принимаются почти всегда.
Взгляните на закрытые пулреквесты для OpenBLAS и OpenCMISS. С течением времени частота отказов составляет примерно один на страницу (4%). И запросы на вытягивание исходят не от одного человека или участников репо… в OpenBLAS более 50 участников. Это сообщество, в котором десятки программистов соглашаются на код.
Если присмотреться, есть признаки того, как Fortran-land выполняет хорошие запросы на вытягивание:
- Хотя Внедрение SUNDIALS BDF Solver через PETSc не было объединено, другой пользователь создал новый запрос на вытягивание, обсудил проблемы с исходным программистом в обоих потоках и объединил этот PR для решения проблемы.
- Добавление решателя чистой адвекции открыто с ноября 2013 года, что обычно является нездоровым признаком. Но похоже, что они довольно быстро обсудили проблемы, добавили функции, которые были объединены, и говорили о закрытии проблемы еще в ноябре 2015 года. Запросы на вытягивание закрываются, но все предпочитают закрывать их на хороших условиях.
- К вопросам есть масса замечаний и предложений. Как только реальная проблема была определена в этом потоке, была создана дополнительная проблема, в которой сопровождающий в какой-то момент сказал: На самом деле, я предпочитаю напрямую изменять ядро сборки.
Эти примеры типичны для многих проблем и запросов на вытягивание в репозиториях Fortran от внешних участников. Это совершенно не похоже на мой опыт игры в Missile Command против Bootstrap, который получает множество чрезмерных «исправлений» и быстро отклоняемых предложений. Может случиться так, что все программисты на Фортране знают, что делают - никто случайно не напихает какой-нибудь код на Фортране. Это может быть о культуре научных программистов по сравнению с веб-разработчиками вроде меня. Но в конце дня я испытал некоторый трепет, зная, что есть незнакомцы, которые проведут вас через ваши ошибки в Фортране. Вот что я узнал:
- проведите кого-нибудь по вашему коду, пока он не будет выполнен
- есть и использовать тесты для всего
- согласен согласиться
- если запрос на вытягивание не подлежит восстановлению, сообщите об этом, начните заново, сделайте все возможное, чтобы включить своего пользователя
- (это больше из игры Missile Command) используйте подробное описание и решите открытую проблему, если вы хотите, чтобы ваш запрос на перенос был принят в репо.
Между тем: GitHub провел больше игр в 2013 и 2015 годах. Так держать!