Hoy es 4 de diciembre, cumpleaños de Eric S. Raymond, también conocido como ESR. Es quien mantiene desde 1990 el nuevo Jargon File y es el autor de Una breve historia de los hackers (1992), La catedral y el bazar (1997), Colonizando la noosfera (1999), El caldero mágico (2001), La venganza de los hackers (2001) y El arte de programar en Unix (2003).
También es el aniversario del lanzamiento de JavaScript en 1995. JavaScript es un lenguaje de programación que se ejecuta, mayoritariamente, en navegadores web (los programas con los que navegamos por Internet, como Firefox, Chrome u Opera). Aporta funcionalidades que serían imposibles sin un lenguaje que se ejecutase en el lado del cliente. Y consigue que, al tener los usuarios cada vez más posibilidades, el uso de Internet se haya generalizado tanto como lo es actualmente.
Estos dos acontecimientos, que no tienen relación entre sí, podría parecer que hablar de ellos es más propio de un blog de tecnología que del Instituto Juan de Mariana, pero podemos extraer muchas enseñanzas para otros ámbitos, como la economía o la comprensión de la acción humana.
Sacando a la luz la comunidad hacker
El Jargon File es el diccionario hacker que ha hecho florecer la comunidad hacker. Por un lado, haciendo ver a la sociedad que el hacker no es ese personaje siniestro que está en un garaje haciendo maldades sino, como define Raymond en Cómo convertirse en hacker:
Existe una comunidad, una cultura compartida, de programadores expertos y magos de las redes, cuya historia se remonta décadas atrás a los tiempos de los primeros miniordenadores de tiempo compartido y los tempranos experimentos con ARPAnet. Los miembros de esta cultura crearon el término «hacker». Los hackers construyeron Internet. Los hackers hicieron de Unix el sistema operativo que es hoy día. Los hackers hacen andar Usenet. Los hackers hacen funcionar la WWW. Si eres parte de esta cultura, si has contribuido a ella y otras personas saben quién eres y te llaman hacker, entonces eres un hacker.
Los mentalidad hacker no está confinada a esta cultura del software. Hay gente que aplica la actitud de hacker a otras cosas, como la electrónica o la música. De hecho, puedes encontrarla en los más altos niveles de cualquier ciencia o arte. Los hackers de software reconocen estos espíritus emparentados en otras partes y pueden llamarlos «hackers» también. Y algunos sostienen que la naturaleza hacker es en realidad independiente del medio particular en el cual trabaja.
Eric Steven Raymond. Cómo convertirse en hacker.
Hackers y crackers
Y se desmarca del cracker:
Existe otro grupo de personas que se llaman a sí mismos hackers, pero que no lo son. Son personas (generalmente varones adolescentes) que se divierten irrumpiendo ilegalmente en ordenadores y haciendo «phreaking» en el sistema teléfonico. Los auténticos hackers tienen un nombre para esas personas: «crackers», y no quieren saber nada de ellos.
Los auténticos hackers opinan que la mayoría de los crackers son perezosos, irresponsables y no muy brillantes, y fundamentan su crítica en que ser capaz de romper la seguridad no le hace a uno un hacker, de la misma manera que ser capaz de arrancar un coche con un puente en la llave no le convierte en ingeniero de automotores. Desafortunadamente, muchos periodistas y escritores utilizan erróneamente la palabra «hacker» para describir a los crackers; esto causa enorme irritación a los auténticos hackers.
Eric Steven Raymond. Cómo convertirse en hacker.
En resumen, y en palabras del propio Raymond: «La diferencia básica es esta: los hackers construyen cosas; los crackers las destruyen».
Los hackers toman las empresas
Esta forma de sacar a la luz la comunidad hacker e identificarla como el conjunto de personas que crean soluciones a las necesidades humanas es la clave para que se utilicen términos como hackathon, hackmeeting, hacklab / hackerspace o growth hacking fuera del ámbito de la tecnología. Por otro lado, y de forma paralela, nos encontramos que cada vez hay más Software Libre y cada vez más empresas liberan su código, al menos, en parte.
La mayoría de los grandes proyectos de Software Libre están gestionados por su propia comunidad, como Python, mantenido por la Fundación Python, Wikipedia y MediaWiki, mantenidos por la Fundación WikiMedia, los proyectos mantenidos por la Apache Software Foundation, como el servidor web Apache, Apache OFBiz o AirFlow o los proyectos que han surgido de Github, como Electron, Atom o Pulsar.
Empresas cuyo modelo es el software libre
Con este tipo de instituciones cohabitan una serie de empresas que su modelo de negocio está totalmente basado en el Software Libre, como son la mayoría de las distribuciones comerciales de GNU/Linux, como Ubuntu, mantenido por Canonical Ltd. o Red Hat Enterprise Linux y Fedora, mantenidas por Red Hat Inc.
Y un tercer grupo cada vez más creciente son las empresas que su negocio no se basa directamente en el Software Libre, pero que liberan software. Algunos de estos proyectos libres los tenemos en:
- Android, TensorFlow, Angular, Kubernetes y muchas otras herramientas liberadas por Google.
- Bootstrap, liberado por Twitter.
- OpenCV, liberado por Intel.
- React, React Native y otras herramientas de React, liberados por Facebook.
- Visual Studio Code, liberado por Microsoft.
Gracias al trabajo de Eric S. Raymond, y otros mucho más, de desmitificar la figura del hacker y, sobre todo, de desligarla del cracker, mostrando que el modelo de desarrollo del Software Libre no sólo produce más, sino, sobre todo, mejores proyectos que en el modelo de software privativo, es lo que el mercado lo asuma de forma natural y espontánea como una parte de sí.
Ejemplos del impacto del software libre en la economía y empresas
Habitualmente, nos fijamos en proyectos de Software Libre que han dejado una huella profunda en la economía y la forma en que operan las empresas operan y nos fijamos en casos notables de transformación y éxito como:
GNU/Linux y Red Hat: La adopción de sistemas operativos basados en GNU/Linux ha sido un hito. Empresas como Red Hat han capitalizado esta tecnología ofreciendo soluciones de software libre y soporte, permitiendo a las empresas utilizar sistemas robustos y estables sin depender de licencias costosas.
Android y su ecosistema: El sistema operativo Android, basado en el kernel de Linux, ha revolucionado la industria móvil. Empresas de todo el mundo han adoptado este sistema operativo, permitiendo la creación de dispositivos móviles económicos y potentes.
Apache Software Foundation: Proyectos como el servidor web Apache han sido fundamentales en la estructura de Internet. La Apache Software Foundation ha impulsado numerosos proyectos de código abierto que forman la base de innumerables sitios web y servicios en línea.
Herramientas de Desarrollo Colaborativo: GitHub y GitLab han transformado la forma en que se desarrolla el software, permitiendo la colaboración abierta y la creación de proyectos de software más sólidos y confiables.
Filosofía hacker e innovación
Pero me parece mucho más importante analizar primero algunas de las influencias de la filosofía hacker en la innovación y la eficiencia del trabajo para entender conceptos más abstractos como la globalización o bitcoin y la importancia de figuras como Eric S. Raymond y la comunidad hacker. Veamos algunos de ellos:
Descentralización y colaboración: La filosofía hacker fomenta la descentralización del conocimiento y la colaboración abierta. Esto ha llevado al desarrollo de modelos de trabajo más eficientes donde la colaboración y el intercambio de ideas son fundamentales.
Hackathones y eventos colaborativos: Estos eventos no solo ocurren en el ámbito tecnológico. Empresas de diversos sectores han adoptado hackathones como estrategia para impulsar la innovación y resolver problemas, promoviendo la creatividad y el trabajo en equipo.
Metodologías Ágiles y flexibles: La mentalidad hacker ha influido en metodologías como Agile y Lean, que priorizan la flexibilidad, la adaptabilidad y la entrega rápida de productos de alta calidad.
Cultura de la transparencia y la retroalimentación: La cultura hacker valora la transparencia y la retroalimentación constante, aspectos que se han trasladado a muchos entornos empresariales, fomentando la mejora continua y la innovación.
Influencia social de la cultura hacker
Entendiendo los anteriores puntos, podemos entender cuestiones tan importantes como es el cambio de la búsqueda de datos enciclopédicos. Antiguamente, cuando queríamos buscar un dato de una biografía, acudíamos a las enciclopedias. Pero ahora acudimos a Wikipedia. Por su propia naturaleza, Wikipedia está más actualizada y tiene más contenidos que ninguna enciclopedia editada en papel. Pero no siempre estuvo ahí, sino que surgió del esfuerzo de dos hackers, Jimmy Wales y Larry Sanger y del trabajo de la comunidad de desarrolladores y de articulistas de Wikipedia.
Pero si investigamos las influencias que tuvieron estos desarrolladores, nos encontramos con Ayn Rand, Hayek y Eric S. Raymond. Y es que la necesidad de compartir información de la comunidad hacker es lo que ha hecho que surjan, por un lado, lenguajes de marcado como LaTeX, HTML o MarkDown que facilitan la edición de esa documentación, pero, por otro lado, los blogs o los wikis. Y si miramos los CMS (Content Management System / Sistemas de Gestores de Contenidos) más utilizados, no encontramos que los que encabezan las clasificaciones son todos libres: WordPress, Joomla, Drupal…
Las necesidades personales del programador
Pero para escribir esa documentación, necesitamos editores. Y de nuevo, en el mundo del Software Libre, nos encontramos una gran cantidad de ellos: vi, Emacs, nano, VS Code, Pulsar… ¿Y por qué hay tantos? De nuevo, la solución está en Eric S. Raymond, quien dice en La catedral y el bazar:
Every good work of software starts by scratching a developer’s personal itch. (Cada buen trabajo de software comienza por rascar el picor personal de un desarrollador).
Eric S. Raymond. La catedral y el bazar.
Todo programador pasa muchas horas de su vida delante del editor de texto, por lo que, al ser su principal herramienta de trabajo, la quiere, la mima, la personaliza a su gusto… pero además, como es programador, le añade nuevas funcionalidades que le facilitan su trabajo. Los buenos editores, como vi, tienen lenguajes de programación, como Vimscript, para poder automatizar tareas y evitar trabajos repetitivos. Pero no sólo se quedan en el mundo de la programación, ya que actualmente, hay muchísimos trabajos que utilizan el ordenador como principal herramienta y que heredan de la comunidad hacker esas automatizaciones para optimizar su esfuerzo.
Nuevas formas de trabajo
Un claro caso de este principio que expone Raymond lo escuché hace años en una GUADEC (GNOME User and Developer European Conference) donde el desarrollador de una aplicación de videoconferencia explicaba que la había desarrollado porque había tenido que irse a trabajar a otra ciudad y quería seguir hablando todos los días con su novia.
Actualmente, los sistemas de videoconferencia son tan habituales que han permitido una doble optimización del mercado: por un lado, tenemos el ahorro en viajes que suponen las videoconferencias; pero por otro lado, tenemos la gran globalización en la que empresas de todo el mundo pueden competir entre sí gracias a Internet, pero, especialmente, que esas empresas pueden contratar personal de cualquier lugar del planeta.
Y es que el modelo de desarrollo del Software Libre no sólo permite la transmisión de conocimiento, sino también de trabajo. Herramientas surgidas de la comunidad hacker, como la web, git, ftp, ssh… permiten trabajar de forma remota permitiendo un desarrollo global y una transmisión de riqueza de las zonas más ricas del planeta a las zonas más pobres, ayudando de esta manera al desarrollo global. También ha sido la propia comunidad del Software Libre la que ha creado la pieza que faltaba para el desarrollo global: bitcoin.
Las enseñanzas de JavaScript
Como hemos dicho al principio, JavaScript (o JS) es un lenguaje que se ejecuta principalmente del lado del cliente en los navegadores web. Este fue su origen, pero ahora también puede usarse en el lado del servidor e, incluso, para hacer aplicaciones de escritorio o para móviles. Independientemente de lo que yo pueda pensar de JS como lenguaje para backend (programación en el servidor) o en el escritorio, es un hito que no podemos dejar de lado.
Antiguamente, desarrollar páginas web que se vieran consistentes en todos los navegadores era un desafío considerable debido a las diferencias en la interpretación del código HTML, CSS y JavaScript por parte de cada navegador. Esta disparidad provocaba problemas de compatibilidad y rendimiento, generando una experiencia inconsistente para los usuarios y unos grandes quebraderos de cabeza para los programadores.
Compatibilidad
Pero, de nuevo, la comunidad del Software Libre creó una serie de acciones que solventó este problema. Primero, concienciar a los usuarios y programadores de que había que desarrollar páginas que fueran compatibles con todos los navegadores, para que los desarrolladores de navegadores también se concienciaran de que tenían que seguir estándares. Una de las campañas más curiosas a este respecto es «Esta web se ve mejor en…».
Muchas webs ponían a finales de los noventa y comienzo de los dos mil «Esta web se ve mejor en XXX» siendo XXX o bien un navegador o bien una resolución de pantalla. Pero la comunidad del Software Libre, que siempre suele tener un punto humorístico, comenzó a usar mutaciones jocosas como «Esta web se ve mejor en zapatillas» o «Esta web se ve mejor en casa». Otra campaña mostraba el mensaje «Too Cool for Internet Explorer» para indicar que esa página era demasiado «cool» para ser visitada con un navegador tan malo.
Gracias a esa concienciación hubo un doble resultado, por un lado, comenzaron los estándares web, como los establecidos por el W3C (World Wide Web Consortium), que han sido fundamentales para establecer pautas comunes en la creación de sitios web. Estos estándares proporcionan directrices sobre cómo se debe interpretar y mostrar el contenido web, lo que ha contribuido a una mayor consistencia entre los navegadores.
Homogeneización
Por otro lado, se desarrollaron distintas herramientas, muchas de ellas en JavaScript o combinando JS con CSS que homogeneizaban los formatos y permitían que esas páginas se viesen bien en todos los navegadores y, por otro lado, los propios desarrolladores de navegadores se pusieron las pilas para crear estándares para facilitar el trabajo de los desarrolladores web.
Gracias a la adopción masiva de los programadores de este tipo de herramientas primitivas, surgieron muchas más herramientas más evolucionadas que permiten desarrollar más y mejor hasta llegar a la situación actual, con frameworks como React, Angular, Vue… que permiten programar mucho más rápido y con mayor consistencia, por lo que, al haber tantos desarrolladores JS, surgieron nuevos entornos que desbordaron el navegador.
Y es que, cuando cuando hay un grupo de personas con interés en “dejar este mundo en mejores condiciones de como lo encontraron”, como dijo Lord Baden-Powell, como es la comunidad hacker, y ese grupo de personas se encuentra con un problema, no sólo lo soluciona, sino que de ese interés por solucionar ese problema, surgen nuevas oportunidades de hacer cosas buenas.
O, como dice Eric S. Raymond en La catedral y el bazar:
Dada una base suficiente de desarrolladores, asistentes y beta-testers, casi cualquier problema puede ser caracterizado rápidamente, y su solución ser obvia, al menos para alguien.
Eric S. Raymond. La catedral y el bazar.
Copyleft Fernando Vicente. Puede copiar este texto. Escrito originalmente en Markdown con vi sobre Ubuntu GNU/Linux, usando sólo software libre.
Ver también
Dos visiones sobre el software libre. (Daniel Rodríguez Herrera).
Lo que podría ser FON. (Daniel Rodríguez Herrera).
Hackers frente a académicos. (Fernando Vicente).
Aún no hay comentarios, ¡añada su voz abajo!