Sé la primera persona en valorar esta idea Valorar

Software Libre y SCM: Drupal y gestión de la calidad de su cambio como software libre

Siempre hemos buscado cómo mejorar el proceso de producción de Software, y el Software Libre no es la excepción.


Siempre hemos buscado cómo mejorar el proceso de producción de Software, y el Software Libre no es la excepción.
El asunto no es un tema menor ahora que el mundo del Software Libre es un mercado productivo y un sector económico. Y por lo mismo sujeto a ciertas reglas pero reglas surgidas del mundo del software libre.
Por eso un post que analiza un caso: DRUPAL, escrito en conjunto con Iván Campaña, RDI Director & Co-Founder de DOMO.
Deseamos aclarar que hablaremos de la Gestión de la Configuración del Software (Software Configuration Management, SCM), pero no como observadores ajenos a la comunidad de Software Libre sino como observadores que vivimos este proceso de madurez desde la propia comunidad DRUPAL.
Software Libre no significa hacer las cosas como se ocurren, sino cumplir un proceso de madurez propio de las comunidades. Esto es normal, y lo aclaramos.
Todas las comunidades humanas han ido superando estados de organización, conducentes hacia estados de trabajo organizados. Así es como siendo sociedad, hemos pasado de nuestros pequeños grupos de antepasados nómadas, luego los pueblos y los primeros asentamientos, conduciendo hacia los estado-ciudad medievales, y ya por último llegando una sociedad global que igualmente busca organizarse.

En paralelo hemos pasado de sociedades tribales, a reinados, imperios, países, más o menos burocráticos, más o menos liberales, más o menos cooperativos. Pero en suma, organizados y buscando medios que permiten la fraterna convivencia.
Gestión de la Configuración del Software o SCM -por sus siglas en inglés- permite el seguimiento y la mejora del desarrollo de software y de las versiones de los componentes y productos en producción. Como todo proceso productivo es apoyado por herramientas automatizadas, software de SCM.
Pero sobre este asunto del SCM, es un error asumir que si usamos una herramienta informática de control de versiones estoy cumpliendo con SCM. La verdad es que el control de versiones es apenas un componente del proceso, y usar un software es tener una visión acotada de la gestión de proyectos.
SCM es un proceso y una cultura organizacional de manufactura profesional y maduro ... No es usar un software, aunque eso ayude.
Aunque, si somos sinceros y recordamos nuestra época de estudiantes universitarios, el mantener un orden y seguir procesos, no es la norma.Albores del desarrollo compartido y el software libre.

Iván recuerda como experiencia, su primer contacto con la web fue por 1996, cuando su uso era aún incipiente y por prácticas como estudiante elaboró su primera página web (con la poca información que pudo conseguir y aprender).
De manera formal como profesional lo hizo posteriormente en el año 2003. Y por ese año, a medida que fueron cambiando las necesidades y los proyectos se comenzó a volver mucho más común el uso de componentes y/o paquetes completos de software para desarrollar.
Era un primer contacto con un CMS (Content Management System) como tal, y al momento pareció lo mejor que se podía obtener para reducir tiempos de desarrollo, aprovechar el conocimiento de otras personas con los mismos problemas y sobre todo conocer cómo lo habían resuelto.
Iván indica que se llegó a topar inclusive con casos de clientes que habían partido utilizando software libre implementado con un proveedor y literalmente habían canibalizado el proyecto, alterando a diestra y siniestra el código, haciéndolo virtualmente imposible de mantener.
Sin embargo, a medida que la complejidad aumentaba, las exigencias eran mayores y los errores y las limitaciones comenzaban a aparecer.
Christian comenzó su trabajo años antes, a mediados de los ochenta. Software libre y CMS no existían. El software era producido y no existía la idea de compartir como se conoce hoy. En las ayudantías universitarías se compartían experiencias y códigos y se aprendían tips. Se producía en máquinas de tiempo compartido y compartir era hablar con el compañero "de al lado".
Por los ochenta programábamos ventanas en X-Windows, "a mano" como la base de las aplicaciones que debían hacerse. O sea, debíamos incluso fabricar nuestras herramientas. Expresiones como framework, platform, API, etc. estaban partiendo. Todo era "hacer software". E internet en esos años de universidad era enviar un mensaje a alguien y esperar unos 10-15 minutos por la respuesta.
Ya en los noventa se trabaja produciendo la primera web. Se hizo hablando directo con el usuario, y en equipos de trabajo en incipientes redes. Como se hacían sistemas de toma de decisiones gráficos, el desarrollo requería alta interacción y por lo mismo se compartían algoritmos, no códigos fuente. Era en esencia un método de algoritmos libres. A fines de los noventa ya vino todo el boom de los CMS desarrollándolos desde cero y corrigiendo miles de líneas de código pues los programadores requerían cierta formalización. El caso Drupal como proceso de gestión de la configuración de software.

