Modelos de negocio con Software Libre

Licenciamiento dual
Es un modelo que solamente sirve para licencia no permisivas como la GPL. El autor, de esta forma puede vender el software cerrado. Esto no tiene sentido en licenciamientos permisivos, pues cualquiera puede cerrar el software y venderlo al igual que lo podría hacer el autor original. Google puede estar aplicando algo similar, porque su desarrollo es cerrado, y cuando sacan al mercado una nueva versión Samsung ya tiene disponible Android adaptado a sus terminales. Esto es porque tengan una acuerdo de licenciamiento.

Open Core
Aunque nos puede confundir con el licenciamiento dual, la diferencia se marca en que la parte que es privativa tienen extras con coste que no tiene la parte con licencia libre. Muchas empresas utilizan este modelo de negocio como Zimbra o MySQL. Este modelo es muy discutido por no ser muy satisfactorio hacia la comunidad, pues mantienen durante un tiempo o no, código que no puede ser utilizado nada mas que por el desarrollador.

Especialistas de producto
También muy utilizado, esto se debe a que cuando eres el desarrollador de un software, posees la ventaja natural de tener mayor experiencia que tus competidores. Alfresco es una compañia que da soporte sobre su gestor documental. Por otro lado, IBM da soporte a otros productos que no son suyos, pero gracias al renombre que tiene, muchas empresas confían en ellos antes que en contratar a otras personas.

Proveedores de plataformas
Tener una serie de software y ofrecerlo a la carta. Todo el mundo conoce Ubuntu, RedHat... cualquier distribución Linux se ha convertido en un proveedor de plataformas. Existe el aliciente de que tanto el nombre como logotipos de la empresa pueden ser propiedad privada, pro lo que no podemos coger Ubuntu y redistribuirlo como si fuera tuyo. Por ejemplo Linux Mint se basa de la distribución de Ubuntu, pero no usa ningún elemento corporativo de Ubuntu.

Proveedores de una serie de productos
Preparas software, y lo ofreces todo integrado. IBM se ha convertido en una especialista de este sector. Otro ejemplo claro de  este modelo es Sun, que integraba una serie de software como MySQL, OpenOffice y lo vendía en conjunto para usar sus servidores. Además poseían el aliciente de ser los fabricantes de dicho software, y mejor que ellos no existían.

Compañías de consultoría
Personas con experiencia en integración o en expectativas de mercado. Gracias a estos servicios puedes posicionarte mejor contra tus competidores, o preveer que software elegir para una gestión empresarial. Existen casos que los mismos consultores son los encargados de crear una versión customizada de lo que necesites.

Costes compartidos
Rehusar y no reinventar la rueda. Android no nació desde cero, se dedicaron a coger proyectos muy estables (Kernel de Linux) integrarlos y ofrecer una buena API. Nokia hizo lo mismo con Maemo. ¿Porqué Android triunfó y Maemo no? posiblemente sea Google que estuviera detrás de todo esto, empresa especializada en publicidad.

Ingresos indirectos
La tienda de Canonical es un ejemplo de ingresos indirectos, realmente no están ganando dinero por el software si no por la venta de otros productos. No siempre hace falta que sea venta de otros productos. En el caso de Linux,  hay mayor implantación en servidores que en escritorio, y los fabricantes de hardware lo saben. Por esta razón, les interesa que los servidores que venden sean compatibles con Linux, por lo que realizaran desarrollo hacia Linux de manera indirecta.

Costes y beneficios al usar Software Libre

Funcionalidad
Con Software Libre podemos acceder a tecnología puntera. Gracias al sistema de Early Release, se libera el código según se está desarrollando. Tiene como desventaja los problemas de estabilidad, ya que son desarrollos aún no testados. Pero si lo que quieres es software comprobado, aunque esto no quiere decir que esté libre de errores, puedes escoger en descargarte la versión estable. Existen usuarios que esto no les parece una ventaja, pues están acostumbrados a su software y no quieren cambiar, este colectivo no necesita lo último y ven este aspecto una desventaja.

Ejemplo

