lunes, 1 de marzo de 2010

Tras las bambalinas del software libre

Este artículo va a dar qué pensar y seguramente provoque algún tipo de polémica, especialmente entre los fanáticos del software libre. Mi anticipado aviso, y mi anticipado deseo de hacer crítica constructiva y expresar mi opinión desde mi humilde experiencia y la de otros compañeros. Con este artículo no deseo descalificar algo que amo, si no plasmar y mostrar algo de la parte que nadie ve o que no quiere ver en el mundillo del software libre. Que no guste lo que aquí se explique no significa que sea mentira, y ocultarlo es un error.

Sirva de antemano que amo el software libre, y mi segunda recomendación es su uso. La primera recomendación se basa analizar qué utiliza un usuario, con qué se siente a gusto, qué sistemas utiliza, y si un cambio a un producto de software libre no le va a impactar mucho. En la mayor de las veces, suelo hacer combinaciones entre software propietario y software libre, cosa que impacta lo mínimo en este sentido, y cuyas integraciones son hasta beneficiosas. ¿De qué sirve ahorrar dinero en licencias, si luego el usuario se lía y no sabe usar el nuevo software o no le gusta o no se siente a gusto con el mismo? ¿Para qué cambiar a un producto libre si el de pago a lo mejor es más estable, tiene más funcionalidades y tiene un soporte mucho mejor? En algunas ocasiones, tras implantar un sistema libre, el usuario tras su formación y su experiencia, me ha pedido volver a un sistema que ya conocía, fuera de mejor o peor calidad, o más caro o más barato. Hay que contar primero qué es lo mejor para un cliente, y qué es lo que quiere, no sólo a corto plazo, si no también a largo plazo.


Algunos casos

Con esta introducción, voy a meterme en harina. Comenzaré con un episodio que recientemente he vivido por parte de una nueva empresa que predica con el software libre. Desde hace un año estoy desarrollando una aplicación para el negocio de mi hermano. Visto el interés que puede suscitar y que hay poco en este nicho, he estado promocionando y generando sondas y expectativas sobre el mismo (marketing). Esta empresa ha sabido de mi aplicación, y se ha puesto en contacto conmigo para llevar dicha aplicación a su zona geográfica, y que tiene un filón de cerca de medio centenar de clientes interesados en el mismo. Dicha empresa ha querido cambiar la arquitectura de mi aplicación para adaptarlo a su arquitectura ideal libre. Ha criticado mi decisión de utilizar Flex por ser "propietario", cuando en realidad es libre y abierto (el motor Flash no es abierto, pero se utiliza y es aceptado en más de un 90% de los navegadores, y no hay que pagar por él. En lo puritano, también se podría esgrimir que el 100% de todas las aplicaciones al final ejecutan instrucciones máquina que no son libres, en microprocesadores que no son libres y apoyándose en BIOS que tampoco son libres). Aún así, uno puede desarrollar una aplicación en un lenguaje propietario, y liberar y abrir el código de su aplicación. De hecho, ésto se lleva haciendo durante muchos años en Windows y en Mac.

Pero ahí no acaba la cosa, pues además de querer hacerme cambiar de arriba a abajo un proyecto mío, querían que abriera el código para migrar la interfaz a otro lenguaje que era libre, aprovechar la lógica de negocio y la base de datos, y esta nueva versión abrirla mediante GPL. Asimismo esta empresa se ofrecía voluntaria para dar el soporte y mantenimiento en su zona. Eso sí, todo con un argumento muy libertario pero crítico al software propietario, con un cebo comercial muy goloso para ellos, no para mí, que al fin y al cabo tuve la idea y la desarrollé.

De esta anécdota se aprende que muchos esgrimen el software libre únicamente para sus propios intereses. ¿Para qué voy a desarrollar una aplicación si ya otro lo tiene hecho, y encima lo consigo "by the face", con lo que la inversión es cero y los beneficios absolutos?. ¿Que no me gusta que la interfaz esté hecha en X? Pues dáme el código y lo hago en Y, que es 100% libre y de código abierto. ¿Para qué un mestizaje?. Volvemos a la raza aria y pura, sin importar si ese mestizo es un hombre santo, un genio o una gran persona.

