stringtranslate.com

Desarrollo de software de código abierto

El desarrollo de software de código abierto (OSSD, por sus siglas en inglés) es el proceso mediante el cual un proyecto de software de código abierto desarrolla software de código abierto o software similar cuyo código fuente está disponible públicamente . Se trata de productos de software disponibles con su código fuente bajo una licencia de código abierto para estudiar, cambiar y mejorar su diseño. Algunos ejemplos de productos de software de código abierto populares son Mozilla Firefox , Google Chromium , Android , LibreOffice y el reproductor multimedia VLC .

Historia

En 1997, Eric S. Raymond escribió The Cathedral and the Bazaar [La catedral y el bazar] . [1] En este libro, Raymond hace la distinción entre dos tipos de desarrollo de software. El primero es el desarrollo convencional de código cerrado. Este tipo de método de desarrollo es, según Raymond, como la construcción de una catedral: planificación central, organización estricta y un proceso de principio a fin. El segundo es el desarrollo progresivo de código abierto, que es más como "un gran bazar parloteante de diferentes agendas y enfoques del cual un sistema coherente y estable aparentemente podría surgir solo por una sucesión de milagros". La última analogía apunta a la discusión involucrada en un proceso de desarrollo de código abierto.

Las diferencias entre los dos estilos de desarrollo, según Bar y Fogel, son en general el manejo (y creación) de informes de errores y solicitudes de características, y las restricciones bajo las que trabajan los programadores. [2] En el desarrollo de software de código cerrado, los programadores a menudo pasan mucho tiempo tratando y creando informes de errores, así como manejando solicitudes de características. Este tiempo se dedica a crear y priorizar planes de desarrollo futuros. Esto lleva a que parte del equipo de desarrollo dedique mucho tiempo a estas cuestiones, y no al desarrollo propiamente dicho. Además, en proyectos de código cerrado, los equipos de desarrollo a menudo deben trabajar bajo restricciones relacionadas con la gestión (como plazos, presupuestos, etc.) que interfieren con cuestiones técnicas del software. En el desarrollo de software de código abierto, estas cuestiones se resuelven integrando a los usuarios del software en el proceso de desarrollo, o incluso dejando que estos usuarios construyan el sistema ellos mismos. [ cita requerida ]

Modelo

Modelo de datos de proceso para el desarrollo de software de código abierto

El desarrollo de software de código abierto se puede dividir en varias fases. Las fases especificadas aquí se derivan de Sharma et al . [3] A la derecha se muestra un diagrama que muestra la estructura de datos de proceso del desarrollo de software de código abierto. En esta imagen, se muestran las fases del desarrollo de software de código abierto, junto con los elementos de datos correspondientes. Este diagrama se realizó utilizando las técnicas de metamodelado y modelado de metaprocesos .

Iniciando un proyecto de código abierto

Hay varias formas en las que se puede iniciar el trabajo en un proyecto de código abierto:

  1. Un individuo que siente la necesidad de un proyecto anuncia su intención de desarrollarlo en público.
  2. Un desarrollador que trabaja en una base de código limitada pero funcional, la publica al público como la primera versión de un programa de código abierto.
  3. El código fuente de un proyecto maduro se publica.
  4. Un proyecto de código abierto bien establecido puede ser bifurcado por una parte externa interesada.

Eric Raymond observó en su ensayo La Catedral y el Bazar que anunciar la intención de un proyecto suele ser inferior a lanzar un proyecto en marcha al público.

Es un error común comenzar un proyecto cuando sería más efectivo contribuir a un proyecto similar existente ( síndrome NIH ) [ cita requerida ] . Para comenzar un proyecto exitoso es muy importante investigar lo que ya existe. El proceso comienza con una elección entre adoptar un proyecto existente o comenzar un proyecto nuevo. Si se inicia un proyecto nuevo, el proceso pasa a la fase de Iniciación. Si se adopta un proyecto existente, el proceso pasa directamente a la fase de Ejecución. [ ¿Investigación original? ]

Tipos de proyectos de código abierto

Existen varios tipos de proyectos de código abierto. En primer lugar, está la variedad común de programas y bibliotecas de software, que consisten en fragmentos de código independientes. Algunos incluso pueden depender de otros proyectos de código abierto. Estos proyectos sirven para un propósito específico y satisfacen una necesidad definida. Algunos ejemplos de este tipo de proyectos incluyen el núcleo Linux , el navegador web Firefox y la suite de herramientas ofimáticas LibreOffice.

