Bienvenidos al maravilloso mundo del Software Libre

De Gleducar, http://www.gleducar.org.ar

Lili-logos-2.png

Este artículo pertenece al Libro 2 de Sembrando Libertad.

<< Volver al índice del libro

Contenido

Primeras palabras

Antes de comenzar a recorrer los contenidos de este libro es es importante que conozcamos y dejemos en claro las características, implancancias y alcances del modelo propuesto por el Software Libre. ¿Se trata solo de una alternativa técnica mas? ¿Qué fundamentos encontramos para emplearlo en la educación? Buscaremos dar respuesta a estas preguntas a fin de comprender los alcances de esta propuesta.

El Software Libre es el eje que atraviesa todos los contenidos y actividades que incluye este libro. No sólo eso: este libro fue desarrollado siguiendo el modelo de producción colaborativo del Software Libre y, por supuesto, empleando herramientas informáticas de Software Libre.

Para comprender cabalmente la definición que encierra el Software Libre es necesario primero reflexionar sobre el rol que juega el software en las sociedades modernas, para comprender su importancia estratégica, la forma en que configura la realidad y el por qué la discusión entorno a él no puede ser ajena a la educación.

La tecnología y el software en las sociedades modernas

En los países con economía de mercado, la mayoría del globo, es casi impensado vivir sin las tan promocionadas bondades de los sistemas informatizados y las computadoras. Esta necesidad es un reflejo del grado de penetración económica, técnica y social de las nuevas herramientas que provee la llamada “Era Digital”.

Vivimos constantemente rodeados de información que viaja al rededor nuestro: la telefonía celular, Internet, cajeros automáticos, señales de televisión, etc. Todos componen la realidad diaria de millones de personas que se entregan a estas comodidades del mundo moderno sin siquiera entender o reflexionar al respecto.

La automatización es un proceso que parece no alcanzar fin, y las únicas enunciaciones de la población acerca de estas son palabras de elogio, asombro o silencio absoluto. Los invito entonces a pensar un poco sobre la masiva tecnificación de nuestras vidas, la digitalización de todas nuestras acciones y la virtualización de nuestra realidad.

Los invito a encontrar el denominador común entre todas las maravillosas tecnologías antes enumeradas. Si no halla la respuesta rápidamente pregúntese a si mismo: ¿Cómo es que funcionan Internet, nuestras computadoras, celulares y cajeros? ¿A quienes obedecen los sistemas electrónicos de los hospitales, bancos y gobiernos?. “A quienes las usan”…

Existe una extendida creencia en el común imaginario de las personas acerca de las bondades tecnológicas: según reza el mito, estas responden a las ordenes de los [usuarios-consumidores], han sido pensadas para hacer lo que nosotros queramos.

Pregunto nuevamente al lector, ¿cuántas veces usted le ha pedido a su computadora que deje de funcionar haciéndole perder el trabajo de toda una noche? ¿Usted le dijo a ese cajero que atrapara su tarjeta de crédito? ¿Solicito a su teléfono celular que se negara a enviar sus SMS?. No. Esto es así porque usted no controla la tecnología: estos dispositivos son controlados por el software.

El software es quien controla su computadora y todos los sistemas basado en tecnología informática. Usted puede o no interactuar con el software. Al calentar su comida en un microondas o al extraer dinero de su cuenta en un cajero automático esta operando un software. Este dice como funcionan las cosas, es la lógica que sostiene todas estas posibilidades y las hace [in]funcionales.

Su computadora y dispositivos no le obedecen a usted, obedecen sólo al software que los controla. Entonces quien controla el software controla la tecnología.

Muchas personas conociendo esto prefieren que sea así: aceptan que un tercero controle de forma única el software y por ende, como funcionan las cosas. Quizás usted también piense de esa manera, después de todo usted no es un técnico en computadoras ni le interesa serlo.

Es posible que no le interesa quien controla el software, pero seguro le preocupa tener el control sobre su privacidad, su información, su dinero y su voto en un sufragio electoral. Pero alguien controla todo esto por usted. ¿Quién es ese alguien? Nuevamente, el software y, claro, quienes controlan el software.

