FAQ: участие в развитии Django

Как начать оказывать содействие развитию проекта?

Спасибо вам за вашу заинтересованность! Данному вопросу посвящен отдельный документ содействие развитию Django.

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

Не беспокойтесь! Мы вас не игнорируем.

Важно понимать разницу между двумя состояниями, в котором может находится ваше предложение: “игнорируется” и “еще не принято к рассмотрению”. В системе обработки заявок, поступающих от пользователей, на рассмотрении находятся сотни предложений. Они различаются по степени влияния на функционал Django, предоставляемый конечным пользователям. Разработчики Django должны просмотреть и ранжировать по важности весь объем этих предложений.

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

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

  • Есть ли указания на то, при каких условиях возникает ошибка? Если появление ошибки связано с использованием библиотек Python (таких как Pillow), модулей Django, входящих в состав contrib, или конкретной СУБД, то достаточно ли понятным является ваше описание?

  • Если в вашем предложении содержится несколько исправлений, то понятно ли назначение каждого из них в отдельности? Какие из них могут быть проигнорированы, а какие составляют суть вашего предложения?

  • Содержит ли ваше исправление модульный тест? Если не содержит, то по какой причине? Тест лаконично отражает суть проблемы и свидетельствует о том, действительно ли ваше предложение исправляет эту ошибку.

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

Когда и как я могу напомнить основной команде разработчиков об интересующем меня исправлении?

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

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

Еще один способ привлечения внимания - собрать воедино несколько связанных предложений. Когда основные разработчики приступают к исправлению ошибок в области, с которой они не сталкивались некоторое время, несколько минут уходит на то, чтобы вспомнить все нюансы этой конкретной области. Объединение нескольких незначительных исправлений, относящихся к одной сфере, в группу - довольно хорошая идея. Время, затрачиваемое разработчиками на “погружение” в конкретную область, сокращается и позволяет обработать большее число предложений, затрагивающих эту область.

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

Но я уже несколько раз напоминал о своем предложении, а вы продолжаете игнорировать его!

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

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

Другой причиной того, что ошибки могут игнорироваться в течение некоторого времени, является то, что они всего лишь свидетельствуют о более серьезной проблеме. Иногда, вместо того, чтобы тратить время на написание, тестирование и включение в состав Django множества небольших исправлений, правильным решением является изменение структуры на более глубоком уровне. Если рассматривается или уже реализуется решение по изменению или рефакторингу кода конкретного компонента Django, то вы можете обнаружить, что предложения по исправлению ошибок в этом компоненте не будут получать должного внимания. Опять же, это всего лишь вопрос распределения ограниченных ресурсов. Концентрируясь на изменении структуры, мы можем избавится от всех несущественных ошибок сразу, и, возможно, предотвратить появление их в будущем.

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