Управление проектами¶
«Никто не может насвистеть симфонию; чтобы сыграть ее, нужен целый оркестр».
‒ Halford E. Luccock
В этом документе описываются наши процессы управления проектами для REST-фреймворка.
Цель состоит в том, чтобы гарантировать, что проект имеет высокий уровень <<< 0 >>** , и может оставаться хорошо поддерживаемым в обозримом будущем. Предложения по улучшению нашего процесса приветствуются.
Команда технического обслуживания¶
У нас есть ежеквартальный цикл технического обслуживания, когда новые члены могут присоединиться к команде технического обслуживания. В настоящее время численность команды ограничена 5 членами, и мы можем предложить людям выйти из команды на один цикл, чтобы дать возможность новым членам принять участие.
Текущая команда¶
:doc:`maintenance team for Q4 2015 <https://github.com/encode/django-rest-framework/issues/2190>`** :
@xordoquy (Менеджер по освобождению.)
Циклы технического обслуживания¶
Каждый цикл обслуживания начинается с открытия проблемы с меткой 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-канал.
Документируйте владение и управление списком рассылки по вопросам безопасности.