Todo lo dicho nos muestra al software como un algo opaco y difícil de comprender. Se nos hace ajeno e inabarcable. Para avanzar entonces en su comprensión y previo a explicar de qué se trata el llamado Software Libre, debemos conocer previamente algunos conceptos técnicos que describiremos a continuación, sin profundizar en tecnicismo y evitando que la lectura se vuelva críptica para los no especialistas en informática.

Algunos conceptos previos

Es muy difícil comprender en forma cabal la importancia y proyección del Software Libre sin antes entender qué es el software, cómo se desarrolla y su rol dentro de los sistemas de procesamiento de datos. Para esto necesitamos explorar conceptos básicos vinculados a la informática, tales como tecnología, programa, código fuente y código objeto.

La computadora: más rápida que inteligente

Las computadoras son dispositivos de propósito general, a las que podemos configurar para cumplir tareas específicas: imprimir documentos, tocar música, mostrar videos, interconectar redes, por sí mismas son incapaces de realizar ninguna. Para ello, necesitan que alguien les provea instrucciones detalladas acerca de cómo interpretar la información y cómo comunicarse con el usuario. Un programa es un conjunto de instrucciones para la computadora, que le permite llevar adelante una tarea específica. Ese programa se escribe, como se escribe este texto o cualquier relato. Los encargados de escribir esos textos son los programadores, que dominan un determinado lenguaje de programación para realizar esta tarea, como nosotros dominamos el español, su gramática y su sintaxis para construir este texto.

Por mucho que se hable de “dispositivos inteligentes”, pocas cosas hay más tontas que el procesador de una computadora. Si vamos a su esencia, un procesador elemental sólo sabe manejarse con un alfabeto de dos letras (”0” y “1”) y dadas dos “letras” de este alfabeto, calcular su suma. Por lo general, las computadoras no operan sobre “letras” individuales (llamadas “bits”), sino sobre palabras de ocho letras, llamadas “bytes”, por ejemplo “01100101”. Hay un total de 256 palabras distintas que se pueden escribir con ocho bits. Estas 256 palabras que, si las interpretamos como números binarios, representan los números del cero al 255, constituyen el vocabulario completo de la computadora.

¿Cómo es posible que con sólo 256 palabras en su vocabulario una computadora pueda hacer tantas cosas? ¿Cómo es posible que sólo sumando pueda hacer cálculos complejos?

El secreto está en que la computadora es programable. La computadora sabe obedecer órdenes, y tiene la capacidad de ejecutar millones de instrucciones en un solo segundo, ejecutando operaciones sobre los millones de bytes que constituyen su memoria. Combinando instrucciones, podemos escribir programas que combinen e interpreten las palabras almacenadas en la memoria de distinta manera de acuerdo al contexto: como cada una de las letras de este texto, como números, o notas musicales, o colores. Enviando los datos de la manera adecuada a una pantalla, una impresora o una tarjeta de sonido, el programa puede impresionar nuestros sentidos. Aceptando datos desde el teclado y el ratón, puede responder a nuestros comandos.

Para que el “milagro” de hacer tantas cosas con un lenguaje de sólo 256 palabras sea posible, es necesario darle instrucciones precisas al procesador de la computadora, indicarle paso a paso qué hacer con esos unos y ceros, combinados en palabras de ocho letras.

A diferencia de los objetos materiales, que se fabrican, los programas se escriben. Quizás parte de la fascinación que la programación ejerce sobre quienes la practican se deba a la magia aparente de lograr que una máquina cumpla las órdenes que le impartimos verbalmente. En vez de usar castellano, o inglés, los programadores utilizan lenguajes formales fuertemente apoyados en la matemática, y derivan de ella el poder de expresar relaciones abstractas en términos de elementos más concretos. En estos lenguajes formales se escriben los programas y se desarrolla el denominado código fuente, el que luego se traduce al lenguaje super detallado que requiere la máquina, "el lenguaje máquina".

Lenguajes e instrucciones: ¿cómo sabe la computadora qué es lo que tiene que hacer?

