MediaWiki es un software wiki libre y de código abierto desarrollado originalmente por Magnus Manske para su uso en Wikipedia el 25 de enero de 2002, y mejorado posteriormente por Lee Daniel Crocker , [5] [6] tras lo cual el desarrollo ha sido coordinado por la Fundación Wikimedia . Impulsa varios sitios web de alojamiento wiki en Internet, así como la mayoría de los sitios web alojados por la Fundación Wikimedia, incluidos Wikipedia, Wiktionary , Wikimedia Commons , Wikiquote , Meta-Wiki y Wikidata , que definen una gran parte de los requisitos establecidos para el software. [7] Además de su uso en sitios Wikimedia, MediaWiki se ha utilizado como un sistema de gestión de conocimiento y gestión de contenido en sitios web como Fandom , wikiHow e instalaciones internas importantes como Intellipedia y Diplopedia .
MediaWiki está escrito en el lenguaje de programación PHP y almacena todo el contenido de texto en una base de datos . El software está optimizado para manejar de manera eficiente proyectos grandes, que pueden tener terabytes de contenido y cientos de miles de vistas por segundo. [7] [8] Debido a que Wikipedia es uno de los sitios web más grandes y más visitados del mundo, lograr escalabilidad a través de múltiples capas de almacenamiento en caché y replicación de bases de datos ha sido una preocupación importante para los desarrolladores. Otro aspecto importante de MediaWiki es su internacionalización; su interfaz está disponible en más de 400 idiomas. [9] El software tiene más de 1000 ajustes de configuración [10] y más de 1800 extensiones disponibles para permitir que se agreguen o cambien varias funciones. [11]
MediaWiki es libre y de código abierto y se distribuye bajo los términos de la Licencia Pública General GNU versión 2 o cualquier versión posterior. Su documentación, ubicada en su sitio web oficial en www.mediawiki.org, se publica bajo la licencia Creative Commons BY-SA 4.0 y en parte es de dominio público . [12] En concreto, los manuales y otros contenidos de MediaWiki.org tienen licencia Creative Commons , mientras que el conjunto de páginas de ayuda destinadas a ser copiadas libremente en nuevas instalaciones de wikis y/o distribuidas con el software de MediaWiki es de dominio público. Esto se hizo para eliminar problemas legales que surgían de la importación de páginas de ayuda en wikis con licencias que son incompatibles con la licencia Creative Commons. [13] El desarrollo de MediaWiki ha favorecido en general el uso de formatos multimedia de código abierto . [14]
MediaWiki tiene una comunidad de voluntarios activa para el desarrollo y mantenimiento. Los usuarios que han hecho contribuciones significativas al proyecto enviando parches generalmente reciben, previa solicitud, acceso para enviar revisiones al repositorio Git / Gerrit del proyecto . [15] También hay programadores pagos que desarrollan principalmente proyectos para la Fundación Wikimedia . Los desarrolladores de MediaWiki participan en el Google Summer of Code facilitando la asignación de mentores a los estudiantes que desean trabajar en proyectos de extensión y núcleo de MediaWiki. [16] Durante el año anterior a noviembre de 2012, hubo alrededor de doscientos desarrolladores que habían enviado cambios al núcleo o extensiones de MediaWiki. [17] Las versiones principales de MediaWiki se generan aproximadamente cada seis meses tomando instantáneas de la rama de desarrollo, que se mantiene continuamente en un estado ejecutable; [18] las versiones menores , o versiones puntuales , se emiten según sea necesario para corregir errores (especialmente problemas de seguridad). MediaWiki se desarrolla en un modelo de desarrollo de integración continua , en el que los cambios de software se envían en vivo a los sitios de Wikimedia de forma regular. [18] MediaWiki también tiene un sistema de seguimiento de errores público , phabricator.wikimedia.org , que ejecuta Phabricator . El sitio también se utiliza para solicitudes de mejoras y funciones .
Cuando Wikipedia se lanzó en enero de 2001, se ejecutaba en un sistema de software wiki existente, UseModWiki . UseModWiki está escrito en el lenguaje de programación Perl y almacena todas las páginas wiki en archivos de texto ( .txt ). Este software pronto demostró ser limitado, tanto en funcionalidad como en rendimiento. A mediados de 2001, Magnus Manske , un desarrollador y estudiante de la Universidad de Colonia , así como editor de Wikipedia , comenzó a trabajar en un nuevo software que reemplazaría a UseModWiki, diseñado específicamente para su uso por Wikipedia. Este software estaba escrito en el lenguaje de programación PHP y almacenaba toda su información en una base de datos MySQL . El nuevo software se desarrolló en gran parte el 24 de agosto de 2001, y poco después se estableció un wiki de prueba para él.
La primera implementación completa de este software fue la nueva Meta Wikipedia el 9 de noviembre de 2001. Existía el deseo de implementarlo inmediatamente en la Wikipedia en inglés. [19] Sin embargo, Manske estaba preocupado por cualquier error potencial que dañara el sitio web naciente durante el período de los exámenes finales que tenía que completar inmediatamente antes de Navidad; [20] esto llevó a que el lanzamiento en la Wikipedia en inglés se retrasara hasta el 25 de enero de 2002. Luego, el software se implementó gradualmente en todos los sitios de Wikipedia en otros idiomas de ese momento. Este software se denominó "el script PHP" y como "fase II", con el nombre de "fase I", dado retroactivamente al uso de UseModWiki.
El aumento del uso pronto provocó que volvieran a surgir problemas de carga y, poco después, comenzó otra reescritura del software, esta vez a cargo de Lee Daniel Crocker , que se conoció como "fase III". Este nuevo software también estaba escrito en PHP, con un backend MySQL, y conservaba la interfaz básica del software de la fase II, pero con la funcionalidad añadida de una mayor escalabilidad . El software de la "fase III" se puso en marcha en Wikipedia en julio de 2002.
La Fundación Wikimedia se anunció el 20 de junio de 2003. En julio, el colaborador de Wikipedia Daniel Mayer sugirió el nombre "MediaWiki" para el software, como un juego de palabras con "Wikimedia". [21] El nombre MediaWiki se introdujo gradualmente a partir de agosto de 2003. El nombre ha causado confusión con frecuencia debido a su similitud (intencionada) con el nombre "Wikimedia" (que en sí es similar a "Wikipedia"). [22]
El antiguo logotipo del producto fue creado por Erik Möller , utilizando una fotografía de flores tomada por Florence Nibart-Devouard , y fue presentado originalmente al concurso de logotipos para un nuevo logotipo de Wikipedia, celebrado del 20 de julio al 27 de agosto de 2003. [23] [24] El logotipo quedó en tercer lugar y fue elegido para representar a MediaWiki en lugar de Wikipedia, y el logotipo del segundo lugar se utilizó para la Fundación Wikimedia. [25] Los corchetes dobles ( [[ ]] ) simbolizan la sintaxis que utiliza MediaWiki para crear hipervínculos a otras páginas wiki; mientras que el girasol representa la diversidad de contenido en Wikipedia, su crecimiento constante y la naturaleza salvaje. [26]
Más tarde,Brooke Vibber , directora técnica de la Fundación Wikimedia , [27] asumió el papel de gerente de lanzamiento . [28] [29]
Los principales hitos en el desarrollo de MediaWiki incluyen: el sistema de categorización (2004); funciones de análisis sintáctico (2006); Flagged Revisions (2008); [30] el " ResourceLoader ", un sistema de entrega para CSS y JavaScript (2011); [31] y el VisualEditor , una plataforma de edición "lo que ves es lo que obtienes" ( WYSIWYG ) (2013). [32]
El concurso para diseñar un nuevo logotipo se inició el 22 de junio de 2020, ya que el antiguo logotipo era una imagen de mapa de bits y tenía "altos detalles", lo que generaba problemas al renderizar en resoluciones altas y bajas, respectivamente. Después de dos rondas de votación, el nuevo y actual logotipo de MediaWiki diseñado por Serhio Magpie fue seleccionado el 24 de octubre de 2020 y adoptado oficialmente el 1 de abril de 2021. [33]
La primera versión de MediaWiki, 1.1, se lanzó en diciembre de 2003.
El uso más famoso de MediaWiki ha sido en Wikipedia y, en menor grado, en otros proyectos de la Fundación Wikimedia. Fandom , un servicio de alojamiento wiki anteriormente conocido como Wikia, se ejecuta en MediaWiki. Otros wikis públicos que se ejecutan en MediaWiki incluyen wikiHow y SNPedia . WikiLeaks comenzó como un sitio basado en MediaWiki, pero ya no es un wiki.
En MediaWiki se ejecutan varias enciclopedias wiki alternativas a Wikipedia, incluidas Citizendium , Metapedia , Scholarpedia y Conservapedia . MediaWiki también lo utilizan internamente un gran número de empresas, incluidas Novell e Intel . [34] [35]
Entre los usos más destacados de MediaWiki en el ámbito gubernamental se encuentran Intellipedia , utilizada por la Comunidad de Inteligencia de los Estados Unidos , Diplopedia , utilizada por el Departamento de Estado de los Estados Unidos , y milWiki, una parte de milSuite utilizada por el Departamento de Defensa de los Estados Unidos . Las agencias de las Naciones Unidas , como el Programa de las Naciones Unidas para el Desarrollo y el INSTRAW, decidieron implementar sus wikis utilizando MediaWiki, porque "este software ejecuta Wikipedia y, por lo tanto, está garantizado que se probará exhaustivamente, seguirá desarrollándose en el futuro y los futuros técnicos de estos wikis tendrán más probabilidades de estar expuestos a MediaWiki que a cualquier otro software wiki". [36]
La Free Software Foundation utiliza MediaWiki para implementar el sitio LibrePlanet . [37]
MediaWiki proporciona un amplio conjunto de funciones básicas y un mecanismo para adjuntar extensiones para proporcionar funcionalidad adicional.
Debido al gran énfasis en el multilingüismo en los proyectos Wikimedia, la internacionalización y la localización han recibido una atención significativa por parte de los desarrolladores. La interfaz de usuario ha sido traducida total o parcialmente a más de 400 idiomas en translatewiki.net [ 9] y los administradores del sitio pueden personalizarla aún más (toda la interfaz se puede editar a través de la wiki).
Varias extensiones, especialmente las recopiladas en el paquete de extensiones de idiomas de MediaWiki, están diseñadas para mejorar aún más el multilingüismo y la internacionalización de MediaWiki.
La instalación de MediaWiki requiere que el usuario tenga privilegios administrativos en un servidor que ejecute tanto PHP como un tipo compatible de base de datos SQL. Algunos usuarios consideran que configurar un host virtual es útil si la mayor parte del sitio se ejecuta en un marco (como Zope o Ruby on Rails ) que es en gran medida incompatible con MediaWiki. [38] El alojamiento en la nube puede eliminar la necesidad de implementar un nuevo servidor. [39]
Se accede a un script PHP de instalación a través de un navegador web para inicializar la configuración del wiki. Solicita al usuario un conjunto mínimo de parámetros necesarios, dejando que los cambios posteriores, como habilitar las cargas, [40] agregar un logotipo del sitio, [41] e instalar extensiones, se realicen modificando los ajustes de configuración contenidos en un archivo llamado LocalSettings.php
. [42] Algunos aspectos de MediaWiki se pueden configurar a través de páginas especiales o editando ciertas páginas; por ejemplo, los filtros de abuso se pueden configurar a través de una página especial, [43] y se pueden agregar ciertos gadgets creando páginas JavaScript en el espacio de nombres MediaWiki. [44] La comunidad MediaWiki publica una guía de instalación completa. [45]
Una de las primeras diferencias entre MediaWiki (y su predecesor, UseModWiki ) y otros motores wiki fue el uso de " enlaces libres " en lugar de CamelCase . Cuando se creó MediaWiki, era habitual que los wikis requirieran texto como "WorldWideWeb" para crear un enlace a una página sobre la World Wide Web ; los enlaces en MediaWiki, por otro lado, se crean rodeando las palabras con corchetes dobles y los espacios entre ellas se dejan intactos, por ejemplo [[World Wide Web]]
. Este cambio fue lógico para el propósito de crear una enciclopedia, donde la precisión en los títulos es importante.
MediaWiki utiliza un código wiki ligero y extensible [46] diseñado para ser más fácil de usar y aprender que HTML . Existen herramientas para convertir contenido, como tablas, entre el código MediaWiki y HTML. [47] Se han hecho esfuerzos para crear una especificación de código MediaWiki, pero parece que se ha llegado a un consenso sobre que Wikicode requiere reglas gramaticales sensibles al contexto . [48] [49] La siguiente comparación lado a lado ilustra las diferencias entre el código wiki y HTML:
(Cita anterior de Las aventuras de Alicia en el país de las maravillas de Lewis Carroll )
Las herramientas de edición de páginas predeterminadas de MediaWiki han sido descritas como algo difíciles de aprender. [50] Una encuesta de estudiantes a los que se les asignó utilizar un wiki basado en MediaWiki descubrió que cuando se les hizo una pregunta abierta sobre los principales problemas con el wiki, el 24% mencionó problemas técnicos con el formato, por ejemplo, "No pude entender cómo introducir una imagen. No puedo entender cómo mostrar un enlace con palabras; inserta un número". [51]
Para facilitar la edición de páginas largas, MediaWiki permite editar una subsección de una página (identificada por su encabezado). Un usuario registrado también puede indicar si una edición es menor o no. Corregir la ortografía, la gramática o la puntuación son ejemplos de ediciones menores, mientras que agregar párrafos de texto nuevo es un ejemplo de una edición no menor.
A veces, mientras un usuario está editando, un segundo usuario guarda una edición en la misma parte de la página. Luego, cuando el primer usuario intenta guardar la página, se produce un conflicto de edición . El segundo usuario tiene la oportunidad de fusionar su contenido en la página tal como existe ahora después de que el primer usuario guardó la página.
La interfaz de usuario de MediaWiki ha sido traducida a muchos idiomas diferentes. También se puede configurar un idioma para el contenido wiki, que se enviará en el encabezado HTTP "Content-Language" y en el atributo HTML "lang" .
MediaWiki tiene una API web extensible ( interfaz de programación de aplicaciones ) que proporciona acceso directo y de alto nivel a los datos contenidos en las bases de datos de MediaWiki. Los programas cliente pueden usar la API para iniciar sesión, obtener datos y publicar cambios. La API admite clientes JavaScript basados en web delgados y aplicaciones de usuario final (como herramientas de lucha contra el vandalismo). Se puede acceder a la API desde el backend de otro sitio web. [52] Una extensa biblioteca de bots de Python , Pywikibot , [53] y una popular herramienta semiautomatizada llamada AutoWikiBrowser , también interactúan con la API. [54] Se accede a la API a través de URL como . En este caso, la consulta solicitaría a Wikipedia información relacionada con las últimas 10 ediciones del sitio. Una de las ventajas percibidas de la API es su independencia del lenguaje; escucha las conexiones HTTP de los clientes y puede enviar una respuesta en una variedad de formatos, como XML , PHP serializado o JSON . [55] Se ha desarrollado un código de cliente para proporcionar capas de abstracción a la API. [56]https://en.wikipedia.org/w/api.php?action=query&list=recentchanges
MediaWiki admite contenido enriquecido generado mediante sintaxis especializada. Por ejemplo, el software incluye compatibilidad opcional para la representación de fórmulas matemáticas mediante LaTeX y un analizador especial escrito en OCaml . Se encuentran disponibles funciones similares para otros contenidos, desde líneas de tiempo gráficas hasta gráficos matemáticos y partituras musicales y jeroglíficos egipcios , mediante extensiones.
El software se ha vuelto más potente para manejar una amplia variedad de archivos multimedia cargados. Su funcionalidad más completa se encuentra en el área de imágenes, donde se pueden generar galerías de imágenes y miniaturas con relativa facilidad. También hay soporte para metadatos Exif . El uso de MediaWiki para operar Wikimedia Commons , uno de los archivos multimedia de contenido libre más grandes , ha impulsado la necesidad de una mayor funcionalidad en esta área.
Para la edición WYSIWYG, VisualEditor está disponible para su uso en MediaWiki, lo que simplifica el proceso de edición para los editores y se incluye desde MediaWiki 1.35. [57] Existen otras extensiones para gestionar la edición WYSIWYG en diferentes grados. [58]
Entre las características de MediaWiki para ayudar a rastrear ediciones se encuentra una función de Cambios recientes que proporciona una lista de ediciones recientes en el wiki. Esta lista contiene información básica sobre esas ediciones, como el usuario que editó, el resumen de la edición, la página editada, así como cualquier etiqueta (por ejemplo, "posible vandalismo ") [59] agregada por filtros de abuso personalizables y otras extensiones para ayudar a combatir ediciones inútiles. [60] En wikis más activos, se producen tantas ediciones que es difícil rastrear los Cambios recientes manualmente. A veces se utiliza software antivandálico, incluidas herramientas asistidas por el usuario, [61] en tales wikis para procesar los elementos de Cambios recientes. La carga del servidor se puede reducir enviando un feed continuo de Cambios recientes a un canal IRC que estas herramientas pueden monitorear, eliminando su necesidad de enviar solicitudes para un feed de Cambios recientes actualizado a la API. [62] [63]
Otra herramienta importante es la lista de seguimiento. Cada usuario conectado tiene una lista de seguimiento a la que puede añadir las páginas que desee. Cuando se realiza una edición en una de esas páginas, aparece un resumen de esa edición en la lista de seguimiento la próxima vez que se actualiza. [64] Al igual que con la página de cambios recientes, las ediciones recientes que aparecen en la lista de seguimiento contienen enlaces en los que se puede hacer clic para revisar fácilmente el historial del artículo y los cambios específicos realizados.
También existe la posibilidad de revisar todas las ediciones realizadas por un usuario en particular. De esta manera, si se identifica una edición como problemática, es posible verificar las demás ediciones del usuario para ver si hay problemas.
MediaWiki permite crear vínculos a versiones específicas de los artículos, lo que ha resultado útil para la comunidad científica, ya que revisores expertos pueden analizar los artículos, mejorarlos y proporcionar vínculos a la versión confiable de ese artículo. [65]
La navegación a través del wiki se realiza en gran medida a través de enlaces wiki internos. Los enlaces wiki de MediaWiki implementan la detección de existencia de páginas, en la que un enlace se colorea de azul si la página de destino existe en el wiki local y de rojo si no existe. Si un usuario hace clic en un enlace rojo, se le solicita que cree un artículo con ese título. La detección de existencia de páginas hace que sea práctico para los usuarios crear artículos "wikificados" (es decir, artículos que contienen enlaces a otros temas pertinentes) sin que esos otros artículos aún existan.
Los enlaces interwiki funcionan de forma muy similar a los espacios de nombres. Se puede configurar un conjunto de prefijos interwiki para que, por ejemplo, el título de una página wikiquote:Jimbo Wales
dirija al usuario al artículo de Jimbo Wales en Wikiquote . [66] A diferencia de los enlaces wiki internos, los enlaces interwiki carecen de la función de detección de existencia de páginas y, en consecuencia, no hay forma de saber si un enlace interwiki azul está roto o no.
Los enlaces interlingüísticos son pequeños enlaces de navegación que aparecen en la barra lateral de la mayoría de los aspectos de MediaWiki y que conectan un artículo con artículos relacionados en otros idiomas dentro de la misma familia Wiki. Esto puede proporcionar comunidades específicas de un idioma conectadas por un contexto más amplio, con todos los wikis en el mismo servidor o cada uno en su propio servidor. [67]
Anteriormente, Wikipedia utilizaba enlaces interlingüísticos para vincular un artículo con otros artículos sobre el mismo tema en otras ediciones de Wikipedia. Esto fue reemplazado por el lanzamiento de Wikidata. [68]
Las pestañas de página se muestran en la parte superior de las páginas. Estas pestañas permiten a los usuarios realizar acciones o ver páginas relacionadas con la página actual. Las acciones predeterminadas disponibles incluyen ver, editar y discutir la página actual. Las pestañas específicas que se muestran dependen de si el usuario ha iniciado sesión en el wiki y de si tiene privilegios de administrador en el wiki. Por ejemplo, la capacidad de mover una página o agregarla a la lista de seguimiento suele estar restringida a los usuarios que han iniciado sesión. El administrador del sitio puede agregar o eliminar pestañas mediante JavaScript o instalando extensiones. [69]
Cada página tiene asociada una página de historial desde la que el usuario puede acceder a todas las versiones de la página que hayan existido y generar diferencias entre dos versiones de su elección. Las contribuciones de los usuarios no sólo se muestran aquí, sino también a través de una opción de "contribuciones de los usuarios" en una barra lateral. En un artículo de 2004, Carl Challborn y Teresa Reimann señalaron que "si bien esta característica puede ser una ligera desviación del espíritu colaborativo y "sin ego" de los puristas de las wikis, puede ser muy útil para los educadores que necesitan evaluar la contribución y la participación de los usuarios individuales de los estudiantes". [70]
MediaWiki ofrece muchas funciones más allá de los hipervínculos para estructurar el contenido. Una de las primeras funciones de este tipo son los espacios de nombres . Uno de los primeros problemas de Wikipedia había sido la separación del contenido enciclopédico de las páginas relacionadas con el mantenimiento y la discusión comunitaria, así como las páginas personales sobre los editores de enciclopedias. Los espacios de nombres son prefijos antes del título de una página (como " User:
" o " Talk:
") que sirven como descriptores para el propósito de la página y permiten que existan múltiples páginas con diferentes funciones bajo el mismo título. Por ejemplo, una página titulada " [[The Terminator]]
", en el espacio de nombres predeterminado, podría describir la película de 1984 protagonizada por Arnold Schwarzenegger , mientras que una página titulada " [[User:The Terminator]]
" podría ser un perfil que describa a un usuario que elige este nombre como seudónimo. Más comúnmente, cada espacio de nombres tiene un Talk:
espacio de nombres " " asociado, que puede usarse para discutir su contenido, como " User talk:
" o " Template talk:
". El propósito de tener páginas de discusión es permitir que el contenido se separe de la discusión que rodea al contenido. [71] [72]
Los espacios de nombres pueden verse como carpetas que separan diferentes tipos básicos de información o funcionalidad. Los administradores del sitio pueden agregar espacios de nombres personalizados. Hay 16 espacios de nombres predeterminados para el contenido, con 2 "pseudo-espacios de nombres" utilizados para Special:
páginas " " generadas dinámicamente y enlaces a archivos multimedia. Cada espacio de nombres en MediaWiki está numerado: los espacios de nombres de las páginas de contenido tienen números pares y sus espacios de nombres de páginas de discusión asociadas tienen números impares. [73]
Los usuarios pueden crear nuevas categorías y añadir páginas y archivos a esas categorías añadiendo una o más etiquetas de categoría al texto del contenido. Al añadir estas etiquetas se crean enlaces en la parte inferior de la página que llevan al lector a la lista de todas las páginas de esa categoría, lo que facilita la búsqueda de artículos relacionados. [74] El uso de la categorización para organizar el contenido se ha descrito como una combinación de:
Además de los espacios de nombres, el contenido se puede ordenar mediante subpáginas . Esta sencilla función proporciona rutas de navegación automáticas del patrón [[Page title/Subpage title]]
desde la página después de la barra (en este caso, "Título de la subpágina") hasta la página antes de la barra (en este caso, "Título de la página").
Si la función está habilitada, los usuarios pueden personalizar sus hojas de estilo y configurar JavaScript del lado del cliente para que se ejecute con cada vista de página. En Wikipedia, esto ha dado lugar a una gran cantidad de herramientas y ayudantes adicionales desarrollados a través de la wiki y compartidos entre los usuarios. Por ejemplo, las ventanas emergentes de navegación son una herramienta JavaScript personalizada que muestra vistas previas de los artículos cuando el usuario pasa el cursor sobre los enlaces y también proporciona accesos directos para tareas de mantenimiento comunes. [76]
Toda la interfaz de usuario de MediaWiki puede ser editada a través de la propia wiki por los usuarios con los permisos necesarios (normalmente llamados "administradores"). Esto se hace a través de un espacio de nombres especial con el prefijo "MediaWiki:", donde cada título de página identifica un mensaje particular de la interfaz de usuario. Mediante una extensión, [77] un usuario también puede crear scripts personales y elegir si se le deben aplicar determinados scripts de todo el sitio activando las opciones adecuadas en la página de preferencias del usuario.
El espacio de nombres "MediaWiki:" también se utilizó originalmente para crear bloques de texto personalizados que luego se podían cargar dinámicamente en otras páginas mediante una sintaxis especial. Este contenido se trasladó más tarde a su propio espacio de nombres, "Template:".
Las plantillas son bloques de texto que se pueden cargar dinámicamente dentro de otra página cuando se solicita esa página. La plantilla es un enlace especial entre llaves dobles (por ejemplo, " {{Disputed|date=October 2018}}
"), que llama a la plantilla (que en este caso se encuentra en Template:Disputed ) para que se cargue en lugar de la llamada a la plantilla.
Las plantillas son documentos estructurados que contienen pares atributo-valor . Se definen con parámetros , a los que se les asignan valores cuando se incluyen en la página de un artículo. El nombre del parámetro se separa del valor mediante un signo igual . En Wikipedia se utiliza una clase de plantillas conocidas como infoboxes para recopilar y presentar un subconjunto de información sobre su tema, normalmente en la parte superior (vista móvil) o en la esquina superior derecha (vista de escritorio) del documento.
Un método relacionado, llamado sustitución de plantilla (que se llama agregando subst:
al comienzo de un enlace de plantilla), inserta el contenido de la plantilla en la página de destino (como una operación de copiar y pegar ), en lugar de cargar el contenido de la plantilla dinámicamente cada vez que se carga la página. Esto puede generar inconsistencias al usar plantillas, pero puede ser útil en ciertos casos y, en la mayoría de los casos, requiere menos recursos del servidor (la cantidad real de ahorro puede variar según la configuración de la wiki y la complejidad de la plantilla).
Las plantillas han encontrado muchos usos diferentes. Las plantillas permiten a los usuarios crear diseños de tablas complejos que se utilizan de forma consistente en varias páginas, y donde solo se inserta el contenido de las tablas mediante parámetros de plantilla. Las plantillas se utilizan con frecuencia para identificar problemas con un artículo de Wikipedia colocando una plantilla en el artículo. Esta plantilla luego genera un cuadro gráfico que indica que el contenido del artículo está en disputa o necesita alguna otra atención, y también lo clasifica para que se puedan localizar los artículos de esta naturaleza. Las plantillas también se utilizan en las páginas de usuario para enviarles mensajes estándar de bienvenida al sitio, [78] dándoles premios por contribuciones sobresalientes, [79] [80] advirtiéndoles cuando su comportamiento se considera inapropiado, [81] notificándoles cuando se les bloquea la edición, [82] y así sucesivamente.
MediaWiki ofrece flexibilidad para crear y definir grupos de usuarios. Por ejemplo, sería posible crear un grupo "ninja" arbitrario que pueda bloquear usuarios y eliminar páginas, y cuyas modificaciones se oculten por defecto en el registro de cambios recientes. También es posible crear un grupo de usuarios "autoconfirmados" del que uno se convierte en miembro después de realizar una cierta cantidad de modificaciones y esperar una cierta cantidad de días. [83] Algunos grupos que están habilitados por defecto son los burócratas y los operadores de sistemas. Los burócratas tienen el poder de cambiar los derechos de otros usuarios. Los operadores de sistemas tienen poder sobre la protección y eliminación de páginas y el bloqueo de usuarios para que no editen. Los controles disponibles de MediaWiki sobre los derechos de edición se han considerado suficientes para publicar y mantener documentos importantes como un manual de procedimientos operativos estándar en un hospital. [84]
Cuando una página consta únicamente de contenido inútil, existen varias formas de eliminar dicho contenido. La forma más sencilla, disponible para todos los usuarios, es simplemente dejar la página en blanco. Sin embargo, esto interfiere con la detección de existencia de la página, a menos que se instale una extensión para tratar las páginas en blanco como si no existieran. [85] La eliminación también deja el contenido accesible a través de la página de historial, un resultado que, si bien aumenta potencialmente la transparencia al permitir que los no administradores revisen fácilmente la decisión de eliminación de contenido para determinar si es apropiada, podría ser inaceptable o incluso ilegal [86] en algunos casos. Otra opción es que un administrador elimine la página y, de ese modo, impida que la vean los no administradores. Un grupo (por ejemplo, "Supervisores") puede utilizar otro nivel de eliminación, llamado RevisionDelete, para evitar que una página sea vista por personas que no sean miembros de ese grupo. [87] También es posible, utilizando ciertas extensiones, impedir que un contenido sea visto a través de cualquiera de los canales normales del wiki, [88] o incluso eliminar completamente revisiones de la base de datos. [89]
MediaWiki viene con un conjunto básico de características relacionadas con la restricción de acceso, pero su diseño original y actual está impulsado por funciones que se relacionan en gran medida con el contenido, no con la segregación de contenido. Como resultado, con excepciones mínimas (relacionadas con herramientas específicas y sus páginas "Especiales" relacionadas), el control de acceso a la página nunca ha sido una alta prioridad en el desarrollo principal y los desarrolladores han declarado que los usuarios que requieren acceso seguro de usuario y controles de autorización no deberían confiar en MediaWiki, ya que nunca fue diseñado para este tipo de situaciones. Por ejemplo, es extremadamente difícil crear un wiki donde solo ciertos usuarios puedan leer y acceder a algunas páginas. [90] Aquí, los motores wiki como Foswiki , MoinMoin y Confluence brindan más flexibilidad al admitir mecanismos de seguridad avanzados como listas de control de acceso .
El código base de MediaWiki contiene varios ganchos que utilizan funciones de devolución de llamada para agregar código PHP adicional de manera extensible . Esto permite a los desarrolladores escribir extensiones sin necesidad de modificar necesariamente el núcleo o enviar su código para su revisión. La instalación de una extensión generalmente consiste en agregar una línea al archivo de configuración, aunque en algunos casos se requieren cambios adicionales, como actualizaciones de la base de datos o parches del núcleo.
Se crearon cinco puntos de extensión principales para permitir a los desarrolladores agregar características y funcionalidades a MediaWiki. Los ganchos se ejecutan cada vez que ocurre un determinado evento; por ejemplo, el ArticleSaveComplete
gancho se ejecuta después de que se haya procesado una solicitud para guardar un artículo. [91] Esto se puede utilizar, por ejemplo, mediante una extensión que notifique a los usuarios seleccionados cada vez que se produce una edición de página en el wiki por parte de usuarios nuevos o anónimos. [92] Se pueden crear nuevas etiquetas para procesar datos con etiquetas de apertura y cierre ( <newtag>...</newtag>
). [93] Se pueden utilizar funciones de analizador para crear un nuevo comando ( {{#if:...|...|...}}
). [94] Se pueden crear nuevas páginas especiales para realizar una función específica. Estas páginas se generan dinámicamente. Por ejemplo, una página especial puede mostrar todas las páginas que tienen uno o más enlaces a un sitio externo o puede crear un formulario que proporcione comentarios enviados por el usuario. [95] Las máscaras permiten a los usuarios personalizar la apariencia de MediaWiki. [96] Un punto de extensión menor permite el uso de Amazon S3 para alojar archivos de imagen. [97]
MediaWiki puede hacerse más avanzado y útil para diversos fines mediante sus extensiones. Estas extensiones varían enormemente en complejidad.
La Fundación Wikimedia opera un servidor Git donde muchas extensiones alojan su repositorio. La mayoría de ellas también tienen una página de documentación en el sitio web MediaWiki.
La revisión del código de MediaWiki se ha facilitado históricamente a través de una extensión de MediaWiki. [98] A partir de marzo de 2012, se ha realizado a través de Gerrit .
Desde la versión 1.16, MediaWiki utiliza la biblioteca jQuery . [99]
Entre las extensiones más populares se encuentra una extensión de función de analizador, ParserFunctions, que permite representar diferentes contenidos en función del resultado de declaraciones condicionales . [100] Estas declaraciones condicionales pueden realizar funciones como evaluar si un parámetro está vacío, comparar cadenas, evaluar expresiones matemáticas y devolver uno de dos valores dependiendo de si existe una página. Fue diseñada como reemplazo de una plantilla notoriamente ineficiente llamada {{Qif}}. [101] Schindler relata la historia de la extensión ParserFunctions de la siguiente manera: [30]
En 2006, algunos wikipedistas descubrieron que mediante una interacción intrincada y complicada de características de plantillas y CSS podían crear texto wiki condicional, es decir, texto que se mostraba si un parámetro de plantilla tenía un valor específico. Esto incluía llamadas repetidas de plantillas dentro de plantillas, lo que ralentizaba el rendimiento de todo el sistema. Los desarrolladores se enfrentaron a la elección de no permitir la difusión de una característica obviamente deseada detectando dicho uso y desactivándolo explícitamente dentro del software u ofrecer una alternativa eficiente. Esto último fue realizado por Tim Starling, quien anunció la introducción de funciones de análisis, texto wiki que llama a funciones implementadas en el software subyacente. Al principio, solo se implementaron texto condicional y el cálculo de expresiones matemáticas simples, pero esto ya aumentó enormemente las posibilidades para los editores wiki. Con el tiempo, se introdujeron más funciones de análisis, lo que finalmente condujo a un marco que permitió la escritura simple de funciones de extensión para agregar funcionalidades arbitrarias, como por ejemplo servicios de geocodificación o widgets. Esta vez, los desarrolladores reaccionaron claramente a la demanda de la comunidad, viéndose obligados a luchar contra la solución del problema que tenía la comunidad (es decir, el texto condicional) u ofrecer una implementación técnica mejorada para reemplazar la práctica anterior y lograr un mejor rendimiento general.
Otra extensión de funciones de análisis, StringFunctions, fue desarrollada para permitir la evaluación de la longitud de la cadena, la posición de la cadena, etc. Las comunidades de Wikimedia, que habían creado soluciones alternativas complicadas para lograr la misma funcionalidad, [102] clamaron para que se habilitara en sus proyectos. [103] Gran parte de su funcionalidad fue finalmente integrada en la extensión ParserFunctions, [104] aunque deshabilitada por defecto y acompañada por una advertencia de Tim Starling de que habilitar las funciones de cadena permitiría a los usuarios "implementar sus propios analizadores en el lenguaje de programación más feo e ineficiente conocido por el hombre: el wikitexto de MediaWiki con ParserFunctions". [105]
Desde 2012 existe una extensión, Scribunto, que permite la creación de "módulos" (páginas wiki escritas en el lenguaje de programación Lua ) que luego se pueden ejecutar dentro de plantillas y páginas wiki estándar. Scribunto se ha instalado en Wikipedia y otros sitios de Wikimedia desde 2013 y se utiliza mucho en esos sitios. El código de Scribunto se ejecuta significativamente más rápido que el código wikitexto correspondiente utilizando ParserFunctions. [106]
Otra extensión muy popular es una extensión de citas que permite agregar notas a pie de página a las páginas mediante referencias en línea. [107] Sin embargo, esta extensión ha sido criticada por ser difícil de usar y requerir que el usuario memorice una sintaxis compleja. Un gadget llamado RefToolbar intenta facilitar la creación de citas utilizando plantillas comunes. MediaWiki tiene algunas extensiones que son adecuadas para el ámbito académico, como extensiones de matemáticas [108] y una extensión que permite representar moléculas en 3D . [109]
Existe una extensión genérica de Widgets que permite que MediaWiki se integre con prácticamente cualquier cosa. Otros ejemplos de extensiones que podrían mejorar un wiki son las extensiones de sugerencias de categorías [110] y las extensiones para la inclusión de vídeos Flash , [111] vídeos de YouTube, [112] y feeds RSS . [113] Metavid , un sitio que archiva secuencias de vídeo de los procedimientos del Senado y la Cámara de Representantes de EE. UU ., se creó utilizando código que extendía MediaWiki al dominio de la creación de vídeos colaborativos. [114]
Hay muchos robots de spam que buscan en la web instalaciones de MediaWiki y les añaden linkspam , a pesar del hecho de que MediaWiki utiliza el atributo nofollow para desalentar tales intentos de optimización de motores de búsqueda . [115] Parte del problema es que los republicadores de terceros, como los espejos , pueden no implementar de forma independiente la etiqueta nofollow en sus sitios web, por lo que los vendedores aún pueden obtener beneficios de PageRank insertando enlaces en páginas cuando esas entradas aparecen en sitios web de terceros. [116] Se han desarrollado extensiones antispam para combatir el problema introduciendo CAPTCHAs , [117] poniendo en la lista negra ciertas URL, [118] y permitiendo la eliminación masiva de páginas agregadas recientemente por un usuario en particular. [119]
MediaWiki viene preinstalado con un motor de búsqueda basado en texto estándar. Existen extensiones que permiten a MediaWiki utilizar motores de búsqueda de terceros más sofisticados, entre ellos Elasticsearch (que desde 2014 se utiliza en Wikipedia), Lucene [120] y Sphinx [121] .
También se han creado varias extensiones de MediaWiki para permitir una búsqueda más compleja y por facetas , tanto en los datos ingresados dentro del wiki como en los metadatos , como el historial de revisiones de las páginas. [122] [123] Semantic MediaWiki es una de esas extensiones. [124] [125]
MediaWiki puede utilizar el sistema de gestión de bases de datos relacionales MySQL / MariaDB , PostgreSQL o SQLite . El soporte para Oracle Database y Microsoft SQL Server ha sido abandonado desde MediaWiki 1.34. [126] Una base de datos MediaWiki contiene varias docenas de tablas , incluyendo una tabla que contiene títulos de páginas, identificadores de páginas y otros metadatos; [127] y una tabla a la que se agrega una nueva fila cada vez que se realiza una edición, que contiene el identificador de la página, un breve resumen textual del cambio realizado, el nombre de usuario del editor del artículo (o su dirección IP en el caso de un usuario no registrado) y una marca de tiempo. [128] [129]page
revision
En un período de 4 años y medio antes de 2008, la base de datos MediaWiki tenía 170 versiones de esquema . [130] Posiblemente el cambio de esquema más grande se realizó en 2005 con MediaWiki 1.5, cuando el almacenamiento de metadatos se separó del de contenido, para mejorar la flexibilidad de rendimiento. Cuando se aplicó esta actualización a Wikipedia, el sitio se bloqueó para edición y el esquema se convirtió a la nueva versión en aproximadamente 22 horas. Algunas propuestas de mejora de software, como una propuesta para permitir que secciones de artículos se vean a través de una lista de seguimiento, han sido rechazadas porque los cambios de esquema necesarios habrían requerido un tiempo de inactividad excesivo de Wikipedia. [131]
Debido a que se utiliza para ejecutar uno de los sitios con mayor tráfico en la Web, Wikipedia, el rendimiento y la escalabilidad de MediaWiki se han optimizado en gran medida. [29] MediaWiki admite Squid , replicación de base de datos con equilibrio de carga , almacenamiento en caché del lado del cliente, almacenamiento en caché basado en tablas o memcached para el procesamiento de resultados de consultas a los que se accede con frecuencia, un caché de archivos estáticos simple, operación con características reducidas, compresión de revisiones y una cola de trabajos para operaciones de base de datos. Los desarrolladores de MediaWiki han intentado optimizar el software evitando algoritmos costosos, consultas de base de datos, etc., almacenando en caché cada resultado que sea costoso y tenga una localidad temporal de referencia, y centrándose en los puntos críticos en el código a través de la creación de perfiles . [132]
El código de MediaWiki está diseñado para permitir que los datos se escriban en una base de datos de lectura y escritura y se lean desde bases de datos de solo lectura, aunque la base de datos de lectura y escritura se puede utilizar para algunas operaciones de lectura si las bases de datos de solo lectura aún no están actualizadas. Los metadatos , como el historial de revisión de artículos, las relaciones de artículos (enlaces, categorías, etc.), las cuentas de usuario y las configuraciones se pueden almacenar en bases de datos centrales y en caché; el texto de revisión real, que se usa con menos frecuencia, se puede almacenar como blobs de solo anexión en un almacenamiento externo. El software es adecuado para el funcionamiento de granjas wiki de gran escala como Wikimedia , que tenía alrededor de 800 wikis en agosto de 2011. Sin embargo, MediaWiki no viene con una GUI incorporada para administrar tales instalaciones.
La evidencia empírica muestra que la mayoría de las revisiones en las bases de datos de MediaWiki tienden a diferir solo levemente de las revisiones anteriores. Por lo tanto, las revisiones posteriores de un artículo se pueden concatenar y luego comprimir, logrando índices de compresión de datos muy altos de hasta 100x. [132]
Para obtener más información sobre la arquitectura, como por ejemplo cómo almacena el wikitexto y ensambla una página, consulte Enlaces externos.
El analizador funciona como el estándar de facto para la sintaxis de MediaWiki, ya que no se ha definido ninguna sintaxis formal. Debido a esta falta de una definición formal, ha sido difícil crear editores WYSIWYG para MediaWiki, aunque existen varias extensiones WYSIWYG, incluido el popular VisualEditor .
MediaWiki no está diseñado para ser un reemplazo adecuado de un foro en línea dedicado o un software de blogs, [133] aunque existen extensiones que permiten ambos. [134] [135]
Es común que los nuevos usuarios de MediaWiki cometan ciertos errores, como olvidar firmar las publicaciones con cuatro tildes (~~~~), [136] o ingresar manualmente una firma de texto simple, [137] debido a la falta de familiaridad con los detalles idiosincrásicos involucrados en la comunicación en las páginas de discusión de MediaWiki. Por otro lado, el formato de estas páginas de discusión ha sido citado como una fortaleza por un educador, quien afirmó que proporciona capacidades de grano más fino para la discusión que los foros de discusión tradicionales. Por ejemplo, en lugar de "responder" a un mensaje completo, el participante en una discusión puede crear un hipervínculo a una nueva página wiki en cualquier palabra de la página original. Las discusiones son más fáciles de seguir ya que el contenido está disponible a través de una página wiki con hipervínculos, en lugar de una serie de mensajes de respuesta en un foro de discusión tradicional. Sin embargo, excepto en algunos casos, los estudiantes no estaban usando esta capacidad, posiblemente debido a su familiaridad con el estilo de discusión lineal tradicional y una falta de orientación sobre cómo hacer que el contenido sea más " rico en enlaces ". [138]
MediaWiki, por defecto, ofrece poco soporte para la creación de documentos ensamblados dinámicamente o páginas que agregan datos de otras páginas. Se han realizado algunas investigaciones para habilitar dichas funciones directamente dentro de MediaWiki. [139] La extensión Semantic MediaWiki proporciona estas funciones. No se utiliza en Wikipedia, pero sí en más de 1.600 otras instalaciones de MediaWiki. [140] Sin embargo, el Repositorio Wikibase y el cliente del Repositorio Wikibase están implementados en Wikidata y Wikipedia respectivamente y, hasta cierto punto, proporcionan funciones de web semántica y vinculación de datos almacenados centralmente a cuadros de información en varios artículos de Wikipedia.
La actualización de MediaWiki suele ser totalmente automática y no requiere cambios en el contenido del sitio ni en la programación de las plantillas. En el pasado, se han encontrado problemas al actualizar desde versiones significativamente más antiguas. [141]
Los desarrolladores de MediaWiki han promulgado estándares de seguridad, tanto para el código principal como para las extensiones. [142] Las consultas SQL y la salida HTML se realizan normalmente a través de funciones contenedoras que manejan la validación, el escape y el filtrado para la prevención de secuencias de comandos entre sitios e inyección SQL . [143] Muchos problemas de seguridad han tenido que ser parcheados después del lanzamiento de una versión de MediaWiki, [144] y en consecuencia MediaWiki.org afirma: "La medida de seguridad más importante que puede tomar es mantener su software actualizado" suscribiéndose a la lista de correo de anuncios e instalando las actualizaciones de seguridad que se anuncian. [145]
Los desarrolladores de MediaWiki están repartidos por todo el mundo, aunque la mayoría se encuentra en Estados Unidos y Europa. Desde 2004 se han celebrado reuniones presenciales y sesiones de programación para desarrolladores de MediaWiki una o varias veces al año. [146]
El soporte para los usuarios de MediaWiki consiste en:
Los usuarios de software de colaboración en línea están familiarizados con las funciones y el diseño de MediaWiki debido a su uso destacado en Wikipedia. Una revisión de 2006 del software social en el ámbito académico observó que "en comparación con otras wikis, MediaWiki también es bastante agradable estéticamente, aunque simple, y tiene un menú lateral y una hoja de estilo fácilmente personalizables ". [150] Sin embargo, en una evaluación de 2006, se consideró que Confluence era un producto superior debido a su API muy utilizable y su capacidad para brindar un mejor soporte a múltiples wikis. [109]
Un estudio de 2009 de la Universidad de Hong Kong comparó TWiki con MediaWiki. Los autores señalaron que TWiki se ha considerado una herramienta colaborativa para el desarrollo de documentos educativos y proyectos técnicos, mientras que el uso más conocido de MediaWiki es en Wikipedia. Aunque ambas plataformas permiten el debate y el seguimiento del progreso, TWiki tiene una sección de "Informe" de la que carece MediaWiki. Los estudiantes percibieron que MediaWiki era más fácil de usar y más agradable que TWiki. Cuando se les preguntó si recomendaban usar MediaWiki para proyectos grupales de cursos de gestión del conocimiento , 15 de los 16 encuestados expresaron su preferencia por MediaWiki, dando respuestas de gran certeza, como "por supuesto", "seguro". [151] Tanto TWiki como MediaWiki tienen una arquitectura de complementos flexible. [152]
Un estudio de 2009 que comparó la experiencia de los estudiantes con MediaWiki con la de Google Docs descubrió que los estudiantes le dieron a este último una calificación mucho más alta en cuanto a diseño fácil de usar. [153]
Un estudio de 2021 realizado por el Instituto Brasileño de Ingeniería Nuclear comparó un sistema de gestión de conocimiento basado en MediaWiki con otros dos que se basaban en DSpace y Open Journal Systems , respectivamente. [154] Destacó la facilidad de uso como una ventaja del sistema basado en MediaWiki, señalando que debido a que la Fundación Wikimedia había estado desarrollando MediaWiki para un sitio dirigido al público en general (Wikipedia), "su interfaz de usuario fue diseñada para ser más fácil de usar desde el principio, y ha recibido una gran cantidad de comentarios de los usuarios durante mucho tiempo", en contraste con el enfoque de DSpace y OJS en audiencias de nicho. [154]
488 idiomas (sin incluir los idiomas que son compatibles pero no tienen traducción)