La Catedral y el Bazar: Mi análisis personal desde la perspectiva del Linux Post Install – Script Bicentenario


FELIZ AGOSTO: 2014 (PUBLICACIÓN 155)

Saludos: Integrantes de la Gran Comunidad de Usuarios del Software Libre (No necesariamente gratis) y Usuarios del Linux Post Install – Script Bicentenario (CMSL / U-LPI-SB), Compañeros, Colegas y Autodidactas del Siglo XXI. Y ahora también a los Ingenieros en Telecomunicaciones, Sistemas e Informática, Licenciados y Técnicos de áreas afines.

Saludo de Bienvenida

En esta Vigésima primera (25°) publicación del año voy a compartir con ustedes mi análisis de la lectura del Documento llamado: “La Catedral y el Bazar”La Catedral y el Bazar es una especie de manifiesto creado por Eric S. Raymond en el año 1.998 para intentar explicar desde su punto de vista y experiencia personal (Creación del programa Fetchmail) lo que el percibí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. Debido a esto aportare mi análisis de dicha lectura y desde mi perspectiva personal, es decir, mi experiencia personal creando el Desarrollo de Software Libre llamado Linux Post Install – Script Bicentenario.

Pero antes los invito a explorar este Enlace, que es el documento en cuestión, por lo cual lo comparto con ustedes para que si es de su interés lo visiten y lean!

La Catedral y el Bazar de Erick S. Raymond 

===============================================================

Mi análisis personal desde la perspectiva del Linux Post Install – Script Bicentenario:

  • INTRODUCCIÓN

Esta lectura nos sugiere o 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”.

También en esta lectura el autor hace enfasis 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. Este concepto auto-sugerido me gusto mucho ya que pienso que es acertado, sin embargo, dejaré uno que también me gusta mucho por ser mucho mas global y / o genérico.

Hacker: Es 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.

  • DESARROLLO

Lo primero que nos dice esta lectura es 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 el Mundo del Desarrollo del Software Privativo se hacia de “forma silenciosa y reverente”, tal como se construye una Catedral, 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.

PREMISA # 1: TODOS LOS TRABAJOS BUENOS EN SOFTWARE COMIENZAN TRATANDO DE PALIAR UN PROBLEMA PERSONAL DEL QUE LOS PROGRAMA .

En mi caso, cuando hace casi 6 años llegue a donde actualmente laboro (Dirección General de Tecnología de la Información de un Ente Gubernamental de Alto Nivel de la Administración Publica Nacional de Venezuela) a trabajar como Técnico de Telecomunicaciones (Administrador de Telefonía) y como personal de apoyo al Departamento de Soporte Técnico, yo prácticamente no sabia nada de Linux y Software Libre. Sin embargo, aprender a manejar ese nuevo entorno de trabajo (Sistema Operativo) surgió en mí como una necesidad apremiante. Al irme involucrando y aprendiendo, veía como se tornaba el procedimiento de configuración y optimización (Tunning) del Sistema Operativo como algo demasiado lento y repetitivo, sin contar lo extenuante y aburrido para el personal de Soporte Técnico. Para ese entonces se usaba DEBIAN 5 (Lenny), con el tiempo se migro a DEBIAN 6 (Wheezy), luego un Distribución personalizada basada en DEBIAN 6 con KDE y luego el salto a Canaima 3.0. Durante todo este tiempo, estuve aprendiendo sobre Instalación y Configuración de Linux, y como con todo aquello que he procurado aprender lo hice tratando de maximizar mi tiempo y esfuerzo. Para eso hice uso de mi capacidad de entender el A B C … X Y Z de todo lo que se debía hacer para luego optimizarlo, pero por más que lo hacia invertía mucho tiempo, por lo cual tenia la NECESIDAD de resolver el Factor Tiempo. Fue ahí cuando aprendí a realizar Script en Bash Shell que le permite a uno programar acciones especificas o variadas en lote.

PREMISA # 2: LOS BUENOS PROGRAMADORES SABEN QUÉ ESCRIBIR. LOS GRANDES SABEN QUÉ REESCRIBIR (Y REUTILIZAR).

