Todos nos beneficiamos con el Software Libre

Muchas veces, parece como si el que mayor beneficio saca del Software Libre es el usuario final. Mucho software se hace para ayudar con una necesidad generalizada. Pero a pesar de esta premisa, el usuario final somos todos, pues que el se libere un programa afecta al usuario final, al desarrollador y al integrador.

Usuarios finales

Como producto final del que vamos a disfrutar, podemos asegurar que utilizando Software Libre evitaremos monopolios. Todos tienen el acceso al código, pero cada empresa un interés único, esto puede crear una competencia real. Como por ejemplo el caso de dos entornos de escritorio famosos, Gnome y KDE, al que podemos sumarle ahora Unity, integrado en las próximas versiones de una de las mas famosas distribuciones Linux, Ubuntu.

Confianza, aunque como en la mayoría de los casos, depende del éxito del programa, siempre podemos decir que tener acceso al código, nos permitirá modificarlo tanto para adaptar nuevas necesidades como exportar datos para portarlo a otro programa. Imaginemos un programa de contabilidad, que dejara de mantenerse por cualquier razón. En este caso podríamos obtener los datos para pasarlo a otro programa de contabilidad. Nos podemos olvidar de cajas negras en las que introducimos datos, se procesan "mágicamente" y nos devuelven resultados, sin saber que ha pasado entre medias.

Todo programa libre como cualquier otro programa, debe ser probado antes de su salida oficial. Pero en el caso del Software Libre podemos predecir que ese programa ha sido testeado en un entorno real, porque el acceso a programas libres es más económico, sin versiones de prueba o por tiempo limitado. Libre de probar y si no te gusta utilizar otro.

Desarrolladores

Oportunidad de competencia, aún teniendo pocos recursos. No es necesario invertir en costosas licencias  para ver que al final no cumple con lo que necesitas para desarrollar. Como se decía antes, se prueba y si no te convence, utilizas otro o lo adaptas.

Tomar ventaja respecto a tus competidores, pero con un previo análisis, pues si partimos de una misma base, no es bueno acabar haciendo lo mismo. En ese caso, es mejor la colaboración con un proyecto.
Los canales de distribución son baratos y globales. Ofrecer un proyecto de Software Libre es ofrecer un repositorio de donde cualquiera pueda obtenerlo, poder ejecutarlo o poder distribuirlos.

Podemos obtener beneficios sobre las modificaciones de dicho software para posteriormente venderlo. Un caso muy práctico es el uso de los desarrolladores web que utilizan Apache para montar un servidor, PHP como herramienta de desarrollo, y posteriormente utilizar una base de Drupal para montar una web. En todo momento está usando software, y no por ello no deja de cobrar por el servicio, que es hacer la página web. Pudiendo además, durante el desarrollo encontrar fallos que reportar o incluso arreglar para ser devueltos a la comunidad.

Integradores

Todo el Software Libre está a su disposición. Si un programa no se ajusta al resto, siempre existe la posibilidad de adaptarlo, el código fuente está disponible. Partes de software pueden ser integrados, no es necesario integrar el software completo. Tal como decía antes, no hay cajas negras, si deseas integrar una serie de software, siempre podrás analizar los parámetros que  entran en el programa y ver su proceso.

Calidad en el Software Libre

¿Cómo podemos medir la calidad en el Software Libre?

Es un gran problema, porque la percepción de calidad es diferente para cada persona, los intereses de uno son completamente diferentes al del otro. Pero si que podemos definir una serie de aspectos que pueden ayudarnos a decidir porqué un software es de mejor calidad que otro.

Eficiencia, porque debe cumplir con todos los requerimientos planteado previamente, utilizando los recursos mínimos necesarios para dicha tarea. Se puede medir concretando previamente las necesidades que va a suplir el software y comprobar posteriormente si las cumple.

Reusabilidad, es la capacidad con la que está desarrollado el software para que pueda ser utilizado en otras funciones o proyectos diferentes.

Usabilidad, las funcionalidades que es capaz de ofrecer para ser ejecutado.

Modularidad, capacidad de división en partes del proyecto para que sus funcionalidades queden aisladas entre si, y se puedan desarrollar de manera autónoma.

Claridad, tanto el código como la funcionalidad final del software, deben ser concretas y definidas, sin que sea complejo volver a analizar su funcionamiento.

Robustez, garantiza la integridad de los datos que use el software, y que en un mal funcionamiento no provoque errores en su conjunto.

