Software privativo: ejecutables y código fuente

Tabla de contenido


Los conceptos de software comercial y software privativo suelen confundirse a menudo. Pero no son exactamente lo mismo. Al hablar de software comercial en el artículo anterior reflexionábamos sobre si había o no que pagar por usar el software. En otras palabras, nuestro tema de conversación era, casi exclusivamente, el dinero. Con software privativo designamos aquellas herramientas cuyo código fuente —en seguida explicaremos con claridad este concepto— pertenece a una entidad o persona, la cual controla y restringe los derechos de los usuarios de dichas herramientas según su conveniencia. Hablamos, por tanto, de la libertad de las personas.

Steve Jobs y Bill Gates, sin duda las dos personas que más han hecho por el software privativo, durante el "D-All Things Digital" de 2007.
Steve Jobs y Bill Gates,  durante el “D-All Things Digital” de 2007 (Wikipedia. Licencia Creative Commons)

El software privativo es también conocido como software propietario (propietary software), aunque se trata de un nombre poco acertado en español, porque si bien en inglés propietary significa «poseído de forma privada», en nuestra lengua «propietario» quiere decir lo opuesto: «que tiene derecho de propiedad sobre una cosa». Y dado que el software no puede ser dueño de nada, sino que son personas o empresas las que poseen el software, es evidente que se trata de una mala traducción. Pero la expresión ha triunfado, y tanto «software privativo» como «software propietario» se emplean ya como sinónimos.

Ejecutables y código fuente

Una aplicación de softwareprograma informático (computer program) es una serie de instrucciones más o menos estructurada que imparte órdenes a un computador para que este realice determinadas tareas. Y podemos añadir, mientras los avances en inteligencia artificial no alcancen mayores cotas y las máquinas no sean capaces de programarse a sí mismas, que toda aplicación tiene que haber sido escrita por una o varias personas, habitualmente empleando un lenguaje de programación (programming language) de los muchos existentes. Se trata de colecciones definidas de símbolos y normas de uso que facilitan la tarea de impartir órdenes al computador mediante expresiones y estructuras semejantes a las del lenguaje hablado, en general a la lengua inglesa, porque las ciencias de la computación se desarrollaron inicialmente en países angloparlantes. El siguiente ejemplo sirve para imprimir por pantalla —el término inglés echo significa «eco»— el famoso saludo “Hola, mundo”:

echo "Hola, mundo"

 

A esto, a lo escrito por el ser humano, llamamos código fuente (source code). Y puede verse que resulta fácilmente inteligible para alguien que tenga conocimientos del lenguaje del programación en cuestión, y en ocasiones incluso para cualquiera que solo conozca el inglés. Las máquinas, por el contrario, no pueden entenderlo. Porque el procesador que constituye el cerebro del computador es un componente electrónico formado por multitud de circuitos que podríamos imaginar como bombillas que se encienden y se apagan, o como interruptores abiertos o cerrados.  Estos circuitos no son capaces de interpretar —ni por tanto de ejecutar— el código fuente, sino únicamente lo que denominamos código binario, un sistema de numeración compuesto de dos elementos que simbolizan los dos posibles estados eléctricos: 0 (apagado) y 1 (encendido). Puesto que solo cuenta con dos símbolos, es preciso combinarlos en distintos dígitos o cifras, llamados bits  —abreviatura de binary digit, «dígito binario»— para construir expresiones. Por ejemplo, el anterior saludo, “Hola, mundo”, en código binario se escribe así:

01001000 01101111 01101100 01100001 00101100 00100000 01101101 01110101 01101110 01100100 01101111

 