JavaScript, es un lenguaje muy conocido, y es igual tanto en cliente como en servidor. Se unifica el desarrollo de un mismo programa, para dos ámbitos completamente distintos, facilitando la tarea de cambiar entre la ejecución procesada por la máquina del cliente o por la eficiencia del servidor. Esto funciona gracias a la máquina virtual de Javascript que tienen los navegadores web. Existe un proyecto interesante llamado node.js, que abstrae todo lo necesario para tener una máquina virtual de Javascript sin necesidad de navegador web.

Adquisición de tecnología
Con Software Libre, adquirir tecnología, es adquirir conocimiento. Únicamente hacen falta las ganas y tiempo para estudiar como funciona. Cada uno puede autogestionarse el aprendizaje de la tecnología que necesitamos.

Ejemplo

Si deseamos implementar Cloud computing en nuestra empresa, tenemos varias opciones, que busquemos información y estudiamos cómo funciona, o contratar los servicios de otra empresa que nos expliquen como funciona. Incluso puede que encontremos gente experta en esa tecnología y la podamos incluir entre la plantilla de trabajo. Muchos de nosotros  tenemos instalado Ubuntu, al tiempo podemos convertirnos en expertos en este Sistema Operativo y podemos dar servicio como desarrollador de Ubuntu, pero no necesariamente necesitamos un certificado oficial de Canonical para conocerlo todo acerca de este Sistema Operativo.

Eficiencia económica
¿Cuantos recursos necesito para que un programa de mantenga al día? Linux es eficiente por una razón, y es el trabajo voluntario de las personas. Porque existen ocasiones en las que te encuentres que algo no funciona, y tienes la posibilidad (y habilidad) de poder  solucionarlo. Con software privativo, nadie va arreglando los errores de Windows, porque básicamente, no se puede y podría ser una práctica ilegal si llegaras a poseer su código fuente.

Ejemplo

El Kernel Linux, existen miles de personas desarrollándolo. pero no hay nadie que haya invertido una gran cantidad de dinero para que eso funcione, y aún así funciona. Seguramente lo que se ha invertido en el desarrollo de Linux sea inferior a lo que se ha gastado Microsoft con Windows, por eso es más eficiente.

Nuevas oportunidades
Para combatir con otros que ya tienen un buen mercado. En este caso puede que no exista otra alternativa.

Ejemplo

LibreOffice respecto a Microsoft Office. Si LibreOffice tuviera un precio similar o mejor, puede que nadie se haya molestado ni en probarlo. En este caso en concreto, LibreOffice proviene de un fork de OpenOffice realizado por la comunidad, ya que por la compra de Sun por parte de Oracle, existía un riesgo de abandono del proyecto.

Economía del software
Lo que realmente demanda la sociedad que consume software, no son programas... es un servicio. No se quieren preocupar si su ordenador deja de funcionar. Imaginemos que alguien lleva la contabilidad de su empresa de alimentación, no sabrá y no tendrá mas interés que en manejar su programa de facturación, lo demás no le importa. En un modelo privativo, lo que se vende no es el software en sí, sino licencias. Una vez que tienes licencia, se olvidan completamente del usuario, y si te diriges a ellos por cualquier problema, te redirigirán a una empresa encargada de solucionar problemas. Imaginemos la misma situación en la venta de un vehículo nuevo, en el que una vez comprado, ya no se responsabilizan de un error de fabricación. Con Software Libre no existen costes de licencia, pero si deseas, puedes invertir el coste de lo ahorrado en la licencia en mantenimiento real.

Ejemplo

Programas en la nube. Como Google Docs, al no tener el software instalado en tu ordenador se pueden aplicar cambios incluso cuando el usuario ni siquiera los ha detectado.

Adaptación a las necesidades específicas
Si  tienes una necesidad, y además tienes dinero o tiempo, siempre contratar a alguien que te realice los cambios o hacerlos por tu cuenta. En el modelo privativo, por mucho que quieras cambiar el logotipo al inicio del ordenador, no será nunca bienvenido en la empresa que lo ha implantado, aunque lleves mucho dinero.

Ejemplo