Seguridad, compromiso de los datos, y del sistema en general para utilizarlo con fines ilícitos, o hacer un mal funcionamiento.

Además de seguir éstas pautas, se utilizan los estándares. No solamente es llevar un papeleo extenso sobre la manera de realizar un desarrollo. Calidad es cultura, experiencia, buenas prácticas... Los desarrolladores no son elementos fáciles de intercambiar.

La relación entre calidad y proceso son  muy discutibles,  pues no quiere decir que  una buena calidad de producto tenga una buena calidad de proceso y al revés. Pero si que se puede generalizar que si un software está desarrollado por gente con mucha reputación, podemos asegurar que vamos a tener un buen desarrollo, ya que esas personas ya tienen cultura adquirida.

Hay comunidades de software que se han ganado la confianza de los desarrolladores, y tienen guías propias de buenas practicas, como las siguientes:



QSOS - Selección de proyectos de Software Libre


Qualification and Selection Open Source software, traduciendo literalmente, Calificación y Selección de software de Fuentes Abiertas. Gracias a esta metodología, podemos trazar y argumentar de una manera objetiva la selección de entre varios proyectos de Software Libre. Esta metodología es de origen Francés, de la empresa Atos Origin.

QSOS define 4 pasos que debemos tomar:



  1. Definir y organizar qué va a ser evaluado. Puede ser que solamente nos interese una cierta funcionalidad de un software, y puede que exista software que solamente tenga esa funcionalidad que buscamos. Vemos a que familia de software pertenece pues no es lo mismo definir criterios para una software de retoque fotográfico que uno para monitorizar un sistema.
    En este punto también se observa con detalle el tipo de licencia, si podemos tomar posesión del código o es una licencia vírica como lo puede ser GPL.
    Por último, también se define el tipo de comunidad. Si es un desarrollador por su cuenta, un grupo de desarrolladores, organización o entidad legal.
  2. Evaluar el software de la competencia en contra de los criterios definidos anteriormente, incluidos los riesgos de la naturaleza de ese proyecto.
    De esta fase debemos reportar 2 informes, una tarjeta identificativa por cada proyecto evaluado, para realizar búsquedas rápidas, ver aspectos técnicos y servicios.
    Y el otro reporte es un hoja de evaluación que contiene las funcionalidades cubiertas, riesgos que cubre a partir de un usuario y un integrador. Puntuación de 0 a 2, definidos como funcionalidad cubierta, 0 no, 1 media y 2 total.
  3. Calificación según los criterios de la organización en ejes de evaluación, y el filtrado de la selección relacionados con su contexto. Se definen filtros, por ejemplo el software con funcionalidades incompletas, se filtra por tarjeta identificativa.
  4. Selección del software que cumple con todas las necesidades descritas al inicio y anotar los programas que compiten. Para ello hay que crear una malla con todas las puntuaciones del paso anterior y organizarlos.


Ver la metodología se esta manera puede parecer difícil de entender, pero con QSOS quisieron realizar algo diferente, y consiguieron unificar el método con el que se realizan éstas métricas y cuando realicemos un QSOS, podemos compartirlo. 



Existen también herramientas que nos facilitan esta tarea, como la O3S Open Source Selection Software Tool, http://www.qsos.org/o3s/. Pero dentro de la sección de Tools de la web QSOS vemos que hay otras herramientas como la Xuleditor, que como su nombre indica, utilizar el motor gráfico de Firefox.

Ohloh - comunidad de desarrolladores

Ohloh es un directorio público de Software Libre y personas que lo desarrollan y/o usan. Aunque pueda parecer una forja donde alojar proyectos, no lo es.



En Ohloh se centran en un análisis de los proyectos que tiene enlazado. Gracias a los datos que obtiene de los repositorios oficiales de los proyectos puede realizar diferentes informes sobre el uso del lenguaje de programación, el sistema de control de versiones o incluso comparar varios proyectos.

No obstante, puedes realizar otro de consultas gracias a su API abierta, con ejemplos de uso en varios lenguajes de programación.

Al visualizar un proyecto en concreto, podemos observar que Ohloh hace un análisis del mismo, y crea un indice propio al que llama factoids. Podemos ver la actividad de usuarios a nivel geográfico, pero para que esto funcione correctamente, tiene que existir usuarios registrados que marquen  que usan dicho software.


Gracias a estas herramientas, podemos hacer un estudio sobre las motivaciones de los desarrolladores y de los usuarios finales, ya que ambas partes son importantes en el crecimiento de un proyecto.