Вклад¶
Если вы хотите внести свой вклад в Каналы, то читайте дальше - мы поощряем как большие, так и маленькие вклады, как от начинающих, так и от опытных разработчиков.
Над чем я могу работать?¶
Мы ищем помощь в следующих областях:
Написание документации и учебников
Исправление ошибок и тестирование
Полировка функций и периодическая разработка новых функций
Тематические исследования и письменные работы
Вы можете найти, над чем мы хотим поработать, в списке проблем на GitHub для каждого из подпроектов Channels:
Channels issues, за интеграцию Django и общие усилия по проекту
Daphne issues, для завершения HTTP и Websocket
asgiref issues, для базовой библиотеки ASGI/бэкенда памяти
channels_redis issues, для бэкенда канала Redis
Вопросы распределены по категориям по уровню сложности:
exp/beginner
: Простые вопросы, подходящие для начинающего автора.
exp/intermediate
: Умеренные проблемы, для решения которых требуется умение и день-два.
exp/advanced
: Сложные вопросы, требующие специальных знаний и потенциально недель работы.
Они также классифицируются по типам:
documentation
: Проблемы с документацией. Выберите их, если вы хотите помочь нам в написании документации.
bug
: Ошибка в существующем коде. Обычно проще для новичков, так как есть определенная вещь, которую нужно исправить.
enhancement
: Новая функция для кода; может быть немного более открытой.
Вам следует отфильтровать список проблем по уровню опыта и типу работы, которую вы хотели бы выполнять, а затем, если вы хотите взять что-то на себя, оставьте комментарий и назначьте себя на это. Если вам нужен совет о том, как взяться за ошибку, оставьте комментарий с вопросом об этом или зайдите на IRC-канал #django-channels
на Freenode, и мы будем рады помочь.
Проблемы также являются лишь предполагаемым списком - любое предложение помощи приветствуется, если оно соответствует целям проекта, но вам следует создать проблему для того, что вы хотите сделать, и сначала обсудить ее, если она относительно большая (но если вы просто нашли небольшую ошибку и хотите ее исправить, то вполне можно сразу отправить нам запрос на исправление).
Я начинающий вкладчик/разработчик - могу ли я помочь?¶
Конечно! Проблемы, помеченные exp/beginner
, являются идеальным местом для начала работы, так как они обычно небольшие и четко сформулированные. Если вам нужна помощь в решении одной из них, зайдите на IRC-канал #django-channels
на Freenode или свяжитесь с Эндрю напрямую по адресу andrew@aeracode.org.
Как начать и запустить тесты?¶
Сначала необходимо клонировать git-репозиторий в локальный каталог:
git clone https://github.com/django/channels.git channels
Далее, вы можете создать виртуальную среду для запуска тестов и разработки; для этого можно использовать virtualenvwrapper
, pipenv
или просто virtualenv
.
Затем, cd
в каталог channels
и установите его редактируемым в вашу среду:
cd channels/
python -m pip install -e .[tests]
Обратите внимание на раздел [tests]
; это говорит pip
, что вы хотите установить tests
extra, который принесет тестовые зависимости, такие как pytest-django
.
Затем можно запускать тесты:
pytest
Также в корне хранилища находится файл tox.ini. Примеры команд:
$ tox -l
py36-dj11
py36-dj21
py36-dj22
py37-dj11
py37-dj21
py37-dj22
# run the test with Python 3.7, on Django 2.2 and Django master branch
$ tox -e py37-dj22 && tox -e py37-djmaster
Обратите внимание, что tox также может передавать аргументы в pytest. При использовании pdb с pytest, передавайте опцию -s
в pytest как таковую:
tox -e py37-dj22 -- -s
Можете ли вы заплатить мне за мое время?¶
К сожалению, средства Mozilla, которыми мы располагали ранее, исчерпаны, поэтому мы больше не можем оплачивать взносы. Спасибо всем, кто принял участие!
Как сделать освобождение?¶
Если у вас есть доступ к фиксации, освобождение включает в себя следующие шаги:
Создайте новую запись в файле CHANGELOG.txt и кратко опишите изменения
Создайте новую страницу релиза в документации под
docs/releases
и добавьте туда журнал изменений с дополнительной информацией, где это необходимо.Добавьте ссылку на примечания к новому выпуску в
docs/releases/index.rst
.Установите новую версию в
__init__.py
.Соберите все это в один коммит и пометьте его номером новой версии. Разместите коммит и метку, и Travis автоматически соберет и выпустит новую версию в PyPI, если все тесты пройдут.
Процесс выпуска для channels-redis
и daphne
похож, но в них нет двух шагов в docs/
.