Viajero en el tiempo

Archivo de 27/11/07

Linux o GNU/Linux

Publicado por jcrs en Noviembre 27, 2007

                                         300px-gnu-and-penguin-color-1024x946.jpg

Fuente: Por: Richard Stallman

 Los nombres transmiten significados; la elección que hagamos de unos nombres frente a otros, determinará el significado de lo que decimos. Un nombre inapropiado da a la gente una idea errada. Una rosa con cualquier otro nombre también olería dulce. Pero si usted la llama «lápiz», la gente podría resultar decepcionada cuando trate de escribir con ella. Y si llama «rosas» a los lápices, la gente podría no entender para qué sirven. Si usted llama «Linux» a nuestro sistema operativo, se transmite una idea equivocada sobre el origen del sistema, su historia y su propósito. Si usted lo llama «GNU/Linux», esto transmite (aunque no sea en detalle) una idea más precisa. ¿Pero es esto importante para nuestra comunidad? ¿Es importante que la gente conozca el origen del sistema, su historia y propósito? Sí, porque quienes olvidan la historia están condenados a repetirla. El «mundo libre» que se ha desarrollado alrededor de GNU/Linux no está asegurado; los problemas que nos llevaron a desarrollar GNU no están completamente erradicados y amenazan con volver. Cuando explico por qué es más apropiado llamar al sistema operativo «GNU/Linux» en vez de «Linux», la gente algunas veces responde de esta forma:

De acuerdo, el proyecto GNU merece que se le reconozca su trabajo, pero, ¿realmente vale la pena formar tanto alboroto cuando alguien no le da ese reconocimiento? ¿Lo importante no es que el trabajo esté hecho, y no quién lo hizo? Debería relajarse, sentirse orgulloso por el trabajo realizado, y no preocuparse por el reconocimiento.

