Psicofonías

(algo así como el blog de Psicobyte)

De qué va el software libre

Como probablemente sepas, he estado algunos años trabajando en la Oficina de Software Libre de la Universidad de Granada. Aunque ya hace cosa de un año que no tengo ninguna relación con esa oficina, de vez en cuando me siguen llegando consultas sobre software libre, licencias y ese tipo de cosas, con lo que he acabado haciendo una especie de texto introductorio explicando de qué va esto del software libre, y es este:

El Software Libre consiste en dar el poder al usuario.

El software Libre consiste en eliminar las barreras que impiden al usuario cosas tan triviales como usar el software, estudiarlo, aprender de él, mejorarlo, regalarlo o venderlo.

Para esto, una de las cosas más importantes es que el software que se distribuye vaya acompañado de su código fuente.

El código fuente

Los programadores crean sus programas usando una gran variedad de lenguajes. Posiblemente hayas oído hablar de cosas como Python, Java, Perl, PHP, BASIC, C, C++, Cobol, Go, Haskell...

Todo eso son lenguajes de programación y se usan básicamente para lo mismo: Programar.

En general, son lenguajes que están diseñados para que los escriban, lean y entiendan personas. En cierto modo, la mayoría de ellos son una especie de inglés macarrónico muy estandarizado.

Pero, normalmente (no siempre), esos lenguajes no son lo ideal para que lo entienda un ordenador, así que lo que se hace es usar un programa especial llamado "compilador" para convertir ese código entendible por humanos en otro tipo de código entendible por el ordenador.

Al lenguaje entendible por humanos le llamamos "Código fuente", el lenguaje entendible por el ordenador es el "código máquina" y el proceso de convertir el primero en el segundo se llama "compilar".

Una vez visto esto, ya te habrás dado cuenta de que, para que una persona pueda ejercer esa libertades de las que hemos hablado (usar el software, estudiarlo, aprender de él, mejorarlo, regalarlo o venderlo...) necesita tener acceso al código fuente.

El código fuente de un programa es lo que te permite ver cómo funciona, modificarlo, etc.

Por eso, siempre, el software libre debe ir acompañado de su código fuente o de algún medio para acceder a él. hoy en día lo más simple es ponerlo en internet en algún sitio accesible para su descarga.

Pero la disponibilidad del código fuente no es suficiente para garantizar las libertades del usuario (y, por tanto, que el software sea libre). También hay que tener en cuenta los derechos de autor y las licencias.

Derechos de autor

En España no existe el copyright, aunque usemos esa palabra para simplificar, sino que la Ley de Propiedad Intelectual habla de "derechos de autor". Los derechos de autor los tienes por el simple hecho de ser autor, no requieren registro ni nada. ¿Tú eres el autor de un programa de ordenador, un libro, poesía, película o lo que sea? Pues todos lo derechos son tuyos: Tú decides lo que se hace con esa obra.

El copyright es una figura del derecho anglosajón que no existe en nuestro ordenamiento. "Tener el copyright" viene a significar que eres el que puede decidir qué se hace con la obra. Si se puede copiar, distribuir, etc.

Los derechos de autor se dividen en "morales" y "patrimoniales". Los morales son irrenunciables aunque quieras. Sorpresa: El derecho a remuneración por copia privada (el famoso canon) es un derecho moral. La autoría también es irrenunciable. Aunque publiques con seudónimo o anónimo, nadie puede obligarte a ocultar tu autoría o arrogarse la autoría de una obra tuya. Hay más, como el derecho a la integridad de la obra, el derecho de modificación y, uno muy curioso, el derecho de acceso a la obra única.

Los derechos patrimoniales son los interesantes, porque son donde está la pasta, el negocio y tal, y son los que normalmente identificamos con el "copyright" anglosajón. Son los de reproducción, distribución, obra derivada, traducción, etc. A estos se puede renunciar, por ejemplo, cuando firmas un contrato con una editorial o cuando trabajas en una empresa de programación.

Los derechos de autor no son eternos (pero casi): Caducan a los setenta años tras la muerte del autor. Entonces la obra pasa a dominio público, que quiere decir que todo el mundo puede usarla como le venga en gana sin pedir permiso a nadie.

La legislación anglosajona (pero no la nuestra) permite poner algo en el dominio público voluntariamente.