Cuando empecé a elaborar mis propios Script basado en mis necesidades personales de trabajo, tuve excelentes resultados. Eran sencillos y concretos, instalaban paquetes, modificaban parámetros en archivos de textos, configuraban repositorios automáticamente, entre otras cosas sencillas. Pero cuando lo que necesitaba que hicieran mis Script por mí estaba hecho, sentía que debía a ver más, que se podía hacer más. Fue ahí cuando me dí a la tarea de explorar el maravilloso mundo del “Scriptting” de usuario avanzados (Usualmente Administradores de Servidores). Para mi asombro me di cuenta de que estaba en pañales en la materia, y que no debía inventar la Rueda, solo optimizarla y adaptarla a mis necesidades, reescribiendo y asimilando todo el código posible de otros expertos en la materia. Antes de este salto, yo ya había elaborado múltiples Script bajo las versiones 1.X y 2.X, y luego de esta inmersión pase rápidamente a la 3.X y 4.X. Las versiones 1 y 2, eran solo para usar en terminal, constaban de un solo archivo y eran secuenciales, pero muy eficientes. La versión 3 también era para terminal, pero era modular ya que constaba de diferentes archivos, hacia uso de funciones internas para llamar a los procesos a ejecución. La versión 4 ya se ejecutaba sobre la interface gráfica dentro de un Terminal y en la 4.5 ya tenia su propia Interface gráfica hecha en Zenity y Soporte de Voz con Speak.

PREMISA # 3: PIENSA EN DESECHAR AL MENOS UNO: LO TERMINARÁS HACIENDO DE TODOS MODOS.” (FRED BROOKS, “THE MYTHICAL MAN-MONTH”, CAPÍTULO 11)

Llegado a este nivel de desarrollo pensé que la aplicación ya estaba madura y que podía tomarme un tiempo para que todos la usaran, mientras yo me dedicaba a otras cosas de forma autodidacta. Este periodo de descanso me tomo casi un año, en el cual solo me dedique a explicar todo el desarrollo en mi Blog y ha escuchar detalladamente lo que decía, sugería o proponía mi Comunidad de Usuarios. Pasado todo este tiempo de “Los oigo cuidadosamente” llegue a la conclusión de que lo que había hecho al llegar a la versión 4.5 era algo muy grande que había perdido el norte, era un monstruo funcional que hacia de todo para todos, algo que no agradaba a muchos sobre todo por su peso (Tamaño en MB) y sus alertas multimedias basadas en tonos MP3 de películas famosas.  Por lo que me embarque en volver a los orígenes para retomar a usuarios perdidos, programando el añadir funcionalidades nuevas, quitar las menos necesarias, para hacer el programa mas pequeño, especifico y general, para esto ultimo planee volver a solo usar la Terminal de root.

PREMISA # 4: SI TIENES LA ACTITUD ADECUADA, LOS PROBLEMAS INTERESANTES TE ENCONTRARÁN.

Habiendo cambiado de actitud en cuanto a lo que debía ser mi programa, volví a realizar Script con código actualizado en un solo archivo ejecutable (.sh) y sin interface gráfica, solo terminal. De esto nacieron las versiones 5.0 y 5.1, pero entonces un problema interesante vino a mí. Mis usuarios a los que si les gustaba la interface gráfica (adictos al mouse) deseaban una interface gráfica embebida en el terminal. Esto me obligo a embarcarme de nuevo a en la investigación profunda del “Scriptting” avanzado para ver a donde habían llegado otros. Al final esto genero la Versión 5.2 que era nuevamente modular (múltiples archivos .sh) y con interface gráfica embebida basada en Dialog.

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

Llegado a esta versión y luego de más de 4 años de programar el Linux Post Install – Script Bicentenario decidí que era hora formal de pasar el testigo, ha otros que quisiesen seguir con el desarrollo de la aplicación, para lo cual a través del Blog invite a que cualquiera hackeará el programa para si mismo o la comunidad de usuarios. Publique el código fuente de hasta la Versión 4.5 como punto de partida, para ese entonces yo no le había incluido licenciamiento dentro del código.

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

Para ser sinceros, algunos usuarios luego de esto me informaron de que empezaron a utilizar mi formalmente código para basar los suyos propios. De ellos mismos surgió la propuesta de darme crédito en el código y de que en los futuros desarrollos incluyese formalmente algún licenciamiento, para evitar el mal uso del mismo. Fue en esa etapa en que los usuarios del Blog, me retro-alimentaron más en cuanto a la visión de programa que deseaban tener o crear para si mismos. Había entonces vuelto a mis Usuarios en férreos colaboradores.

