В этой серии статей из двух частей мы расскажем, как внести свой вклад в проект PHP. Мы надеемся, что это прояснит, какие шаги необходимо предпринять для тех, кто хочет больше заниматься PHP.
В этой первой части будет рассказано о том, как внести свой вклад в документацию PHP, в том числе о том, как запросить учетную запись php.net и что делать после предоставления учетной записи.
Зачем способствовать PHP?
Почему вы должны рассмотреть возможность участия в PHP?
PHP — это проект с открытым исходным кодом, который опирается на желание своего сообщества инвестировать свое время в проект. Чем больше людей вовлекается, тем больше пользы получает сообщество в целом. Совокупные усилия каждого разработчика быстро складываются, будь то улучшение документации по языку или внесение исправлений ошибок или функций в ядро.
Более активное участие в PHP также поможет поднять ваши знания языка на новый уровень. Вклад в документацию даст вам более глубокое знание языка, а вклад в ядро позволит вам быть в курсе любых изменений, которые происходят с ним. Став участником, вы также в конечном итоге сможете запросить учетную запись php.net , что даст вам возможность решить, в каком направлении движется язык. Поэтому, безусловно, стоит сделать то, что вам нравится, если вам нравится работать с PHP. ,
О документации PHP
Документация поддерживается в формате DocBook XML. Вообще говоря, для того, чтобы внести свой вклад в документацию PHP, требуется небольшое знание этого формата. Его легко подобрать, поэтому вы можете просто следовать синтаксису XML, используемому в других файлах документации.
Структура папок для документации выглядит следующим образом:
Папка doc-base содержит некоторые инструменты для преобразования документации на основе XML в другие форматы. Вероятно, вам не нужно сильно беспокоиться об этой папке, за исключением случаев создания пользовательских сущностей (обычно используется при добавлении внешних ссылок в документы).
Папка en относится только к документации на английском языке (другие переводы будут следовать за их соответствующими двухбуквенными кодами стран). В этой папке вы преимущественно будете работать. Справочная папка содержит каталоги, каждый из которых относится к расширению. Каждая папка расширения следует соглашению о наличии папки функций (для процедурных расширений) или папок, названных в честь классов расширения (для объектно-ориентированных расширений). Каждая папка расширения также содержит несколько других файлов, включая файл book.xml для целевой страницы расширения и файл versions.xml для хранения информации о версиях, когда каждая функция была представлена.
Для получения дополнительной информации о структуре документации см. Раздел « Структура файлов » на странице « Структура источников вручную» .
Также, несмотря на постоянные усилия по переводу документации на Git, в настоящее время она поддерживается с использованием SVN. Это означает, что вам нужно установить SVN и иметь базовые знания о нем, если вы хотите настроить документы локально (как будет показано позже).
Новый участник
Если вы впервые участвуете в проекте, вам следует начать с использования онлайн-редактора документации . Это обеспечивает пользовательский интерфейс, позволяющий любому пользователю входить в систему (используя OAuth) и отправлять простые исправления в документацию. Как правило, лучше каждый раз входить в систему с одной и той же учетной записью, чтобы ваши вклады оставались только под одним именем (чтобы их было проще отслеживать, если вы решите подать заявку на учетную запись php.net позже).
Онлайн-редактор почти всегда является отправной точкой для новых участников документации. Демонстрируя способность отправлять исправления и впоследствии принимать их, это демонстрирует компетентность и готовность внести свой вклад.
Как начинающий участник, вы также должны ознакомиться с рекомендациями по стилю документации, прежде чем отправлять какие-либо исправления.
пример
Давайте исправим ошибку # 71716 из bugs.php.net . В отчете говорится, что один из наглядных примеров неверен, когда класс Client
MongoDB неправильно расположен в пространстве имен.
После проверки этого (запустив скрипт подключения локально), мы можем исправить это с помощью онлайн-редактора:
Для получения дополнительной информации о том, как использовать онлайн-редактор, см. Страницу «Начало работы» вики-редактора .
PHP Docs Local Setup
Онлайн-редактор, однако, не самый хороший способ внести свой вклад в документацию, и он также очень ограничен в своих возможностях. Поэтому его следует использовать только для незначительных правок и служить в качестве первой ступени для вовлечения в документальную сторону проекта.
Если вы хотите сделать что-либо за пределами возможностей редактора (например, документировать функцию или расширение с нуля), или вы часто становитесь участником документации, то вам нужно настроить документы локально и запросить php .net аккаунт.
Локальная настройка PHP-документации на вашем компьютере — одноразовое неудобство. Это можно сделать с помощью следующих шагов:
-
Создайте каталог документов . Это будет использоваться для хранения документов и связанных с ними материалов в одном месте:
mkdir phpdocs cd phpdocs
Все остальные шаги предполагают, что вы находитесь в каталоге phpdocs , если не указано иное.
-
Клонировать документы . Используйте SVN, чтобы снять копию репо. В нашем случае мы ищем руководство на английском языке, поэтому мы указываем модуль doc-en (в конце):
svn checkout https : / / svn . php . net / repository / phpdoc / modules / doc - en
-
Клон PhD . PhD — это инструмент, который отображает формат DocBook XML в различные выходные форматы.
git clone http : / / git . php . net / repository / phd . git
-
Клонировать сайт php.net . Это будет использоваться для локального просмотра документации, так что вы сможете увидеть изменения так, как они будут отображаться на веб-сайте, прежде чем нажимать их.
git clone http : / / git . php . net / repository / web / php . git web - php rm - fR web - php / manual / en ln - s rendered - docs / php - web web - php / manual / en
Нам нужно удалить фиктивные документы, расположенные в web-php / manual / en , а затем установить символическую ссылку здесь из сгенерированных файлов документации (сгенерированных через PhD) по адресу render-docs / php-web .
-
Настройка ключевых слов SVN . Все файлы DocBook имеют комментарий
<!-- $Revision: 338832 $ -->
в верхней части файла. Нам нужно настроить SVN для автоматического обновления этого значения при изменении файла путем настройки его автоматических свойств. Для этого просто добавьте следующую строку в~/.subversion/config
(часть автоматических свойств находится где-то ближе к концу):*.xml = svn:eol-style=native;svn:keywords=Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
Идентификатор ревизии отслеживает изменения файла, которые используются переводчиками документов, чтобы увидеть, какие файлы необходимо обновить.
-
Добавить файл рабочего процесса . Это необязательно, но вы найдете очень полезным иметь команды для проверки, создания и просмотра документов под рукой. Вставьте следующее в файл с именем ref :
# Validate the DocBook XML php ~ / phpdocs / doc - en / doc - base / configure . php # Build the docs php ~ / phpdocs / phd / render . php -- docbook ~ / phpdocs / doc - en / doc - base / . manual . xml -- package PHP -- format php -- output ~ / phpdocs / rendered - docs # Run the php.net website locally cd ~ / phpdocs / web - php php - S 0.0 . 0 . 0 : 4000
Выше предполагается, что ваша папка
phpdocs
находится в вашем домашнем каталоге — если нет, то обновите пути соответственно.
И теперь вы все настроены!
Документы Рабочий процесс
Когда все настроено, пришло время взглянуть на рабочий процесс для локального добавления документов. Для этого давайте исправим ошибку # 71866 .
Мы начнем с того, что все обновленные репозитории обновлены. Это означает выполнение svn up
в doc-en / en и doc-en / doc-base и git pull
в web-php и phd (как правило, вы обнаружите, что только первый репозиторий doc-en / en , нуждается в обновлении).
Затем мы открываем файл doc-en/en/reference/mbstring/functions/mb-detect-order.xml
и исправляем описание возвращаемого значения функции согласно информации отчета об ошибке:
< refsect1 role = " returnvalues " > &reftitle.returnvalues; < para > - &return.success; + When setting the encoding detection order, &true; is returned on success or &false; on failure. + </ para > + < para > + When getting the encoding detection order, an ordered array of the encodings is returned. </ para > </ refsect1 >
Затем мы гарантируем, что мы не сломали сборки документации, запустив валидатор документации:
php ~ / phpdocs / doc - en / doc - base / configure . php
Документы должны успешно пройти валидацию, и в результате мы должны увидеть изображение симпатичного кота ASCII.
Теперь мы можем либо просмотреть изменения локально, либо зафиксировать их. Как правило, вы просто хотите зафиксировать изменения (если вы не внесли каких-либо радикальных изменений, чтобы подтвердить, что они выглядят хорошо), но на этот раз мы сделаем это по дидактическим причинам.
Мы создаем документацию, запустив инструмент PhD:
php ~ / phpdocs / phd / render . php -- docbook ~ / php - docs / doc - en / doc - base / . manual . xml -- package PHP -- format php -- output ~ / php - docs / rendered - docs
Иногда этот этап заканчивается для меня в первый раз, потому что PHP не хватает памяти — просто просто перезапустите команду, и она должна хорошо работать.
Затем перейдите в каталог сайта php.net , чтобы запустить локальный сервер PHP:
cd ~ / phpdocs / web - php php - S 0.0 . 0 . 0 : 4000
Посетив localhost (на порту 4000) и mb_detect_order()
к функции mb_detect_order()
, мы увидим сделанные изменения:
Теперь, когда изменения были внесены, и мы довольны ими, мы можем их зафиксировать. Следующие части предполагают, что у вас есть учетная запись php.net . Если это не так, то вам пока не нужно беспокоиться об остальной части этого раздела (вместо этого вы можете запросить учетную запись php.net (см. Ниже).
cd ~/phpdocs/doc-en/en svn ci -m "Resolve doc bug #71866" reference/mbstring/functions/mb-detect-order.xml
Сообщение commit ссылается на ошибку doc, так что от нашего имени можно сделать автоматический комментарий к сообщаемому нами сообщению об ошибке. Вы также не сможете сразу увидеть свои изменения на php.net , но они, как правило , должны распространяться на серверы в течение нескольких часов. Затем мы можем посетить ошибку # 71866 и, если мы вошли в нашу учетную запись php.net , перейдите на вкладку «Разработчик» и закройте отчет об ошибке.
Это основной рабочий процесс устранения ошибок документации. Быстро и просто!
Запрос учетной записи php.net
Установив документы локально и увидев общий рабочий процесс, вы можете подумать о том, чтобы запросить учетную запись php.net с помощью docs karma. (Карма предоставляет участникам разные привилегии для различных частей проекта PHP. Чтобы внести непосредственный вклад в документацию, в вашей учетной записи php.net требуется docs karma.)
Нет конкретных условий, которые должны быть выполнены до запроса учетной записи php.net docs. Однако, как правило, учетные записи будут предоставляться только тем, кто хочет активно вносить вклад и поддерживать документацию. Поэтому прошлые вклады и текущие усилия рассматриваются как свидетельство компетентности и готовности внести свой вклад при запросе учетной записи.
Чтобы запросить учетную запись, посетите страницу запроса учетной записи и внимательно ее прочитайте. Затем заполните форму, отправьте ее, а затем отправьте по электронной почте список рассылки по PHP-документам ([email protected]) с указанием причин, по которым вам нужна карма, как называется имя пользователя вашего вики-аккаунта, и укажите все прошлые вклады, которые вы сделали. к проекту. Если ваш запрос выполнен успешно, вам будет предоставлена учетная запись @ php.net .
Документация по задачам
Помимо исправления многочисленных поданных отчетов об ошибках в документации , есть и другие области руководства, над которыми также можно поработать, включая:
- Перевод документации
- Расширение на частично документированный материал (как правило, путем добавления примеров) — расширение отражения является ярким примером этого.
- Документирование недокументированного — это включает копание в исходный код PHP с помощью инструмента lxr
- Обработка общих страниц — перефразирование частей (например, удаление любых «вас»), удаление материалов, связанных с PHP 4, объединение полезных комментариев в само руководство и т. Д.
Общие советы
Ниже приведены некоторые советы о том, как внести свой вклад, некоторые основаны на моем опыте, а другие просто повторяются сверху, потому что они важны:
-
Следуйте инструкциям по стилю . Пожалуйста, убедитесь, что вы следуете руководству по стилю , и, внося свой вклад, попробуйте исправить документацию, которая не соответствует ему. Я обычно выполняю по крайней мере быстрый поиск «я» и «ты» в файле, над которым я работаю.
-
Проверьте тангенциальные вещи . Как правило, это относится к решению отчетов об ошибках — не просто исправьте ошибку, проверьте, что связанные вещи тоже не затронуты. Это помогает обеспечить правильное устранение ошибок. Например, хотя ошибка № 71638 ссылалась только на функцию
stream_filter_append
, ее аналогstream_filter_prepend
также необходимо исправить . -
Будь кратким . Это относится как к написанию, так и к примерам кода. Плохо сформулированная документация и замысловатые примеры кода усложняют понимание. Держите вещи короткими и простыми.
-
Отдельный пример кода от его вывода . Убедитесь, что вывод примеров не совмещен с самими примерами. Это соглашение помогает содержать пример в чистоте и четко показывает его результат. Например, при очистке
token_get_all
функцииtoken_get_all
мне пришлось перенести закомментированный дамп переменной и пояснение из примера . -
Проверьте порядок страниц . Убедитесь, что порядок содержимого на странице правильный. Это создает последовательность в руководстве, что позволяет разработчикам ссылаться на него проще. Опять же, взглянув на очистку функции
token_get_all
, мы видим, что раздел changelog изначально находился внизу страницы, когда он должен был находиться над разделом examples. -
Удалить ссылки на PHP 4 . PHP 4 давно ушел, и ссылки на него теперь не только неактуальны, но и запутывают документацию. Обращайте внимание на любые упоминания о PHP 4 (я обычно выполняю быстрый grep для него в файле, над которым я работаю) и удаляем любые упоминания о нем.
-
Правильно версии файлов . При создании нового файла в документации убедитесь, что для его идентификатора ревизии ничего не задано:
<!-- $Revision$ -->
( Пример .)
Помимо создания новых файлов или перевода документации, вам не нужно беспокоиться об идентификаторе ревизии.
Если вы не уверены в чем-то, начните с просмотра FAQ по документации . Если это не поможет, просто отправьте письмо в список рассылки php-docs для поддержки.
И еще раз, пожалуйста, проверьте, что сборка документации проходит, прежде чем вносить какие-либо изменения в руководство!
Вывод
В этой статье мы видели два рабочих процесса, когда вносили свой вклад в документацию PHP. Первая использовала онлайн-редактор для устранения ошибки # 71716 , а вторая — локальную настройку документов для устранения ошибки # 71866 . Я надеюсь, что это послужило четким и прагматичным введением в то, как внести свой вклад в документацию PHP.
Во второй части этой серии я покажу вам, как стать частью PHP. Это будет включать рассмотрение того, как исправить ошибки в ядре, снова приняв прагматичный подход.