Algo tan sencillo como traducir un programa. Como se puede observar, en mucho Software Libre, existen multitud de idiomas soportados. Esto es debido a que la gente le gusta ver los programas en su idioma,  y si puede traducirlo lo hará. En el modelo privativo, si no está entre los intereses de negocio de la empresa, puede que no veas su software en tu idioma nunca.

El valor del Software Libre es ser disruptivo, y encontrar la forma de aproverchar oportunidades. Google con Android encontró la mejor manera de competir contra iOS de Apple. Hay que ser creativo, crear tejidos sostenibles para mantener vivo el proyecto.

Shell


Para la mayoría de personas, cuando un informático hace aparición en sus vidas, los ven como a esas personas que para hacer funcionar cualquier cosa, se sientan delante de la pantalla y se ponen a teclear cosas. Es decir, que todo lo que hacemos, si no es de la Shell (o también conocida como la linea de comandos) no somos verdaderos informáticos. Algo de razón tienen, pero realmente ¿Es tan importante utilizar la Shell?

Exactamente una Shell no deja de ser una aplicación mas del Sistema Operativo, pero tiene ciertas particularidades, entre las mas importantes, es la primera que se ejecuta cuando el usuario inicia sesión. Puede ejecutar otras aplicaciones tanto en segundo plano como compilar el Kernel de Linux, para que podamos realizar otras tareas o en primer plano, como por ejemplo un juego.

Para definir la importancia de que sea el primer programa que se ejecuta al inicio de sesión debemos remontarnos al inicio del sistema. Resumiendo, lo que primero que hacemos es pulsar el botón de encendido de nuestra máquina (O mediante Wake On LAN). La BIOS entonces tomará control del hardware, dependiendo de cómo este configurado buscará un dispositivo que contenga un MBR con el que inciar, puede ser un disco duro, un disco o un pendrive. Este a su vez apuntará a una partición que contenga un cargador de arranque, en Linux es utilizado comúnmente GRUB o LILO. Y lo primero que hará es cargar el Kernel, que desplegará todo el resto de programas gracias al proceso init. Después de realizar los procesos de inicio, llega la pantalla de acceso en el que debemos introducir usuario y contraseña para que haga la comprobación de credenciales, comparándolo con el contenido de /etc/passwd. Si es correcto lanza la aplicación /bin/bash



Al final la Shell es un programa más, y como todo programa, existen multitud de versiones y de variedades. La más famosa es Bash ya que viene incluida en la mayoría de distribuciones Linux, pero también en Mac OS X y ha sido portado a Windows gracias  a Cygwin.

Ken Thompson a la izquierda
La primera Shell que se  publicó fue la Thompson Shell,  desarrollada por Ken Thompson en 1971. Es una Shell muy sencilla, podía hacer redirecciones y pipes, como por ejemplo sacar la salida de un programa hacia un fichero.


Stephen Bourne
En 1977 apareció Bourne Shell, desarrollada por Stephen Bourne. Fue mayormente conocida como sh,consiguió desbancar a la Thompson Shell. Como principal caracteristica es que está orientada a la programación y tenía la capacidad de enviar señales (Ctrl + c). Aún se sigue utilizando como la Shell por defecto del usuario root.


Bill Joy
A pesar de ser escrito en 1978, C Shell, no se popularizó hasta los 80 y como indica su nombre está escrita en C. Bill Joy, además de escribir esta Shell múltiplataforma es el fundador de Sun Microsystem. Como mejora a destacar es el historial de comandos, alias y autocompletado de comandos, que sin duda fue la killer feature de esta Shell.

Tenex C Shell, también conocida por tcsh es una Shell compatible con C Shell. Desarrollada por Ken green en 1975. Mejoraba el autocompletado, incorpora UNICODE para la codificación de caracteres. Es la shell por defecto de tipo BSD, la FreeBSD, DragonflyBSD y DesktopBSD. Es la favorita por muchos programadores.