PREMISA # 7: LÁNZALO PRONTO. LÁNZALO A MENUDO. Y ESCUCHA A TUS USUARIOS.

Debido a lo anteriormente decidido, y luego de un periodo de 6 meses aproximadamente sin realizar ninguna actualización, me volví a embarcar en la tarea de realizar una nueva versión 6 del Linux Post Install – Script Bicentenario, que tuviese como atributos principales que funcionase eficientemente sobre DEBIAN 7 (Whezzy) y Canaima GNU/Linux 4.X que se habían recién lanzado al mercado, pero que tuviese un mercado amplio y practico!

De esto nació la Versión 6 (Ultima versión liberada) que tenia un código mas documentado, licenciamiento incluido, nuevas funcionalidades, y otras removidas, y lo mejor de todo, con uso dual. Se podía usar luego de instalado por medio de la Interface Gráfica creada o cada modulo por independiente por medio del Terminal, por lo cual tenia ganada a los amantes del terminal y a los de la Interface gráfica.

Pero esta versión resulto ser la más grande en MB, tanto a nivel de código como en paquetes externos incluidos. Por lo cual cambie la metodología de lanzamiento, es decir, pase de version X.1, X.2, X.N a la de Alfa, Beta y Definitiva. Este me facilito el trabajo, ya que lance decenas de cambio rápidamente bajo el formato de Alfa y luego de Beta. Teniendo como respuesta de los Usuarios muchas sugerencias y propuestas en vez de quejas y reclamos. Al final luego de seis meses y más de 20 cambios importantes, pase de una Alfa de 2 GB a 2 Versiones, una de 50 MB sin paquetes externos y una de 3.3 GB que los incluía.

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.

Bueno, definitivamente yo también creo 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 proporcionaba a mis Usuarios sobre el programa, más ellos me aportaban ideas ingeniosas o cambios útiles, solo con la finalidad del beneficio colectivo.

Como la misma lectura los expresa:

“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

Las otras 11 restantes premisas son más del tipo aleccionador (moraleja), lo cual no viene con la historia sino con lo ganado, por lo tanto, en mí caso en particular mis conclusiones son las siguientes:

En un Modelo de Desarrollo de Software tipo Bazar

  1. Se debe tratar a los Usuarios como un recurso valiosisimo, y en el mejor de los casos como aliados invaluables por su colaboración al desarrollo del producto.
  2. Toda idea es buena o intentable de explorar, ya que a veces lo menos sospechado puede ser una gran solución o mejoría para el desarrollo.
  3. 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.
  4. Lo mejor es un código pequeño, directo, sencillo, pero eficiente, que logre ser apreciado por la comunidad como correcto.
  5. 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.
  6. Todo programa puede ser utilizado (en parte o su totalidad) para ser reutilizado en funciones que no se concibieron originalmente.
  7. Todo Software debe llevar su respectivo licenciamiento y medidas de seguridad para la confidencialidad del uso de la Data del usuario.
  8. No hace falta empezar desde cero, siempre alguien a desarrollado algo similar a nuestra idea concebida.
  9. 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.
  10. 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.

No olviden contestar la Encuesta y/o agregarse a la Pagina de Facebook Script Bicentenario y/o al Grupo de Facebook Linux Post Install para estar pendientes de las novedades en el Blog.

Para mayor conocimientos sobre Linux pueden ver el siguiente Videotutorial sobre el tema:

Videotutorial para la Certificación Linux LPIC de Paul Paulito

##########################################

Aquí les dejo esta encuesta para medir el apoyo logrado:

##########################################

=========================================================================================