Mi intención con mi aplicación es liberarlo, permitiendo su libre distribución y copia, sin cobrar licencias por su uso ni por máquinas ni por tiempo. Pero mi intención no es abrir su código hasta haber rentabilizado mi inversión (tiempo, esfuerzos y dinero). No es algo egoísta, si no de sentido común. De momento lo estoy realizando para dos clientes seguros que tengo (uno es mi hermano y otro un amigo). Una vez rentabilizado, si el producto tiene demanda, es de interés general, está estable, sin bugs y funciona, lo abriré teniendo una ventaja competitiva, como hacen la mayoría de las empresas, con vistas a seguir generando negocio y evolucionar mi proyecto.

Os contaré otra historia. Hace cosa de cinco años, desarrollé una aplicación para monitorización de bases de datos. Desde un principio liberé y abrí la aplicación, con dos objetivos: uno para contribuir al software libre, y otra para que mi empresa (la que me contrató), no se aprovechase de mi trabajo, ya que lo usaba para hacer negocio. Surgieron multitud de empresas y personas que querían mi aplicación, y todas ellas me empezaron a pedir nuevos requisitos, nuevas funcionalidades y premura en fechas para su consecución. Cuando empecé a hablarles de cobrarles por ese trabajo que me pedían, quedaban absortos preguntándose, ¿pero no es software libre?. A lo que cuando le contestabas: sí, es libre, pero no gratis, y el trabajo que requiere hacer esto para ti, cuesta tanto. Entonces se molestaban y no volvías a saber nada de ellos. Lo curioso de todo es que muchos de estos interesados eran empresas con el slogan "I love open source", y al tener mi software abierto no contribuían desarrollando y aportando sus necesidades, si no que te las pedían para después vender los servicios de mi software ya adaptado a sus clientes. Este producto, al final, terminé por descontinuarlo y dejar de darle soporte, y nadie, absolutamente nadie, recogió el testigo.

De esta anécdota se aprende no sólo de los intereses, si no también de que en el concepto de código abierto, en lugar de contribuir con esas ideas o esas funcionalidades, de desarrollarlas y aportarlas al proyecto en beneficio de todos, te lo piden y lo exigen, aprovechándose de ello. No es una generalidad, aunque en esta experiencia personal fue el 100% los interesados. En proyectos más importantes y populares, esto suele no ocurrir, y pueden existir desarrolladores con espíritu colaborativo, que en lugar de pedir, solicitar o exigir, pasan a la acción: lo desarrollan y lo comparten.

Otra lección que se aprende es que hay miles y miles de proyectos de software libre que terminan en el olvido. Mi caso es uno de ellos. Y conozco otros muchos casos de compañeros cercanos que les ha pasado lo mismo, tras la desmotivación que le sigue a haber empezado con una iniciativa colaborativa y que al final termina uno en solitario y con demandas a modo de carta de los Reyes Magos, donde al final se aprovechan de ello para beneficio lucrativo. Los parásitos acaban consumiendo muchas ideas.

Estas dos historias son las más típicas. Pero hay historias más interesantes. Comentaré la de un amigo mío, que desarrolló una aplicación CRM muy simple y específica, y que liberó con todo el amor del mundo. Un día le llegó una demanda judicial por parte de dos empresas por los problemas financieros que le había producido un mal funcionamiento de su aplicación. Cuando llegó el juicio, y tras la argumentación de los abogados de las empresas, aparece algo que suscitó sorpresa en mi compañero, pues el problema en cuestión surgió de una funcionalidad que no tenía la aplicación. Una empresa de servicios informáticos había utilizado el software de mi amigo, añadiendo funcionalidades. Al surgir este problema, dicha empresa culpó al software de mi amigo, y los clientes afectados interpusieron la demanda. Le costó esfuerzo demostrar ésto, pues en España aún no hay mucha cultura en delitos informáticos ni conocimientos por parte de fiscales, abogados y jueces.

