Cómo llegar a ser un hacker de MediaWiki
Este artículo está escrito para ayudar a desarrolladores novatos a que aprendan las habilidades necesarias para contribuir al desarrollo del núcleo de MediaWiki y sus extensiones.
Contribuir a MediaWiki a menudo es difícil, por lo que, si en lugar de ello prefieres implicarte en el desarrollo de Wikimedia, deberías contribuir a los proyectos de Wikimedia que ofrecen mentoría. Una anternativa sin mentoría es arreglar un buen primer error.
Si eres un desarrollador experimentado que posee experiencia con MediaWiki, en lugar de eso, visita el Centro de desarrolladores .
Para otras maneras de aportar en la comunidad Wikimedia, revisa Cómo puedes contribuir .
Resumen
MediaWiki es el software que permite el funcionamiento de Wikipedia, sus proyectos hermanos y miles de wikis en todo el mundo.
MediaWiki está escrito en el lenguaje de programación PHP. JavaScript se emplea para proporcionar elementos interactivos de interfaz junto con jQuery y Vue.js como bibliotecas JavaScript de cliente.
Existen algunas herramientas adicionales que están escritas en otros lenguajes, incluyendo archivos batch, scripts de la shell, makefiles y Python.
MediaWiki está escrito principalmente para la plataforma LAMP[1] y se ejecuta en la mayoría de los sistemas operativos. MediaWiki usa principalmente servidores de MySQL y MariaDB.[2]
El desarrollo se lleva a cabo en un modelo de código abierto,[3] coordinado en gran medida en línea y apoyado por la Fundación Wikimedia, aunque los desarrolladores voluntarios de la comunidad también realizan una gran labor.
- Las discusiones sobre el desarrollo se llevan a cabo en Phabricator , Listas de correo y los canales de IRC. La lista principal de desarrolladores es wikitech-l. Los canales principales de los desarrolladores son #mediawiki connect y #wikimedia-dev connect.
- El código fuente está almacenado en Gerrit y se administra mediante el sistema de control de revisiones Git, que [[[Special:MyLanguage/Gerrit|Gerrit]] se puede ver aquí].[4]
- La revisión de códigos se lleva a cabo en Gerrit , que se puede ver aquí. Sigue este tutorial para instalar Git y Gerrit para enviar cambios.
- Los informes de error, las solicitudes de funcionalidades y los proyectos se coordinan en Phabricator , que se puede ver aquí
Encontrar o crear una tarea
Antes de desarrollar una funcionalidad o corregir un error en un proyecto MediaWiki, es importante que investigues al respecto. Esto incluye:
- Consultar en Phabricator si ya existe una Tarea (Task) abierta o cerrada (campo o Document Types, «Tipos de Documento»). Si no existe, créala. Si es un cambio muy pequeño, no crees la Tarea.
- Busca e investiga el código que hay que cambiar para implementar la funcionalidad. Comenta tus hallazgos en la Tarea de Phabricator si pueden ser de ayuda a quienes van a implementarla o revisar tus cambios.
- Determina si es probable que puedas añadir la funcionalidad o corregir el error a partir del código que investigaste y de los cambios necesarios. Si la tarea es grande o compleja, deberías buscar algo más fácil e ir ascendiendo hasta ser capaz de abordar tareas de esa envergadura. Si crees que puedes completarla, asígnate la Tarea y empieza a trabajar en ella.
Instalar tu entorno de desarrollo
Una vez que hayas encontrado algo en lo que trabajar, el siguiente paso para desarrollar MediaWiki o una extensión es crear un entorno para ejecutar MediaWiki, su base de datos y cualquier otra funcionalidad externa para que puedas hacer el desarrollo y las pruebas.
Puedes instalar y desarrollar MediaWiki en Linux, Windows o macOS mediante cualquiera de las tres soluciones a continuación.
Docker
- MediaWiki Docker – Ejecuta MediaWiki mediante Docker.
Docker es una buena opción si deseas hacer una instalación rápida de MediaWiki y no tienes pensado instalar muchas extensiones.
También puedes probar la herramienta mwcli que configura Docker con unos pocos comandos sencillos y proporciona una funcionalidad básica de orquestación entre MediaWiki, MySQL, ElasticSearch, Memcached y otros tipos de contenedores.
Vagrant
- MediaWiki Vagrant - Ejecuta MediaWiki en una máquina virtual de Linux mediante Vagrant.
Vagrant permite iniciar una instancia MediaWiki que puedes desarrollar además de añadir y desarrollar cualquier extensión de una lista de más de 250 - todo con un solo comando.
Esto ahorra tiempo de instalación y configuración con respecto de añadir extensiones a mano en una instalación Docker o local, pero se ejecuta un poco más lento que las otras dos opciones.
Instalación local
- Inicio rápido para el desarrollo local – Ejecuta MediaWiki localmente mediante PHP y Composer.
La instalación local es una buena opción si deseas configurar con rapidez un entorno de desarrollo simple sin utilizar Docker.
Abrir un editor de código
Los dos editores de código recomendados para editar MediaWiki son VSCode y PhpStorm. VSCode es gratuito y PhpStorm es de pago, aunque si eres estudiante puedes conseguir una licencia gratuita de PhpStorm enlazando tu cuenta GitHub Education con tu cuenta JetBrains o solicitando una licencia concedida a Wikimedia.
Para determinar qué editor deberías instalar y utilizar, ten en cuenta que, con todo, PhpStorm aventaja a VSCode en número y potencia de sus funcionalidades. Sin embargo, PhpCode tarda bastante más tiempo en arrancar que VSCode, ya que construye un índice de todo el repositorio, mientras que VSCode se carga progresivamente. Por lo tanto, se suele utilizar VSCode para visualizar archivos o hacer cambios pequeños y PhpStorm para cambios más grandes. Tiene sentido tener ambos instalados por estos motivos.
Para desarrollar la base de código de MediaWiki que se encuentra dentro de un contenedor de Docker, puedes establecer una conexión remota a la misma y abrir la carpeta MediaWiki en su interior mediante VSCode o PhpStorm.
Modificar y probar el código
Modifica el código y revisa tus cambios recargando la pestaña MediaWiki de tu navegador. Asegúrate de seguir las Manual:Convenciones de código . Escribe y ejecuta pruebas en tu código para asegurarte de que funciona y está formateado correctamente.
Ten en cuenta que puedes ahorrar tiempo asegurándote de que tus cambios van a ser aceptados antes de invertir tiempo escribiendo pruebas. Crea un parche sin pruebas y pide a alguien que lo revise indicando que añadirás las pruebas después de que lo haya revisado.
Crear un parche
Por último, para poder enviar tu código para que sea revisado y añadido al repositorio al que estás contribuyendo, sigue Gerrit/Tutorial .
Consejos y directrices de comunicación
Sigue estos consejos para comunicar eficazmente y obtener ayuda de otros miembros de la comunidad.
Utiliza eficazmente las tareas de Phabricator
Cuando te plantees trabajar en una tarea de Phabricator :
- No es necesario pedir permiso: Puedes trabajar en tareas no asignadas sin tener que pedir que alguien te las asigne. No hay una autoridad que asigne las tareas ni alguien a quien haya que preguntar en primer lugar.
- Si una tarea ya tiene un parche reciente en Gerrit, elige una tarea diferente en la que trabajar.
- Si un parche existente en Gerrit aún no se ha fusionado y no ha tenido cambios en mucho tiempo, puedes mejorar ese parche que ya existe en función de los comentarios que haya recibido en Gerrit y de la tarea.
- Investiga de antemano: Cuando te plantees trabajar en una tarea, investiga antes de escribir código. Mira el código, trata de entender lo que se supone que tiene que hacer, lee la documentación al respecto y trata de encontrar los lugares donde tienes que cambiar el código.
- En una tarea de Phabricator , utiliza las etiquetas de proyecto en la barra lateral para encontrar el repositorio de código para la tarea.
- Si no tienes ni idea de cómo arreglar el error, trata de encontrar primero una tarea más fácil.
- No hace falta que anuncies tus intenciones antes de empezar a trabajar en una tarea, pero si estás trabajando en una en estos momentos, dilo.
- Cuando empieces a trabajar, asígnate la tarea haciendo clic en Edit Task… en Phabricator, e introduce tu nombre de usuario en Phabricator en el campo Assigned To. Esto comunica a los demás que estás trabajando en ello, para evitar que se duplique el trabajo.
- Cuando cambies tus planes o intereses: Si ya no estás trabajando en una tarea, desasígnatela. Esto les dice a los demás que pueden trabajar en la tarea sin que asuman que vas a seguir con ella.
- Sigue la etiqueta de Phabricator.
- En las tareas de Phabricator, limítate a discutir sobre cuestiones específicas acerca de esa tarea. No utilices Phabricator para plantear preguntas generales, por ejemplo, sobre cómo montar un entorno de desarrollo o cómo solucionar problemas con Gerrit.
Haz buenas preguntas
- No preguntes si puedes preguntar: ¡pregunta!.
- Sé conciso y proporciona contexto: En lugar de preguntar sin más «¿Me pueden dar más información?», «Necesito ayuda» o «Por favor, díganme cómo empezar», incluye la siguiente información en tu pregunta:
- ¿Qué estás tratando de conseguir?
- ¿Qué has intentado hasta ahora? Copia y pega tus comandos y su salida (si no es demasiado larga) en lugar de parafrasear esto en tus propias palabras.
- ¿Qué has descubierto durante tu investigación? Incluye los enlaces al código, la documentación u otros recursos que ya hayas consultado.
- Emplea títulos y líneas de asunto específicos en tu comunicación. «Proyecto de propuesta» o «Necesito ayuda» no son específicos.
- Procura que las conversaciones sean legibles: Cuando respondas en Zulip, en las tareas de Phabricator o en listas de correo, limítate a citar secciones de comentarios anteriores que sean relevantes para tu respuesta. Si citas un comentario anterior completo, hace que los hilos de discusión resulten difíciles de leer.
Sigue las políticas y buenas prácticas de comunicación
Antes de enviar o publicar tu pregunta:
- Lee y sigue el código de conducta para especios técnicos de Wikimedia.
- Utiliza el Lenguaje inclusivo : En lugar de emplear términos que asuman una determinada identidad de género (como «chicos», «señora» o «señor») para llamar a alguien, utiliza el nombre de la persona.
Pregunta en el lugar correcto
- Pregunta en público: No envíes mensajes privados si el tema de tu conversación no es secreto. Los mensajes privados no ayudan a los demás.
- Pregunta y discute en el lugar más adecuado:
- En las tareas de Phabricator, limítate a discutir sobre cuestiones específicas acerca de esa tarea.
- Haz las preguntas generales, por ejemplo, cómo montar un entorno de desarrollo o cómo solucionar problemas con Gerrit, en los lugares indicados en Comunicación .
- Si participas en un programa de difusión, Zulip sirve para responder a preguntas sobre los propios programas de difusión.
Ten paciencia
Después de publicar tu pregunta:
- No solicites una revisión de código en un mensaje separado. La gente recibe notificaciones de Gerrit y Phabricator y responde cuando puede.
- Cuando busques respuestas o comentarios, especialmente durante los fines de semana o los festivos, puede que tengas que esperar a que se reanude el horario laboral. En los canales de chat como IRC: si nadie contesta, inténtalo de nuevo a otra hora, ¡no abandones sin más!
- Si no obtienes una respuesta tras haber esperado con paciencia, plantéate si los canales de comunicación pudieran ser un lugar más adecuado para plantear tu pregunta.
Apéndice
PHP
MediaWiki está escrito en PHP, por lo que necesitarás familiarizarte con PHP para modificar el núcleo de MediaWiki.
- Aprender PHP
-
- Tutorial de PHP — Disponible en muchos idiomas diferentes. Si no posees conocimientos de PHP pero sabes cómo programar en otros lenguajes de programación orientados a objetos, PHP te resultará sencillo de aprender.
- Programación en PHP en Wikilibros.
- PHP en la Wikiversidad.
- Recursos de PHP
-
- El manual de PHP — Disponible en muchos idiomas diferentes.
- Convenciones de código de PHP en la comunidad de MediaWiki.
- Cosas que hay que saber
-
- El script
maintenance/eval.php
de MediaWiki proporciona un intérprete básico de PHP que tiene cargados objetos y clases de MediaWiki. - Además, el script
maintenance/shell.php
en MediaWiki reemplaza el scriptmaintenance/eval.php
basado en PsySH, véase Manual:Shell.php
- El script
Base de datos
Muchas funcionalidades requieren cierta manipulación de la base de datos, por lo que a menudo necesitarás haberte familiarizado con MySQL y MariaDB.
- Aprender MySQL/MariaDB
-
- Tutorial de MySQL — A partir del manual de referencia de MySQL.
- MySQL en Wikilibros.
- Recursos de MySQL/MariaDB
-
- Manuales de referencia de MySQL — Disponible en muchos idiomas diferentes.
- Base de conocimientos de MariaDB
- Convenciones de código de la base de datos en la comunidad de MediaWiki.
- Acceder a la base de datos
- Cosas que hay que saber
-
- Prueba tu código con MySQL/MariaDB.
- En la actualidad, MediaWiki utiliza MySQL y MariaDB como el backend principal de la base de datos. También es compatible con otros SGBD, como PostgreSQL y SQLite. Sin embargo, casi todos los desarrolladores utilizan MySQL/MariaDB y no hacen pruebas con otras bases de datos, que por lo tanto se rompen regularmente. Debido a ello, se recomienda que utilices MySQL/MariaDB al hacer pruebas a menos que estés específicamente tratando de mejorar el soporte para otra BD. En este último caso, ten cuidado de no romper MySQL/MariaDB (o de no escribir consultas que sean horriblemente ineficientes en ellos), porque son lo que todo el mundo utiliza.
- Prueba tu código con MySQL/MariaDB.
JavaScript y CSS
JavaScript y CSS se han vuelto omnipresente en el código del frontend. No es necesario que conozcas JavaScript, jQuery y CSS para poder trabajar en MediaWiki, pero puede que necesites hacerlo dependiendo de la tarea en la que elijas trabajar.
- Aprender JavaScript y CSS
-
- JavaScript y CSS en Wikilibros.
- Primeros pasos con jQuery — Un tutorial de jQuery.
- Aprender JavaScript — referencias y fuentes.
- Recursos de Javascript y CSS
-
- Convenciones de código de JavaScript en la comunidad de MediaWiki.
- Convenciones de código de CSS en la comunidad de MediaWiki.
MediaWiki
La base de código de MediaWiki es grande y algunas partes son feas; no te dejes abrumar por ello. Cuando empieces, trata de escribir funcionalidades o corregir errores que sólo afecten a una pequeña región del código.
- Fundamentos y lecturas obligatorias de MediaWiki
-
- Arquitectura de MediaWiki — Una visión de conjunto de alto nivel de los componentes principales de MediaWiki y de cómo interactúan entre sí.
- Seguridad para desarrolladores — Una visión de conjunto de por qué y cómo escribir código seguro.
- Recursos de MediaWiki
-
- Manual:Code — Una lista de archivos y enlaces importantes a información más detallada.
- Manual:Enganches — Una lista de ganchos (hooks). Si tratas de averiguar qué parte de la base de código hace algo, a menudo un buen lugar para empezar es buscar los ganchos relacionados.
- Manual:Convenciones de código — Una visión de conjunto de las convenciones de código generales en la comunidad de MediaWiki.
- Documentación del código (referencia de clase) — Documentación generada automáticamente a partir del código y los comentarios del código.
- Manual:Cómo depurar — Guía para depurar MediaWiki.
- Manual:Eval.php — Una herramienta para interactuar con objetos de MediaWiki en vivo.
Extensiones MediaWiki
Si eliges trabajar en código de extensiones de MediaWiki, los siguientes enlaces proporcionan más información.
- Fundamentos de las extensiones de MediaWiki
-
- Desarrollar extensiones — Cómo crear una extension para MediaWiki.
- Tutorial para crear extensiones
- Recursos de extensiones de MediaWiki
-
- Buenas prácticas para extensiones
- Una breve introducción al desarrollo de extensiones de MediaWiki — Una presentación en forma de video sobre cómo crear una extensión de MediaWiki (diapositivas).
- Crear una extensión de MediaWiki — Cubre cómo desarrollar una extensión de MediaWiki, buenas prácticas y cómo involucrar a la comunidad de MediaWiki. Desde febrero de 2011.
- Ayuda para desarrolladores de extensiones en Centro de Desarrolladores
Apariencias de MediaWiki
Manual:Cómo hacer una apariencia (skin) de MediaWiki es útil si decides trabajar en apariencias de MediaWiki.
Véase también
- Buscar código entre los distintos repositorios
- Centro de desarrolladores – Cuando hayas leído detenidamente la información de este artículo, es hora de pasar a la información en el centro de desarrolladores.
- Código de conducta
Notas al pie
- ↑ MediaWiki puede ejecutarse en la mayorías de las plataformas que soportan PHP, sin embargo, la falta de algunos programas utilitarios o características del sistema operativo pueden limitar la funcionalidad o rendimiento de MediaWiki en plataformas que no son LAMP.
- ↑ MediaWiki posee soporte para más gestores de bases de datos, incluyendo a PostgreSQL y SQLite.
- ↑ Los desarrolladores son una mezcla de voluntarios y empleados pagados (o contratistas) para diversas organizaciones. Para una lista completa de quién trabaja en el código MediaWiki, lee el artículo Desarrolladores .
- ↑ Navega por el código fuente y las revisiones de los repositorios de código en https://phabricator.wikimedia.org/diffusion/ o descarga el código fuente a tu sistema mediante Gerrit.