Volvamos a Drupal.
Proceso de aprendizaje de DRUPAL.


Aprender a utilizarlo va conectado con una curva de aprendizaje de pendiente bastante pronunciada. A propósito de esto, hay un gráfico que se mofa del proceso de aprendizaje usual con Drupal.
Como con cualquier software, con Drupal a medida que pasaba el tiempo, se aprende más, y se van descubriendo diferentes formas de hacer las cosas con esta herramienta. Esto es lo que se conoce como "The Drupal Way" que es un conjunto de buenas prácticas obtenidas de la comunidad para sacarle más provecho a la herramienta sin llegar a canibalizar Drupal, entender cómo funcionan algunos de los componentes que lo integran y poder obtener un mejor resultado.
¿Así que, Drupal es una herramienta sin errores? No, sin embargo tiene herramientas para hacer seguimiento de los errores, saber quien es el encargado de resolver un problema, el historial de cambios, el registro de la discusión que se está teniendo para saber como solucionarlo e inclusive la comunidad aporta con recomendaciones y parches para mejorar o corregir errores.
Cada módulo tiene uno o varios encargados de su mantenimiento, gestionar la cola de errores, hacer revisión de los parches y en caso de llegar a ser integrado, aplicarlo y subirlo a drupal.org (que funge como punto de encuentro para los creadores y consumidores de componentes del CMS).
Uno de los puntos de referencia en cuanto a la gestión del cambio, y la forma en la que aporta un miembro a la comunidad, nace desde la aprobación de un módulo nuevo para ser publicado en drupal.org, donde cada uno necesita "ganarse" la reputación suficiente para que su módulo sea aprobado (un proceso que se realiza una sola vez), y esto se gana justamente siguiendo las normativas definidas por la comunidad sobre cómo escribir código seguro, haciendo revisión manual de calidad de al menos 3 módulos, y llenar la solicitud de revisión para el módulo también sea revisado y aprobado, dentro del cual puede ser enviado nuevamente para que sea mejorado, ya sea por errores encontrados, por duplicar una funcionalidad ya existente en otro módulo (lo cual no aportaría al ecosistema), no seguir los estándares de codificación o simplemente por errores de seguridad.
En el caso de lo que se conoce como el core (núcleo) de Drupal, el proceso es similar, pero mucho más estricto, por obvias razones, ya que la idea es que sólo las mejores contribuciones formen parte de la distribución oficial.
Para poder entender esto de mejor manera Iván participó en al menos 2 sprints de código durante dos DrupalCon (encuentro de los diferentes actores que formamos parte de la comunidad). Lo hizo desde abajo, como principiante por completo, a pesar de tener suficiente experiencia a nivel de desarrollo y proyectos, se quería saber cómo funcionaba el proceso en su totalidad y entender la manera correcta de hacerlo.
Dentro de ese proceso se recibió una corta capacitación sobre las herramientas de comunicación utilizadas para encontrar errores y realizar revisiones, cómo moverse a través de los tableros de reporte de errores, la nomenclatura utilizada para describir los problemas, cómo y cuando se puede solicitar una revisión, de qué manera se debe describir el problema o la necesidad, la automatización de pruebas de código y si se decidía aportar con código, cómo debía hacerlo.
Desde nuestra experiencia, esto va mucho más conectado al proceso de SCM en software, donde se registran peticiones de cambio, con solicitantes (clientes), responsables (personal operativo), revisión por pares y observaciones (QAS), control de versiones y un flujo de aprobación claramente identificado.
En otros proyectos de Software Libre en los que trabajamos, aportamos y buscamos conectarnos con la comunidad no encontramos un proceso que nos dé la certeza que estábamos trabajando con un equipo de gente que compartía nuestro interés por tener software que cubriera nuestras expectativas.
Tanto Joomla, como Wordpress (2 de los CMS más utilizados al día de hoy y que evaluamos durante nuestro proceso) tienen millares de componentes, más de uno realizando la misma función, todos asegurando que uno lo hace mejor que otro (con lo cual el esfuerzo se diluye) y con niveles de calidad que dependen realmente de la persona o la empresa que lo realizó, de forma que pueden haber componentes excelentes y otros catastróficos.
Vale la pena recalcar lo que dijimos antes. Todo lo anterior no garantiza que el proceso en Drupal esté libre de errores o que no se pueda escapar algo, pero permite resolver problemas mucho más rápido y genera un alto nivel de apoyo en la comunidad que se ve retribuido como soluciones que todos podemos aprovechar.Drupal: software libre de origen privado y de voluntarios.

