Ciencia 15

Comentarios intrascendentes a noticias científicas y técnicas de los últimos quince días (más o menos)
Archivos
<Marzo 2017
Lu Ma Mi Ju Vi Sa Do
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Documentos

Blogalia

Blogalia

Inicio > Historias > Una reflexiones sobre el poliédrico Copyleft[1]
Una reflexiones sobre el poliédrico Copyleft[1] 2002-06-08

(Versión 2)

En su definición más pura el copyleft es una forma de hacer que un programa que alguien ha hecho y distribuido de modo libre siga siéndolo en todas las modificaciones que se introduzcan.

Hay que matizar qué significa eso de libre. Libre significa que el que lo recibe (gratis o a cambio de dinero) puede modificarlo, copiarlo y redistribuirlo sin tener que pedir permiso o pagar nada por ello.

Libre no es lo mismo que gratis. Ya vemos que se puede cobrar por dar el programa; pero una vez dado se pierde el control totalmente. De hecho hay productos comerciales que son libres. Es decir, los venden; pero eso no significa que el lo compra no pueda hacer copias y distribuirlas como le dé la gana: cobrando o no.

Pero, en el fondo, software libre tiende a ser gratis; puesto que si se puede copiar sin pagar ni pedir permisos es difícil que alguien esté dispuesto a pagar por una copia de pago si se puede conseguir en otro sitio gratis. A no ser que te den algún valor añadido. El valor añadido puede ser que te lo dan todo agrupado en varios CDs, añadan manuales y un soporte técnico. Lo que compras es el trabajo del que ha agrupado, depurado, hecho el manual y que va a responder a tus preguntas.

La idea del Copyleft, más o menos consiste en utilizar las posibilidades que dan los derechos de autor para que los programas y sus mejoras circulen libremente, en el sentido explicado. Sin duda, es una subversión del espíritu de los legisladores; pero por mi parte que sea bienvenida.

Tras esta simple definición hay un fenómeno, que como todos los fenómenos sociales, es multifacético y difícil de abarcar en todos sus matices.

Quiero empezar pidiéndoles que piensen por qué surge la idea de las patentes. En Inglaterra industrial se estaba dando el hecho de que las empresas mantenían en secreto sus procesos para que no se los copiaran. Con muy buen criterio, los Ingleses pensaron que sería muchísimo mejor para toda la sociedad que los procesos, los inventos, se patentaran; con lo cual: 1) Toda la sociedad conocía el invento, aunque tuviera que pagar una cantidad por usuarlo. 2) El industrial cobraba si otro utilizaba sus inventos. No había ningún motivo para tratar de mantenerlo en secreto. 3) Se incentivaba al inventor particular a hacer inventos. 4) Al cabo de unos años pasaban de dominio público gratuito.

Sobre todo quiero resaltar el hecho de que la patente lo que pretende es que la sociedad conozca lo que se hace; en contraposición con la ocultación anterior. La sociedad lo conoce, la sociedad se beneficia y la sociedad paga, durante un tiempo limitado, al inventor.

Así, el saber se acumula, y unas persona mejoran los inventos de otras. Las mejoras sobre productos o procesos se acumulan.

Quiero volver a resaltar este hecho, pues muchas veces se ha hecho hincapié en que las patentes protegían los derechos del inventor (lo que es cierto), pero se ha ignorado que los primeros legisladores tenían más “in mente” el que los inventos no se pudrieran en las empresas por secretismo; que el saber se socializase. Para lograr lo segundo, protegieron los derechos de los inventores; pero el bien que se pretendía conseguir era que los conocimientos se hicieran públicos. Obsérvese que una vez patentado todo el mundo tiene acceso a la patente. Las patentes son públicas; se puede acceder a ellas.

Los antecedentes a las patentes y los monopolios [una patente es un monopolio de uso temporal] proceden de muy antiguo, pero no fue hasta principios del siglo XVIII que se empezó a exigir una documentación escrita para permitir patentar máquinas, ideas principios o mejoras. Una de las primeras patentes a las que se le exigió esa documentación fue a la ametralladora de James Puckle en 1718 http://inventors.about.com/library/inventors/blgun.htm; http://www.patent.gov.uk/patent/history/fivehundred/eighteenth.htm

Empecé a programar en el año 1964. ¡Si hijitos míos, en aquella época ya había magníficos computadores! Y digo magníficos, incluso con los avances de hoy en día. Esa película de la gran velocidad de lo de ahora y la lentitud de lo de antes... son en gran parte eso, películas, de las que hablaremos otro día.