Para que la computadora pueda entender lo que le ordenamos debemos comunicarnos con ella de una manera especial: el procesador, dentro de cada computadora, sólo comprende instrucciones escritas en su propio lenguaje, denominado lenguaje de máquina (a veces mencionado como código binario o código objeto). Existen muchos tipos distintos de procesador y cada uno de ellos tiene un lenguaje de máquina distinto, diseñado por su fabricante. Esa es la razón por la que no es posible ejecutar cualquier programa en cualquier computadora.

Los programas escritos en lenguajes de máquina son, básicamente, larguísimas listas de números. Cada uno de estos números representa una operación elemental (por ejemplo, 1: sumar, 2: restar, 3: almacenar en memoria, etc), o un operando, o una combinación de ambas cosas.

Una computadora moderna está en condiciones de ejecutar millones de instrucciones de máquina por segundo. Construir un programa complejo a partir de instrucciones tan elementales y codificadas en un formato tan poco amigable es, sin embargo, una tarea muy complicada para un ser humano. También es extremadamente difícil entender cómo funciona un programa si sólo disponemos de él en lenguaje de máquina. Para comprender cómo funciona el programa citado más arriba no sólo es necesario recordar qué número corresponde a cual operación, también debemos identificar cuáles partes de los números representan operaciones, cuáles representan operandos, cuáles datos, y muchas otras cosas más. Debido a detalles técnicos, modificarlo es mucho más difícil aún, ya que para eliminar o agregar instrucciones no basta con insertarlas o borrarlas en la lista: también hay que modificar los valores de muchas de las demás instrucciones. Por ello, modificar un programa del que sólo tenemos una copia en lenguaje de máquina, o traducirlo para que funcione en una máquina con un lenguaje de máquina distinto, es una tarea virtualmente impracticable.

Dado que las personas tienen serias dificultades para leer, escribir y modificar programas en lenguaje de máquina, pero son esas mismas personas las que deben escribir y mantener los programas, se inventaron los lenguajes de programación. A diferencia de los lenguajes máquina, que están diseñados con el único objetivo de facilitar al procesador la ejecución de las instrucciones a gran velocidad (podríamos llamarlo también lenguaje de ejecución), la finalidad de los lenguajes de programación es facilitar a los seres humanos la comprensión, la escritura y la modificación de los programas. El objetivo primordial de un programa expresado en un lenguaje de computación no es ser ejecutado directamente por una computadora (lo que es imposible), sino comunicar, de manera comprensible para un ser humano, lo que una computadora debe hacer para resolver un determinado problema.

Dado que la naturaleza de la computación está íntimamente ligada a las matemáticas, los lenguajes de programación generalmente son una mezcla un tanto idiosincrática de notación matemática entrelazada con una gramática rudimentaria, por lo general basada (remotamente) en el inglés.

El compilador: nexo de dos mundos

Los programas escritos en un lenguaje de programación no son comprensibles directamente por una computadora. Recordemos que éstas sólo saben obedecer instrucciones codificadas en su lenguaje de máquina. Antes de poder ejecutar un programa escrito en un lenguaje de programación, debemos traducirlo al lenguaje de la máquina sobre la que queremos que corra. Para cada combinación de procesador, lenguaje y sistema operativo existen traductores automáticos, llamados compiladores. Se trata de programas que leen un programa escrito en un lenguaje de programación y, a partir de él, generan uno escrito en el lenguaje de ejecución adecuado para una determinada combinación de procesador y sistema operativo.

Aquí se vuelve evidente otra gran ventaja de los lenguajes de programación sobre el lenguaje de máquina: si mi programa está expresado en un lenguaje de máquina, sólo podré ejecutarlo en máquinas equipadas con un determinado tipo de procesador. Por el contrario, si lo escribí en un lenguaje de programación, en principio basta con hacerlo traducir por el compilador adecuado para que el programa pueda correr sobre el procesador que yo quiera.

En inglés, se conoce al programa escrito en lenguaje de programación como source code, y al programa expresado en lenguaje de máquina como object code (código objeto) o executable code (código ejecutable). En castellano, a menudo se traduce source code con la frase “código fuente”, que no es completamente fiel a la intención de la expresión inglesa. Tendría más precisión técnica traducirlo como “texto original” del programa, ya que se trata del texto tal como lo escribió el programador, mientras que el código ejecutable es el fruto de una traducción automática realizada por un compilador.