Como autor, para ceder o renunciar a un derecho tienes que hacerlo expresamente. Esto es importante: Si no pones ningún tipo de licencia en tu obra y, por ejemplo, la cuelgas en internet, esa obra tiene "todos los derechos reservados". No se puede copiar, distribuir, ni básicamente hacer nada con ella. ¿Que un fotógrafo pone sus fotos en internet sin licencia? Pues no puedes copiarlas ni usarlas para nada, ni con fines de lucro, ni sin lucro, ni nada. Ya sé que eso no es lo que se hace en realidad, pero es lo que dice la ley.

Cuando firmas con una editorial (yo lo he hecho), ellos te ofrecen un porcentaje de las ventas (en torno al 10%) a cambio de que tú pierdas algunos derechos (patrimoniales) en su favor. Por ejemplo: Tú ya no puedes copiar regalar, vender o distribuir tu propia obra, sino que lo hacen ellos según las condiciones del contrato.

Si no haces un contrato con una editorial, sino que te buscas la vida (por ejemplo, colgando tu obra en tu blog), tú conservas todos los derechos. Tú decides qué se hace. Como he dicho antes, si no hay licencia explícita que diga que se puede hacer y qué no, se entiende por defecto que tiene "todos los derechos reservados".

Para permitir que se hagan cosas con tu obra puedes poner una licencia (o más de una, de eso hablamos luego). Una licencia no es más que un documento en el que dices qué cosas se pueden hacer (legalmente) con esa obra.

Licencias libres

En el caso del software, las que nos interesan aquí son las licencias de software libre. las licencias de software libre son las que cumplen las cuatro libertades del software de la FSF, que es posible que ya las conozcas (sobre todo, si has estado en alguna charla mía), pero que voy a poner aquí de todos modos:

  • La libertad de usar el programa, con cualquier propósito.
  • La libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades.
  • La libertad de distribuir copias.
  • La libertad de mejorar el programa y hacer públicas las mejoras a los demás.

De paso, comentaré que las licencias "open source" son las que cumplen los 10 puntos de la OSI y que, debates bizantinos aparte, vienen a decir lo mismo que las libertades. Creo que había algún caso de una licencia que cumplía con la OSI pero no con la FSF, pero normalmente si una licencia cumple con una cumple con la otra. El debate Open Source vs Software Libre es relevante y pertinente, pero es sobre ética y principios, no sobre cuestiones prácticas.

De modo que una licencia libre es, básicamente, la que te dice que puedes usar el software sin restricciones, y copiar el código, modificarlo, distribuirlo y usarlo como te venga en gana. Naturalmente, como hemos visto arriba, para que estos derechos sean efectivos tienen que darte el código fuente (si no, a ver qué es lo que modificas y tal).

Algunas licencias libres tiene un tipo de cláusula especial llamada "copyleft". Es un invento de Richard Stallman y es, probablemente, la herramienta más poderosa para la expansión del software libre. Básicamente, una cláusula copyleft es la que dice algo como "puedes hacer todo lo que dice esta licencia pero, si distribuyes copias, modificaciones, etc, debes hacerlo usando también esta misma licencia".

Insisto en ello, porque es muy importante: Si haces un trabajo derivado de algo con copyleft, debes usar la misma licencia (o una compatible, pero eso es meterse en berenjenales). ¿Qué se consigue con esto? Que el trabajo que tú hagas también sea libre. Por eso al copyleft sus críticos empezaron a llamarle "la cláusula vírica". Lo que pasa es que el nombre nos moló y nos lo quedamos.

¿Cuáles son Las licencias con copyleft más importantes? GPL, Affero GPL Y LGPL. (LGPL tiene "copyleft débil", pero no me voy a meter en eso ahora)

Hay licencias que no tienen copyleft. Esto quiere decir que tú puedes redistribuir o hacer trabajo derivado usando otra licencia. Por ejemplo: usar algo con esa licencia libre pero sin copyleft para hacer un producto privativo. Por eso las licencias con copyleft molan mucho más.

las típicas licencias sin copyleft son la Apache, la MIT y la BSD.