Esta capacidad de unir actores empresariales y voluntarios es una de las líneas motivacionales más utilizadas en la comunidad, es lo que permite converger tanto actores de comunidad, como actores de negocios, en los que quizá la motivación es diferente para cada uno, pero marca una línea sobre la cual seguir adelante.
Esto deja claro que el componente empresarial o corporativo tiene un peso importante, ya que existen múltiples aportes que han sido patrocinados por empresas y liberados a la comunidad como software libre.
El caso más reciente, en donde se junta el esfuerzo de la comunidad y empresa ha sido en el aceleramiento para la salida de la versión 8 de Drupal, donde se contó con un plan de incentivos (Drupal 8 Accelerate) para corregir los errores críticos y realizar mejoras al software.
Esto fue canalizado a través de la Drupal Association, un organismo sin fines de lucro que se encarga de ser el catalizador de la comunidad, ampliando el uso de Drupal a través de eventos, capacitaciones, becas y programas de entrenamiento.
Recordando una conversación durante el último Drupal Summit Latino en Cusco-Perú donde conversábamos al respecto, el factor en común es que independiente si somos miembros por la parte empresarial o de la parte comunitaria, todos mantenemos un perfil profesional que queremos desarrollar y con el cual trabajar.
Esto se confirma al ver que no necesariamente la ingeniería de software debe estar divorciada de un proceso creativo, ni tampoco del software libre, las reglas son diferentes, pero el resultado final debe ser el mismo, herramientas que permitan crear soluciones de negocio, obtener resultados palpables y medibles.SCM y software libre.

El SCM es un concepto asociado directamente con la ingeniería de software, y define en términos sencillos o se puede tratar de explicar como la gestión del cambio, de forma que el desarrollo de software pueda ser trazable, evaluado y valorado en términos de calidad y responsabilidad (en el caso de un equipo de desarrollo).

¿De qué manera se maneja esto en el software libre? Nos gustaría decir que todos los proyectos siguen un proceso estructurado, pero la verdad es que existe un gran porcentaje de estos que tienen su origen en el tiempo libre de algún neófito o aparecen como resultado del proyecto universitario de algún estudiante.

Sin embargo, existe una parte de proyectos que nacen amparados bajo el paraguas de una empresa, o en el caso que vamos a abordar, sirven como punto de partida para crear una, en la cual se utiliza el concepto de “Dictador Benévolo”.
En la comunidad de software libre Dictador Benévolo se utiliza para referenciar al líder de proyecto, quien probablemente sea quien dio partida al mismo y define las directrices bajo las cuales se va a manejar el desarrollo de un producto.

