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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Another reason that bugs might be ignored for while is if the bug is a symptom of a larger problem. While we can spend time writing, testing and applying lots of little patches, sometimes the right solution is to rebuild. If a rebuild or refactor of a particular component has been proposed or is underway, you may find that bugs affecting that component will not get as much attention. Again, this is a matter of prioritizing scarce resources. By concentrating on the rebuild, we can close all the little bugs at once, and hopefully prevent other little bugs from appearing in the future.

Whatever the reason, please keep in mind that while you may hit a particular bug regularly, it doesn’t necessarily follow that every single Django user will hit the same bug. Different users use Django in different ways, stressing different parts of the code under different conditions. When we evaluate the relative priorities, we are generally trying to consider the needs of the entire community, instead of prioritizing the impact on one particular user. This doesn’t mean that we think your problem is unimportant – just that in the limited time we have available, we will always err on the side of making 10 people happy rather than making a single person happy.