Las distribuciones son otro tipo de proyecto de código abierto. Las distribuciones son colecciones de software que se publican a partir de la misma fuente con un propósito común. El ejemplo más destacado de una "distribución" es un sistema operativo. Hay muchas distribuciones de Linux (como Debian , Fedora Core , Mandriva , Slackware , Ubuntu , etc.) que incluyen el núcleo de Linux junto con muchos componentes de espacio de usuario. Hay otras distribuciones, como ActivePerl, el lenguaje de programación Perl para varios sistemas operativos, y distribuciones Cygwin de programas de código abierto para Microsoft Windows .

Otros proyectos de código abierto, como los derivados de BSD , mantienen el código fuente de un sistema operativo completo, el núcleo y todos sus componentes principales, en un único sistema de control de versiones , desarrollando todo el sistema en conjunto como un solo equipo. Estos proyectos de desarrollo de sistemas operativos integran estrechamente sus herramientas, más que en los otros sistemas basados ​​en distribuciones.

Por último, están los proyectos de libros o documentos independientes. Estos elementos no suelen enviarse como parte de un paquete de software de código abierto. El Proyecto de Documentación de Linux alberga muchos proyectos de este tipo que documentan diversos aspectos del sistema operativo Linux. Hay muchos otros ejemplos de este tipo de proyectos de código abierto.

Métodos

Es difícil ejecutar un proyecto de código abierto siguiendo un método de desarrollo de software más tradicional como el modelo en cascada , porque en estos métodos tradicionales no se permite volver a una fase anterior. En el desarrollo de software de código abierto, rara vez se recopilan los requisitos antes del inicio del proyecto; en cambio, se basan en las primeras versiones del producto de software, como describe Robbins. [4] Además de los requisitos, a menudo se atrae personal voluntario para ayudar a desarrollar el producto de software basándose en las primeras versiones del software. Este efecto de red es esencial según Abrahamsson et al.: "si el prototipo presentado atrae suficiente atención, gradualmente comenzará a atraer a más y más desarrolladores". Sin embargo, Abrahamsson et al. también señalan que la comunidad es muy dura, muy similar al mundo empresarial del software de código cerrado: "si encuentras a los clientes, sobrevives, pero sin clientes, mueres". [5]

Fuggetta [6] sostiene que “el prototipado rápido, el desarrollo incremental y evolutivo, el ciclo de vida en espiral, el desarrollo rápido de aplicaciones y, recientemente, la programación extrema y el proceso de software ágil se pueden aplicar por igual al software propietario y de código abierto”. También señala la Programación Extrema como un método extremadamente útil para el desarrollo de software de código abierto. De manera más general, todos los métodos de programación ágil son aplicables al desarrollo de software de código abierto, debido a su carácter iterativo e incremental. Otros métodos ágiles son igualmente útiles para el desarrollo de software de código abierto y cerrado: Internet-Speed ​​Development , por ejemplo, es adecuado para el desarrollo de software de código abierto debido al principio de desarrollo distribuido que adopta. Internet-Speed ​​Development utiliza equipos distribuidos geográficamente para "trabajar las 24 horas del día". Este método, adoptado principalmente por grandes empresas de código cerrado (porque son las únicas que ofrecen centros de desarrollo en diferentes zonas horarias), funciona igualmente bien en proyectos de código abierto porque un software desarrollado por un gran grupo de voluntarios tenderá naturalmente a tener desarrolladores repartidos en todas las zonas horarias.

Herramientas

Canales de comunicación

Los desarrolladores y usuarios de un proyecto de código abierto no necesariamente trabajan en el proyecto en proximidad. Requieren algún medio electrónico de comunicación. El correo electrónico es una de las formas más comunes de comunicación entre los desarrolladores y usuarios de código abierto. A menudo, se utilizan listas de correo electrónico para asegurarse de que los mensajes de correo electrónico se envían a todas las partes interesadas a la vez. Esto garantiza que al menos uno de los miembros pueda responderlo. Para comunicarse en tiempo real, muchos proyectos utilizan un método de mensajería instantánea como IRC . Los foros web se han convertido recientemente en una forma común para que los usuarios obtengan ayuda con los problemas que encuentran al usar un producto de código abierto. Los wikis se han vuelto comunes como medio de comunicación para desarrolladores y usuarios. [7]

Sistemas de control de versiones

En el desarrollo de OSS, los participantes, que en su mayoría son voluntarios, están distribuidos entre diferentes regiones geográficas, por lo que se necesitan herramientas que ayuden a los participantes a colaborar en el desarrollo del código fuente.

