domingo, 14 de marzo de 2010

¿QUE ES SOFTWARE LIBRE?

Para comenzar a comprender que es el SOFTWARE LIBRE hay que hacer una pequeña aclaracion: todo programa de computadora, desde el Sistema Operativo (Windows, GNU/Linux, Unix, etc) hasta las aplicaciones mas basicas (Calculadora, Editor de texto), SON SOFTWARE.

Todo este software "se escribe" como se escribiria un libro (ese texto escrito se lo denomina CODIGO o FUENTE), la diferencia es que para crear software debemos cumplir con una sintaxis y una semantica particular segun el lenguaje de programacion (Java, .Net, C++, Python, PHP, etc.) elegido para ello (muchos de ellos comparten sintaxis o semanticas similares, pero cada lenguaje tiene los suyos particulares), tal cual se seguiria una semantica y sintaxis particular para escribir un libro segun el idioma en el cual va a ser escrito. Para acercarnos mas a la realidad, podriamos llegar a hacer una comparacion:

Software = Libro

Lenguaje de programacion = Idioma del libro

O sea, ¿Como se hace un programa de computadora? Se escribe un "archivo de texto" siguiendo la sintaxsis y semantica particular del "lenguaje de programacion" elegido, el cual es interpretado por un "interprete" de dicho lenguaje y se traduce en un archivo que es ejecutable (en la mayoria de las veces).

Ahora bien, que es un ¿"interprete"? Un interprete (a grandes razgos) es un software que lo que principalmente hace es interpretar lo que esta escrito en el archivo de texto (siguiendo la sintaxis y semantica del lenguaje de programacion elejido) y lo "traduce" en un lenguaje que sea entendible para los circuitos electronicos de la PC. O sea, traduce palabras en combinaciones de "O" y "1" o "codigo binario" (se llama codigo BInario, ya que acepta solo dos caracteres, O y 1) que es el unico "lenguaje" que entiende la PC en sus circuitos electronicos. Ejempo:

La palabra "HOLA" en codigo binario seria: 01001000011011110110110001100001

Medio raro, no? OK, es normal que parezca raro, pero la principal idea es entender como se crea un programa y como la PC lo puede interpretar y ejecutar.

Resumiendo: Todo software se "escribe" como un libro, siguiendo un "lenguaje particular", el cual es interpretado por la PC, traducido a un lenguaje que entiendan los circuitos electronicos de la PC.

Un simple ejemplo del "codigo o fuente" de un programita que al ejecutarlo lo que hace es escribir en la pantalla el texto "Hola Mundo":


#include

main()
{
for(;;)
{
printf ("Hola Mundo!\n");
}
}

Esto, escrito en un archivo de texto, es lo que el interprete del lenguaje (hay interpretes multilenguaje o interpretes especificos para cada lenguaje en particular) va a traducir a codigo binario y posteriormente cuando ejecutemos dicho "software o programa" en la pantalla va a salir un mensaje diciendo "Hola Mundo!".


OK. Explicado esto podemos abordar el tema principal que es: ¿Que es el Software Libre?

En la actualidad existen dos grandes grupos de Software o programas (como mas les guste). Existe el denominado "Software Privativo" (o Propietario) y el "Software Libre".

Ejemplos de Software Privativo: Microsoft Office, Microsoft Windows, Photoshop, Internet Explorer, etc.

Ejemplos de Software Libre: Firefox, GNU/Linux, OpenOffice, The Gimp, etc.

Para que un software sea considerado "libre" debe cumplir con estas cuatro LIBERTADES:

* La libertad de ejecutar el programa, para cualquier propósito (libertad 0).
* La libertad de estudiar cómo trabaja el programa, y cambiarlo para que haga lo que usted quiera (libertad 1). El acceso al código fuente es una condición necesaria para ello.
* La libertad de redistribuir copias para que pueda ayudar al prójimo (libertad 2).
* La libertad de distribuir copias de sus versiones modificadas a terceros (la 3ª libertad). Si lo hace, puede dar a toda la comunidad una oportunidad de beneficiarse de sus cambios. El acceso al código fuente es una condición necesaria para ello.

O sea, tenemos que tener la libertad de poder ejecutar el programa como queramos, para lo que se nos cante... la libertad de estudiar "el codigo fuente" del programa y modificarlo a nuestro gusto, placer o necesidad particular, esta libertad nos permite copiarnos porciones de codigo para nuestra propia aplicacion con total libertad... la libertad de copiar, distribuir, vender copias del programa... la libertad de publicar, compartir y distribuir mejoras o modificiaciones al programa...

Todas estas condiciones excluyentes deben cumplirse para que el software sea "LIBRE".

Ahora bien, que beneficios tiene este software con respecto al "no libre" (o privativo, propietario)?? La principal diferencia esta en la libertad!!! Como vemos, podemos hacer lo que querramos, con el y sobre el, con total libertad. Esto se debe a que es excluyente que el "codigo fuente" del programa este publicado, accesible, venga con el programa o este libre por la internet. Que cualquier persona pueda ver que es lo que hace el programa, como lo hace, para poder modificarlo a su gusto o simplemente estar seguros que el software no hace algo raro, ya que podemos ver exactamente que hace y que no.

Este beneficio es increible, ya que tenemos la total libertad de modificar absolutamente todo... Por ejemplo, imagenes, menues, comportamiento, botones, etc.. y esto se debe a que tenemos el codigo fuente!!! En contrapartida, el software privativo no comparte el codigo fuente de la aplicacion, por lo cual hacer una modificiacion sobre el mismo es casi imposible (existen metodos para obtener porciones de codigo, pero son muy complejas).