En alguna que otra ocasión me ha inspirado el espíritu de la contribución a algún producto de código abierto, como muestra de mi satisfacción a dicho producto y de que siga ahí vivo, con nuevas ideas y con mejoras. Sorprendentemente, a veces me han pedido donar dinero como muestra de colaboración. En otros casos, curiosamente, la organización es de andar por casa, o el desarrollo está restringido a un grupo de amigos que iniciaron el proyecto y es como un club privado, donde las ideas, el alcance funcional y el desarrollo son supervisados, censurados y controlados. ¿Dónde está la libertad del software? ¿En qué se diferencia de otros proyectos de software libre pero no de código abierto, o incluso de muchos proyectos propietarios?

En otras ocasiones, desde mi afán colaborativo he contribuido con ideas, o con comentarios, o notificando bugs. Tras enviar la notificación, no he recibido nunca una respuesta, ni tan siquiera un agradecimiento. Aunque parezca que esto no tiene importancia, como usuario me da desconfianza una organización en la que parece que no hay nadie detrás. ¿Qué tipo de soporte puedo esperar recibir si tengo algún problema con su producto?

El software libre es también un mercado (lo cual es loable y hasta necesario), y en dicho mercado también existe la ventaja de la escasez. Recientemente, en mi empresa necesitábamos un producto de business intelligence de bajo coste para uno de nuestros proyectos. Tras analizar los productos del mercado, el soporte no era nada barato ni de garantía, en comparación con el de otras soluciones propietarias que eran mucho mejores. En este nicho, y en otros nichos de escasez, el software libre aún no es una alternativa real, pero poco a poco se va ganando terreno.


Ahora van mis reflexiones:

En las líneas anteriores he desvelado una pequeña parte de lo que hay detrás de esta "religión" del software libre. Al igual que las teologías, el concepto de software libre es una ideología y un pensamiento puro en su nacimiento, pero corrupto en su evolución, utilizado por intereses personales y comerciales. Hasta el mismo Richard Stallman (padre del GNU), a modo de sorna se viste de túnica como un santo, se pone la aureola de un disco duro, predicando sobre su iglesia. Aunque sea un acto teatral, encierra un curioso reflejo de la realidad. Este párrafo suena duro y crítico, y aunque no sea una generalidad no está carente de verdad.

La historia es la sucesión sucesiva de sucesos sucedidos sucesivamente, y en el software libre está volviendo a suceder. Están surgiendo fanatismos y "sectas", en las que se alzan profetas y seguidores enfevercidos y exaltados, defendiendo su posición como absoluta y cierta con respecto a las demás, provocando enfrentamientos, insultos y amenazas de todo tipo: si no estás conmigo estás contra mi, y lo mío es la verdad absoluta y tú tienes que abrazar mi religión y mi fe, o estás condenado a extinguirte. ¿Os suena de la película "Ágora", cuando los primeros cristianos toman Alejandría de este modo? La visión de Jesús de Nazaret fue pura, humilde y buena para todos, pero surgieron después intereses e interesados, tergiversando aquella visión y terminando en aquello contra de lo que profesaban.

El software libre no es lo mismo que código abierto. Es un concepto que se suele confundir, y que muchos dan por hecho de que si es libre, tiene que abrir también su código.

El software libre es un concepto noble y solidario, que une culturas y países. Es un bien de la humanidad. Sus beneficios son incuestionables: promoción, accesibilidad, reducción de costes de distribución y logística, reducción de costes de licencias, libertad para copiar e instalar, etc. Asimismo genera negocio al ser más económico, especialmente en estos tiempos de crisis. ¿Y dónde está el negocio? En los servicios derivados: el soporte, el mantenimiento, la adaptación a necesidades específicas, la formación, la instalación, la integración con otros sistemas, etc.