Este consejo sería sensato sólo si la situación fuera ésa: si el trabajo estuviera terminado y fuera tiempo para descansar. ¡Ojalá eso fuera cierto! Pero los desafíos abundan, y no es el momento de dar por hecho que el futuro está garantizado. La fuerza de nuestra comunidad, descansa sobre un compromiso de libertad y cooperación. Usar el nombre GNU/Linux es una forma de no olvidarlo y de informar a los demás sobre estas metas. Es posible escribir buen software libre sin pensar en GNU; también se han hecho muy buenos trabajos en nombre de Linux. Pero desde que se acuñó «Linux», se ha asociado con una filosofía que no está comprometida con la libertad para cooperar. Como el nombre se usa cada vez más en los negocios, incluso nos será más difícil hacer que conecte con el espíritu de comunidad. Un gran reto para el futuro del software libre proviene de la tendencia de las compañías que distribuyen «Linux» a incluir software no libre en GNU/Linux en nombre de la conveniencia y el poder. Todos los desarrolladores de las principales distribuciones comerciales hacen esto; ninguno publica una distribución que sea totalmente libre. La mayoría de ellos no identifican de forma clara en sus distribuciones los paquetes que no son libres. Muchos desarrollan software no libre que luego agregan al sistema. Algunos incluso anuncian sistemas «Linux» con «licencias de uso por puesto individual», lo que le da al usuario tanta libertad como usar Microsoft Windows. Algunos justifican que se incluya software no libre con la excusa de la «popularidad de Linux» (valorando, en consecuencia, la popularidad por encima de la libertad). Algunas veces esto se admite abiertamente. Por ejemplo, en «Wired Magazine» Robert McMillan, editor de Linux Magazine, dice que «le parece que la estrategia respecto al software de fuentes abiertas debería estar enfocada hacia decisiones técnicas y no políticas». Y el Director General de Caldera apremió abiertamente a los usuarios a abandonar el objetivo de la libertad y trabajar en cambio por la «popularidad de Linux». Añadir software no libre al sistema GNU/Linux puede incrementar su popularidad, si por popularidad entendemos el numero de personas usando algo de GNU/Linux en combinación con software no libre. Pero al mismo tiempo, implícitamente se está induciendo a la comunidad a que acepte el software no libre como una opción válida, y a que olvide el objetivo de la libertad. No sirve de nada andar más rápido si uno se sale del camino. Cuando lo que se incluye es una biblioteca o una herramienta de programación que no es libre, esto se puede convertir en una trampa para los programadores de software libre. Cuando escriban software libre que dependa de esos paquetes que no lo son, su software no podrá formar parte de un sistema totalmente libre. En el pasado, Motif y Qt mantuvieron atrapada a una gran cantidad de software por este motivo, creando problemas que han tardado años en solucionarse. El problema con Motif aún no está totalmente resuelto porque LessTif todavía necesita pulirse un poco más (¡colabora como voluntario!). Actualmente la implementación de Java de Sun, que tampoco es libre, está teniendo un impacto similar. Si nuestra comunidad sigue avanzando en esta dirección, en el futuro podríamos acabar convirtiendo GNU/Linux en un mosaico de componentes libres y no libres. De aquí a cinco años tendremos seguramente un montón de software libre; pero si no gastamos cuidado, difícilmente podrá utilizarse sin el software no libre que los usuarios esperarán encontrar con él. Si esto llegara a ocurrir, nuestra campaña en defensa de la libertad habría fallado. Si publicar alternativas libres fuera simplemente cuestión de programar, resolver los futuros problemas sería más sencillo conforme van aumentando los recursos de desarrollo de que dispone nuestra comunidad. Pero nos enfrentamos a obstáculos que amenazan con hacerlo aun más difícil: las leyes que prohíben el software libre. A medida que se amontonan las patentes de software (¡visite petition.eurolinux.org y firme!) y a medida que leyes como la DMCA se usan para prohibir trabajos importantes de software libre como los que permiten ver un DVD o escuchar una emisión de RealAudio, no tendremos otra forma de luchar contra los formatos secretos y patentados si no es renunciando a utilizar los programas no libres que los usan. Afrontar estos retos nos supondrá todo tipo de esfuerzos. Pero lo que verdaderamente hace falta, para afrontar cualquier reto, es no olvidar nunca la meta de la libertad para cooperar. No podemos confiar en que el mero deseo de conseguir un software potente y robusto motive a la gente para hacer grandes esfuerzos. Necesitamos el tipo de determinación que la gente tiene cuando lucha por su libertad y su comunidad, determinación para luchar durante años sin rendirse. En nuestra comunidad, este principio y esta determinación emanan principalmente del Proyecto GNU. Somos nosotros los que hablamos de libertad y comunidad como algo en cuya defensa mantenerse firme; las organizaciones que hablan de «Linux» normalmente no lo hacen. Las revistas sobre «Linux» generalmente están llenas de anuncios de software no libre; las compañías que empaquetan «Linux» incluyen software no libre en el sistema; otras compañías dicen «apoyar a Linux» con sus aplicaciones no libres; hay grupos de usuarios de «Linux» que incluso invitan a comerciales para que presenten esas aplicaciones. El lugar principal donde los miembros de nuestra comunidad comparten un ideal de libertad y determinación es en el Proyecto GNU. Pero aun cuando la gente entienda esto, ¿les parecerá que tiene algo que ver con ellos? La gente que sepa que está usando un sistema que proviene del Proyecto GNU puede ver una relación directa entre ellos mismos y GNU. Eso no significa que estén automáticamente de acuerdo con nuestra filosofía, pero al menos tendrán una razón para pensar seriamente en ella. Por el contrario, los que se consideran a sí mismos «usuarios de Linux» y creen que el Proyecto GNU «desarrolló herramientas que demostraron ser útiles en Linux», generalmente sólo percibe una relación indirecta entre GNU y ellos mismos. Podrían ignorar la filosofía de GNU cuando se encuentren con ella. El proyecto GNU es idealista, y cualquiera que hoy promueva el idealismo se enfrenta con un gran obstáculo: la ideología imperante hoy día hace que la gente descarte el idealismo por «impráctico». Pero nuestro idealismo ha sido extremadamente práctico: es la razón por la que tenemos un sistema operativo GNU/Linux libre. La gente que ama este sistema debería saber que es nuestro idealismo hecho realidad. Si «el trabajo» realmente estuviera terminado, si lo único que estuviera en juego fuese nuestro reconocimiento, quizás lo más inteligente sería olvidarse de todo este asunto. Pero ese no es el caso. Para animar a otros a que hagan todo lo que aún necesita hacerse, es necesario que se nos reconozca nuestro trabajo. Por favor, ayúdenos a hacerlo llamando al sistema operativo GNU/Linux. P.S. Puede encontrar una explicación de la historia del sistema GNU/Linux y su relación con el tema del nombre en http://www.gnu.org/gnu/linux-and-gnu.es.html. También puede interesarle nuestra página de preguntas frecuentes sobre GNU/Linux.

Publicado en Principal | Deja un Comentario »