A todo esto, y al contrario de cuando contratas con una editorial, empresa de software o lo que sea, tú, como autor, no pierdes ningún derecho. La obra sigue siendo tuya y tú decides. Puedes, por ejemplo, sacar la misma obra con distintas licencias sin ningún problema. Puede parecer una tontería (¿quién querría la versión privativa habiendo una libre?), pero a veces tiene sentido. Por ejemplo, MySQL tenía un sistema de este tipo: Una licencia libre con copyleft pero, si quieres usar su motor o lo que sea para algo privativo, pagas por una licencia no libre pero sin copyleft.

Todas las licencias mencionadas está dieñadas para aplicarlas al software; para liberar cosas que no sean software se suelen usar las licencias Creative Commons, pero no voy a meterme en ello ahora.

Y ya está: Código fuente disponible y licencia libre. No necesitas nada más para que sea software libre. Hay todo un mundo de complejidades y detalles, pero esto es lo esencial.

(179 visitas a este artículo)

Borrando mis redes sociales

He decidido abandonar algunas redes sociales, en particular Twitter y Facebook (aunque la verdad es que ya las tenía bastante abandonadas).

Como no tengo muy claro si es definitivo o si querré regresar a ellas en un futuro, ni tampoco estoy seguro de si quiero darles algún otro uso ahora (por ejemplo, creo que voy a utilizarlas para anunciar las actualizaciones del blog), no quería eliminar esas cuentas, pero sí que tenía claro que quería eliminar los contenidos que, durante estos años, he creado para ellas.

Como era de esperar, ni Twitter ni Facebook lo ponen fácil. Aunque ambas permiten borrar entradas una a una, ninguna de las dos plataformas tiene una herramienta propia que permita borrar bloques completos de entradas y, por supuesto, ninguna que permita eliminar todas ellas de una vez.

A pesar de todo, existen herramientas de terceros (la mayoría online) que permiten, más o menos, hacer este trabajo.

Facebook

Para borrar entradas de Facebook existe un plugin que se instala en el navegador Chrome (o Chromium, en mi caso) llamada Social Book Post Manager, que automatiza el proceso que el usuario debería hacer manualmente recorriendo una a una las entradas en el log de actividades de Facebook, haciendo click en ellas y seleccionando "borrar".

Este plugin comete muchos errores, se deja entradas sin eliminar, y hay que usarlo varias veces antes de conseguir borrarlas todas, pero cumple con su trabajo.

Twitter

Para Twitter la cosa está más complicada. No porque haya menos oferta de aplicaciones (que las hay, y muchas) sino porque todas estas aplicaciones (servicios web, fundamentalmente) usan la API de Twitter para obtener los tweets que se borrarán, y eso tiene un par de problemas:

El primero es que debes autorizar a esas aplicaciones (aplicaciones web, recordemos) a acceder a tu cuenta de Twitter, con los problemas de seguridad que eso pueda tener.

El segundo es que la API de Twitter está deliberadamente limitada y sólo retorna los últimos 3000 tweets. Si has publicado menos de 3000 tweets no hay problema, puedes borrarlos todos. pero si tienes más de esos 3000 tweets no podrás borrar el resto (los más antiguos).

Para borrar un tweet mediante la API de Twitter necesitas conocer su ID, que es un identificador único consistente en un número de dieciocho dígitos. Pero para obtener los IDs de los tweets que deseas borrar necesitas solicitar una lista a la API, que sólo te retornará los últimos 3000 tweets publicados. Además, no sirve de nada borrarlos y volver a pedir los siguientes 3000, porque no te los va a dar.

Como yo tenía unos 19000 tweets publicados, esta solución no me servía.

deleteallmytweets

Sin embargo, hay una forma de obtener las IDs de todos tus tweets sin tener que pedirlas a través de la API.

A través de su página, Twitter te da la opción de descargarte un archivo zip con todos tus tweets. y, dentro de ese zip. hay un archivo llamado "tweets.csv" que contiene una lista de todos tus tweets con toda su información, incluído el ID.

Así que he escrito un pequeño programa en python con el incómodo nombre de "deleteallmytweets" que usa la información de ese archivo para borrar todos los tweets de una cuenta.

Está disponible en dos versiones, para python 3 y para python 2, es libre (con licencia GPL) y puedes ver los detalles en su repositorio en Github.

(426 visitas a este artículo)
Posts Posteriores (1/1) Posts Anteriores
PCMS 2004