El beneficio de poder estudiar que hace el programa, es otra libertad muy importante. El software privativo no permite saber que es lo que ejecuta, por lo que no podemos asegurar, por ejemplo, que no extrae datos personales de nuestra PC y los envia a algun sitio en particular (El sitio de Microsoft por ejemplo). Ahora bien, ellos dicen no hacerlo, pero bien es sabido que Microsfot Windows envia datos personales y sobre la PC a su propio sitio, aunque ellos digan no hacerlo, no tenemos forma de comprobarlo porque no podemos "ver" que es lo que esta haciendo el Software internamente.

La libertad de distribuirlo, copiarlo, vender copias en CD, es otra libertad asombrosa!!! Nada de copias truchas, de cracks, serials ni nada raro para que los programas funcionen y lo mejor de todo es que es TOTALMENTE LEGAL hacer copias y no solo eso, sino que se incita a copiar y repartir copias del programa, es una cuestion de etica, una cuestion de libertad! Si mi compañero de clase, de trabajo necesita un software para poder hacer algo, porque no puedo darle una mano prestandole mis cd's con programas??? No es etico decirle: "No, sabes que? No puedo prestartelo, deberas comprarlo por tu cuenta"... Microsoft Windows no puede ser copiado, distribuido ni prestado.

La libertad de distribuir copias modificadas del software es otra de las libertades que hace "grande" a este software por encima del software privativo. Esta libertad posibilita que el software cada vez funcione mejor, ya que cualquier persona del mundo puede obtener el codigo fuente y al hacer esto, si entiende el lenguaje en el cual esta escrito el programa, puede realizarme mejoras o puede corregir errores que tenga el programa. Por eso es que las actualizaciones de seguridad del software libre es muchisimo mas activo, de mejor respuesta ante algun fallo de seguridad importante, ya que cualquier persona del mundo puede examinar el codigo, modificarlo, eliminar el error y publicar el software mejorado, sin el problema!!! Lo que beneficia a toda la comunidad. Esta libertad no se encuentra en el software privativo, ya que no podemos modificarlo para mejorarlo, por lo que debemos esperar que la empresa libere una version mas nueva con los arreglos o modificaciones. El tiempo de respuesta ante una falla de seguridad del software es 10 veces mas rapida en el software libre que en el privativo, gracias a que millones de personas en el mundo pueden modificar el programa, en cambio las empresas suelen tener como maximo cientos de personas para realizar modificaciones. Esto da un potencial enorme!! Ninguna empresa puede contratar a millones de personas para realizar cambios o modificaciones.

Entonces, el software libre es un software que nos da LIBERTAD! O sea, somos dueños, amos y señores de todo nuestro software, dueños y amos absolutos de nuestra PC y todo lo que pasa en ella. Cosa que con el software privativo no tenemos esa libertad, ya que, por ejemplo, en la licencia de uso de Microsoft Windows o Microsfot Office indica como debemos utilizar el software, con que fines, durante cuanto tiempo, etc etc... todo esto sin saber realmente que es lo que hacen y que no.

El principal ejemplo de Software libre contra software privativo es el de Microsoft Windows contra GNU/Linux. En el cual Microsoft nos impone e indica que hacer con el sfotware, no nos deja ver internamente que hace y que no, para poder realizar alguna modificacion siempre hay que hacer cosas "raras" como por ejemplo cambiar archivos que pueden llegar a dejarnos el sistema operativo inutilizable o instalar programas que realmente tampoco sabemos que es lo que hacen. En contrapartida, GNU/Linux nos da la libertad de poder modificar lo que querramos, de la forma que se nos cante, cuando querramos, bajo nuestras condiciones, nadie nos impone nada, nadie nos controla, somos totalmente LIBRES!!! Por esto es que el software libre es tan facil de personalizar (themes, skins, funciones, plugins).

La gente piensa que la unica ventaja del software libre es que generalmente no se paga por el. Que es cierto, en general el software libre esta gratuito para su descarga en internet. Pero la principal ventaja no es la cuestion economica, sino la libertad!!! y debido a eso, la mejor calidad de las aplicaciones, ya que hay muchos programadores por todo el mundo mejorando, modificando, actualizando constantemente todo este software!

Asi que terminando por hoy con este post, que creo que fue bastante extenso pero que da una ligera idea sobre que es el software libre y sus ventajas, me gustaria hacer la aclaracion de que GNU/Linux o simplemente "Linux" no es mas dificil de usar que Windows y tambien tiene soporte si se paga por el. Pueden buscar cualquier video en internet sobre como es linux, su uso y demas y ver con sus propios ojos que es completamente facil e intuitivo. De todas formas, pueden descargar un LiveCD que es un CD booteable, que lo que hace es cargarnos una version de linux en la memoria de nuestra PC sin modificar absolutamente nada y poder utilizarlo y probarlo antes de instalarlo.

Quedaron varias cosas en el tintero, pero no queria continuar extendiendo este post!

Cualquier duda, consulta, pueden hacerla en este mismo blog o por medio del correo a la direccion: javierlupeado@gmail.com

En el proximo post voy a hablar sobre los beneficios de Software Libre en la educacion y en la administracion publica.

Saludosss!!!

FREEDOM!

0 comentarios:

Publicar un comentario en la entrada