Jump to content

Cómo llegar a ser un hacker de MediaWiki

From mediawiki.org
This page is a translated version of the page How to become a MediaWiki hacker and the translation is 100% complete.

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:

  1. 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.
  2. 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.
  3. 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

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

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

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

Un desarrollador corrige un error en una extensión de MediaWiki, lo que incluye investigar el error, publicar los cambios (commit) en Git, la revisar y fusionar el código y cerrar el ticket de Bugzilla (ahora reemplazado por Phabricator ).

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:

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

Colaboradores de MediaWiki trabajando en Bangalore, India.

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
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 script maintenance/eval.php basado en PsySH, véase Manual:Shell.php

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
Recursos de MySQL/MariaDB
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.

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
Recursos de Javascript y CSS

MediaWiki

Introducción a los conceptos fundamentales de 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
Recursos de MediaWiki

Extensiones MediaWiki

Introducción a las extensiones de 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
Recursos de extensiones de MediaWiki

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

Notas al pie

  1. 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.
  2. MediaWiki posee soporte para más gestores de bases de datos, incluyendo a PostgreSQL y SQLite.
  3. 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 .
  4. 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.