la licencia GPL de java vs ECMA de Mono y C#.

Publicado por jcrs en Noviembre 27, 2007

 colaboración (Abelardo Jara)

1.      Java vs C#: La licencia GPL vs los riesgos de ECMA en Mono y .NET

No soy un fanatico del software libre, aunque si me parece que es la opcion mas decente con respecto al sistema operativo. El sistema operativo y herramientas basicas de programacion DEBEN SER LIBRES. Otra cosa son los programas en si (alli en mi opinion si podriamos hacer negocio por propiedad intelectual). En ese sentido no estoy a favor de lo que dice Richard Stallman, el creador de las herramientas de programacion GNU GCC.Miguel de Icaza ha declarado reiteradamente que las patentes necesarias para la aplicación de las normas ECMA – 334 (C #) y ECMA – 335 (CLI) están disponibles en Microsoft “RAND + Royalty Free”. Esto pareceria un permiso efectivo de uso de la patente abierta de C#, y motivaria mas usar Mono. Pero perdonen, yo aun he visto una declaración oficial de Microsoft que este aceptando este royalty free.Incluso si aceptamos este RAND+Royalty Free para usar C#/CLI hay que tener un acuerdo de licencia con Microsoft. La razon por la cual Novell firmo el acuerdo de no demandas por violacion de patentes con Microsoft fue con el fin de no ganarse una demanda de Microsoft con respecto al C#/CLI. El mismo Miguel de Icaza (el creador y lider del proyecto Mono) dice que este acuerdo se extiende pero solo a los desarrolladores en plataformas Novell y clientes de Novell. Vease articulo (en ingles):http://en.wikipedia.org/wiki/Mono_(software)Siendo estrictos en terminos legales (por favor vean mi siguiente post) las empresas pueden usar C# y Mono solo si lo obtiene de Novell mediante Suse, pero no si lo obtiene o usa en Redhat, Ubuntu, (y distros que no hayan firmado este acuerdo con Microsoft) tiene la obligacion de tener un acuerdo de licencia con Microsoft. Y esto debido a que no existe ningun acuerdo de este tipo entre Microsoft y Ubuntu o Redhat. RAND + Royalty Free aun implica que las empresas que desarrollan distribuyen codigo en C# todavía tienen que obtener una licencia. Y una licencia puede estipular varias cosas (si queremos ser pesimistas, includo el escritorio Gnome si lo programaran en C#).Aqui hay un texto que copio de Wikipedia y que lo dice Richard Stallman (el creador del GCC)http://en.wikipedia.org/wiki/Mono_(software):“Mono is a free implementation of Microsoft’s language C#. Microsoft has declared itself our enemy and we know that Microsoft is getting patents on some features of C#. So I think it’s dangerous to use C#, and it may be dangerous to use Mono. There’s nothing wrong with Mono. Mono is a free implementation of a language that users use. It’s good to provide free implementations. We should have free implementations of every language. But, depending on it is dangerous, and we better not do that. Pero me ire mas al lado tecnico. C# es muy bueno y no hay duda, pero solo es una opcion para Windows. El .NET Framework de Microsoft es mejor diseñado que la maquina virtual de Java y corre mas rapido en Windows, tambien. Pero eso es a respecto de la maquina virtual.Pero de alli a hablar que .NET con Mono es multiplataforma es muy diferente. .NET no es multiplataforma, Mono trata de brindar esta capacidad, pero Mono es una implementacion de maquina virtual nueva compatible con .NET, pero no es .NET.La JVM es mas rapida en Linux y Windows que el Mono (lo afirmo por pruebas de performance y profiling en mis trabajos).A nivel aplicaciones empresariales de nivel profesional esta por este momento solo Java (el mas utilizado a nivel empresas para multiplataforma, su documentacion y comunidad de desarrolladores es enorme). Que institucion o empresa de prestigio dicta o usa C# con Gtk, lo mas usado es Java o .NET pero no Gtk#. Ni siquiera puedes poner eso en tu CV.Hablemos ahora del lenguaje y de los entornos de desarrollo: Java tiene una gran ventaja, los IDEs los tiene tanto en Windows y Linux y la calidad de ambos: Netbeans o Eclipse es muy alta. A la altura del Visual Studio. Monodevelop para desarrollar con Mono en Linux es por ahora y lo digo por experiencia (mis aplicaciones compiladas con Mono tienen cierres imprevistos, no corren como esperado en Windows, etc) es por ahora muy verde.Java tiene ahora una gran madurez de programar donde sea y ejecutar en donde sea. Por ejemplo, yo programo Java sobre Linux con Eclipse y Netbeans y la aplicacion funciona sobre Windows igual de bien. Adicionalmente mis herramientas de desarrollo trabajan como es exigido en un entorno profesional (sin cuelgues ni fallos inesperados). Y ademas dado que Java ahora integra una infinidad de tecnologias que ahorita son las mas fuertes de Internet(XML, RMI, Beans, SOA, etc) y todo desde el mismo lenguaje, pues es bastante comodo al momento de desarrollar.Mono es ademas aun una implementacion incompleta de la API .NET. Su grupo de desarrollo esta trabajando recien en la implementacion de la API .NET 2.0 (aun inconclusa), mientras en Visual Studio ya van por la API 3.0. Las principales funciones no implementadas completamente son las API de Windows Forms, ASP. NET y ADO. NET. Estos tres frameworks y es importante decirlo no estan dados a ECMA, por tanto Microsoft puede perfectamente demandar al proyecto Mono por violacion de patentes. Microsoft solo ha dado a ECMA C# y el CLI.Una alternativa a no usar la API de Windows Forms es usar una API libre desarrollada por el proyecto Mono llamada GTK# para hacer formularios. No existe un IDE visual aun comodo para programar diseñar formularios excepto el Glade (que no es comodo para muchos). Si nuestra decision nos impulsa a programar con Mono y GTK# (para no usar Windows Forms en la esperanza de libranos de los problemas de licencia con Microsoft) tenemos a disposicion dos IDEs: Sharpdevelop en Windows o Monodevelop en Linux. Sin embargo, ambos (sobre todo el Monodevelop) no estan a la altura ni cerca del Netbeans o Eclipse (ambos libres) o del Visual Studio, asi que si por madurez y si uno opta por una aplicacion profesional y no para experimentos, recomiendo Java. He probado Monodevelop en Ubuntu Gutsy (anda por la version 0.16) y es muyyy lento. Y su creador de interfaces GUI, Stetic tambien (recien anda por la version 0.1). El debugger tambien es muy malo aun. Asi que estamos hablando de herramientas muy inmaduras, no recomendables si estamos programando en entornos que requieren herramientas realmente profesionales.

Ventajas de Java
1. Para personas que se inician Java+Netbeans es directo para aprender (en universidades, institutos, etc). A ver si Mono+Gtk# lo es. O habra que ver si instituciones de entrenamiento con prestigio o empresas grandes se deciden a programar en Mono+Gtk# (algo experimental) en lugar de .NET+Windows Forms o Java+Swing? (lo harian?)
2. Hay montones (literalmente) de librerias de clases disponibles en Java. Muchas de ellas son open-source (parece que los fanaticos de Microsoft, decir open-source es como una vulgaridad).3. Java tiene un conjunto de APIs totalmente multiplataforma, incluso para GUIs, multimedia, graficos, 3D, voz, telefonia mobil, y todas las futuras APIs (muy faciles de usar) seguiran siendo multiplataforma (Windows, Linux, …) Mono no tiene estas APIs, asi que hablar de multiplataforma con Mono es inmaduro. Microsoft usara seguro Direct Sound en C# y eso no es ni a balas multiplataforma.4. Swing esta muy bien diseñada y usa los patrones de diseño MVC, en lo que se cae completamente Windows Forms.5. Java es mucho mas utilizado a nivel de estudiantes de postgrado con base solida en programacion orientada a objetos (OOP).6. Aunque no esta reconocida por un estandar internacional, Java es open-source controlado por por Sun y los miembros del JCP (los cuales son muchos, entre ellos Intel, Google, Samsung, Redhat, sino mira
http://jcp.org/en/home/index
). C# es un estandar tipo ECMA pero aparte de Microsoft pocas otras empresas han decidido implementarlo. Sun ademas segrega mucho menos que Microsoft con respecto a sus productos.
7. Otra cosa: el estandar C#/CLI ECMA solo es un subconjunto del framework .NET. Habra que ver si Microsoft decidira si enviara para estandarizacion las futuras APIs de .NET. (LO HARA?Huh?)Como nota final: miren nomas lo que dice Chris Williams, director de desarrollo de productos de Microsoft, que ellos aceptan la pirateria para motivar que la gente se familiarize con Microsoft y de alli al ocurrir eso pueden presionar con las leyes y obtener ganancias solo si ven que sera rentable (que tactica tan noble no?):

Publicado en Principal | 5 Comentarios »