stringtranslate.com

Desarrollo de software de código abierto

El desarrollo de software de código abierto (OSSD) 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 . Son productos de software disponibles con su código fuente bajo una licencia de código abierto para estudiar, cambiar y mejorar su diseño. Ejemplos de algunos productos populares de software de código abierto son Mozilla Firefox , Google Chromium , Android , LibreOffice y el reproductor multimedia VLC .

Historia

En 1997, Eric S. Raymond escribió 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 del código abierto, que se parece más a "un gran bazar de diferentes agendas y enfoques del cual aparentemente sólo podría surgir un sistema coherente y estable mediante 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 funciones, y las limitaciones bajo las cuales trabajan los programadores. [2] En el desarrollo de software de código cerrado, los programadores suelen dedicar mucho tiempo a tratar y crear informes de errores, así como a gestionar solicitudes de funciones. Este tiempo se dedica a crear y priorizar futuros planes de desarrollo. Esto lleva a que parte del equipo de desarrollo dedique mucho tiempo a estos temas, y no al desarrollo real. Además, en proyectos de código cerrado, los equipos de desarrollo a menudo deben trabajar bajo limitaciones 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, estos problemas se resuelven integrando a los usuarios del software en el proceso de desarrollo, o incluso permitiendo que estos usuarios construyan el sistema ellos mismos. [ cita necesaria ]

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 está realizado utilizando las técnicas de metamodelado y modelado de metaprocesos .

Iniciar un proyecto de código abierto

Hay varias formas de comenzar a trabajar en un proyecto de código abierto:

  1. Un individuo que siente la necesidad de un proyecto anuncia en público la intención de desarrollarlo.
  2. Un desarrollador que trabaja en una base de código limitada pero funcional lo lanza 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 hace público.
  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 hacer público un proyecto en funcionamiento.

Es un error común iniciar un proyecto cuando contribuir a un proyecto similar existente sería más efectivo ( síndrome NIH ) [ cita necesaria ] . Para iniciar un proyecto exitoso es muy importante investigar lo que ya existe. El proceso comienza con la elección entre adoptar un proyecto existente o iniciar un proyecto nuevo. Si se inicia un nuevo proyecto, 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. [ ¿investigacion original? ]

Tipos de proyectos de código abierto

Existen varios tipos de proyectos de código abierto. En primer lugar, está la gran variedad de programas de software y bibliotecas, que constan de fragmentos de código independientes. Algunos incluso podrían depender de otros proyectos de código abierto. Estos proyectos tienen un propósito específico y satisfacen una necesidad definida. Ejemplos de este tipo de proyectos incluyen el kernel de Linux , el navegador web Firefox y el paquete 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 desde la misma fuente con un propósito común. El ejemplo más destacado de "distribución" es un sistema operativo. Hay muchas distribuciones de Linux (como Debian , Fedora Core , Mandriva , Slackware , Ubuntu , etc.) que incluyen el kernel de Linux junto con muchos componentes del usuario. Existen 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 sistema de control de revisiones ; 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 otros sistemas basados ​​en distribución.

Finalmente, está el proyecto de libro o documento independiente. Por lo general, estos artículos no se envían como parte de un paquete de software de código abierto. El Proyecto de documentación de Linux alberga muchos de estos proyectos que documentan diversos aspectos del sistema operativo Linux. Hay muchos otros ejemplos de este tipo de proyecto 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, los requisitos rara vez se reúnen antes del inicio del proyecto; en cambio, se basan en versiones anteriores 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, poco a poco empezará a atraer a más y más desarrolladores”. Sin embargo, Abrahamson et al. También señalan que la comunidad es muy dura, muy parecida al mundo empresarial del software de código cerrado: “si encuentras clientes sobrevives, pero sin clientes mueres”. [5]

Fuggetta [6] sostiene que “la creación rápida de prototipos, 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 igualmente 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 cuentan con 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 tener desarrolladores repartidos en todas las zonas horarias.

Herramientas

Canales de comunicación

No todos los desarrolladores y usuarios de un proyecto de código abierto necesariamente trabajan en el proyecto de forma cercana. Requieren algún medio electrónico de comunicación. El correo electrónico es una de las formas de comunicación más comunes entre los desarrolladores y usuarios de código abierto. A menudo, las listas de correo electrónico se utilizan para garantizar que los mensajes de correo electrónico se entreguen a todas las partes interesadas a la vez. Esto asegura que al menos uno de los miembros pueda responder. Para comunicarse en tiempo real, muchos proyectos utilizan un método de mensajería instantánea como IRC . Recientemente, los foros web se han convertido en una forma común para que los usuarios obtengan ayuda con los problemas que encuentran al utilizar 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, se distribuyen 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 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 hayan terminado. 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 revisiones Subversion (SVN) para reemplazar CVS. Está ganando terreno rápidamente como sistema de control de versiones de proyectos OSS. [7]

Muchos proyectos de código abierto utilizan ahora sistemas de control de revisiones distribuidos, que escalan mejor que los repositorios centralizados como SVN y CVS. Ejemplos populares son git , utilizado por el kernel de Linux , [8] y Mercurial , utilizado por el lenguaje de programación Python . [ cita necesaria ]

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 diversos problemas en el desarrollo del proyecto.

Herramientas de prueba y depuración

Dado que los proyectos OSS se integran con frecuencia, se utilizan herramientas que ayudan a automatizar las pruebas durante la integración del sistema. Un ejemplo de dicha herramienta es Tinderbox. Tinderbox permite a los participantes en un proyecto 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é plataformas surgen estos problemas. [7]

Un depurador es un programa informático que se utiliza para depurar (y a veces 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 necesaria ]

Una herramienta de pérdida de memoria o depurador de memoria es una herramienta de programación para encontrar pérdidas de memoria y desbordamientos de búfer . Una pérdida de memoria es un tipo particular de consumo innecesario de memoria por parte de un programa de computadora, donde el programa no logra liberar memoria que ya no es necesaria. Ejemplos de herramientas de detección de pérdidas de memoria utilizadas por Mozilla son las herramientas XPCOM Memory Leak. Las herramientas de validación se utilizan para comprobar si las piezas de código se ajustan a la sintaxis especificada. Un ejemplo de herramienta de validación es Splint . [ cita necesaria ]

Gestión de paquetes

Un sistema de administració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 una computadora. Red Hat Package Manager (RPM) para .rpm y Advanced Packaging Tool (APT) para el formato de archivo .deb son sistemas de administración de paquetes utilizados por varias distribuciones de Linux. [ cita necesaria ]

Dar a conocer 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

Ver también

Referencias

  1. ^ Raymond, ES (1999). La Catedral y el Bazar . O'Reilly Obtenido de http://www.catb.org/~esr/writings/cathedral-bazaar/. Véanse también: La Catedral y el Bazar .
  2. ^ Bar, M. y Fogel, K. (2003). Desarrollo de código abierto con CVS , 3.ª edición. Prensa de paraglifos. ( ISBN  1-932111-81-6 )
  3. ^ Sharma, S., Sugumaran, V. y Rajagopalan, B. (2002). Un marco para crear comunidades de software híbrido de código abierto . Revista de sistemas de información 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 . Dar sentido al bazar: perspectivas sobre el código abierto y el software libre, otoño de 2003.
  5. ^ Abrahamsson, P, Salo, O. y Warsta, J. (2002). Métodos ágiles de desarrollo de software: 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: pasado, presente y futuro". Reino Unido cableado .
  8. ^ "La grandeza de Git - Fundación Linux". www.linuxfoundation.org . Consultado el 25 de agosto de 2023 .

enlaces externos