Algunos de los líderes de proyecto más conocidos (por nombrar algunos) son: Mark Shuttleworth (Ubuntu), Linus Torvalds (Kernel de Linux), Guidovan Rossum (Python) y Dries Buytaert (Drupal). Podemos dejar alguien fuera, pero vale el ejemplo.

Para este post nos enfocaremos en el último personaje de la lista de líderes, Dries Buytaert, quien es al día de hoy el CTO y co-fundador de la empresa Acquia, la cual según datos de febrero del 2015 maneja cerca de 600 empleados y tiene ingresos sobre los 100 millones de dólares. Acquia fue creada para dar servicios sobre Drupal, un software que creó Dries como proyecto universitario para gestionar contenido.

¿Quiere decir ésto que Drupal es más comercial que software libre? Todo lo contrario, es una de las herramientas web que se ha mantenido fuertemente amparada y apoyada en su comunidad de software libre y es esto lo que le ha permitido crecer y fortalecerse como CMS (Content Management System).

Producir software es trabajar con dos factores clave en la producción de software: la falta de control de calidad y la inflexibilidad del software que se había utilizado.

En nuestro caso y experiencia, comenzamos la búsqueda de alternativas de CMS para poder tener una base sobre la cual montar nuestros proyectos, que nos permitiera ser flexibles, pero al mismo tiempo mantener la ventaja de poder acoplarnos a diferentes escenarios.

Cerca del año 2010, tal era la demanda de proyectos con mayor envergadura (clientes que pedían poder manejar sitios web con necesidades muy específicas y con la capacidad de soportar miles de usuarios de forma concurrente), que se llegó inclusive a considerar la opción de desarrollar nuestra propia herramienta.

Finalmente se optó por utilizar Drupal (luego de evaluar más de 10 herramientas web diferentes, no había sido el ganador, de hecho ni siquiera había quedado en la lista), pero apareció por exigencia de un cliente de EEUU.
Así llegamos a DRUPAL, del cual se conocía poco, pero que a lo largo de los años desarrolló un proceso que se consolida, no solamente por responder a criterios de ingeniería propios del software, sino por mantener la flexibilidad y "frescura" creativa de una comunidad internacional y de voluntarios.
Esta última aclaración es vital en el mundo del software libre. ¿Porqué?
Las comunidades de software libre se crean para dar vida a los software o un tipo de software, lo cual dar lugar a una organización sostenible si el software comienza a masificarse y a ser popular.
Software libre como manufactura, no como ideología, fabrica dispositivos de uso social casi al 100% y deben ayudar a sostener esos procesos sociales en los cuales se inserta.
La calidad del software es inmanente a cualquier dispositivo de ingeniería.
La comentada mejor calidad de los software libre debe compartirse de lo contrario perderá el sentido originario de su esencia.
Queremos cerrar este post con una idea de Drupal:
"Come for the software, stay for the community"
"Ven por el software, quédate por la comunidad"
y unas reflexiones:
Software libre se define por ciertas reglas.
Software libre se valida por su uso.
Pero ¿cómo gestionar la calidad de su cambio?

Fuente: este post proviene de Estrategias y proyectos de innovación, TIC y desarrollo, donde puedes consultar el contenido original.
¿Vulnera este post tus derechos? Pincha aquí.
¿Qué te ha parecido esta idea?

Esta idea proviene de:

Y estas son sus últimas ideas publicadas:

Recomendamos

Relacionado

FOTOGRAFÍA editor de fotos profesional

GIMP, el editor de fotos de software libre mas famoso, presenta nueva versión

Los usuarios de GIMP están de enhorabuena. GIMP es el software libre para editar fotos mas conocido que existe. Una de las mejores alternativas a Adobe Photoshop. Por desgracia no son muchas las actualizaciones que presenta. Por suerte ahora llega GIMP 2.10.4. GIMP es el programa mas parecido a Photoshop en el mundo del software libre. Incluso cuenta con algunos plugins al estilo Photoshop. Desde ...

Actualidad Android Smartphone ...

Es el momento del hardware libre