Si bien es posible ejecutar un programa en la computadora adecuada contando sólo con el código ejecutable, cuando se trata de comprender el funcionamiento de un programa, de modificarlo, o de hacerlo funcionar en una máquina diferente, es imprescindible disponer de su texto original, es decir de su “código fuente”. ente).


Y entonces... ¿qué es el Software Libre?

Comprendidos los conceptos antes explicados, estamos en condiciones de entender qué implica la libertad en el software.

Decimos que para ser considerado libre, un programa debe ser distribuido de tal modo que el usuario pueda, entre otras cosas, estudiar el modo de funcionamiento del programa, adaptarlo a sus necesidades y distribuir, bajo las mismas condiciones, programas derivados. Para que estas libertades sean practicables, no basta con que la licencia del programa las permita. Además, es necesario que el código fuente del programa esté a disposición del usuario, ya que de lo contrario las tareas de comprender, adaptar y mejorar el programa se vuelven tan complicadas que es casi lo mismo que si estuvieran prohibidas. Por eso la definición de Software Libre elaborada por la Fundación del Software Libre (Free Software Foundation) aclara que un programa no puede ser considerado libre si su código fuente, su texto original, no está disponible.

Es común identificar el Software Libre con una determinada tecnología, por lo que se suele sostener que el Software Libre es Linux y, por lo tanto, los impulsores del Software Libre están a favor de Linux y en contra de otros sistemas operativos. Contrariamente a esta idea, es importante aclarar que Software Libre no es una determinada tecnología, no es un tipo de programa de computadora ni un sistema operativo.

Si Usted se sienta frente a una computadora que ejecuta dos programas y le preguntamos cuál de ellos es Software Libre y cuál no lo es, no le será posible dar una respuesta sin leer el documento de licencia de cada uno de los programas. Así, por ejemplo, una suite de oficina libre y una no libre hacen prácticamente lo mismo. Igual pasa con un navegador web libre o uno no libre. Las posibles diferencias funcionales —cuando las hay —no son el dato relevante para identificar si un programa es libre o no.

El Software Libre se define por su tipo de licenciamiento. Por lo que podemos entonces llamar “software licenciado bajo condiciones libres” al Software Libre.

Entonces, para poder distinguir un programa licenciado bajo condiciones libres de uno licenciado con una licencia no libre, es obvio, debemos recurrir al documento de licencia y saber distinguir cuáles son los permisos y las condiciones de los mismos que transforman un programa de computadora en Software Libre.

No será raro entonces asistir a una reunión de partidarios del Software Libre y encontrarse en una discusión o presentación sobre condiciones de licencias de software. No es raro, tampoco, ver a los partidarios del Software Libre poniendo un celo exacerbado en reconocer los derechos de los autores de los programas, en respetar los Derechos de Autor y alzar su dedo contra quien no lo hace o se toma a la ligera estos temas.

