Wikifunctions:Acerca de
- El principal objetivo de Wikifunctions es apoyar a los Proyectos de Wikimedia, pero el apoyo va más allá de eso, al igual que con Wikidata. Esto es una descripción de Wikifunctions más allá de Wikipedia.
- Nuestro objetivo
- Un proyecto de Wikimedia para que todos creen y mantengan en colaboración una biblioteca de funciones de código: para respaldar en los proyectos de Wikimedia y otros más allá, y para que todos puedan llamar y reutilizar en los lenguajes naturales y de programación del mundo.
Wikifunctions (conocida en español como Wikifunciones) es un repositorio abierto de código que cualquiera puede utilizar y contribuir.
Wikifunctions está compuesta por funciones. Estas funciones pueden tener una descripción en muchos idiomas con una lista de parámetros, casos de prueba, una lista de implementaciones en diferentes lenguajes de programación, y otros metadatos, todo en multiples idiomas (entre aquellos soportados por Wikimedia). Las implementaciones pueden ser reusadas en otros proyectos de software (aplicaciones privadas o scripts), sean llamadas y ejecutadas en linea (simplemente en el navegador, en un entorno en la nube, o en notebooks de Jupyter[1] o PAWS[2]), compuestas para obtener más funcionalidad compleja, firmada, analizada, o validada, y mucho más.
Wikifunctions es un proyecto en el espíritu de Wikipedia, Wikidata, Wikcionario y otros proyectos libres similares, colaborativos y culturales: Permite a colaboradores de todo el mundo para crear y mantener una librería multilingüe de funciones que puede ser usada por cualquiera para cualquier propósito. Cada función puede ser soportada por múltiples implementaciones en diferentes lenguajes de programación, casos de prueba, condiciones previas y posteriores, documentación, metadatos en la forma de estimaciones de tiempo de ejecución y garantías complejas por las diferentes implementaciones, etc. Los usuarios pueden llamar a una función directamente en el sitio web, o desde su propio código o aplicación, desde una interfaz de línea de comandos, o una aplicación local. La función puede ejecutarse localmente en el navegador, en la nube, o integrada localmente en la aplicación del usuario.
El objetivo de Wikifunctions es crear, tanto un catálogo común bien definido de funciones que se pueda reutilizar ampliamente, así como un entorno en el que las funciones se puedan combinar y ejecutar rápidamente sobre la marcha. Wikifunctions tiene como meta hacer la vida de los desarrolladores mucho más fácil, de forma que puedan confiar en este repositorio como en cualquier librería externa; y para los usuarios finales permitiéndoles llamar a funciones según sea necesario, de una manera que actualmente solo está disponible con una cobertura muy desigual a través de sitios web específicos, que a menudo se escriben en forma de sitios web de la década de 1990 con applets de Java.
Todas las funciones son puras, para permitir una ejecución segura en un espacio aislado. Además, cada implementación puede ser firmada criptográficamente y anotada con metadatos. Los usuarios finales pueden seleccionar y auditar qué implementación de cada función utilizarán, según los recursos de hardware disponibles y la configuración de la red de confianza.
Wikifunctions permitirá un fácil acceso a grandes bases de conocimiento como Wikidata, pero también a archivos binarios de entrada y salida. Es completamente posible cargar una imagen como un archivo de entrada y devolver los resultados del análisis, como lo que se muestra en la imagen, o cuántos colores diferentes tiene la imagen, o un binario diferente, p. ej. en un formato diferente. Esto estará disponible para los flujos de trabajo en Wikimedia Commons.
Wikifunctions continúa la tradición de mover más computación, lo que generalmente ha sucedido en la línea de comandos o con aplicaciones de usuarios de computadoras más expertos en computación, a la Web y democratizar el acceso a funciones que antes no estaban disponibles. Al mismo tiempo, aumentará la productividad de los desarrolladores en todas partes, ya que solo pueden usar una gran biblioteca de código en lugar de tener que copiar y pegar las respuestas de sitios como StackOverflow.
A diferencia de Wikipedia, los colaboradores crearán principalmente nuevas implementaciones para una función en lugar de actualizar las funciones existentes. Las implementaciones se pueden probar automáticamente con las pruebas dadas, entre sí, y se pueden analizar más a fondo.
Las implementaciones podrían ser escritas en varios lenguajes de programación diferentes y, aún así serían capaces de llamar a funciones implementadas en otros lenguajes de programación. El motor de ejecución puede funcionar sin problemas (aunque no necesariamente con el mayor rendimiento posible) en diferentes lenguajes. Aunque en la mayoría de los casos hay un gran aumento de rendimiento al componer funciones dentro de un solo lenguaje de programación, no es necesario hacerlo. En muchos casos, la velocidad de desarrollo y el tiempo del desarrollador serán más valiosos que los ciclos informáticos adicionales dedicados al motor de ejecución.