En 1964 decir informática era decir IBM. Decir programar era hablar de Autocoder, MAP, Asembler y Fortran y un poquito de Cobol con pizquitas de Algol [2].

IBM vendía máquinas y regalaba software. A este modo de venta se le llamaba “en bulto” (bundle).

Entre el software que “regalaba” IBM estaba, por ejemplo, todas las rutinas matemáticas habituales: integrales, resolución de ecuaciones integro-diferenciales, cálculo de raíces de polinomios, coeficientes de correlación, etc.

IBM daba el programa fuente; para los que no sean programadores: lo que escribe el programador[3].

A veces aquellas rutinas fallaban, o no satisfacían exactamente tus necesidades; pero allí tenías el programa fuente, debidamente documentado, por lo que te podías meter y arreglar el “bug” o ampliar la rutina para que tratase tu tema concreto, etc.

Por motivos que se escapan a este “blog”, IBM se vio obligada a “unbundle”, es decir a vender por separado el software del hardware.

El software empezó a ser un importante negocio.

IBM y los demás fabricantes dejaron de dar el programa fuente, que era fácilmente copiable, y empezaron a dar solamente ejecutables.

En aquellos momentos, y yo diría que hoy también, la protección de software es muy complicada. Pues se puede “patentar”; pero lo que se protege es que no se escriba el programa de la misma manera; pero alguien puede entrar, entender los “trucos” que se han empleado y escribirlo de otra forma.

Para los que no hayan programado nunca les pongo este ejemplo, hacer un programa es describir (en un cierto lenguaje) la solución de un problema. Normalmente, lo difícil no es la descripción (el programa) sino las ideas de cómo se ha resuelto el problema. Una vez que se entienden las ideas se puede escribir de otra manera.

Cuando alguien entiende la ideas y las escribe de otra forma es muy difícil decir que se ha copiado, ¿qué ha copiado?

Para evitar los problemas de piratería de ideas, los fabricante empezaron a repartir los programas en forma ejecutable. Es decir, el computador los entiende y los ejecuta, pero el posible pirata no sabe lo que ha escrito el programador. Mejor dicho, no lo sabe de un modo cómodo –es decir, en un lenguaje de alto nivel-, sí lo sabe en el lenguaje de máquina. Pero sacar ideas de cómo y por qué se hacen las cosas en el lenguaje de la máquina es una labor tremendamente costosa. Es factible, lo he hecho más de una vez, pero es una labor de “chinos”, incluso, en su día, surgieron programas de “ingeniería inversa” que trataban de reescribir en lenguajes de alto nivel el código máquina.

Para los programadores de la vieja época, que se metían en los programas de otros para corregirlos y mejorarlos; fue frustrante cuando, en la nueva época, un programa les cascaba y no podían hacer nada. Y mucho más frustrante descubrir que los servicios de asistencia del fabricante tardaban meses en corregir un problema grave para ti, aunque es muy posible que el fabricante no lo viera así.

Cuando esto ocurría en los Sistemas Operativos o en en programas de utilidad muy generalizados, la frustración era aún mayor. “Si yo pudiera meterle mano lo arreglaría en una mañana?” .“Yo me metería y lo arreglaría costase lo que costase porque me tiene paralizado todo un proyecto”. “Me tiene paralizada toda la red, 2000 personas, y no puedo hacer nada”...

¿Si un programador lo hace gratis de qué vive? Fíjense que hacen gratis las correcciones y lo que es infraestructura de uso general, no los programas particulares para un cliente en concreto o para su empresa (que le paga un sueldo mensual).

A este grupo de programadores frustrados, dispuestos a mejorar los sistemas de infraestructura, pues lo necesitan para su trabajo, se une otro grupo, normalmente con cierta ideología de izquierdas, que dice que el software de uso general debe ser libre y otros que dicen que debe ser gratis y que a ellos no les importa aportar su trabajo para hacerlo. Entre estos hay muchos profesores universitarios que no sólo aportan su trabajo, sino el de sus alumnos.

También hay alumnos que quieren una buena nota y recién licenciados que quieren que su nombre aparezca en los créditos de un programa de éxito (será su carta de presentación para su curricúlum).

También hay quién quiere que sus “pares” le consideren muy buen programador y hace programas difíciles y estupendos. El reconocimiento entre pares es una fuerza motivadora muy fuerte.