Simplificando al máximo, podemos decir que Software Libre es un software o programa de computación cuya licencia nos permite ejercer una serie de libertades:

  • La libertad de ejecutar el programa con cualquier propósito.
  • La libertad de estudiar cómo funciona el programa y adaptarlo a las necesidades propias(para lo cual es una precondición el acceso al código fuente).
  • La libertad de redistribuir copias del programa y de ese modo ayudar a otros.
  • La libertad de mejorar el programa y liberar esas mejoras al público beneficiando así a toda la comunidad (para lo cual es una precondición el acceso al código fu

Y sólo exige una cosa: que si distribuimos el programa resultante de una modificación, éste se distribuya bajo las mismas condiciones del programa original. Las licencias que contienen esta condición son llamadas “licencias Copyleft”, y su objetivo es evitar que se distribuyan obras derivadas bajo licencias privativas. Como contraparte podemos decir que software propietario o privativo (dado que nos priva de libertades) es el que nos priva de alguna de las libertades antes expuestas.

Software Libre y educación

Teniendo en cuenta lo planteado, es tiempo de pensar el uso de Software Libre en el ámbito educativo. A pesar de las descripciones técnicas necesarias para comprender fehacientemente el qué del Software Libre, es importante no centrarse únicamente en los aspectos técnicos a la hora de llevarlo a la escuela.

El verdadero potencial del modelo del Software Libre reside en la lógica sobre la cual se construye y define. No son sólo sus ventajas técnicas, que pueden o no existir en un caso específico, sino la forma de apropiación que como usuarios hacemos de él. El usuario de Software Libre no es un consumidor de tecnología, es el miembro de una comunidad híbrida y dinámica que se constituye alrededor de la idea de que el acceso y la producción de ese lenguaje cultural contemporáneo que llamamos "software", debe ser de acceso público. La clave está en introducirlo en la educación a través de sus valores y enseñanzas: que todo no está hecho, que todos podemos participar de la construcción de los conocimientos, que la ciencia es una práctica colectiva, que el mundo que nos rodea tiene una explicación y es posible intervenir en su configuración.

Usualmente la tecnología se introduce en la educación de forma superficial, presentada como un fetiche mágico, acatando la lógica del mercado y promoviendo un acercamiento acrítico. Usualmente, a la hora de la informática, se entrena a los estudiantes en el uso de programas de computadoras que no son libres. Se los entrena, porque con tales herramientas no puede darse un verdadero proceso de enseñanza: ¿cómo es posible enseñar un contenido cuando está prohibido aprenderlo y cuestionarlo? ¿cómo hacerlo si es ilegal compartirlo?

El Software Libre propone un modelo radicalmente diferente para el entendimiento y enseñanza de las tecnologías digitales modernas: no se trata de adiestrar en el manejo de un producto informático sino de comprender el lenguaje cultural que sustenta las sociedades actuales. Se trata de demostrar que es posible conseguir resultados formidables con modelos de producción colaborativos, comunitarios y distribuidos; y poner en práctica esas mismas ideas dentro del aula.

La gran idea del Software Libre es que no se trata sólo de programas de computadoras. Su potencial y principal valor es el invitarnos a repensar la propiedad sobre el conocimiento, los contenidos y la educación en general. Es una invitación a dejar atrás la lógica dominante de la "propiedad intelectual" que desalienta la creatividad diciéndonos que "todos los derechos están reservados". Podemos colaborar para escribir materiales educativos libres, propuestas didácticas de toda clase y compartir los resultados con otros docentes para retroalimentar la sinergia y beneficiarnos todos.

A lo largo de este libro conoceremos diversas propuestas concretas para llevar este modelo a nuestras clases, pero no debemos perder de vista la idea de base que queremos transmitir con esta obra. Queremos formar productores críticos, creativos emprendedores que no guardan para si solos sus ideas sino que las comparten con toda la sociedad y llevan adelante su desarrollo mediante modelos colectivos. Y todo esto con una clara intensión: aportar en favor de las comunidades, iniciativas y proyectos que promueven un modelo cultural libre de restricciones y realmente diverso; en un contexto cultural y educativo dominado por las industrias, corporaciones y otros actores que buscan mercantilizar, encerrar, privatizar y escasear el conocimiento.

La propuesta está planteada. Los invitamos a recorrer estos contenidos que son también del lector. Alentamos la copia, distribución, modificación y transformación de todo los materiales del libro. ¡Esperamos que lo encuentren útil, lo perfeccionen y lo compartan!

Autores

Franco Iacomella, Federico Heinz y Fernando Da Rosa.

Basado en parte de la publicación "Guía práctica sobre software libre: su selección y aplicación local en América Latina y el Caribe", UNESCO, 2008: http://portal.unesco.org/ci/en/ev.php-URL_ID=26399&URL_DO=DO_TOPIC&URL_SECTION=201.html

Copyright © 2002-2010 Asociación Civil Gleducar
Todo los contenidos de este sitio se encuentran bajo una licencia libre del tipo Copyleft
Este sitio ha sido desarrollado usando Software Libre y respeta los estándares web.
Además ha sido diseñado para verse correctamente usando cualquier navegador, en cualquier resolución de pantalla.