Aunque cualquier procesador actual se basa en el código binario, no todos lo emplean del mismo modo. Cambian la cantidad de bits, que puede ser fija o variable, el orden de los mismos, etc. Pues al igual que algunas lenguas humanas, como el francés, el inglés o el español, que se basan prácticamente en el mismo alfabeto y en cambio están formadas por palabras diferentes, los procesadores de distintos fabricantes usan el código binario para construir cada uno su propio idioma, que llamamos lenguaje máquina. Así, una aplicación creada para el lenguaje máquina de un procesador Motorola, que se empleaba en los ordenadores Apple Macintosh hasta 2006, no puede funcionar en un equipo con microchip Intel, que se utilizaba en los equipos de IBM, y que sigue empleándose hoy en muchos otros. De ahí que surgieran distintos e incompatibles sistemas operativos, conjuntos de programas básicos para ser ejecutados por un determinado procesador, que se ocupan de hacer funcionar el hardware y permiten la instalación de nuevo software, entre los que podemos citar Linux, Mac y Windows. El lenguaje máquina es también la causa de que hablemos de diferentes plataformas informáticas, computadores que comparten esencialmente una misma arquitectura de hardware (procesador) y de software (sistema operativo). 

Para ejecutar un programa no necesitamos el código fuente, sino solamente el ejecutable. Esto hace posible que exista el software privativo

Si un procesador no puede entender el código fuente escrito por el ser humano,  parece lógico pensar que, para que un programa funcione, es preciso traducirlo al lenguaje máquina específico de cada plataforma, proceso denominado compilación si se hace una sola vez antes de ejecutarlo, o interpretación cuando es necesario realizarlo cada vez que el programa está en marcha. En este momento, y para el asunto que nos ocupa, nos interesa la compilación, pues produce como resultado un archivo digital —generalmente con extensión .exe en Windows, por ejemplo— que el procesador entiende y sí puede ejecutar, y de ahí que reciba el nombre de ejecutable. A efectos del tema de este artículo, su principal característica es la autosuficiencia, pues para hacer correr una aplicación no necesitamos ya el código fuente, sino únicamente el ejecutable. Esto ha hecho posible la existencia del software privativo.

Software privativo y licencias

Por lo general, para utilizar software privativo es preciso aceptar los términos de una licencia —un permiso de uso, que en algunos países tiene la categoría de contrato legal entre dos partes— redactada por el propietario, quien ha impuesto en ella las condiciones que consideraba oportunas. También necesitaremos el ejecutable para instalarlo en nuestro equipo, aunque hoy en día podemos utilizar aplicaciones remotas a través de Internet. En cualquier caso, los rasgos que distinguen el software privativo es que necesitamos permiso del propietario para su uso, y que no tenemos acceso al código fuente. Muy al contrario, este se mantiene en secreto, amparado como mínimo por prohibiciones jurídicas, cuando no también por sistemas de protección por software o incluso por hardware.

El software privativo se caracteriza porque:
1) necesitamos permiso de su propietario para utilizarlo
2) no tenemos acceso al código fuente

Como ejemplo, pensemos en el citado sistema operativo Windows, de sobra conocido por todo el mundo. Se trata sin duda de software privativo, ya que tiene dueño, la multinacional Microsoft, que nos concede una licencia de uso, y porque cuando adquirimos un equipo con este sistema o lo instalamos por nuestra cuenta, solo encontraremos en él los ejecutables, no el código fuente. Como consecuencia de esto, si el sistema presenta algún error debemos esperar a que este sea corregido por Microsoft, ya que nadie más puede hacerlo. Al menos, no de forma legal, porque en su licencia de uso incluso se especifica, entre otras cosas, que no debemos probar en él la llamada ingeniería inversa, un conjunto de labores que consisten en intentar recuperar el código fuente partiendo solo del ejecutable. Y es que, técnicamente hablando, a menos que se haya ofuscado el software mediante encriptación, e incluso en este supuesto, es posible mediante ciertos métodos revertir la compilación, realizar la traducción inversa de cualquier programa: convertir los ceros y unos al lenguaje original escrito por el programador. Aunque al hacerlo, en el caso del software privativo, se comete un delito muy grave, cuyas penas pueden consistir en cuantiosas multas y varios años de prisión para el infractor.

No adquirimos un producto de software, sino la licencia personal e intransferible para usar dicho producto

