“Al comprador no le interesa el código”
El título es un argumento bastante habitual entre la gente que no está de acuerdo con el software libre –o al menos que duda de su validez práctica–. Está claro que muy poca gente es capaz de modificar los programas, aún entre programadores.
Un sistema de software moderno es tan complejo que ni siquiera el mejor de los programadores es capaz de entender, modificar o mejorar cualquier parte del código. Es imposible. Pero tampoco el software libre persigue ese objetivo. Decimos que la única forma de hacerlo es en comunidad, un sistema GNU/Linux se construyó cooperativamente, funciona, es pura evidencia, no hablamos de utopías.
Exactamente lo mismo que la ciencia. ¿Para qué vamos a exigir la publicación de los avances y teorías científicas si la mayoría no lo entiende? ¿Para qué queremos que las teorías de Newton o de Einstein sean propiedad de la humanidad si sólo lo entienden unos pocos? Es simple, porque es la única forma en que la comunidad pueda participar.
¿Cuál es la alternativa? ¿Exigir que ese conocimiento sea “cerrado” y sólo se entreguen a los que “saben”? ¿basar todo en non disclosure agreements? No sólo es ridículo, es impracticable.
Cuando pedimos que el software sea libre no sólo pedimos que se tenga acceso al código –eso ya es posible con algunos programas privativos vía contratos de no divulgación– sino respetar la libertad de los individuos –los usuarios– y al mismo tiempo permitir la mejora y solución de errores. La única forma posible es que el código sea accesible sin restricciones a todos, ya lo expliqué en un apunte anterior .
La alternativa es un mundo donde todo el código sea secreto y propiedad de unos pocos, o en el mejor de los casos, un mundo donde el acceso al conocimiento esté regido por los non disclosure agreements bajo la voluntad de los “propietarios”. Un mundo de pocos libres y muchos prisioneros. Ya ha pasado, algunos de los que han firmado NDA para acceder al código fuente de Unix, actualmente están “envenenados” y no pueden ni siquiera colaborar con una línea de código al Linux.
Un ejemplo real
Supongamos una empresa A que encarga un programa a otra, B, pero además quiere tener el “control” sobre ese código. B decide que el código no será libre, aunque entregará el código al comprador A.
Problema #1: ¿Cómo se hará el contrato? ¿cómo serán los términos? Hay que estudiar marañas de leyes de propiedad intelectual y contratar abogados especializados.
Problema #2: Luego de un tiempo la empresa A quiere hacer correcciones al código, B se niega o quiere cobrar mucho por el trabajo. ¿Qué hace? ¿puede contratar otra empresa?
Problema #3: Supongamos que A contrata a otra empresa C, tiene que volver a hacer contratos de no divulgación, más abogados.
Problema #4: Ese código ahora tiene “propiedad intelectual” y trabajos derivados –más complicaciones legales– de B y C, pero pagado por A. Si en el futuro A decide contratar a otra empresa, D, para que le haga modificaciones, ¿puede hacerlo? Hay que consultar a los abogados.
Problema #5: Al fin y al cabo, como pueden B, C y D controlar que su código no ha sido usado por las otras empresas para sus propios productos si estos son “propietarios” y secretos?
Soluciones
Solución #1: Reservar un presupuesto considerable para abogados.
Solución #2: Seguir la práctica habitual. Que A sólo siga contratando a B. Es lo que se hace con los programas privativos, es el monopolio inherente del sistema. La empresa A como consumidora, cliente y pagadora sólo saldrá perdiendo.
Solución #3: También bastante habitual. Si necesita hacer cambios y B no desea, o cobra muy caro, o desapareció, contratar a otra empresa para que haga todo el trabajo desde cero. La empresa A vuelve a perder.
Solución #4: Que A exija a B que le entregue el código con una licencia libre [1]. Paga el mismo precio –servicios–, se libera de todos los problemas, no harán falta abogados, y luego podrá contratar para el “mantenimiento” [2] a cualquier empresa que le oferte precios mejores o más calidad. Además, si otros lo usan se podrá también de las mejoras que ellos hagan. Y no menos importante, si el código es libre, también puede basarse y mejorar otras programas libres. Esta son las ventajas económicas derivadas de “construir en comunidad”.
[1] Si A no distribuye el código –es de uso interno– no tiene la obligación de publicarlo.
[2] El mantenimiento en un programa no sólo es corregir errores, sino adaptar ese programa a la realidad durante todo su ciclo de vida. Eso se denomina técnicamente “reducir el gap entre el modelo y la realidad siempre cambiante. Los estudios indican que supone entre el 60 y el 70% del coste total del ciclo de vida del programa.
Apreciado Profesor.
Vivo en Cartagena - Colombia.
Estoy actualmente investigando sobre la aplicacion del software libre en los procesos pedagogicos, con aras a su utilizacion conmo base para la investigacion y desarrollo de nuevas formas de apredizaje.
Agradezco si usted me pudiese guiar por este largo camino.
Si algun dia decide visitar colombia, cuente con mi casa para hospedarse
Comment by Jesús Maria Zabaleta Franco — Tuesday 29/3/2005 @ 15:46
Yendo un poco por las ramas …. con Internet y el advenimiento de los documentos electrónicos, podemos acceder al conocimiento “escrito” a través de un buscador como Google, con sólo conectarnos a Internet, pagar a un operador de telecomunicaciones por ello y arrancar nuestro navegador, lector de pdf etc. Nunca habia sido tan barato acceder a todo el conocimiento que nos venga en gana.
Imaginemos como era esto cuando no habia Internet: o lo hacias a través de libros, que por supuesto tenías que pagar o fotocpiar, o ibas a una biblioteca a consultar una enciclopedia o te comprabas la enciclopedia y la guardabas en tu casa.
Es una aplicación software (paquete formado por miles de instrucciones que puede ejecutar una máquina, con interficie de usuario, y mil funcionalidades para el que lo use) lo mismo que el conocimiento científico, o sea, los algoritmos que conforman esa aplicación ? o una aplicación software es mucho más ?
Sinceramente, no me parece adecuado el símil entre programa informático y conocimiento científico en general, lo primero añade un valor muy grande a lo segundo, que simplemente es algo que está “publicado por escrito”. Una aplicación informática es como una calculadora sofisticada que me permite hacer cosas en menos tiempo.
Comment by Anonymous — Tuesday 29/3/2005 @ 16:03
Señor anónimo…. si no te gusta la comparación con el “conocimiento científico en general”, comparalo con los planos de un edificio, quizá así lo entiendas!
Comment by marto — Tuesday 29/3/2005 @ 16:13
Al #2, ya lo hemos discutido varias veces.
Que tú veas un programa como un “paquete” de gestión sin grandes pretensiones no significa que sea todos los programas lo sean. No seas como aquél que sólo tiene un martillo y todo lo que ve son clavos.
Yo enseño sistemas operativos desde hace años así que algo me he leido del tema… ¿dónde crees que hay más conocimiento de SO? ¿en los libros de texto que usamos o en el código fuente del kernel Linux o de las GNU libc? ¿Crees que los sistemas operativos podrían haberse desarrollado sin toda la investigación que hubo y sigue habiendo? ¿Crees que puede hacerse investigación y escribirse libros si no hubiesen sistemas operativos de verdad?
¿Dónde crees que hay más información sobre la visión humana? ¿en el libro que has usado en la universidad o en el código del compresor jpeg o mpeg? (lo mismo para el audio/mp3/vorbis, y lo que se te ocurra).
¿De verdad crees que las cosas sofisticadas que se hacen con los programas se hacen sin conocimiento científico y sólo son personas que se encierran en una oficina y escupen código de la nada? ¿todavía no te has dado cuenta lo esencial que es el software para la ciencia? (y viceversa). ¿Crees que tendríamos el mapa del genoma o fotos del universo sin programas informáticos?
Comment by gallir — Tuesday 29/3/2005 @ 16:17
AL #1: el que mejor te puede guiar es Pedro Reina
Comment by gallir — Tuesday 29/3/2005 @ 21:42
El software es conocimiento, un conocimiento aplicado que sirve para construir cosas. Igual que una demostración de un teorema tiene los pasos necesarios para comprobar la corrección del teorema. Eso mismo pasa con el software, que es una forma de construir basandose en conocimientos previos.
Hasta hace pocos años, se pretendia que no sirviera, impidiendolo con las leyes del copyright y las politicas de condigo fuente cerrado. Luego surgio el software libre (que no gratis) y ahora pretenden bloquearlo con las patentes de software (consiguiendo volver a la situación anterior cuando apenas existia software libre).
¿Acaso no le gustaria a un fontanero que su trabajo, el que hizo para la instalación del agua caliente no tuviera que volver a repetirlo más? El software, por sus caracteristicas, permite esto. No volver a repetir el trabajo antes realizado.
Es un avance en la vida, y como todo avance, pretende facilitarnos la existencia. Fijense en las cadenas de montaje que ahorran puestos de trabajo, pero tambien crean otros. Sin ellas, la vida actual seria impensable.
Comment by alidhaey — Tuesday 29/3/2005 @ 22:39