Gonzalo Sanchez del Pozo Tras el software libre llega el hardware libre. En esencia este nuevo movimiento nacido en el 2001 lo que permite es poner a disposición de todo aquel que lo quiera información técnica y diagramas para la fabricación de diferentes tipos de hardware como Aurora, UltraSparc o Uzbeks El movimiento del software libre es algo ya plenamente asentado en la comunidad de software, ...

general _services de omni re scibili projects ...

Software Público - 'Una posibilidad para democratizar los procesos'

Un asunto de Soberanía global. En el último encuentro de Software Público organizado por RedGealc (Brasil, Marzo 2015), se valoró que Ecuador está en primera opción a nivel latinoamericano para que en el 2015 libere un modelo de software público amplio y potente que crea un espacio de encuentro donde el debate de software libre y de software propietario se desvanece frente a nuevas opciones de di ...

Tecnología actualizaciones aplicaciones ...

Aprender a utilizar Linux con un curso linux Ubuntu

Comenzar a utilizar software libre es uno de los propósitos más insistidos entre muchos usuarios actuales de software con licencia, ya que las diferencias positivas y las amplias ventajas que ofrece el software de código abierto han sido comprobadas cada vez por más usuarios que se han cambiado a Linux para nunca más volver al software propietario. Una de las características más representativas de ...

Tecnología curso Instalación ...

La forma más efectiva de iniciarse usando un La forma más efectiva de iniciarse usando un curso linux online

El software libre representa un mundo completamente diferente para usuarios que se han adaptado durante años a las comodidades y el confort que suele ofrecer el software propietario, por lo que cambiarse a Linux y probar algunas de sus distribuciones resulta ser un proceso confuso y de muchas dudas. Es indispensable contar con ayuda cuando nos estamos iniciando en este proceso de aprendizaje ya qu ...

Linux

Cómo hacer uso de los paquetes DEB de origen para personalizar la instalación de software

Si está usando una distribución Linux importante como Ubuntu o Fedora, habría venido con un gestor de paquetes que le permite instalar fácilmente paquetes binarios (DEB o RPM ) en su sistema. Sin embargo, si está planeando personalizar el software que está instalando, como añadir funciones adicionales, es posible que desee utilizar los paquetes fuente y compilarlos usted mismo. Hay un par de razon ...

Tecnología caracteristicas codigo abierto ...

Ubuntu Linux un software de código abierto con características versátiles

La plataforma de Ubuntu Linux puede llegar a adaptarse a cualquier usuario dependiendo de sus intereses y los requerimientos de uso del sistema, esto es gracias a sus características versátiles que hacen de esta una de las versiones llamadas: Todoterreno,   que por medio de actualizaciones e instalación de software complementario se puede dar el uso que desee. El diseño de este software está dedic ...

Sitios web más limpios y seguros para descargar software libre para Windows

Los sitios de descarga de software libre pueden ser peligrosos. Visita el incorrecto y te toparás con falsos virus y malware advertencias, así como falsos botones de descarga, todos los cuales son malware disfrazado. ¿quieres estar a salvo? ¡ Utilice una suite de seguridad de Internet mientras navega! Pero además de eso, usted debe atenerse a los sitios probados y verdaderos que están comprometido ...

general noticias tecnologia

Las empresas de software más rentables del mundo

En un momento en el que la tecnología informática cada vez se expande a más aspectos de nuestra vida cotidiana, a nadie sorprende que las compañías que proporcionan software ganen millonadas. Pero es interesante conocer a cuáles de estas empresas les va mejor, es decir, cuáles de ellas obtienen más beneficios de su trabajo cuando la competencia es cada vez de mayor dureza. Veamos aquellas que supe ...

general gadgets ofimatica ...

OpenO?ce: Software de o?cina gratis

OpenO?ce es un paquete o?mático que supone una importante alternativa al conocido paquete de MS O?ce con la marcada diferencia de que en esta caso estamos hablando de un Software de o?cina de distribución gratuita, libre de licencia e integrado por herramientas como procesador de texto, hoja de cálculo, presentaciones y una aplicación para crear base de datos. OpenO?ce cuenta cómo podemos ver con ...