MediaWiki es un software para wikis libre programado en el lenguaje PHP. Es el software usado por Wikipedia y otros proyectos de la Fundación Wikimedia (Wikcionario, Wikilibros, etc). Ha tenido una gran expansión desde el año 2005, existiendo un gran número de wikis basados en este software que no mantienen relación con dicha fundación, aunque sí comparten la idea de la generación de contenidos de manera colaborativa. Se encuentra bajo la licencia de software GNU General Public License.
MediaWiki fue desarrollado originalmente para Wikipedia por Magnus Manske, con el fin de sustituir a UseModWiki como motor del wiki (al que los colaboradores de Wikipedia llamaron "Fase I"). A la primera versión se la llamaba, simplemente "software de Wikipedia fase II". A mediados del 2002 el programa fue reescrito y mejorado, dando lugar a la llamada "fase III", y ha seguido desarrollándose desde entonces a partir de ese código. El 29 de agosto de 2003 se bautizó al programa, hasta ese momento sin un nombre oficial, como "MediaWiki", un juego de palabras con el nombre de la Fundación Wikimedia, que patrocina su desarrollo.
Magnus Manske
Existen 5 tipos de links en MediaWiki:
Las subpáginas introducen una organización jerárquica dentro de páginas wiki, con niveles de jerarquías separados por barras (/).
Los Namespaces se indican en los títulos de página anteponiendo el nombre de la página con el "namespace", por lo que el prefijo "Help" en el título de esta página ("Help: namespace") indica que esta página se encuentra en el namespace ayuda. Cada namespace se identifica mediante un número y un nombre, que puede ser traducido y también puede tener algunos alias.
Una página de cuyo nombre no se prefijado por un espacio de nombres se encuentra en la mainspace.
Las categorías, una funcionalidad del software MediaWiki, proporcionan índices automáticos que son útiles como tablas de contenido.
Se pueden categorizar las páginas y los archivos mediante la adición de una o más etiquetas de Categoría al texto. Estas etiquetas crean enlaces en la parte inferior de la página que llevan a la lista de todas las páginas que incluyen la misma etiqueta. Esto facilita la navegación por los artículos relacionados.
Si tienes textos estándar que desea incluir en varias páginas, la función de plantilla MediaWiki entra en juego. A diferencia de las extensiones y archivos multimedia, no hay depósito central de plantillas. Las plantillas pueden ser recién escritas o para ahorrar trabajo duplicar ya hecho, exportada desde otro wiki por ejemplo, Wikipedia y, a continuación, importado en el wiki de destino.
PHP fue elegido como el marco para el software "Fase II" de la Wikipedia en 2001; MediaWiki ha crecido orgánicamente desde entonces, y todavía está en evolución. La mayoría de los desarrolladores de MediaWiki son voluntarios que contribuyen en su tiempo libre, y fueron muy pocos en los primeros años. Algunas decisiones de diseño de software u omisiones pueden parecer mal en retrospectiva, pero es difícil de criticar a los fundadores por no implementar una abstracción que ahora se encuentra para ser crítico, cuando la base de código inicial era tan pequeño, y tomado el tiempo para desarrollarlo tan corto .
Debido a MediaWiki es la plataforma para sitios de alto perfil como la Wikipedia, los desarrolladores principales y los colaboradores del código han impuesto normas estrictas de seguridad. Para que sea más fácil escribir código seguro, MediaWiki da desarrolladores envolturas alrededor de consultas de bases de datos de salida y HTML para manejar escapar. Para desinfectar la entrada del usuario, se utiliza la clase WebRequest, que analiza datos pasados en la URL oa través de un formulario publicado. Se elimina "comillas mágicas" barras, tiras de caracteres de entrada ilegal y normaliza secuencias Unicode. Cross-site falsificación de petición (CSRF) se evita mediante el uso de fichas, y cross-site scripting (XSS) mediante la validación de las entradas y salidas de escape, por lo general con htmlspecialchars de PHP función (). MediaWiki también ofrece (y utiliza) un desinfectante XHTML con la clase Sanitizer, y las funciones de base de datos que impiden la inyección SQL.
MediaWiki ofrece cientos de opciones de configuración, almacenados en las variables globales PHP. Su valor predeterminado se establece en DefaultSettings.php, y el administrador del sistema puede anular los editando LocalSettings.php.
MediaWiki usa para sobre-dependerá de variables globales, incluyendo para el procesamiento de la configuración y el contexto. Globals causan graves implicaciones de seguridad con PHP'sregister_globals función (que MediaWiki no ha necesitado desde la versión 1.2)
MediaWiki ha estado utilizando una base de datos back-end relacional ya que el software de la Fase II. El valor por defecto (y mejor apoyado por) DBMS para MediaWiki es MySQL, que es el que todos los sitios de Wikimedia utilizan, pero otros DBMS (como PostgreSQL, Oracle y SQLite) tienen implementaciones apoyados por la comunidad. Un administrador de sistemas puede elegir un DBMS durante la instalación de MediaWiki y MediaWiki proporciona tanto una abstracción de base de datos y una capa de abstracción de consulta que simplifican el acceso de base de datos para los desarrolladores.
Al igual que en muchas aplicaciones web, la interfaz de MediaWiki se ha vuelto más interactiva y sensible en los últimos años, sobre todo mediante el uso de JavaScript. Usabilidad esfuerzos iniciados en 2008, así como los medios de comunicación avanzados manipulación (por ejemplo, la edición en línea de archivos de vídeo), pidieron mejoras en el rendimiento de front-end dedicados. Para optimizar la entrega de JavaScript y CSS activos, el módulo ResourceLoader fue desarrollado. Iniciado en 2009, se terminó en 2011 y ha sido un elemento central de MediaWiki desde la versión 1.17. ResourceLoader funciona mediante la carga de JS y CSS activos en la demanda, lo que reduce la carga y el tiempo de análisis sintáctico para las características no utilizadas, por ejemplo en los navegadores antiguos
Los usuarios están representados en el código utilizando instancias de la clase de usuario, que encapsula todos los ajustes específicos del usuario (identificador de usuario, nombre, derechos, contraseña, dirección de correo electrónico, etc.). Clases cliente utilizan descriptores de acceso para acceder a estos campos; que hacen todo el trabajo de determinar si el usuario está conectado, y si la opción solicitada puede estar satisfecho de cookies o si es necesaria una consulta de base de datos. La mayor parte de los ajustes necesarios para la prestación de páginas normales se encuentran en la cookie para minimizar el uso de la base de datos.
Se componen de un prefijo, separado del título de la página por dos puntos (por ejemplo, de la charla: o Archivo: y Plantilla :); el espacio de nombres contenido principal no tiene prefijo. Usuarios de Wikipedia ellos adoptaron rápidamente, y que proporcionaron a la comunidad con diferentes espacios para evolucionar. Espacios de nombres han demostrado ser una característica importante de MediaWiki, ya que crean las condiciones necesarias para la comunidad de un wiki y establecer discusiones a nivel de meta, los procesos comunitarios, portales, perfiles de usuario, etc.
Lo que comenzó como un proyecto de verano realizado por un único desarrollador de PHP de voluntarios ha crecido hasta convertirse en MediaWiki, un motor wiki estable madura alimentar un sitio web entre los diez primeros con un ridículamente pequeña infraestructura operativa. Esto ha sido posible gracias a la optimización constante de rendimiento, cambios arquitectónicos iterativos y un equipo de desarrolladores impresionantes.
La evolución de las tecnologías web, y el crecimiento de Wikipedia, exigen mejoras en curso y nuevas características, algunas de las cuales requieren grandes cambios en la arquitectura de MediaWiki. Este es, por ejemplo, el caso del proyecto de editor visual en curso, que ha llevado el trabajo renovado en el analizador y en el lenguaje de marcas wiki, el DOM y la conversión HTML final.
MediaWiki es una herramienta utilizada para propósitos muy diferentes. Dentro de los proyectos de Wikimedia, por ejemplo, se utiliza para crear y conservar una enciclopedia (Wikipedia), para alimentar una mediateca enorme (Wikimedia Commons) o para transcribir textos de referencia escaneados (Wikisource); etcétera. En otros contextos, MediaWiki se utiliza como un CMS corporativa, o como un repositorio de datos, a veces combinado con un marco semántico. Estos usos especializados que no estaban previstos para probablemente seguirán impulsando constantes ajustes a la estructura interna del software. Como tal, la arquitectura de MediaWiki está muy vivo, al igual que la inmensa comunidad de usuarios que soporta.