Hay fans de un cierto tema (por ejemplo composición musical) que desarrollan programas para ayudarse y una vez desarrollados los distribuyen gratuitamente y dejan que otros los mejoren pues, al fin de cuentas, él también se beneficiará de las mejoras introducidas por otros y su vida es la música, no el desarrollo de software.

No faltan empresas que dan un producto gratis para que se vea la calidad de lo que hace. Cuando van a vender otros proyectos a un cliente le pueden mostrar lo que han hecho gratuitamente, y que han mejorado colectivamente y que utilizan tantos miles de usuarios.

También hay empresas que venden un producto y simultáneamente es libre. Es decir no impiden que lo copien o lo modifiquen y lo redistribuyan. A veces, estas empresas añaden una cláusula diciendo que se les remita una copia de los cambios introducidos. (Eso sigue siendo Copyleft). La empresa vende el producto y se beneficia del desarrollo collectivo. Lo que pierde es la posibilidad de perseguir a nadie por redistribuir sus programas gratuitamente. Funcionan porque dan más valor añadido que la simple venta del programa.

Hay otro grupo que simplemente lo hace por solidaridad. Quieren compartir el fruto de su trabajo con otros.

Así surgen las ideas de LICENCIA LIBRE. Todo el mundo puede copiarlo, distribuirlo, modificarlo, etc., sin pedir permiso a nadie y sin pagar nada por ese permiso. La modificación debe ser a su vez Libre. Eso nos significa que no se pueda pedir dinero por distribuir las copias; pero esas copias no podrán llevar ninguna cláusula que diga que hay que pedir permiso o pagar por el permiso. De un modo burdo podríamos decir que el programa sí es gratuito pero que se puede cobrar por el trabajo de copiarlo, modificarlo o distribuirlo a quien te quiera pagar. Pero una vez distribuido nadie tiene que pedirte permiso para copiarlo y distribuirlo a su vez.

Desde un punto de vista purista, el software no es gratis: se puede cobrar por él.

Claro, lo que no quieren es que lo que ellos hacen libre otros lo "aten". ¿Cómo lograr que lo que ha nacido libre siga libre y que nadie lo recoja y lo registre? Crean el Copyleft. Los programas hechos de este modo están protegidos por la ley de derechos de autor; pero lo que dicen los autores y aceptan es que autorizan a otros a modificar sus programas; pero que si lo modifican esa modificación también debe tener el concepto de software libre (debe ser también Copyleft). De ese modo se garantiza que el trabajo que uno ha cedido para ser libre pueda ser mejorado pero siempre conserve su calidad de software libre. El que sea libre no significa que no se pueda cobrar por él. Pero insistiendo en el hecho de que una vez vendido, nadie tiene porque pedir permiso ni pagar nada por copiarlo o modificarlo.