A principios de la década de 2000, el sistema de versiones concurrentes (CVS) fue un ejemplo destacado de una herramienta de colaboración de código fuente utilizada en proyectos de OSS. CVS ayuda a gestionar los archivos y códigos de un proyecto cuando varias personas trabajan en el proyecto al mismo tiempo. CVS permite que varias personas trabajen en el mismo archivo al mismo tiempo. Esto se hace moviendo el archivo a los directorios de los usuarios y luego fusionando los archivos cuando los usuarios terminan. CVS también permite recuperar fácilmente una versión anterior de un archivo. A mediados de la década de 2000, se creó el sistema de control de versiones Subversion (SVN) para reemplazar a CVS. Está ganando terreno rápidamente como un sistema de control de versiones de proyectos de OSS. [7]

Muchos proyectos de código abierto utilizan ahora sistemas de control de versiones distribuidos, que se escalan mejor que los repositorios centralizados como SVN y CVS. Algunos ejemplos populares son git , utilizado por el núcleo de Linux , [8] y Mercurial , utilizado por el lenguaje de programación Python . [ cita requerida ]

Rastreadores de errores y listas de tareas

La mayoría de los proyectos a gran escala requieren un sistema de seguimiento de errores para realizar un seguimiento del estado de varios problemas en el desarrollo del proyecto.

Herramientas de prueba y depuración

Dado que los proyectos de OSS se integran con frecuencia, se utilizan herramientas que ayudan a automatizar las pruebas durante la integración del sistema. Un ejemplo de este tipo de herramientas es Tinderbox. Tinderbox permite a los participantes de un proyecto de OSS detectar errores durante la integración del sistema. Tinderbox ejecuta un proceso de compilación continuo e informa a los usuarios sobre las partes del código fuente que tienen problemas y en qué plataforma(s) surgen estos problemas. [7]

Un depurador es un programa informático que se utiliza para depurar (y, en ocasiones, probar u optimizar) otros programas. GNU Debugger (GDB) es un ejemplo de depurador utilizado en el desarrollo de software de código abierto. Este depurador ofrece depuración remota, lo que lo hace especialmente aplicable al desarrollo de software de código abierto. [ cita requerida ]

Una herramienta de detección de fugas de memoria o depurador de memoria es una herramienta de programación para encontrar fugas de memoria y desbordamientos de búfer . Una fuga de memoria es un tipo particular de consumo innecesario de memoria por parte de un programa informático, en el que el programa no libera memoria que ya no necesita. Ejemplos de herramientas de detección de fugas de memoria utilizadas por Mozilla son las herramientas XPCOM Memory Leak. Las herramientas de validación se utilizan para comprobar si los fragmentos de código se ajustan a la sintaxis especificada. Un ejemplo de una herramienta de validación es Splint . [ cita requerida ]

Gestión de paquetes

Un sistema de gestión de paquetes es una colección de herramientas para automatizar el proceso de instalación, actualización, configuración y eliminación de paquetes de software de un equipo. Red Hat Package Manager (RPM) para el formato de archivo .rpm y Advanced Packaging Tool (APT) para el formato de archivo .deb son sistemas de gestión de paquetes utilizados por varias distribuciones de Linux. [ cita requerida ]

Dar publicidad a un proyecto

Directorios de software y registros de versiones:

  1. El directorio de software libre

Artículos:

  1. Noticias semanales de Linux
  2. IBM DeveloperWorks es una empresa de desarrollo de software que se dedica a la producción de software de última generación.

Véase también

Referencias

  1. ^ Raymond, ES (1999). La Catedral y el Bazar . O'Reilly. Recuperado de http://www.catb.org/~esr/writings/cathedral-bazaar/. Véase también: La Catedral y el Bazar .
  2. ^ Bar, M. y Fogel, K. (2003). Desarrollo de código abierto con CVS , 3.ª edición. Paraglyph Press. ( ISBN  1-932111-81-6 )
  3. ^ Sharma, S., Sugumaran, V. y Rajagopalan, B. (2002). Un marco para crear comunidades de software híbrido y de código abierto . Information Systems Journal 12 (1), 7 – 25.
  4. ^ Robbins, JE (2003). Adopción de prácticas de ingeniería de software de código abierto (OSSE) mediante la adopción de herramientas OSSE . Making Sense of the Bazaar: Perspectives on Open Source and Free Software, otoño de 2003.
  5. ^ Abrahamsson, P, Salo, O. y Warsta, J. (2002). Métodos de desarrollo de software ágil: revisión y análisis . Publicaciones VTT.
  6. ^ Fuggetta, Alfonso (2003). "Software de código abierto: una evaluación". Revista de sistemas y software . 66 (1): 77–90. doi :10.1016/S0164-1212(02)00065-1.
  7. ^ abc "Tim Berners-Lee en la Web a los 25 años: pasado, presente y futuro". Wired UK .
  8. ^ "La grandeza de Git - Linux Foundation". www.linuxfoundation.org . Consultado el 25 de agosto de 2023 .

Enlaces externos