Desde Linux Linux Post Install  

Modelo de Desarrollo del Software Libre: La Catedral y el Bazar

Modelo de Desarrollo del Software Libre

La Catedral y el Bazar es un documento tipo manifiesto desarrollado por Eric S. Raymond en el año 1.998 para intentar explicar desde su perspectiva y experiencia propia (Desarrollo de Fetchmail) lo que el entendía sobre la exitosa creación y evolución de Linux y sus programas conexos, sobre todo desde la perspectiva de la diferencia entre los Modelos de Desarrollo de Software, que el personalmente llamo: Modelo Catedral y Modelo Bazar.

Y en esta publicación, aportaremos un análisis y resumen de dicho manifiesto tan popular entre los desarrolladores del Movimiento del Software Libre. El cual se encuentra disponible de forma libre y accesible en muchas partes de la web, pero que pueden descargar desde el enlace web siguiente para acceder al mismo de forma más rápida: La Catedral y el Bazar.

INTRODUCCIÓN

Dicho material “La Catedral y el Bazar” nos presenta la visión de que dentro del mundo de la Ingeniería del Software hay “dos estilos de desarrollo completamente distintos, el modelo catedral, aplicable a la mayor parte de los desarrollos realizados en el mundo del Software comercial, frente al modelo bazar, más propio del mundo Linux”.

Haciendo el resalte de que dichos 2 modelos se derivan de puntos de partida opuestos sobre la naturaleza del proceso de depuración del software, y de su particular teoría sobre lo que el llamaba La ley de Linus que enunciaba lo siguiente: “Dado un número suficiente de ojos, todos los errores son irrelevantes” o en otras palabras: “Con un número de ojos suficiente, todos los errores son naderías”.

Y hace énfasis en la palabra Hacker, que a mi entender el autor expresaba como una suerte de Usuario de alto nivel capaz de entender y explotar eficientemente un programa, y de detectar, sugerir o implementar correcciones o modificaciones de forma y fondo eficientes para toda la comunidad de usuarios.

En otras literaturas, dicha palabra o concepto denominado Hacker se refiere a:

un experto, un apasionado de determinada área temática, sobre todo del área tecnológica, y cuyo propósito es aprovechar esos conocimientos con fines benignos. Es aquella persona, por lo general un profesional de un área del conocimiento, que le apasiona el conocimiento, descubrir y aprender nuevas cosas y entender el funcionamiento de éstas, llegando al grado de mejorarla con sugerencias y propuestas eficaces, y siempre con la intención de compartir el conocimiento o evitar un fallo o mal funcionamiento del objeto de estudio”.

El cual es un concepto más universal y real, ya que hay “Hackers” en todas las áreas del conocimiento humano.

DESARROLLO

De los muchos que han leído dicho material, seguramente habrá una gran cantidad que estarán de acuerdo con que ahí se expresa claramente la idea de que “Linux es subversivo”. Pero por que?

Porque hasta ese momento había una multiplicidad de métodos o modelos de Desarrollo de Software estandarizados basados en un “enfoque más centralizado y planificado desde el principio” debido a que se tomaba el acto de crear Software como algo asociado a algo que conlleva a “cierta complejidad critica”.

Y que a pesar de que ya existía el mundo Unix, consistente en herramientas pequeñas, rápido desarrollo de prototipos y programación evolutiva, la aparición de la filosofía de desarrollo de Software Libre bajo Linux llevo el asunto a otro nivel de sofisticación.

Mientras en el mundo del Desarrollo del Software Privativo se hacia de “forma silenciosa y reverente”, tal como se construye una Catedral, en el Mundo del Desarrollo del Software Libre (Linux) se hacia de “forma bulliciosa y con múltiples agendas (caminos) y enfoques (propuestas)”, tal como se se estuviera en un gran bazar.

Este grandioso manifiesto nos da varias premisas para condensar las ideas expresadas ahí, en cuanto el Modelo de Desarrollo del Software Libre, las cuales son:

PREMISA # 1

TODOS LOS TRABAJOS BUENOS EN SOFTWARE COMIENZAN TRATANDO DE PALIAR UN PROBLEMA PERSONAL DEL PROPIO DESARROLLADOR.

Lo cual es una realidad innegable porque muchos de los que trabajan en el Desarrollo de Software Libre por lo general empiezan debido a la necesidad de resolver una problemática personal o de un colectivo o grupo, o para optimizar un proceso ya ejecutado de forma más lenta y/o repetitiva, que muchas veces suele volverse extenuante y/o aburrida para los que participan en ella, tratando de lograr maximizar los tiempos y esfuerzos de los involucrados.

PREMISA # 2

LOS BUENOS PROGRAMADORES SABEN QUÉ ESCRIBIR. LOS GRANDES SABEN QUÉ REESCRIBIR Y REUTILIZAR.

Cualquier programador sabe que empezar desde cero no es nada malo o innecesario, cuando de desarrollar un programa o aplicación se trata. Sin embargo, para muchos que están empezando y para otros ya duchos en la materia, es harto conocido que a veces “Inventar la Rueda” nuevamente no es muy eficiente, sino que es mejor solo optimizarla y adaptarla a las necesidades propias. Es decir, que es mejor reescribir y asimilar todo el código posible de otros expertos en la materia que nos atañe para resolver nuestro propio desarrollo de software.

PREMISA # 3

“PIENSA EN DESECHAR AL MENOS UNO: LO TERMINARÁS HACIENDO DE TODOS MODOS.”

Un buen Desarrollador de Software debe saber escuchar detalladamente lo que dicen o sugieren o proponen los usuarios de sus desarrollos, ya que un programa ya funcional, puede aún a pesar de ser funcional volverse algo muy grande, algo que pierda el norte, un monstruo funcional que hace de todo para todos, y a su vez algo nada agradable. Por lo que escuchar para volver a los orígenes, reconquistar a usuarios perdidos, añadir funcionalidades nuevas, quitar otras innecesarias, hacer el programa mas pequeño, especifico y general, siempre es una buena practica.

PREMISA # 4

SI TIENES LA ACTITUD ADECUADA, LOS PROBLEMAS INTERESANTES TE ENCONTRARÁN.

Un buen cambio de actitud y a tiempo puede significar en cada programador o desarrollador de software un cambio radical en sus actuales o nuevos desarrollos que a su vez signifiquen nuevas ventajas de tiempo, dinero o comodidad para los usuarios de sus productos. Estar atento a formas innovadoras de resolver los problemas que se van presentando en un buen síntoma en la dirección correcta.

PREMISA # 5

CUANDO UN PROGRAMA DEJA DE INTERESARTE, TU ÚLTIMO DEBER ES PASARLO A UN SUCESOR COMPETENTE.

Para muchos programadores o desarrolladores de software, así como para otros tecnólogos, no es cosa rara desear dedicar nuevos tiempos a nuevos proyectos. Pero en el mundo del Software Libre la premisa es pasar el testigo, ha otros que quisiesen seguir con el desarrollo de sus productos ya abandonados, para lo cual debe permitir que cualquiera hackeará (mejoré) el programa para si mismo o en beneficio de la comunidad de usuarios del programa.

PREMISA # 6

TRATAR A TUS USUARIOS COMO COLABORADORES ES EL CAMINO MENOS COMPLICADO PARA MEJORAR CON RAPIDEZ Y DEPURAR EFICAZMENTE UN PROGRAMA.

Como muchas veces “libre” suele interpretarse como “gratis” en el desarrollo del Software Libre, muchos programadores suelen agruparse para evitar el desgate no remunerado aliándose con otros desarrolladores o usuarios avanzados de sus desarrollos, para continuar los mismos o para que otros los continúen, a cambio de recibir “créditos” en el desarrollo de las futuras innovaciones del código y de que procuren que en los futuros desarrollos incluyesen formalmente algún licenciamiento, para evitar el mal uso del mismo.

PREMISA # 7

LÁNZALO PRONTO. LÁNZALO A MENUDO. Y ESCUCHA A TUS USUARIOS.

A diferencia del mundo del desarrollo del software privativo, en el software libre suele darse el caso, de que mucho y rápido es mejor. Ya que la amplia base de usuarios y desarrolladores que suelen en comunidad usar y desarrollar un programa y a su vez a interactuar entre ellos, para comunicar sus dudas, sugerencias, propuestas, quejas y/o reclamos, puede llegar a convertirse en una fuente valiosa de conocimiento para hacer evolucionar rápidamente un programa hacia estados maduro de desarrollo.

PREMISA # 8

DADA UNA BASE LO SUFICIENTEMENTE AMPLIA DE PROBADORES Y COLABORADORES, CASI TODOS LOS PROBLEMAS SE IDENTIFICARÁN CON RAPIDEZ Y SU SOLUCIÓN SERÁ OBVIA PARA ALGUIEN.

El material termina haciendo concluir al lector, muchas veces que el Método de Desarrollo de Software basado en el Modelo Bazar, es muy efectivo. Porque mientras más poder, libertad o conocimiento le proporciona un Desarrollador de Software a los Usuarios sobre su programa, más ellos pueden aportar ideas ingeniosas o cambios útiles, solo con la finalidad del beneficio colectivo.

Y esto queda gratamente expresado en el siguiente extracto del material:

Esta es, creo, la diferencia fundamental entre los estilos catedral y bazar. De acuerdo con la forma en que contempla la programación quien lo hace al modo en que se construye una catedral, los errores y los problemas de desarrollo son fenómenos insidiosos, profundos y retorcidos. Hacen falta meses de escrutinio por un pequeño número de gente dedicada a ello para poder confiar en que se hayan eliminado. De ahí los periodos largos requeridos para el lanzamiento de nuevas versiones, y el inevitable disgusto experimentado cuando las que tanto tiempo se han esperado no resultan perfectas.

A la luz del modelo bazar, en cambio, se supone que los errores son normalmente asuntos leves o, al menos, que se convertirán en tales con bastante rapidez en cuanto se expongan a los ojos ansiosos de algunos miles de colaboradores dedicados a poner del derecho y del revés cada nueva versión. Así que te dedicas a lanzar versiones con frecuencia para conseguir aún más correcciones, y como un beneficioso efecto colateral logras tener menos que perder si haces alguna chapuza de vez en cuando”.

CONCLUSIÓN

En lo personal, mi poca experiencia en el campo del Desarrollo del Software Libre bajo el Modelo de tipo Bazar me dejan como conclusiones las siguientes:

  • Se debe tratar a los Usuarios como un recurso valiosísimo, y en el mejor de los casos como aliados invaluables por su colaboración al desarrollo del producto.
  • Toda idea es buena o digna de explorar, ya que a veces lo menos sospechado puede ser una gran solución o mejoría para el desarrollo.
  • Es bueno o probable que la idea original se divida, amplié o aleje del concepto original, pero lo importante es lo enfocado que uno debe estar en cuanto al tipo de mercado de usuarios que desea atender, servir o ayudar.
  • Para así ser eficiente y evitar perdida de esfuerzo por dispersión.
  • Lo mejor es un código pequeño, directo, sencillo, pero eficiente, que logre ser apreciado por la comunidad como correcto.
  • Un programa ya esta maduro para la Comunidad de usuarios, cuando ya no hay mas que eliminar, ya que agregar siempre es una buena posibilidad a tener en cuenta.
  • Todo programa puede ser utilizado (en parte o su totalidad) para ser reutilizado en funciones que no se concibieron originalmente.
  • Todo Software debe llevar su respectivo licenciamiento y medidas de seguridad para la confidencialidad del uso de la Data del usuario.
  • No hace falta empezar desde cero, siempre alguien a desarrollado algo similar a nuestra idea concebida.
  • Se debe trabajar en algo que a uno le guste, debe uno sentir pasión por el desarrollo al que se dedicara en Software Libre para así generar a lo interno sentido de unión con lo elaborado, sin llegar al extremo de desarrollar sentido de propiedad sobre el mismo.
  • Deben existir excelentes y frecuentes medios de comunicación entre los Desarrolladores y Usuarios (Colaboradores), para que el trabajo fluya con rapidez y los cambios con eficacia.

Espero les haya gustado y les sea útil dicha información, ya que la Lectura de “La Catedral y el Bazar” es un referente obligado para todos aquellos que programamos cualquier Desarrollo en Software Libre, por muy grande o pequeño que sea.

El artículo Modelo de Desarrollo del Software Libre: La Catedral y el Bazar aparece primero en Modelo de Desarrollo del Software Libre: La Catedral y el Bazar.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.