Управление проектами

«Никто не может насвистеть симфонию; чтобы сыграть ее, нужен целый оркестр».

‒ Halford E. Luccock

В этом документе описываются наши процессы управления проектами для REST-фреймворка.

Цель состоит в том, чтобы гарантировать, что проект имеет высокий уровень <<< 0 >>** , и может оставаться хорошо поддерживаемым в обозримом будущем. Предложения по улучшению нашего процесса приветствуются.


Команда технического обслуживания

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

Текущая команда

:doc:`maintenance team for Q4 2015 <https://github.com/encode/django-rest-framework/issues/2190>`** :

Циклы технического обслуживания

Каждый цикл обслуживания начинается с открытия проблемы с меткой Process.

  • Чтобы быть рассмотренным на роль сопровождающего, просто прокомментируйте этот вопрос.

  • Существующие участники должны явно выразить свое согласие на участие в следующем цикле, отметив свое имя.

  • Окончательное решение о приходе команды будет принимать @tomchristie.

Члены группы сопровождения будут добавлены в хранилище в качестве соавторов.

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

This issue is for determining the maintenance team for the *** period.

Please see the [Project management](https://www.django-rest-framework.org/topics/project-management/) section of our documentation for more details.

---

#### Renewing existing members.

The following people are the current maintenance team. Please checkmark your name if you wish to continue to have write permission on the repository for the *** period.

- [ ] @***
- [ ] @***
- [ ] @***
- [ ] @***
- [ ] @***

---

#### New members.

If you wish to be considered for this or a future date, please comment against this or subsequent issues.

To modify this process for future maintenance cycles make a pull request to the [project management](https://www.django-rest-framework.org/topics/project-management/) documentation.

Обязанности членов команды

На членов команды возлагаются следующие обязанности.

  • Закрытие недействительных или разрешенных билетов.

  • Добавьте метки сортировки и этапы в билеты.

  • Слияние доработанных запросов на исправление.

  • Постройте и разверните документацию, используя mkdocs gh-deploy.

  • Соберите и обновите входящие в комплект пакеты переводов.

Дополнительные замечания для сопровождающих:

  • Изменения в код должны вноситься в виде pull request - не вносите изменения непосредственно в master.

  • Как правило, мейнтейнеры не должны объединять свои собственные запросы.

  • Каждый вопрос/запрос должен иметь только одну метку после обработки.

  • Поиск нетриализованных вопросов с помощью is:open no:label.

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


Процесс освобождения

Менеджер выпуска выбирается на каждом квартальном цикле обслуживания.

  • Менеджер должен быть выбран @tomchristie.

  • После этого менеджер получит роль сопровождающего в пакете PyPI.

  • После этого у предыдущего менеджера будет удалена роль сопровождающего из пакета PyPI.

Наши релизы на PyPI будут обрабатываться либо текущим менеджером релизов, либо @tomchristie. Каждый релиз должен иметь открытую проблему, помеченную меткой Release> и отмеченную на соответствующей вехе.

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

Release manager is @***.
Pull request is #***.

During development cycle:

- [ ] Upload the new content to be translated to [transifex](https://www.django-rest-framework.org/topics/project-management/#translations).


Checklist:

- [ ] Create pull request for [release notes](https://github.com/encode/django-rest-framework/blob/master/docs/topics/release-notes.md) based on the [*.*.* milestone](https://github.com/encode/django-rest-framework/milestones/***).
- [ ] Update supported versions:
    - [ ] `setup.py` `python_requires` list
    - [ ] `setup.py` Python & Django version trove classifiers
    - [ ] `README` Python & Django versions
    - [ ] `docs` Python & Django versions
- [ ] Update the translations from [transifex](https://www.django-rest-framework.org/topics/project-management/#translations).
- [ ] Ensure the pull request increments the version to `*.*.*` in [`restframework/__init__.py`](https://github.com/encode/django-rest-framework/blob/master/rest_framework/__init__.py).
- [ ] Confirm with @tomchristie that release is finalized and ready to go.
- [ ] Ensure that release date is included in pull request.
- [ ] Merge the release pull request.
- [ ] Push the package to PyPI with `./setup.py publish`.
- [ ] Tag the release, with `git tag -a *.*.* -m 'version *.*.*'; git push --tags`.
- [ ] Deploy the documentation with `mkdocs gh-deploy`.
- [ ] Make a release announcement on the [discussion group](https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework).
- [ ] Make a release announcement on twitter.
- [ ] Close the milestone on GitHub.

To modify this process for future releases make a pull request to the [project management](https://www.django-rest-framework.org/topics/project-management/) documentation.

При размещении релиза в PyPI убедитесь, что ваша среда была установлена из нашей разработки requirement.txt , так что документация и установки PyPI последовательно собираются на основе сконфигурированного набора пакетов.


Переводы

Команда сопровождения отвечает за управление пакетами перевода, включенными в REST-фреймворк. Перевод исходных строк на несколько языков осуществляется через transifex service.

Клиент official Transifex client используется для загрузки и выгрузки переводов в Transifex. Клиент устанавливается с помощью pip:

pip install transifex-client

Для его использования вам потребуется логин в Transifex с паролем, а также административный доступ к проекту Transifex. Вам нужно будет создать файл ~/.transifexrc, содержащий ваши учетные данные.

[https://www.transifex.com]
username = ***
token = ***
password = ***
hostname = https://www.transifex.com

При изменении любых видимых пользователю строк они должны быть загружены в Transifex, чтобы переводчики могли приступить к их переводу. Чтобы сделать это, просто запустите:

# 1. Update the source django.po file, which is the US English version.
cd rest_framework
django-admin makemessages -l en_US
# 2. Push the source django.po file to Transifex.
cd ..
tx push -s

При переносе исходных файлов Transifex будет обновлять исходные строки ресурса, чтобы они соответствовали строкам из нового исходного файла.

Вот как будут обрабатываться различия между старыми и новыми исходными файлами:

  • Будут добавлены новые струны.

  • Также будут добавлены модифицированные струны.

  • Строки, не существующие в новом исходном файле, будут удалены из базы данных вместе с их переводами. Если позже эта исходная строка будет добавлена заново, то Transifex Translation Memory автоматически включит строку перевода.

Когда переводчик закончил перевод, его работа должна быть загружена из Transifex в репозиторий REST framework. Чтобы сделать это, выполните

# 3. Pull the translated django.po files from Transifex.
tx pull -a --minimum-perc 10
cd rest_framework
# 4. Compile the binary .mo files for all supported languages.
django-admin compilemessages

Требования к проекту

Все наши требования к тестам привязаны к точным версиям, чтобы обеспечить воспроизводимость наших тестов. Мы храним требования в каталоге requirements. Ссылки на файлы требований содержатся в конфигурационном файле tox.ini, что обеспечивает единый источник истины для версий пакетов, используемых в тестировании.

Обновление пакетов обычно следует рассматривать как изолированные запросы на вытягивание. Вы можете проверить, доступны ли пакеты более новой версии, с помощью команды pip list --outdated.


Владение проектом

Владельцем пакета PyPI является @tomchristie. В качестве резервной копии @j4mie также имеет право собственности на пакет.

Если @tomchristie прекращает участие в проекте, то @j4mie несет ответственность за передачу обязанностей собственника.

Выдающиеся вопросы управления и владения

По-прежнему необходимо решить следующие вопросы:

  • Убедитесь, что @jamie имеет резервный доступ к настройке и администрированию домена django-rest-framework.org.

  • Документальное владение API live example.

  • Документируйте право собственности на mailing list и IRC-канал.

  • Документируйте владение и управление списком рассылки по вопросам безопасности.

Вернуться на верх