Korn Shell se presentó en 1983, por AT&T Bell Laboratories. Respeta el estándar de leguaje de Shell (POSIX). Durante 17 años fue propietario, y fue en el año 2000 cuando se liberó bajo una licencia pública de AT&T, pero en el 2005 se ha licenciado bajo Common Public Licens. Es por esto que se crearon alternativas como pdksh, mksh... pdksh es la shell por defecto de OpenBSD. Ha dado pie a otros proyectos, otros proyectos tomaron este código para pequeños proyectos, pues es muy compatible con otros. mksh es usada en Android.

Brian Fox
La Shell más famosa es Bash, que proviene de Bourne-again shell, publicada en 1989 por Brian Fox. Tiene las ideas de todas las anteriores, pero permite programar funciones. Viene con la mayoría de distribuciones GNU/Linux y  Mac OS X 10.

Z Shell o zsh, es la Shell más moderna, escrita en 2007. Es el Proyecto de doctorado de Paul Flastad,  y el nombre viene en homenaje a su profesor Zhong Shao de la universidad de Princenton, pues su nombre de login es zsh. Destaca por la correción automática, es completamente configurable. Muy utilizada por programadores.

Después de dar un repaso por varias Shell, ¿Cómo podemos utilizarlas? Muy fácil, simplemente nos lo instalamos desde los repositorios. Por ejemplo, si queremos instalar zsh desde una distribución basada en Debian:

sudo apt-get update && sudo apt-get install zsh
 Una vez instalado, lanzamos la Shel mediante el comando zsh. Pero si queremos saber que Shell se ejecuta con el sistema, basta con escribir:


ls -l /bin/sh

Kernel Linux



Ya han pasado 20 años desde que este "pequeño" proyecto personal fuera comunicado al mundo un 25 de Agosto de 1991. Tal y como muchos proyectos de Software Libre, todo empezó como una idea personal. Pero acabó siendo quizás el proyecto de mayor relevancia en la historia tanto del Software Libre como de la informática.


El nombre de Linux proviene de su creador Linus Torvalds de Finlandia, que a sus 21 años de edad, quiso realizar un Sistema Operativo similar a Unix. Con la ayuda del código que Tanenbaum desarrolló en Minix, pudo crear una base que ejecutara programas sobre arquitecturas de 80386.

Desde la primera versión 0.01, que inicialmente tuvo como nombre inicial Freax, contaba con 10239 líneas de código, pasando de los 14 millones de líneas de código que tiene actualmente.

Sobre la robustez del código, se han realizado estudio sobre la fiabilidad del código. Coverity, empresa dedicada al testeo de seguridad, realizó un estudio a la versión 2.6 del kernel, como resultado se obtuvo 985 bugs en 5,7 millones de líneas de código. A pesar de la alarmante cifra, si comparamos con cualquier software comercial, la cifra está entre 20 y 30 bugs por cada mil líneas de código, unos 114000 bugs en 5,7 millones de líneas.

A pesar de la gran cantidad de contribuidores, más de un millar de empresas colaboradoras, no quiere decir que no sea un software robusto. Es la experiencia de cada contribuidor, el que hace que el kernel sea tan estable.



La arquitectura es de tipo monolítico, esto hace que la ejecución de todos o su mayoría de servicios del sistema se encuentren en el mismo espacio de direcciones. Es decir, que están dentro del código, esto provoca mejor rendimiento, pero también puede provocar mayor inestabilidad.
Por contrapartida, existen los microkernel, en el que la ejecución de servicios del sistema se hacen en el espacio de usuario como servidores. Es menos complejo, más portable y mantenible. Un ejemplo de microkernel es Minix.

Esta diferencia de arquitectura provocó una gran discusión entre los creadores de ambos sistemas, pues por aquella época, en 1992, Tanenbaum acusaba a Linux de estar obsoleto.

