Nos encantaría que contribuyeras a este proyecto y ayudaras a mejorarlo. Estas son las directrices que nos gustaría que siguieras:
- Código de conducta
- Preguntas, problemas o ideas
- Agregar o mejorar algo
- Reportar un error
- Enviar un issue
- Enviar un pull request
- Reglas de codificación
- Reglas para escribir commits
Ayúdanos a mantener este proyecto accesible e inclusivo. Por favor, lee y sigue nuestro código de conducta.
Empieza una nueva discusión y selecciona la categoría adecuada para ello:
General
: Cualquier cosa que sea relevante para el proyecto.Ideas
: Ideas para mejorar el proyecto o proponer nuevas características.Encuestas (polls)
: Encuestas con múltiples opciones para que la comunidad.Q&A
: Preguntas para que la comunidad responda.Mostrar y contar (show and tell)
: Creaciones, experimentos o pruebas.
-
Para un cambio importante, abre una nueva discusión en la categoría
Ideas
y expón tu propuesta para que pueda ser discutida. Esto también nos permitirá coordinar mejor nuestros esfuerzos, evitar la duplicación del trabajo y ayudarte a elaborar el cambio para que sea para que sea aceptado con éxito en el proyecto. -
Pequeñas características pueden desarrollarse y enviar directamente un pull request.
Si encuentras un error en el código, puedes ayudarnos enviando un issue a nuestro repositorio. O mejor aún, puedes enviar un pull request con una solución.
Los reportes de problemas son muy valiosos para cualquier proyecto.
Los grandes informes de errores suelen tener:
- Un resumen rápido y/o antecedentes.
- Pasos para reproducir el problema.
- Ser específico.
- Dar un ejemplo de código si se puede.
- Lo que se esperaba que ocurriera.
- Lo que realmente sucede.
- Notas; por qué podría estar sucediendo, pruebas que no funcionaron...
Envía un nuevo issue para reportar un error.
Los pull request son una gran manera de incluir tus ideas en este proyecto o simplemente arreglar algo.
Antes de enviar tu pull request ten en cuenta las siguientes directrices:
-
Busca en GitHub si existe algún tema relacionado para asegurarte que no esté repetido.
-
Bifurca el repositorio a tu propia cuenta de GitHub.
-
Clona el repositorio en tu máquina.
-
Sitúate en el repositorio clonado.
cd php-language-code
-
Crea una rama a partir de la rama
main
con un nombre corto pero descriptivo.git checkout -b descriptive-name main
-
Realiza tus cambios en la nueva rama, incluyendo las pruebas necesarias.
-
Sigue nuestras reglas de codificación.
-
Ejecuta el conjunto de pruebas del repositorio completo.
composer tests
-
Confirma tus cambios utilizando un commit descriptivo que siga nuestras reglas para escribir commits.
git commit -a
La opción
-a
agregará (add
) y eliminará (rm
) los archivos editados. -
Envía (push) tu rama a GitHub:
git push origin descriptive-name
-
En GitHub, envía un pull request hacia
php-language-code:main
.
- Si te sugerimos algún cambio:
-
Realiza las actualizaciones necesarias.
-
Vuelve a ejecutar las pruebas para asegurarse de que siguen pasando.
-
Reorganiza tu rama y envíala a tu repositorio de GitHub (esto actualizará tu pull request):
git rebase main -i git push -f
-
¡Eso es todo! ¡Gracias por tu contribución!
Después de que tu pull request se fusione, puedes eliminar con seguridad tu rama y actualizar los
cambios desde la rama main
:
-
Elimina la rama remota en GitHub, ya sea a través de la interfaz de GitHub o de tu shell local:
git push origin --delete descriptive-name
-
Sitúate en la rama
main
:git checkout main -f
-
Elimina la rama local:
git branch -D descriptive-name
-
Actualiza tu rama
main
con la última versión:git pull --ff upstream main
Para garantizar la coherencia en todo el código fuente, ten en cuenta estas reglas mientras trabajas:
-
Todas las características o correcciones de errores deben ser probadas por una o más especificaciones (pruebas unitarias).
Puedes utilizar el siguiente comando para comprobar las pruebas:
composer phpunit
-
Toda nueva característica debe ser documentada en el archivo
README.md
. -
Utilizamos
PHP CodeSniffer
yPHP Mess Detector
para definir nuestros estándares de código.Puedes utilizar los siguientes comandos para comprobar el estado de tu código:
composer phpcs
composer phpmd
Puedes utilizar el siguiente comando para formatear automáticamente los errores encontrados con
PHP CodeSniffer
:composer fix
Tenemos reglas muy precisas sobre cómo deben ser formateados nuestros commits. Este formato hace que el historial commits sea más fácil de leer.
Cada commit consta de un header, un body, y un footer.
<header>
<LÍNEA EN BLANCO>
<body>
<LÍNEA EN BLANCO>
<footer>
El header
es obligatorio y debe ajustarse al formato para el
encabezado del commit.
El body
es opcional. Cuando está presente, debe tener al menos 20 caracteres y debe
ajustarse al formato del cuerpo del commit.
El footer
es opcional.
El formato para la parte inferior del commit detalla su estructura.
<tipo>(<ámbito>): <resumen corto>
│ │ │
│ │ └─> # Resumen en tiempo presente. Sin mayúsculas. Sin punto al final.
│ │
│ └─> # Palabra corta relevante. Sin mayúsculas.
│
└─> # Tipo de commit: build|ci|docs|feat|fix|perf|refactor|test.
Los campos <tipo>
y <summary>
son obligatorios, el campo (<ámbito>)
es opcional.
Debe ser uno de los siguientes:
build
: Cambios que afectan al sistema de compilación o a las dependencias externas.ci
: Cambios en nuestros archivos de configuración y scripts de CI.docs
: Cambios en documentación.feat
: Nuevas características.fix
: Arreglar un error.perf
: Cambios en el código que mejoran el rendimiento.refactor
: Cambio de código que no corrige un error ni añade una característica.test
: Añadir pruebas que faltan o corregir las existentes.
Se puede proporcionar un ámbito al tipo del commit para proporcionar información contextual adicional. Éste debería ir entre paréntesis. Por ejemplo:
feat(parser): add ability to parse arrays
Utiliza el campo de resumen para proporcionar una descripción sucinta del cambio:
- Utiliza el imperativo y el tiempo presente: "change" en vez de "changed" o "changes".
- No escribas la primera letra en mayúscula.
- No pongas punto (.) al final.
- Utiliza el inglés.
Al igual que en el resumen del commit, utiliza el imperativo y el tiempo presente: "fix" en vez de "fixed" o "fixes".
Explica la motivación del cambio en el cuerpo del commit. Este commit debe explicar por qué estas haciendo el cambio. Puede incluir una comparación del comportamiento anterior con el nuevo comportamiento para ilustrar el impacto del cambio.
El footer puede contener información sobre cambios de última hora o declarados obsoletos. También es el lugar para hacer referencia a los issues de GitHub y a otros PRs que ese commit cierra o con los que está relacionado. Por ejemplo:
BREAKING CHANGE: <resumen de cambios de última hora>
<LÍNEA EN BLANCO>
<descripción de los cambios de última hora + instrucciones de migración>
<LÍNEA EN BLANCO>
<LÍNEA EN BLANCO>
Fixes #<número de issue>
o
DEPRECATED: <qué es lo que está obsoleto>
<LÍNEA EN BLANCO>
<descripción de la desaprobación + ruta de actualización recomendada>
<LÍNEA EN BLANCO>
<LÍNEA EN BLANCO>
Closes #<número de pull request>
La sección de cambios de última hora debe comenzar con la frase "BREAKING CHANGE:" seguida de un resumen del cambio, una línea en blanco y una descripción detallada del cambio que incluya también instrucciones de migración.
Del mismo modo, una sección de desaprobación debe comenzar con "DEPRECATED:" seguido de una breve descripción sobre lo que quedó obsoleto, una línea en blanco y una descripción detallada que también recomiende una alternativa.
Esta guía de contribución está inspirada en la guía de contribución de Angular.