El concepto del código abierto es también noble y solidario, y tiene la ventaja principal de poder acceder al código de un producto y realizar los cambios que necesites o adaptarlo a tus necesidades. Es inestimable en cuestiones de interés general, donde los intereses económicos no son importantes ni triviales, tales como la investigación, la educación, los lenguajes de programación, las bases de datos, etc. Cada vez más empresas deciden abrir su código para ganar competitividad o para frenar la competencia. A niveles más especializados puede ser interesante para promoción profesional de uno mismo. Por contra, también tiene un filo agudo y cortante, pues hay algunos que se aprovechan y se lucran de ello en detrimento de aquellos que desinteresadamente lo promueven sacrificando tiempo de sus vidas, ilusiones, esfuerzos y dinero.

Más de uno se preguntará qué se gana con el software libre, si es tan accesible y económico. Bueno, como comenté al principio, una empresa libera su software cuando ha rentabilizado su inversión y quiere ganar ventaja competitiva o frenar a la competencia. La fácil accesibilidad a este software incrementa las posibilidades de negocio mediante los servicios derivados, que son la clave comercial. Puede que a nivel personal no se contrate un soporte, pero una empresa querrá asegurar el funcionamiento del sofware, pues su negocio se basa o gana con ello.

¿Y es malo que una empresa no libere su software nada más desarrollarlo? No. Una empresa gasta mucho dinero en proyectos, pagando sueldos, inmuebles, impuestos, energía, etc. Liberar un software sin un ROI (retorno de la inversión) puede ser un error, pues entonces habría que despedir a las personas y cerrar la empresa. Muchas empresas desarrollan un proyecto con un cliente que lo amortice. Tras obtener la remuneración del proyecto, puede liberar su software para futuros proyectos con otros clientes.

¿Y abrir el código? Dependerá de las necesidades y de los intereses a nivel general o a nivel personal. Si el software es de gran interés general, abrirlo no sólo beneficiará al resto, si no también a nosotros mismos, que reconocerán nuestra noble acción.

¿Y de todo ésto, otras empresas se pueden aprovechar? Es posible, y aunque el código sea abierto, el mejor especialista sobre nuestro software somos nosotros mismos. La mayor de las veces, estas empresas nos contratarán soporte, haciendo de intermediarios, o incluso nos solicitarán modificaciones, adaptaciones o nuevas funcionalidades, pagando por ello. Si otros hacen modificaciones, normalmente contribuyen a nuestro proyecto, aportando la colaboración. Si estas modificaciones se convierten en un fork (una versión adaptada de un original), se conoce cuál es la fuente (nuestro software) y qué es lo que el fork añade (diferencia). De todas maneras, el interés en modificar el código de un producto estable y que funciona es muy ínfimo, y para ganar tiempo se suele contratar a quien lo creó.

¿Y qué ocurre con la crítica del principio? He expuesto algunas experiencias que vienen a aportar una visión no tan idealista sobre el software libre. Por desgracia existen numerosos casos de este tipo, que no hay que pasar por alto. Como comenté al principio con el símil de la religión, una ideología o una filosofía positiva va acompañada de factores negativos para equilibrarla. No todo es tan bonito, y conocer este lado nos dará nueva una amplitud de conocimientos y de posibilidades, así como una perspectiva no tan extremista y sobre cómo proceder en estos casos.

Participo en múltiples foros de software libre y de Linux. A veces veo auténticos fanáticos con una visión absolutista, que increpan duramente al resto. Parecen zelotes, y no aceptan un mundo con variedad de posibilidades. Hay también fanáticos del otro lado, con una visión también absolutista del software propietario. Ambos extremismos no son buenos para nadie, y lo único que hacen es forjar distanciamientos. ¿Os imagináis (es un ejemplo), una guerra entre cocineros a favor de abrir y compartir sus recetas, y de los que son absolutamente cerrados y exclusivos? Separar a los degustadores en uno u otro bando hace que unos se pierdan lo bueno que ofrecen los otros. Yo soy de buen llantar, y amo todo tipo de platos, ya sean abiertos o cerrados, y valorar lo mejor ambos.