En teoría, ocultando el código fuente, evitando que este no pueda ser conocido por el público, se pretende garantizar los derechos de propiedad intelectual de las personas y empresas. Esto esgrimen los partidarios del software privativo, entre los cuales Microsoft siempre ha destacado. Pero además de estas cuestiones éticas y filosóficas, hay también en ello intereses económicos que parecen evidentes. De hecho, la mayor parte del software privativo suele pertenecer también a la categoría de software comercial, término con el que designamos aquellas herramientas para cuyo uso se nos exige un precio, en dinero u otra divisa,  que debemos satisfacer. Y aunque existe software comercial que no es privativo, como veremos muy pronto, en la licencia de uso del software privativo suele advertirse que al adquirir el software no compramos nunca el producto en sí, sino el permiso para utilizar dicho producto en ciertas condiciones, y que generalmente es personal e intransferible. En consecuencia, si una empresa quiere que sus empleados usen legalmente una aplicación, será necesario adquirir varias licencias de la misma, y no solamente una, como lógicamente podríamos pensar. La práctica contraria se denomina piratería, y la ley es también dura en su persecución y castigo.

Que el software privativo y el comercial a menudo sean confundidos, identificados como la misma categoría, no es en absoluto casual, ya que las naturalezas de ambos permiten que se complementen. Porque si pretendo cobrar por el uso de mi aplicación (software comercial), pero entrego el código fuente al público, cualquiera con los conocimientos adecuados podría compilarlo y producir los ejecutables necesarios, y aunque cometería un delito haciéndolo, puedo pensar que quizá yo no vendería tantas licencias como tengo previsto vender. Así que procuro ocultar ese código fuente a todo el mundo y lo guardo a buen recaudo (software privativo), y lo utilizo solamente cuando tenga que modificarlo, generalmente para lanzar una nueva versión o actualización de mi producto, versión que probablemente los usuarios deberán pagar también (software comercial).

El software privativo puede ser gratuito, pero, ¿quién te garantiza que vaya a seguir siéndolo mañana?

No obstante lo dicho, existe software privativo gratuito, pues no se nos pide a cambio de usarlo ningún desembolso. Esto no quiere decir que deje de ser privativo, sino solamente que no es comercial, ya que tampoco se nos ofrece el código fuente y, además, la propiedad del software sigue perteneciendo al fabricante. Y ahí radica el problema: un programa que hoy es gratis puede no serlo mañana, si su propietario decide cobrar por él un precio. Incluso se da el caso de herramientas que son gratuitas para uso personal, pero no para las empresas, que deben pagar cuantiosas cuantías por utilizarlo.

La libertad de los propietarios del software privativo a la hora de fijar las condiciones del uso de sus herramientas es poco menos que infinita. Podrían exigir a los usuarios hacer el pino durante media hora todas las mañanas, y estarían en su derecho legal de imponer tal exigencia, aunque todavía no nos consta de nadie lo haya hecho, desde luego. Sin embargo, hay otras estipulaciones que sorprenden tanto o más que ese disparate: en algunas licencias puede leerse que se permite realizar una o dos copias como máximo del software, y solamente por razones de seguridad. Pero, ¿qué pasa si soy un poco paranoico y acostumbro a copiarlo todo por triplicado? Ni más ni menos, que estaré cometiendo un delito.

Conclusión

En el artículo anterior dijimos que el software comercial es el software por el cual debemos pagar para utilizarlo. En este, hemos descrito el software privativo como aquellas herramientas cuyo código fuente pertenece a una persona o entidad, la cual estipula las condiciones de utilización de dichas herramientas, y por tanto otorga todos los derechos al propietario del código fuente —salvo honrosas excepciones— y muy pocos al usuario del ejecutable. La diferencia parece obvia, al menos en teoría, aunque después se diluya en la práctica, ya que la mayor parte del software privativo es también comercial y, a la inversa, mucho del software comercial disponible en el mercado es también privativo.

En el lado opuesto al software privativo se encuentran los movimientos del software libre y del código abierto. Al contrario de lo que mucha gente piensa, uno y otro pueden ser también software comercial o software gratuito. Lo veremos en la próxima entrega de esta serie. 


Tabla de contenido


Escribe una respuesta o un comentario

Tu dirección de correo no será publicada.