En el kernel de Linux, como en otros Sistemas Operativos existen los módulos, que dan soporte a nuevo hardware, sistema de archivos o incluir nuevas llamadas al sistema. Para trabajar con éstos módulos existen una serie de herramientas llamadas LKM tools que componen las siguientes aplicaciones:


  • lsmod: Listar los módulos cargados.
  • insmod: Cargar un módulo en memoria. Se encuentra en la ruta /lib/modules
  • rmmod: Quitar un módulo de la memoria.
  • modprobe: Usa el fichero de depencias para saber cual hace falta de verdad. Con  modprobe -l podemos sacar una lista de las dependencias.
  • depmod: Crea un fichero de depencias. depmod -a , para regerenar el listado de dependencias. y ser guarda en /lib/modules/$(uname -r)/modules.dep
  • modinfo: Da información detalla sobre un determinado driver. $ modinfo module_name (sacado de lsmod)
Existe también una lista negra de módulos, pues si no queremos cargar cierto módulo por incompatibilidad con el hardware, lo debemos incluir en este directorio: 

/etc/modprobre.d/

o en el siguiente fichero de configuración:

/etc/modprobre.conf

Muy bien, pero... Quiero la última versión del kernel. Existen veces que te compras un ordenador nuevo, y puede que ciertos componentes no funcionen con tu distribución habitual. ¿Cómo solucionar esto? Compilando la última versión del kernel.

Primero necesitamos las herramientas para compilar, para ello debemos descargarnos los siguientes programas:

gcc , binutils, build-essentials, kernel-package, libncurse5-dev

Por ejemplo, desde una distribución basada en Debian sería los siguientes comandos:

sudo apt-get update
sudo apt-get install gcc binutils  build-essential kernel-package  libncurses5-dev 

Una vez que tenemos las herramientas, necesitamos el kernel, nos lo descargamos de la web oficial del kernel, kernel.org

La mejor opción es descargarnos la última versión estable, aunque si queremos lo último siempre podremos utilizar una Release Candidate, marcadas con rc. A la fecha de este post, la última versión es la 3.1.1

Una vez descargado debemos descomprimirlo


sudo tar -xvf linux-3.1.1.tar.bz2 -C /usr/src/


Y ahora vamos donde lo descomprimimos en:


cd /usr/src/linux-3.1.1/

Ahora podemos modificar la configuración del kernel gracias a la herramienta menuconfig

sudo make menuconfig


Esto nos brinda la posibilidad de marcar o desmarcar módulos que nos interesen o que no deseamos que carguen porque sabemos que no lo vamos a necesitar. Puede ser un arma de doble filo, pues si sabemos configurarlo correctamente, tendremos un kernel más ligero y con lo justo para funcionar. Pero si no ponemos todo lo que necesita podremos quedarnos con una distribución que no arranque.

Si no estamos muy seguro de que hacer en este caso, siempre podemos utilizar:

sudo make oldconfig

Con esto creará una configuración como la del kernel que te esta funcionando actualmente, así nos aseguramos de que va funcionar correctamente.

Una vez que guardemos el fichero de configuración, pasamos a compilarlo. Tan sencillo como:

sudo make -j8

Dependiendo de vuestro ordenador tardará mas o menos.



Después de compilar necesitamos instalarlo:

sudo make modules_install install

Esto creará unos ficheros en el directorio /boot/ del tipo:

cd /boot/
ls -la | grep 3.1.1


  • System.map-3.1.1
  • vmlinuz-3.1.1
  • initrd.img-3.1.1
  • config-3.1.1
En caso de no encontrar ningún fichero con un nombre similar a la versión de nuestro kernel, debemos utilizar:

sudo update-initramfs -u -k 3.1.1

Esto pertenece al Initial RAM disk (initrd), son una serie de ficheros usados en el proceso de arranque del kernel. Básicamente montan el sistema de ficheros raíz.
Si el comando anterior no nos ha actualizado o generado un fichero initramfs, debemos crear uno nuevo  con:

sudo update-initramfs -c -k 3.1.1

Por último, este comando nos ha generado una nueva configuración del sistema de arranque grub, si  lo deseamos modificar, podemos hacerlo directamente desde:

sudo vim /boot/grub/grub.cfg

Pero si finalmente queremos aplicar la configuración debemos utilizar:

sudo update-grub

Ya solamente queda reiniciar y a disfrutar!




MySQL


