Traducido de http://www.eleves.ens.fr:8080/home/madore/computers/antims.html; original por David Madore.
Esta página está diseñada para ser visualizada Microsoft Internet Exploder. Si lo estás viendo con otro navegador, ya estás en el Buen Camino hacia el Lado Libre de la Fuente, y no es necesario continuar :-)
La Encyclopędia Internetica define a una computadora como un aparato eléctrico diseñado para efectuar cálculos. La división de marketing de Microsoft Corporation define una computadora como "Tu Amigo Colorido Divertido Para Jugar".
La Hitch Hacker's Guide to the Internet define a la división de marketing de Microsoft Corporation como "una sarta de estúpidos descerebrados que serán los primeros en darse contra la pared cuando venga la revolución".
Curiosamente, una edición de la Encyclopędia Internetica que tuvo la buena fortuna de caer a través de una alteración temporal desde mil años en el futuro definió a la división de marketing de Microsoft Corporation como "una sarta de estúpidos descerebrados que fueron los primeros en darse contra la pared cuando vino la revolución".
El propósito de esta página es describir algunas de las razones por las cuales no me gusta Microsoft, y en particular Microsoft Windows - y por qué creo que Microsoft representa un peligro para el mundo de la computación y quizá para todo el mundo. En ninguna de las razones aquí expuestas Microsoft es realmente único: es la combinación de todos estos factores los que hacen a Microsoft único y únicamente peligroso.
Nótese por favor que las opiniones aquí expresadas son mías, y aunque creo que ellas (al menos en parte) son compartidas por muchos, no puedo hablar por nadie salvo por mí. Nótese también que nadie debería leer esta página si no cree ser capaz de insertar los smileys faltantes.
No prestendo ofender personalmente a nadie, ni siquiera al Presidente de Microsoft. A menudo me he preguntado cuál es la verdad respecto de los directivos y pensadores de Microsoft. O bien realmente creen que trabajan para el Bien, y que Windows es el mejor sistema operativo posible para PC's - en cuyo caso mi humilde opinión es que están profundamente equivocados. O simplemente buscan dinero - pero incluso en ese caso tendríamos que tenerles lástima más que culparlos.
Desearía expresar particular gratitud a Péter Horvai por leer esta página muy cuidadosamente, por señalar muchos errores y cosas inadecuadas, y por jugar al abogado del Diablo. Me ha señalado que alterarse no es provechoso y que debería abstenerme de hacer afirmaciones fuertes - lo he intentado pero no siempre con el éxito que habría deseado. También querría agradecer a Roberto DiCosmo por escribir un maravilloso pequeño panfleto (en francés) acerca de los peligros de Microsoft.
Copyright (c) 1998 by David A. Madore.
Cualquiera puede distribuir copias literales de este documento por cualquier medio, siempre que se mantenga intacta la marca de copyright y la referencia a la versión original:
http://www.eleves.ens.fr:8080/home/madore/computers/antims.html
Cualquiera puede distribuir versiones editadas o modificadas siempre que las modificaciones se marquen claramente como tales y que no den lugar a riesgos de malinterpretación de los contenidos y objetivos de este documento, y siempre que se provea una copia literal del documento, o la referencia a la versión original.
Aquí hay un resumen de esta página, consistente en links a los argumentos apropiados detallados:
En primer lugar, me opongo a los principios del software propietario, y Microsoft es el epitomo del software propietario puesto que no sólo editan dicho software, sino que no reconocen la existencia de ningún otro tipo.
Además, Microsoft escribe software lleno de terribles bugs, porque les importa más vender nuevas características [features] en lugar de corregir defectos.
El principio de estas interfaces de usuario gráficas, "fáciles de usar", "intuitivas" es falaz, y sólo sirve para hacer menos poderosas a las computadoras - y dañar cerebros. Microsoft quiere que volvamos al tiempo de los jeroglíficos.
Finalmente, independientemente de lo que venden, la estrategia comercial de Microsoft y tratos con otras compañías son peligrosos, ciertamente inmorales y posiblemente ilegales.
Por eso, creo que Microsoft podría realmente representar un peligro para el futuro.
Finalmente, he añadido una colección de links relacionados al final.
En esta sección, Microsoft no será el único Gran Satán(tm), sólo uno de los villanos; quizá el peor (el más lejano tanto para considerar hacer libre algo que ellos hacen como para tener algo que ver, ya sea trabajar, tratar, cooperar o incluso mencionar al software libre), ciertamente el más exitoso, pero no el único. De todas maneras, debía incluir esta parte por completitud.
La posibilidad de aplicar un copyright al software ha estado rondando por algún tiempo, y la idea ahora parece "natural" u "obvia" para mucha gente. No lo es. De hecho, es una idea perversa. El sistema de copyright está destinado para proteger obras de arte: literatura, música, las bellas artes. Para ese tipo de trabajo, tiene sentido la protección por unos cincuenta o setenta (en el caso de la música) años después de la muerte del autor, y entonces pasar a formar parte del dominio público, porque una obra de arte dura para siempre. No está claro cómo esta regla se aplica al software, donde el copyright es generalmente de la empresa - pero lo cierto es que el copyright sobre un programa durará esencialmente para siempre (puesto que nuevas versiones continuamente renuevan el copyright). Pero el sistema de copyright fue hecho para proteger los derechos del autor de la obra, no a su empleador, y la cláusula intolerable que expresa que los derechos sobre el software escritos por un empleado serán propiedad del empleador muestra que esto es una perversión del sistema, no su uso normal. En el caso de los libros, el copyright es del autor, no del editor.
Las patentes son otra forma de malignidad que satura el mundo de la computación. Quizá son menos perversas que la forma de restricción del copyright (uso este término donde otros hablarían de "protección" - una forma interesante de propaganda) en el sentido que no duran tanto, pero como un todo son probablemente más peligrosas, primero porque no se aplican a programas sino a algoritmos. Hoy un algoritmo es sólo una entidad matemática (de hecho, hay una asociación importante entre algoritmos y demostraciones matemáticas, el isomorfismo Curry-Howard, que expresa que ambos son en efecto lo mismo, flechas en una categoría de tipos) y no se debería permitir poner ninguna clase de restricción sobre las ideas matemáticas. Segundo, mientras que a favor del copyright puede decirse que es fácil de aplicar (cualquiera que escribe algo se convierte ipso facto en el dueño del copyright), el sistema de patentes es horriblemente complicado. Es muy difícil y caro archivar una patente, de modo que en la práctica sólo grandes compañías pueden hacerlo (una de las formas de plutocracia más abominables); peor que esto, es incluso difícil y caro averiguar si algo está patentado. Por eso el sistema de patentes es la pesadilla del programador amateur - no tiene forma de saber de dónde vendrá el problema. Todos los editores de software han archivado numerosas patentes de software sobre las cosas más triviales y están así contribuyendo a hacer de la programación una tarea difícil y peligrosa.
Otra perversidad con el software propietario es que las fuentes no se entregan. En otras palabras, los editores de software no sólo engañaron a los legisladores al "proteger" su trabajo sino que ni siquiera confían en esta protección y toman sus propias medidas para hacerlo, distribuyendo únicamente el software compilado. Como una medida de "seguridad" extra, también prohiben legalmente la "ingeniería reversa", esto es, volver a transformar la forma compilada en fuente. Esto es muy molesto, y por varias razones. Por un lado, si se encuentra un bug en el software, el cliente no sólo no tiene protección legal (la cláusula de "sin garantía"), ni posibilidad de demandar (justamente) a la compañía por el bug o sus consecuencias, sino que tampoco tiene la posibilidad de reparar el bug por sí mismo, incluso si hubiera tenido la capacidad técnica de hacerlo; todo lo que puede hacer es esperar a que salga la siguiente versión y pagar por ella de nuevo. De forma similar, si uno está mayormente satisfecho con un programa salvo por algún detalle pequeño que uno querría ver distinto, uno puede bien vivir con ello, ¡o bien escribir un nuevo programa completo de la nada! De hecho, en general, mantener en secreto las fuentes es una pérdida total de tiempo y eficiencia, porque significa que todo programa debe ser escrito de la nada. Esencialmente, equivale a vender máquinas con un gran candado en torno a la parte central, para que no se pueda ver lo que hay adentro - y también una orden legal para que nadie pueda abrir el candado; la máquina es de uno, pero no se puede hacer lo que uno quiera con ella.
El SO, la biblioteca dinámica central y los compiladores del sistema son partes vitales de éste y, definitivamente, no deberían ser propietarios. Usar Windows en un sistema significa que uno confía absolutamente todos los datos a Microsoft. Pueden borrarlo, o mandarlo a sus servidores a través de la red, y uno no tiene forma de verificar que no lo harán. Si lo hacen, no se los puede demandar, incluso si se puede probar que lo hicieron intencionalmente (pero es imposible, porque eso implicaría ingeniería reversa del sistema, que no está permitida). (Por supuesto, en el caso del Software Libre tampoco se obtiene garantía (alguien tuvo la voluntad de escribirlo libre, así que no se lo puede reprochar) pero al menos se obtiene la fuente - y también, si se encuentra alguna parte sospechosa, lo más probable es que alguien la corrija).
¿Cuál es la alternativa? Por supuesto, el software libre. Actualmente, el software libre se escribe casi exclusivamente por amateurs, y no es sólo moralmente mejor, sino también técnicamente mejor que el software propietario escrito - pero esto está más allá del punto aquí. Una cuestión interesante que se ha planteado es si el software libre es viable económicamente. En otras palabras, ¿qué ocurre con la industria de software si los usuarios de software finalmente se dan cuenta de que los tratan de tontos cuando compran software propietario (o si las leyes de copyright sobre el software se anulan repentinamente, evento improbable)? ¿Se puede hacer dinero vendiendo software libre (cuando el mismo software puede obtenerse gratuitamente)? ¿Dónde puede encontrar el software libre fondos para financiarse? Lo que yo creo es que es posible tener una economía de software basada en el software libre. Actualmente, ya las hay (por ejemplo RedHat, la distribución de Linux); pero esto no es prueba de nada por supuesto.
Me dijeron que los costos de desarrollo son tan inmensos que nadie podría costear el desarrollo de un programa si no estuviera seguro de que puede hacer dinero con ello - pero dicho argumento no es muy correcto. Primero, el uso generalizado de software libre disminuiría en gran medida a los costos de desarrollo dado que todo puede ser reutilizado de manera eficiente. Segundo, hay muchos amateurs deseosos de hacer mucho trabajo por nada y este ha sido el mayor motor del desarrollo de software libre hasta hoy. Tercero, hay dominios de investigación que producen incluso menos dinero que el software libre, por ejemplo la matemática, y la matemática obtiene su dinero de algún lugar, ¿no? Finalmente, puede adivinarse que mucha gente todavía querría comprar el software a quienes lo escribieron, incluso si puede ser obtenido gratis en algún otro lado, ya sea porque quieren sustentar a los autores, o porque de esa manera se aseguran de obtener software de buena calidad y probablemente el mejor soporte técnico (o al menos, eso creerá la gente, y eso es lo que cuenta). Se debe recordar también que mucho software está destinado a satisfacer cierta necesidad muy especial que probablemente ocurra una única vez; un cliente con tal necesidad todavía necesitaría pagar a un editor de software para desarrollar el programa, y si el programa se hace libre o no después de ello no tiene impacto directo en el análisis económico de dicha situación.
Cierto, en un mundo de software libre, circularía mucho menos dinero en la industria de software, y quizá también menos puestos de trabajo. Pero lo que hacemos ahora equivale a "romper vidrio para dar trabajo a los vidrieros" (¿romper ventanas [windows], quizá?), esto es, gastar gran cantidad de dinero y energía en una industria que mantiene su subproductividad artificialmente con el objeto de hacer más dinero. Esto generalmente no se considera una buena manera de crear puestos de trabajo. Además, quienes estén dispuestos a regalar dinero de esa manera probablemente también estarían dispuestos a comprar software libre (y muchos otros, también).
Habiendo discutido las objeciones generales contra el software propietario, me vuelvo específicamente hacia Microsoft Windows para discutir algunas de sus deficiencias.
Esto no es una sorpresa: Windows, y especialmente Windows 98, contiene muchos bugs. Adivino que ya todos saben eso. Lo triste es que algunos probablemente creen que la forma normal en que un SO se comporta es colgarse tan pronto como uno intenta correr tres o cuatro programas diferentes al mismo tiempo. Esta gente obviamente no escuchó hablar de GNU/Linux. Cualquier SO decente, sea libre como BSD o GNU/Linux, o propietario como Solaris, AIX, OS/S, o incluso OS/2, es capaz de hacer multitarea a pleno sin peligro de comprometer la estabilidad del sistema. De hecho, he conocido gente que tenía sentimientos de culpa cuando sus intentos por correr tres programas simultáneos bajo Windows resultaba en colgar el sistema - ¡como si ellos hubieran sobrecargado la computadora!.
Ahora concentrémonos en la razón de estos bugs. Probablemente, los programadores de Microsoft no sean idiotas. Pero les fue dada una tarea casi imposible: mantener la retrocompatibilidad. Es increíble cuán seguido este error se ha hecho en la historia de la computación, ya sea a nivel de hardware (los últimos chips Intel de 64 bits son casi descendientes directos de un chip de 4 bits, el 4004, un controlador de pantalla) o a nivel de software. Sí, Unix podrá estar en el proceso de cometer el mismo error, pero Unix era un SO tolerablemente bueno, por comenzar, mientras la cosa con la cual Windows está finalmente tratando de ser compatible, es con DOS, el Dirty Operative System (eso significa). Y un SO que trata de ser compatible con un SO sucio (incluso indirectamente) necesariamente contendrá muchos bugs. Además, hay muchas formas de ser compatible, digamos, ser compatible desde las fuentes o desde los binarios. Tratar de mantener la compatibilidad desde los binarios a toda costa es la peor política posible - pero por supuesto, en un mundo de software no libre no se tiene acceso a las fuentes, por lo cual hay que quedarse con aquello...
Realmente, un mucho mejor sistema, también escrito por Microsoft, era OS/2, que no tenía muchas de las deficiencias centrales de Windows (aunque no era tan bueno como Unix). Fue una falla comercial, pero Microsoft debería haberlo mantenido, descontinuando Windows: a corto plazo habría sido malo, pero más tarde todos se habrían cambiado (porque los programas tienen que ser reescritos y adaptados todo el tiempo, pese a todo) y habrían estado (esto es, los usuarios habrían estado) en una posición mucho mejor ahora.
Pese a todas estas dificultades, probablemente sería posible estabilizar Windows de alguna manera. Esta es una operación difícil, sin embargo, y requeriría muchos meses, si no años, de trabajo a tiempo completo. Evidentemente, esto no sería productivo en cuanto a lo que a Microsoft concierne: no le interesa corregir errores (de los cuales en ciertos casos dependen algunos programas) sino en agregar tantas nuevas características como sea posible.
Creo que ahora nadie en Microsoft entiende cómo funciona el núcleo de Windows; y ciertamente nadie tiene un panorama claro, global de él. Esto significa que los desarrolladores continúan agregando capa tras capa sobre bases tambaleantes, que no comprenden. Esto hace a la estructura enorme, ineficiente y altamente inestable.
La seguridad sobre Windows 98 es una farsa. Cualquier programa puede hacer desastres en el sistema en cualquier momento. O borrar los contenidos completos del disco rígido. O hacer alguna broma similar que era posible bajo DOS y que hoy debería pertenecer al pasado olvidado. Bajo Windows NT la situación es algo mejor, pero está todavía lejos de ser tan buena como en Unix. Y ahora, recordemos que el mismo Unix (opuesto a Multics) no fue desarrollado pensando en seguridad...
Sólo por mencionar algunas de las características esenciales que en gran parte Unix ha tenido desde hace largo, largo tiempo, y que Windows todavía no tiene o está comenzando a descubrir:
Manejo remoto, o la posibilidad de hacer todo a través de una red. El administrador del sistema en una red Unix raramente debe abandonar su oficina para ver las máquinas.
Un sistema de archivos que practicamente no incurre en fragmentación alguna (oh, cuán ingenioso por parte de Microsoft el haber hecho que DeFrag suene como un bonus cuando es realmente un signo de debilidad).
Capacidades de routing plenas, incluyendo soporte de firewalls configurables, masquerading, policy routing, path discovery, syncookies, vuelco tcp de bajo nivel, nfs, y demás... ¡además de muchos lindos servidores, por supuesto!
Administración y manejo de cuentas del sistema flexibles y poderosos: quotas, limits, syslog, estadísticas y cuenta de procesos, prioridades modificables de procesos (y procesos en tiempo real), y demás.
Symlinks - escuché que los incluirán en la siguiente versión de NT. Unix los ha tenido por bastante tiempo ya (estoy seguro de que 4.2BSD los tenía, y eso fue hace tiempo).
La única versión de Windows que puede ser comparada con Unix es NT. Cuesta menos que un Unix comercial, pero también es mucho menos poderoso - y recordemos que Linux es gratuito y al menos tan poderoso como cualquier Unix comercial. Ahora, el precio no es lo único con lo cual pagamos el rendimiento: también lo pagamos con el espacio de disco utilizado, memoria utilizada por el núcleo, y syscall overhead. Al menos en lo que concierne a las primeras dos, NT es simplemente indecente. Me gustaría recordarle a ciertas personas que una 486DX33 con 16Mb RAM y 80Mb de disco es una computadora poderosa pese a lo que se crea. Al menos, servirá como un router decente. Ahora, inténtese bajo un SO de Microsoft. Lo he hecho bajo Linux.
Una de las cosas de las cuales Linux está orgulloso es de estar conforme a POSIX. Y esto es algo de lo cual enorgullecerse, para un SO libre, puesto que la norma POSIX no es libre. Windows NT (no los otros) también es supuestamente conforme a POSIX, pero parece tener una interpretación bastante peculiar del estándar POSIX... lo mismo ocurre con otros tipos de estándares y protocolos. El Internet Exploder (que, recuérdese, según las propias afirmaciones de Microsoft al Departamento de Justicia estadounidense, es parte del SO) tiene su propia versión no muy estándar de HTML.
Considerando todas estas fallas, es una pregunta interesante por qué la gente realmente usa Windows. Hay muchas explicaciones posibles. (A) Mucha gente no sabe que hay algo más allá de eso: han asociado completamente el nombre PC con el nombre "Windows", y los tratan como equivalentes. (B) Algunos han escuchado acerca de GNU/Linux (o *BSD, o cualquier otro SO), pero no lo quieren usar porque de alguna manera creen que es sólo para especialistas, hackers y científicos de la computación. (C) Algunos otros más saben sobre Linux, pero su software favorito no corre sobre él. Y (D) algunos son simplemente perezosos.
Esto es principalmente mucho de efecto inercial. Se escribe software para Windows porque la gente usa Windows, y la gente usa Windows porque el software se escribe para Windows, y también porque su PC vino con Windows instalado, y eso es porque la gente usa Windows. Y así. Es un círculo vicioso, que ni Microsoft ni nadie realmente controla. La inercia, sin embargo, funciona en ambos sentidos, y ahora el círculo está dando signos de desaceleración. El efecto (A) se está debilitando porque los medios e internet hablan cada vez más de Linux. El efecto (B) se está debilitando gracias al esfuerzo de mucha gente, incluyendo RedHat software, y los equipos KDE y Gnome. El efecto (C) se está debilitando gracias al esfuerzo de los grupos Wine y Dosemu, y también porque los editores de software comercial están comenzando a considerar otras plataformas además de Windows. El efecto (D), por supuesto, improbablemente cese en un futuro cercano, pero sus efectos podrán ser aliviados si las computadoras se empiezan a vender con un sistema operativo distinto a Windows instalado.
Por favor, recuérdese que no tengo Microsoft Windows (ciertamente no voy a pagar por él, y de todas maneras no tengo espacio en mi disco para esa vasta cantidad de basura inútil), por lo que no puedo estar tan seguro de sus capacidades exactas. Estoy muy seguro de lo que he mencionado arriba; mi información viene de lo que la gente me contó y de lo que ví en las computadoras de otras (desafortunadas) personas. Puede que esté, por supuesto, haciendo alguna injusticia con Microsoft: si ese es el caso, por favor díganme (porque no quiero estar cometiendo una injusticia ni siquiera a Microsoft) pero por supuesto necesito los detalles exactos, no sólo "estoy segurísimo de que NT es bueno para redes". Más probablemente, no hablé acerca de todas las características que le faltan a Windows, así que por favor cuéntenme de ellas, también.
Igualmente, mi mayor objeción ténica a Windows es la que describo en la siguiente sección.
Distingamos claramente tres cosas: el núcleo (esto es, el sistema operativo en sí mismo), la interfaz gráfica y la interfaz de usuario (gráfica). El núcleo no tiene nada que ver con los gráficos, ni con el usuario de ninguna manera: tiene que ver con el trato con periféricos (por lo cual puede realizar una interacción mínima con la tarjeta de video, pero definitivamente nada tan complicado como Windows), administrando recursos del sistema entre los varios procesos, manteniendo la seguridad del sistema, y tales cosas. El núcleo debería ser pequeño y muy robusto - por un lado porque es difícil de reemplazar. La interfaz gráfica realiza la comunicación entre los programas y el hardware de gráficos (quizá manejado por el núcleo, o quizá directamente por el bus); todavía no tiene que ver con el usuario, salvo al recibir eventos de entrada (presiones de teclas, movimientos del mouse y botones) y mandarlos a los programas respectivos, llamados "clientes". La interfaz de usuario podría ser un simple ingreso de texto, pero en el caso que estamos discutiendo hablamos de interfaces gráficas, también llamados manejadores de ventanas: el papel de la interfaz gráfica de usuario es interpretar ciertos tipos de eventos de entrada (envíados por la interfaz gráfica) y correspondientemente cambiar la disposición de la pantalla. Nótese que no estoy hablando de lo que sería el "widget toolkit" bajo X: reside al mismo nivel que el manejador de ventanas pero es diferente.
Ahora ¿eso suena confuso? Si es así, entonces uno está probablemente muy acostumbrado a usar Windows. Si uno está acostumbrado a usar Unix, no hay dificultad: el núcleo es Unix mismo, la interfaz gráfica el servidor X, y la interfaz gráfica de usuario es Tu Manejador de Ventanas Favorito. La mejor prueba de que son muy diferentes es que pueden correrse en varias máquinas distintas (el servidor X en una terminal, el manejador de ventanas en una máquina, que obviamente también tiene un núcleo, pero quizá no la misma máquina en la cual corren las aplicaciones, cuyo núcleo es el que verdaderamente cuenta).
Ahora, ¿por qué estas tres cosas deberían ser necesariamente diferentes? Bueno, ya he explicado por qué el núcleo no debería tener nada que ver con los gráficos, para separar el núcleo de las otras dos. En cuanto a la interfaz gráfica y la interfaz de usuario, la razón es simple: la elección de una interfaz gráfica particular depende del hardware (o quizá no depende de nada, si viene con varios drivers), mientras la elección de una interfaz de usuario particular depende de los gustos de cada uno. Los gustos generalmente no dependen del hardware o el sistema operativo particular que se utilice, y uno debería poder ver la misma disposición de pantalla en cualquier lado. Ergo, las tres deberían estar bien separadas.
Aunque ha sido duramente criticado, el sistema X Windows queda en mi modesta opinión como la única interfaz gráfica satisfactoria. Pero no es una interfaz de usuario por lo cual no debería ser comparado con lo que no es comparable. La interfaz de usuario bajo X Windows es el manejador de ventanas, que podría ser muchas cosas, t(v)wm, f(v)wm, ol(v)wm, m(v)wm, o cosas más refinadas como kde o enlightenment. X Windows es totalmente capaz de reproducir precisamente la interfaz gráfica de usuario de Windows. Sin embargo, y este es el punto importante, ésta no es la única interfaz de usuario posible. Además, dado que cada interfaz de usuario es en gran medida configurable, X Windows puede verse como cualquier cosa y no tiene un aspecto estándar - y por eso X Windows es una interfaz gráfica y no de usuario. Por supuesto, si a uno no le gusta la configurabilidad puede elegir, bajo X, una interfaz de usuario que no tenga tantas opciones de configuración.
En cambio, bajo Windows, uno está atrapado en una interfaz de usuario particular. Debo admitir que es bastante linda pero uno puede tener gustos diferentes - ¡no se permite uno sólo! (Por ejemplo, una característica esencial que seriamente me falta es un escritorio virtual). Lo que es peor, la mayor confusión se ha establecido entre el núcleo, la interfaz gráfica y la interfaz de usuario. Uno no está habilitado a tener el núcleo de Windows sin la interfaz gráfica y la interfaz de usuario (lo cual podría ser útil para correr ciertos programas). O tener la interfaz de usuario sin el resto (realmente, se puede, se llama kde, es libre, no tiene nada que ver con Microsoft, y corre bajo GNU/Linux :-).
Ahora la presente discusión no es específicamente contra Windows, aunque Windows es uno de los objetivos principales. Realmente, el objetivo primario aquí es MacOS.
Entonces, ¿qué estoy comparando? Bueno, por una parte, una interfaz de usuario gráfica donde uno simplemente hace click en un disco para ver sus contenidos y, por otra, una interfaz de usuario basada en texto con una línea de comandos, donde uno tiene que tipear algo como "ls" para conseguir el mismo efecto. Una interfaz gráfica es fácil e intuitiva: un chico de tres años generalmente entenderá inmediatamente qué tiene que hacer para conseguir el efecto deseado. Por otra parte, acostumbrarse a una interfaz basada en texto toma cierto tiempo, y también requiere una mínima cantidad de inteligencia (algo que la humanidad se precia de tener).
¿Ahora cuál es el problema? Si una interfaz gráfica es tan fácil e intuitiva, ¿qué tiene de malo? Es simple, realmente: aunque uno entenderá inmediatamente cómo hacer algo que puede hacer, por otro lado hay cosas, y de hecho muchas cosas, que uno no puede hacer con una interfaz gráfica. Sería posible, imagino, con suficiente perversidad, diseñar una interfaz gráfica que tenga poder Turing, pero no es de lo que hablo. El punto es que los lenguajes de programación son siempre orientados a texto (excepto seudo-lenguajes ridículos y degenerados) y por una buena razón. Y una interfaz gráfica de usuario simplemente no tiene poder Turing, mientras una buena interfaz basada en texto, sí. Puedo escribir unas pocas líneas en un shell Unix para que imprima el primer número primo y los invito a hacer lo mismo con la supuestamente tan maravillosa interfaz gráfica de Windows. (Por supuesto, Unix tiene una interfaz de usuario gráfica, pero no hay historia ahí: uno puede abrir una ventana y, voilà, ¡una interfaz de texto!).
Pero, uno puede argumentar, ¿a quién le importa el poder Turing? Uno no quiere calcular primos en la línea de comandos. De acuerdo, pero hay muchas cosas no necesariamente relacionadas con el poder Turing, que uno no puede hacer con una interfaz gráfica y que he necesitado hacer al menos una vez:
Escribir un email automático a algún amigo en su cumpleaños, donde el email diga: "Hola, querido X, ¡feliz enésimo cumpleaños! (Oh no, lo olvidé, este email se manda automáticamente)."
En todos los archivos .html de un directorio y todos los subdirectorios, reemplazar todas las ocurrencias de ``<a href="http://algun.sitio/'' simplemente por ``<a href="file://algun/directorio/'' (para que los links se hagan locales y pueda mirar los archivos en la computadora de mi casa sin estar conectado a la red).
De una lista muy larga de archivos cuyos nombres son arch1.ext, arch2.ext y así hasta el arch1729.ext, agregar ceros en el número para que los archivos se llamen arch0001.ext, etc.
Dado un log de apache de accesos a mis varias páginas web, generar un resumen de listas de todos los hosts que se conectan, y el número de conexiones de cada uno, clasificadas de acuerdo al número de conexiones. O hacer lo mismo para archivos en un sitio en lugar de para hosts que se conectan (por supuesto, el resumen debería reagrupar la versión .dvi y .ps.gz de un documento).
Dado el listado de archivos, con el tamaño de cada uno, en unas dos docenas de CD-ROMs, calcular la cantidad total de datos.
Hacer TeX sobre un archivo, producir versiones .dvi y .ps.gz, y mandarlas al directorio que contiene mi sitio www, que está en otra computadora, respetando la estructura original de los directorios. Después borrar los archivos .log, .dvi y .ps.gz producidos.
Para cada uno de los usuarios del sistema, comprobar si un archivo está presente en su directorio personal y, si lo está, si su nombre aparece en ese archivo; y crear una lista de usuarios que tienen el archivo pero cuyo nombre no aparece en él.
Contar el número total de líneas, palabras y caracteres de todos los archivos que terminen en .c o en .h en un cierto directorio y todos sus subdirectorios.
Crear un archivo de un disco rígido completo y en lugar de guardar el archivo en algún lugar (porque el disco no tiene suficiente espacio para contenerlo) mandarlo a través de un socket TCP a otra computadora que lo guardará en un archivo.
Mandar una emisión de ping en una red local, obtener las direcciones IP de las respuestas y hacer una búsqueda de DNS inverso en cada una de ellas.
He hecho todas estas cosas con el shell de Unix, sin escribir una línea de C, gracias a las muchas pequeñas utilidades que vienen con Unix y que nadie ha creído necesario agregar a Windows.
¿Estoy sugiriendo que el usuario promedio, digamos la madre de cualquiera, debería aprender las complejidades de la línea de comandos? ¡Sí! En primer lugar, la madre de cualquiera no es más estúpida que cualquiera, y no creo en las habilidades naturales. El problema es esencialmente que la gente que diseña interfaces gráficas nos han hecho creer que esta es la forma "correcta" de usar una computadora. Pero esto es simplemente falso. En primer lugar, contrariamente a una idea absurda, los humanos deben aprender el lenguaje de la computadora y no al revés (e incluso si así fuese, nuestro lenguaje no es gráfico). Esta idea de comunicarse con imágenes es intelectualmente dañina. Hace varios miles de años, el hombre dejó de gruñir y empezó a hablar: fue intelectualmente difícil e incluso los conceptos más importantes como "tengo hambre" o "no me agradás" podía ser expresado satisfactoriamente mediante sonidos, fue un gran paso adelante y todos están de acuerdo en eso. Hace sorprendentemente poco, casi todos aprendieron a escribir - incluso aunque un poco antes se consideraba que escribir era una tarea compleja, mejor destinada a los que tenían el conocimiento (y/o el poder y el dinero). Pero leer y escribir son tareas complejas: para muchos propósitos, las imágenes podrían haber sido suficientes (y de hecho lo fueron por largo tiempo, cuando una posada se señalaba por la imagen de una jarra de cerveza). Pese a todo, casi todos aprendieron a leer y escribir. Ahora los editores de software nos hacen creer que no todos deberían aprender a programar, que el conocimiento de cómo operan las computadoras se debe dejar en las manos de Aquellos Que Tienen el Conocimiento Secreto de la Fuente Oculta - que todo lo que ustedes pueden hacer es hacer click en www.microsoft.com. Este es el equivalente en computación a publicar libros con dibujitos porque La Gente es Muy Estúpida Para Leer. O quizá incluso de volver a los gruñidos. Entonces, sí, propongo que incluso la madre de cualquiera debería aprender a programar y usar el shell (¿aprendió a leer, no?). Ahora si los gobiernos pudieran ¡por favor dejar de confiar la educación de nuestros hijos a gente como Microsoft que activamente intentan hacerles creer que son estúpidos! Además, recordemos, las personas son ingenuas pero no son estúpidas; entonces tratar de escribir un sistema operativo a prueba de ingenuos prueba que uno es un ingenuo, mientras escribir un sistema operativo que requiere cierta inteligencia de parte del usuario es la forma inteligente de actuar.
Resumiendo, las interfaces de usuario gráficas son una cosa buena siempre que uno no sea prisionero de ellas. Son útiles cuando se destinan a proveer varias terminales simultáneas - o para ver imágenes - o si uno tiene dos años - o si uno tiene tres brazos y usar el mouse no disminuirá la velocidad de tipeo - o cuando son las 3AM y uno está muy cansado para recordar si la opción correcta para cp es -r o -R - o si el teclado está roto - o si uno es simplemente un vago. Pero nunca serán sustitutos de la línea de comandos.
Una interfaz de usuario gráfica ideal hará sólo cosas que también puedan ser hechas con el teclado, tipeando los comandos apropiados. De hecho, hará algo mejor que eso: imprimirá qué comandos está haciendo, para que el usuario pueda aprender a tipear comandos usando la interfaz gráfica.
De acuerdo a lo que dije hasta ahora, la respuesta es simple: no usar software de Microsoft. De hecho, esto es exactamente lo que hago, y estoy orgulloso de anunciar que mi computadora está libre de Microsoft. Pero Microsoft tiene el absoluto derecho de escribir software sin valor y venderlo por una fortuna. Si la gente es lo suficientemente ingenua para comprarlo, es malo para ellos y bueno para Microsoft. Ahora, ya no estoy de acuerdo cuando Microsoft usa la ingenuidad de algunas personas o su ignorancia y su propio monopolio para imponer su software a otras personas.
Tomemos el ejemplo de minoristas de hardware: lo que Microsoft hace es imponer esta condición de todo o nada, esto es, o Windows debe venir con todas y cada una de las computadoras que vende, o con ninguna. En consecuencia la gente (como yo) que no quiere Windows en su máquina debe pagar por él de todas formas. Me han dicho que la Unión Europea ha encontrado ilegal a esta práctica.
Una situación similar, por la cual Microsoft está siendo demandado por el Departamento de Justicia estadounidense, concierne su producto "mascota", el Internet Exploder. Microsoft abusivamente usa su monopolio como editor de SO para favorecer su posición como editor de navegadores. Esto ha significado la caída de Netscape - aunque con la consecuencia no prevista de que Mozilla se haya hecho software libre.
Esto funciona al revés, también: Microsoft usa su posición dominante en el mercado de navegadores para favorecer su posición en el mercado de SO. Con esto quiero decir que Microsoft no lanza una versión de Internet Exploder para GNU/Linux. (Por supuesto, a nadie le importa una m... - e incluso eso no es seguro, después de todo, es posible que a uno le guste el IE y no Windows 98, ¿no? - pero estoy hablando de principios). Pero esto es parte de una estrategia más general de ignorar sistemáticamente la misma existencia de Linux. Por eso Microsoft incluso expresará algunas medio-mentiras como decir que los efectos especiales de la película "Titanic" fueron producidos bajo NT - la verdad es que algunas computadoras corrían NT, pero la mayoría corría RedHat GNU/Linux. Sospecho - pero no lo puedo probar - que las decisiones hechas por un gran número de compañías de no publicar versiones de su software para Linux no es tanto porque poca gente use Linux (después de todo, adaptar software es una tarea comparativamente fácil, así que incluso para un reducido número de clientes vale el esfuerzo) sino por temor a la ira de Microsoft. Y de hecho, Microsoft debería temer a editores publicando versiones de su software para Linux porque, dado el caso, desaparecería la última razón válida que alguno podría tener para usar Windows. Si Microsoft ha puesto presión en otros editores de software para no soportar Linux, es una falta ética muy seria de su parte.
Más seriamente todavía, Microsoft también está presionando a los gobiernos del mundo (y especialmente a los europeos) para que favorezcan el uso de software de Microsoft para el uso en sus sistemas educacionales y administrativos. Eso también es muy serio; las proposiciones no son muy honestas porque los gobiernos están obligados a aceptar la oferta inmediatamente o, de lo contrario, nunca.
Peor incluso es la forma en la cual los usuarios son rehenes de los productos de Microsoft. Si considero molesto que el software sea propietario, encuentro altamente inmoral que los formatos de datos lo sean. Un documento escrito en M$Word es propiedad del autor, no de Microsoft. Pero en la práctica, dado que el formato es propietario, el autor puede leer su documento sólo con herramientas de Microsoft. ¡De modo que cambiarse a otro editor podría significar la pérdida de todos los datos! (En realidad, esto probablemente no es así, porque el formato del documento es realmente fácil de decodificar, pero podría volverse más difícil algún día, así que escuchen mis advertencias. Además, es la intención, no el hecho, lo que cuenta). Esta es una manera de mantener a los clientes, y no puedo encontrar nada más vil.
Bill Gates es el Rockefeller moderno. Como hizo el primer Rockefeller, Microsoft usa su peso económico para eliminar a su competencia. En el poker, un jugador que es miles de veces más rico que los otros está seguro de ganar si deja que las apuestas suban más allá de lo que los otros pueden alcanzar - y esto incluso si sus cartas no son muy buenas. Esta es la estrategia que Microsoft usa en el mercado de las computadoras. Más que desarrollar buenos productos, prefieren vender software mediocre con pérdida, arruinando a los competidores y configurando un monopolio efectivo. Cuando se hace esto, pueden obtener su dinero de vuelta aumentando los precios nuevamente.
Esto ha llegado tan lejos que hay muchos territorios en los cuales otros editores de software no se aventurarán - saben que si lo hacen, serán aplastados o comprados por Microsoft. Cualquiera puede imaginar las consecuencias en la habilidad de la industria de software para innovar.
El software libre está, desde luego, menos directamente amenazado por esta clase de acciones agresivas que el software propietario - pero también puede peligrar, porque después de todo el software libre puede ser comercial.
No quiero explayarme demasiado en este punto. Sólo unas frases para completar. Microsoft es muy inteligente y extremadamente inmoral en el trato de sus empleados. Están muy bien pagos y bien tratados (bebidas gratis, ventajas para hobbies, etc.). Pero la presión intelectual es verdaderamente formidable. Se les da objetivos que están siempre sutilmente por arriba de lo que pueden conseguir, y cuando no consiguen estos objetivos, se los hace sentir culpables.
¿Cómo podría verse el futuro? Bueno, podemos echar un vistazo a dos futuros, ninguno de los cuales creo que ocurra, pero que son posibilidades. Aquí están el cielo y el infierno - cuyas puertas, como se sabe, son adyacentes e idénticas...
BilG Brother es un hombre poderoso: tiene una cantidad de dinero incómodamente grande y controla demasiadas computadoras en el planeta. Supongamos que Windows 2000 fuera un gran éxito económico y consigue suficiente dinero para comprar un par de editores de software rivales. Con los competidores comerciales fuera de su camino, se volvería contra los rebeldes del software libre. Ciertamente, suficiente dinero dado a las personas correctas (como abogados o, podríamos temer, jueces o legisladores) podría hacer a la Licencia Pública de GNU ilegal y quizá al concepto del software libre. El proyecto GNU completo y Linux se desmoronarían al instante y todas las computadoras en el universo pertenecerían a BilG Brother.
Con sólo agregar una "característica" a Windows, controlar y reportar la actividad del usuario y sus intereses es una tarea trivial una vez que integrada con el Internet Exploder. Con las computadoras como una necesidad crítica en una sociedad desarrollándose rápidamente, todo el mundo está atrapado detrás de portones [gates], enjaulado detrás de ventanas [windows]. Con el medio televisión-internet combinado, BilG brother controlaría todas nuestras vidas, de nuestros hobbies a nuestro trabajo. Podría hacerse elegir jefe de estado o jefe de gobierno de un par de países industriales y establecer una dictadura universal. Para ver cómo sigue, ver Aldous Huxley, George Orwell o Ray Bradbury.
Los artes de leer y escribir serían olvidados, ya que son conocimiento inúltil con computadoras capaces de responder a clicks de mouse y de entender la voz humana - e incluso la gramática se simplificaría al extremo para que las computadoras comprendan las oraciones. Abrir una computadora para ver qué hay adentro estaría prohibido, y la gente imaginaría programas y cajitas sofisticadas con miles de cables enmarañados adentro de la computadora - y el régimen mantendría la ilusión porque hace que la gente crea que no lo pueden copiar.
¡Qué camino tenemos por delante!
Por otra parte, el número de usuarios de Linux está creciendo exponencialmente. Podría superar al número de usuarios de Windows, y hacer que Microsoft pierda mucho dinero. Más y más editores de software publicarían versiones de sus programas para Linux, que a su tiempo causaría que más y más gente lo use. GNU/Linux y/o GNU/Hurd y/o *BSD advendrían los sistemas operativos de elección de todas las computadoras del mundo, y una amplia gama de software estaría disponible para ellos.
Incluso Microsoft terminaría publicando software para estos sistemas operativos, y quizá el Señor Gates descubriría, para su sorpresa, que le gusta - dado que el código fuente está disponible podría tener su versión privada de Linux si quiere, con todos sus bugs favoritos de Windows :-) Ahora, puesto que el SO es libre la gente se acostumbraría a programar sus pequeñas diferencias y empezarían a preferir el software libre, de modo que sólo los editores que venden versiones libres de su software pudieran sobrevivir, y todos eventualmente lo harían.
Todos habrían aprendido a programar gracias a un sistema de educación eficiente, y esto ayudaría a desarrollar la inteligencia de la gente. Computadoras "viejas" (dado que el software libre no las hace obsoletas) serían dadas a países del tercer mundo que tedrían entonces la oportunidad de desarrollarse más rápido y participar plenamente en la World-Wide Wave. El contacto con otras personas y sus culturas haría a la gente en la Tierra más iluminada, e Internet ofrecería la realización final de una sociedad mundial donde no se pierden las individualidades personales. Naturalmente, Richard Stallman y Linux Torvalds serían santificados, pero esa es una incomodidad inevitable: espero que no les moleste :-)
Los argumentos expuestos en la primera sección son esencialmente los de Richard Stallman, así que lo mejor es ver la misma Free Software Foundation y, en particular, este texto.
Una institución diferente pero relacionada es la League for Programming Freedom, que defiendo el derecho a escribir software (libre o no) y trata de ayudar a los programadores a defenderse de las patentes de software.
En francés, recomiendo leer el maravilloso folleto de Roberto DiCosmo titulado "Piènge dans le cyberespace": es un relato claro y vivo y es lo que me llevó a reescribir esta página. Corresponde esencialmente a los argumentos de la última sección.
También en francés está la lista de material anti-Microsoft de Stéphane Fermigier.
Un sitio anti-M$ mucho más virulento es www.enemy.org: contiene muchas imágenes y ensayos interesantes. Y hay una lista de correo relacionada, la lista anti_ms, a la que puede suscribirse enviando un email conteniendo "subscribe anti_ms" a majordomo@enemy.org.
Finalmente, lo más ajustado y correcto es dar a la defensa la ocasión de hablar después de la acusación. Esta fue la acusación y aquí está la defensa.