Recordemos que básicamente este Blog se dedica a explicar todo lo relacionado con mi Aplicación, el Linux Post Install – Script Bicentenario (LPI-SB), el cual es una aplicación de Software Libre como pocas en su tipo en el mundo, es decir, con él una persona (Novata, Experta o Técnica) se puede ahorrar incuantificables horas/labor en entrenamiento y estandarización de procesos de Instalación, Actualización, Mantenimiento, Soporte (Resolución de problemas), Configuración de Perfiles de Usuarios o Parámetros dentro de su Sistema Operativo GNU/Linux basado en la Meta Distribución DEBIAN. El LPI-SB es un Script de Bash Shell desarrollado con tecnología “dialog, gxmessage y zenity” para su interfase gráfica y con “espeak, festival, festvox, mbrola, mpg123, speech y stardict”. El LPI-SB es un Sistema Experto que emula el razonamiento de un Especialista (Analista) Técnico experto en Sistema Operativo GNU/Linux basado en la Meta Distribución DEBIAN. El LPI-SB busca una mejor y uniforme calidad y rapidez en las respuestas a los Usuarios dando así lugar a una mejora de la productividad del Humano “experto” que presta el servicio. El LPI-SB trabaja como un Asistente Técnico con una interfase amigable y multimedia, es decir, con Ventanas, Asistencia por Voz, Alertas de Sonido y Manipulación de archivos de Sistema y Ofimáticos. También implementa la configuración de Perfiles de Usuario de forma que el Sistema Operativo GNU/Linux conserve su bajo consumo de recursos y se conserve como un Sistema Operativo Estable y Ligero, pero lleno de herramientas y aplicaciones elementales y productivas que faciliten su usabilidad ante los usuarios, es decir, que facilite el ser usados por cualquier persona (Usuario Básico, Administrativo, Avanzado, Programador, Técnico, entre otros). El LPI-SB proporciona a la Distribución Canaima GNU/Linux y otras escalabilidad, adaptabilidad, modularidad y ahorro de horas/labor en configuración al personal Técnico o no Técnico que lo implemente. En resumen, actúa como una pequeña inteligencia artificial capaz de lograr la ejecución de una operación idónea o pertinente para resolver una necesidad o poder resolver un problema específico. Si quieren conocer o experimentar con el LPI-SB6 pueden hacer clic en el siguiente enlace:

Todo sobre el LPI-SB6

Postdata: Soy un Ingeniero en Informática (Líder en Proyectos de Migración de Software Libre a Nivel de Usuarios) con un excelente empleo, pero si me ofrecen 14.000,00 Bs. + Beneficios puedo considerar ofertas! Para cualquier información llamar al teléfono0416.610.13.03 ó escribirme al correo: albertccs1976@hotmail.com y albertccs1976@gmail.com

=========================================================================================

REPÚBLICA BOLIVARIANA DE VENEZUELA

LEY DE INFOGOBIERNO

TÍTULO II

DE LA ORGANIZACIÓN EN EL PODER PÚBLICO PARA EL USO DE LAS TECNOLOGÍAS DE INFORMACIÓN

Capítulo IV
De las unidades de apoyo

Competencias

Artículo 53. El Centro Nacional de Tecnologías de Información tiene, en el ámbito de aplicación de la presente Ley, las siguientes atribuciones:

1. Proponer a la Comisión Nacional de las Tecnologías de Información las líneas de investigación para el desarrollo de programas y equipos informáticos que apoyen la solución de problemas en el Poder Público y en el Poder Popular.

2. Contribuir con la formación y difusión para la apropiación social del conocimiento en tecnologías de información libres en el país.

3. Solicitar al Poder Público y al Poder Popular la información necesaria para el cumplimiento de sus funciones, en el ámbito de su competencia.

4. Colaborar con la Comisión Nacional de las Tecnologías de Información en la promoción del acceso e intercambio de datos, información y documentos entre los órganos y entes del Poder Público, así como entre éstos y el Poder
Popular.

5. Ejercer las funciones de unidad de apoyo especializado para la Comisión Nacional de las Tecnologías de Información.

6.  Presentar el informe anual sobre su gestión al órgano rector y a la Comisión Nacional de las Tecnologías de Información.

7. Coordinar con el órgano competente los procedimientos, acciones y actividades necesarias para el desarrollo de la gestión del Sistema Venezolano para la Calidad en materia de tecnologías de información en el Poder Público.

8. Velar por el cumplimiento de las disposiciones de esta Ley y demás actos que se dicten, cuya vigilancia le competa.

9. Las demás atribuciones que determine la Ley.

__________________________________________________________________

Atrévete, usa Linux, sobre todo Canaima GNU / Linux.

La Lucha es Global y somos Ciudadanos Globales, todos a luchar por un Mundo Mejor!

Anuncios

Gracias por tus comentarios...

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s