Es muy difícil encontrar hoy en día a alguien que no conozca MySQL o no haber utilizado alguna web que albergara información con este software, TYPO3, Joomla, WordPress, Drupal, Twitter o Wikipedia son parte de una gran lista de ejemplos. Pero muchas veces usamos software sin investigar cómo ha sido su desarrollo o qué es lo que hace tan especial a este sistema de gestión de bases de datos.


Se desarrolló por David Axmark y Michael Widenius por la empresa MySQL AB, una empresa sueca dedicada al Software Libre desde 1995. SQL es el lenguaje desarrollado en 1981 por IBM y que se convirtió en estándar en 1986 gracias a la publicación SQL-86 hecha por ANSI. Michael estaba creando rutinas de bajo nivel para conectar bases de datos, trató de usar mSQL, por entonces era lo más eficiente, pero no lo suficientemente rápido y flexible para sus necesidades. Por lo que creó una API basada en SQL, y cuyo nombre contiene el nombre de la hija de  Michael, MySQL.

Desde que el 23 de Mayo de 1995 apareciera la primera versión interna, fueron expandiendo su software a diferentes arquitecturas y Sistemas Operativos. Tras 13 años de mejoras y con la versión 5 en marcha, el 26 de Febrero de 2008, Sun Microsystems compra MySQL AB por la cifra de 1 billón de dólares. Ahora Sun Microsystems fue comprada por Oracle el 27 de Enero de 2010, y con ello MySQL pertenece a Oracle. Gracias a esta compra, Oracle es hoy por hoy la empresa con el software de bases de datos más importante, pues cuenta con un negocio corporativo desde hace mucho tiempo, y su única competencia era MySQL.

Esta compra, creo una gran controversia, incluso apareció un movimiento llamado "Save MySQL" promovida por Widenius por el temor de que Oracle dejase abandonado el desarrollo de MySQL y se centrara en su linea de negocio privativo como viene siendo habitual. Finalmente se continuará con un sistema de doble licencia, comercial y GPL. De igual manera, como es habitual en esto casos, se realizó un fork llamado MariaDB.

Como modelo de negocio, existe MySQL Enterprise, es un servicio de suscripción y está orientado a un mercado profesional.

Si queremos empezar a utilizar MySQL, es muy fácil. Desde una distribución basada en Debian, podemos usar desde la linea de comandos:

$ sudo apt-get install mysql-server
Con este sencillo comando podremos instalar el servidor de base de datos. Durante la instalación nos pedirá que introduzca una contraseña para el usuario root de la base de datos.


Una vez instalado, desde la linea de comando podremos acceder mediante el siguiente comando:

$ mysql -u root -p
Introducimos la contraseña que introducimos anteriormente, y ya estamos dentro de la consola de MySQL. Desde aqui podremos hacer todo tipo de operaciones. Entre las más básicas se encuentran:

Ver en una lista, las bases de datos que almacena MySQL:
show databases;
 Buscar cuales tienen una letra s en su nombre:
show databases like "%s%";
 Utiliza la base de datos de nombre mysql:
use mysql;
 Muestra las tablas de la base de datos activa:
show tables;

Pero también se pueden realizar acciones sin necesidad de entrar a la consola de MySQL, directamente con el comando mysqladmin :

Crear una base de datos con el nombre olidroide:

mysqladmin -u root -p create olidroide
Eliminar una base de datos con el nombre olidroide:
mysqladmin -u root -p drop olidroide
Mostrar los parámetros de configuración que utiliza la base de datos, las caches y el sistema de codificación entre otra información importante:
mysqladmin -u root -p variables



Puede que la linea de comando no resulte atractiva para ciertos usuarios. Existen herramientas gráficas que ayudan el uso y la gestión de este tipo de bases de datos. Por eso existe MySQL Workbench, integra en una sola herramienta desarrollo, administración y diseño de bases de datos. Personalmente creo que es una herramienta muy completa y bastante estable. El hecho que sea multiplataforma ayuda para no tener problemas de desarrollo en cualquier entorno.

Es muy sencillo de instalar, todos los pasos y mas detalles se pueden encontrar en su web: http://wb.fabforce.eu/

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: