Введение
Laravel — проект с открытым исходным кодом, и любой может внести свой вклад в его развитие. Мы рады каждому, независимо от его уровня квалификации, пола, расы, религии и национальности. Разнообразное, яркое сообщество — одна из основных ценностей фреймворка!
Для поощрения активного сотрудничества Laravel в настоящее время принимает только pull-запросы и не принимает отчёты об ошибках. Отчёты об ошибках могут быть отправлены в форме pull-запроса, содержащего непройденный unit-тест. Кроме того, демонстрация бага в sandbox-приложении может быть отправлена как pull-запрос в основной репозиторий Laravel. Непройденные unit-тесты и sandbox-приложения дают команде разработчиков «доказательство» того, что ошибка существует, а после её исправления служат надёжным показателем того, что ошибка была исправлена.
Исходный код Laravel расположен на Github, и для каждого из проектов Laravel есть свои репозитории:
- Laravel Framework
- Laravel Application
- Laravel Documentation
- Laravel Cashier
- Laravel Envoy
- Laravel Homestead
- Laravel Homestead Build Scripts
- Laravel Website
- Laravel Art
Об основном ядре
Обсуждение ошибок, новых функций и применения существующих функций происходит на IRC-канале #laravel-dev (Freenode). Тейлор Отвелл, создатель Laravel, обычно находится на канале по будням с 11 вечера до 8 утра (по Москве), а иногда и в другое время.
IRC-канал #laravel-dev открыт для всех. Мы приглашаем всех зайти на канал для участия в обсуждении или просто понаблюдать!
Новые функции
Перед отправкой pull-запросов по новым функциям, пожалуйста, свяжитесь с Тейлором Отвеллом через #laravel-dev. Если функция окажется подходящей для фреймворка, вы можете сделать pull-запрос. Даже если функция будет отклонена, не сдавайтесь! Вы всё ещё можете превратить свою функцию в package, который может быть выпущен в свет с помощью Packagist.
При добавлении новых функций, не забудьте добавить unit-тесты! Unit-тесты помогут обеспечить стабильность и надёжность фреймворка после добавления функции.
Отчёты об ошибках
С помощью unit-тестов
Pull-запросы по ошибкам могут быть отправлены без предварительного обсуждения с командой разработчиков Laravel. Когда будете отправлять отчёт об ошибке, постарайтесь включить в него unit-тест, чтобы мы могли гарантировать, что ошибка никогда не появится снова!
Если вы считаете, что нашли ошибку во фреймворке, но не знаете, как её исправить, пожалуйста, отправьте pull-запрос, содержащий непройденный unit-тест. Непройденные unit-тесты дают команде разработчиков «доказательство», что ошибка существует, а после её исправления служат надёжным показателем того, что ошибка была исправлена.
Если вы не знаете, как написать правильный unit-тест для найденной ошибки, просмотрите другие unit-тесты, включенные во фреймворк. Если это не поможет, обратитесь за помощью на канал #laravel-dev.
С помощью Laravel Liferaft
Если вы не можете написать unit-тест для вашей проблемы, то используйте Laravel Liferaft. Он позволяет создать демо-приложение, которое воспроизводит эту проблему. Liferaft может даже автоматизировать процесс подключения и передачи pull-запросов в репозиторий Laravel. После того, как ваше Liferaft-приложение отправлено, разработчик Laravel сможет запустить приложение на Homestead и рассмотреть вашу проблему.
Создание Liferaft-приложений
Laravel Liferaft предоставляет новый, инновационный способ внести свой вклад в развитие Laravel. Для начала нужно установить консольный инструмент Liferaft с помощью Composer:
Установка Liferaft
shcomposer global require "laravel/liferaft=~1.0"
Не забудьте поместить путь ~/.composer/vendor/bin в переменную PATH, чтобы исполняемый файл liferaft был найден при запуске команды liferaft в терминале.
Аутентификация через GitHub
Перед началом работы с Liferaft вам необходимо зарегистрировать личный токен доступа GitHub. Вы можете сгенерировать его в панели настроек GitHub. По умолчанию предоставленного GitHub’ом места будет достаточно. Однако, если захотите, вы можете выбрать дисковое пространство delete_repo, тогда Liferaft сможет удалять ваши старые sandbox-приложения.
shliferaft auth my-github-token
Создание нового Liferaft-приложения
Чтобы создать новое Liferaft-приложение, просто используйте команду shnew
:
shliferaft new my-bug-fix
Эта команда будет выполнять несколько вещей. Во-первых, она подключит репозиторий Laravel GitHub к вашей учётной записи GitHub. Затем, она клонирует подключенное хранилище на вашу машину и установит зависимости Composer. После того как хранилище будет установлено, вы сможете воспроизвести свою проблему в пределах Liferaft-приложения!
Воспроизведение проблемы
Создав Liferaft-приложение, воспроизведите вашу проблему. Вы неограничены в задании маршрутов, создании Eloquent-моделей и даже создании миграций баз данных! Единственное требование — ваше приложение должно запускаться на чистой виртуальной машине Laravel Homestead. Это позволит специалистам Laravel легко запустить ваше приложение на своих машинах.
Как только вы воспроизвели свою проблему в Liferaft-приложении, вы можете отправить его обратно в репозиторий Laravel на рассмотрение!
Отправка вашего приложения на рассмотрение
Как только вы воспроизвели свою проблему, вы уже почти можете послать её на рассмотрение! Однако сначала вы должны заполнить файл liferaft.md, который был сгенерирован в вашем Liferaft-приложении. Первая строка этого файла будет названием вашего pull-запроса. Остальные строки будут включены в тело pull-запроса. Конечно же, разметка GitHub поддерживается.
После завершения работы с файлом liferaft.md, отправьте все ваши изменения в репозиторий GitHub. Далее просто запустите Liferaft-команду shthrow
из директории вашего приложения:
shliferaft throw
Эта команда создаст pull-запрос в репозиторий Laravel GitHub. Разработчик Laravel сможет легко получить ваше приложение и запустить его в своей собственной Homestead-среде!
Получение Liferaft-приложения
Хотите участвовать в развитии Laravel? С помощью Liferaft вы легко сможете устанавливать Liferaft-приложения и изучать их в собственной Homestead-среде.
Для удобства сначала клонируйте laravel/laravel в каталог liferaft на вашем компьютере:
shgit clone https://github.com/laravel/laravel.git liferaft
Затем обновите локальную ветку develop, чтобы устанавливать Liferaft-приложения, ориентированные как на выпущенные, так и предстоящие релизы Laravel:
shgit checkout -b develop origin/develop
После этого вы можете запустить Liferaft-команду shgrab
из директории вашего репозитория. Например, если вы хотите установить Liferaft-приложение, связанное с pull-запросом #3000, вы должны выполнить следующую команду:
sh liferaft grab 3000
Команда shgrab
создаст новую ветку в вашей директории Liferaft, и синхронизирует изменения для указанного pull-запроса. После установки Liferaft-приложения просто откройте эту директорию через виртуальную машину Homestead! После отладки проблемы не забудьте отправить pull-запрос в репозиторий laravel/framework с соответствующим исправлением!
У вас появился свободный часок и вы хотите решить какую-нибудь проблему? Просто запустите shgrab
без указания ID pull-запроса:
shliferaft grab
Какая ветка?
Этот раздел в основном относится к тем, кто отправляет pull-запросы в репозиторий laravel/framework, а не Liferaft-приложения.
Все исправления должны быть отправлены в последнюю стабильную ветку. Исправления не должны отправляться в ветку master, если они не относятся к функциям, которые появятся только в следующем релизе.
Незначительные новые функции, имеющие полную обратную совместимость с текущей версией Laravel могут быть отправлены в последнюю стабильную ветку.
Важные новые функции должны всегда отправляться в ветку master, которая содержит предстоящий релиз Laravel.
Если вы не уверены, как квалифицируется ваша функция (важная или незначительная), пожалуйста, обращайтесь к Тейлору Отвеллу на канал #laravel-dev.
Слабые места в безопасности
Если вы обнаружите уязвимость в безопасности Laravel, пожалуйста, отправьте письмо Тейлору Отвеллу на taylorotwell@gmail.com. Все уязвимости в безопасности будут оперативно устранены.
Стиль оформления кода
Laravel следует стандартам оформления кода PSR-0 и PSR-1. В дополнение к ним также стоит соблюдать следующие правила:
- Объявление пространства имён класса должно быть на той же строке, что и
PHP<?php
. - Открытие класса
PHP{
должно быть на той же строке, что и имя класса. - Функции и структуры управления должны использовать стиль скобок Оллмана.
- Отступ — табуляцией, выравнивание — пробелами.