A finales de la década de los 80 ya había grandes bibliotecas de programas de distribución libre, tales como programas de transferencias de ficheros (FTP), sencillos programas de correo, simuladores de terminales, ... un ejemplo de todo ello es Kermit (http://www.columbia.edu/kermit/) que fue uno de los primeros programas de FTP multiplataforma (MVS, UNIX, VMS) que yo utilicé. Fue desarrollado por la Universidad de Columbia y aunque no es estrictamente Copyleft, sí es una muestra de la idea de software gratuito, desarrollado por una Universidad. A mí me soluciono un importante problema y me hubiera importando muy poco pagar por él; pero, además de bueno, era gratuito.

La decisión de si un cierto programa se expandía o no era un proceso de selección natural. Si había muchas copias distribuidas es que funcionaba bien. Como funcionaba bien, se convertía casi en un estándar y muchos programadores trabajan en él, con lo que su mejora era más rápida y podía llegar a ser casi único.

Un aspecto fundamental del desarrollo de este tipo de programas es tener una biblioteca (library [4]) con programas terminados estables, otra biblioteca con programas recién acabados o modificados y por tanto en fase prueba, y otra biblioteca con programas nuevos.

A la biblioteca de “nuevos” acuden los más avezados programadores, o los que tienen más necesidad de un tema concreto. Por ejemplo, imaginemos que en el año 74 alguien está buscando una transferencia de ficheros que sea capaz de rearrancar en el último registro transmitido entre máquinas MVS y máquinas UNIX. Imaginemos que alguien pone en una biblioteca de nuevos algo que hace eso. Como lo estás buscando y no hay otro, lo pruebas. Si todavía está muy verde, como tú también eres experto y dispones del fuente, lo mejoras. La versión mejorada la pasas a la biblioteca de pruebas, donde los pueden usar otras personas menos expertas o menos motivadas. Ha ocurrido muchas veces, que esos programas nacidos de la necesidad han tenido un éxito bárbaro. Quizá un ejemplo paradigmático es el IP (la parte de bajo nivel del TCP/IP) que surge como una necesidad de intercomunicar computadores de distintas marcas y modelos y que es la base de la actual Internet. (Casi me atrevería a decir que lamentablemente, pero esa es otra historia).

Una vez que las versiones en la biblioteca de pruebas ya no sufren muchas modificaciones, se pasa a la biblioteca de estables.

Este modo de programar existía para programas que funcionaban en muchos Sistemas Operativos aunque cabe destacar UNIX como el más usual en estos temas. UNIX no era ni gratuito ni libre y estaba patentado5.

Lo que les faltaba para completar el panorama era un Sistema Operativo. Lamentablemente para ellos, había muchos programas libres pero a la hora de ejecutarlos necesitaban bien un UNIX, MVS, VMS, DOS-VSE, MSDOS, o bien un MC OS , todos de pago... y de los que no disponían del programa fuente.

De un modo lateral, surge LINUX que en 1990 era un simple ejercicio de un estudiante. Pero era la CLAVE que faltaba al movimiento de software libre. Por eso, cuando su creador, Lino Torvald, lo pone en la Red; rápidamente muchos programadores se ponen a mejorarlo... y mejora hasta llegar a lo de hoy en día, que es un programa que puede mirar de frente a los mejores.

En los diez últimos años, además, ha ocurrido algo curioso. Muchísima gente del mundo de la informática, pensaba que los sistemas libres nunca podrían ser buenos, pues faltaba un control central del proyecto y muchas veces faltaba el incentivo del dinero.

Su sorpresa ha sido mayúscula; el sistema de fabricar software de forma cooperativa ha resultado ser el que produce software más estable. Visto a posteriori es fácil saber las causas: hay mucha gente que lo prueba y que modifica. Las modificaciones van a una biblioteca de prueba donde son seleccionadas por su utilidad por otros programadores; es decir, cada pieza de programa se somete al escrutinio de mil ojos y las nuevas cosas sobreviven o no de acuerdo con un sistema de “selección natural”.

En este sistema de programación está actuando de forma contundente la evolución por selección “natural”.

El hecho es que hoy ya hay un sistema operativo en el que se apoya el movimiento de software libre: Linux. El círculo se ha cerrado.

Linux no es el único Sistema Operativo que hay hoy en día con esta filosofía, pero es el más conocido. (Otros son FreeBSD-http://www.freebsd.org/- y Openwindows -http://sapunov.tripod.com/-).

Esta forma de construcción colectiva de programas ha hecho reflexionar a mucha gente y algunos se han planteado, ¿por qué no hacer lo mismo con un texto?

Probablemente una poesía es excesivamente personal para poder ser una obra colectiva. Los intentos que ha habido de novelas con multitud de autores no ha funcionado; pero la idea ahí está...

Una experiencia donde quizá se tenga éxito es en la elaboración de una enciclopedia de forma colectiva. Hay una interesante iniciativa, llamada Wikipedia en este sentido. Se está haciendo la enciclopedia en inglés, francés, castellano y varios otros idioomas. (www.wikipedia.com; es.wikipedia.com; fr.wikipedia.com, etc)

Pienso que es válida para obras de ensayo donde mil ojos ven más que dos...

Lo que falta es hacer lo mismo que con Linux, es decir, alguien escribe un ensayo y es la versión 0 de la biblioteca de nuevos. Alguien lo modifica y lo manda a la biblioteca de pruebas, y allí permanecerá hasta que la opinión popular diga que es mejor que el original, en cuyo caso pasará a ser la estable 1; o que es peor y nunca pasará a ser estable.

Una vez que se dé ese paso habremos logrado introducir la creación incremental y la “selección natural” en el proceso de decidir qué dirección toma un ensayo.

No sé si funcionará... pero creo que merece la pena intentarlo.

Por tanto, yo admito que de este escrito se hagan nuevas versiones. Lo único que exijo es que se conserven los nombres de todos los que aporten mejoras (una mejora es algo que eligen los lectores, peora si no lo eligen) y que las mejoras se publiquen gratuitamente. No importa que se publique en un medio comercial o no.

Enviado por flexarorion a las 11:54 | 0 Comentarios | Enlace


Referencias (TrackBacks)

URL de trackback de esta historia http://ciencia15.blogalia.com//trackbacks/1471

Comentarios

© 2002 flexarorion