Software
19 de marzo de 2026
Recientemente leí a una amistad en Fedi hablar de lo que ella propondría como un estándar de software general… eso me hizo pensar a mi en escribir esto, como yo veo el software, como pienso que debería ser, lo que a mi me gusta. Este post ha tenido varios borradores, la idea la tenía desde hace rato, pero ahora es que me he decidido a escribirlo, no esperen algo ordenado y estructurado, nah, esto va sobre la marcha, yo escribo así, sin inspiración hago miles de borradores y al final no termino nada, con inspiración solo me levantaré de esta silla cuando esta publicación esté en mi blog.
Pero para explicar un poco esto, hablemos acerca de donde parte esto, para mi el “buen software” tiene que cumplir con una serie de requisitos y son:
Software que no deja a nadie atrás, software que es fácil de usar, fácil de compilar, con documentación clara, fácil de portear a cualquier entorno, que sea rápido, eficiente en su manejo de recursos, y fácil de promover
No prometo que vamos a profundizar en todos estos puntos pero, es para hacerse una idea, obviamente esto es mi punto de vista, el “buen software” es subjetivo… y sí, por cierto, este concepto del que hablo asume que el software es de código abierto, porque es lo que más uso, pero parte de eso puede aplicarse también al código cerrado.

Software que no deja a nadie atrás
Ya lo dije en el post sobre Fluentflame, para mi el software no debe dejar nunca a nadie atrás y ese es uno de los mayores pecados para mi.
¿A que me refiero con esto? simple: el software no puede ser excluyente (sí, estoy hablando de inclusividad, prendan la hoguera), es decir, por ejemplo: la documentación de un proyecto que aspira a ser usado y adoptado por otros desarrolladores, no puede asumir que toda persona que lea eso tenga el conocimiento suficiente como para entender todo, eso es absurdo y excluye a: aficionados que están aprendiendo, estudiantes, o incluso desarrolladores ya en el sector que simplemente no entienden lo que has escrito porque asumiste demasiadas cosas. Pero no es solo eso: el software debe ser entendible en su código, que no sea una jungla de cosas que solo entienden quienes trabajan con el, debe ser “elegante”, entendible, humano. Notese la palabra: “humano”, no lo digo por el tema de las LLM y demás, nope, me refiero a que algunas personas cuando hacen documentación o escriben código pareciera que han perdido su humanidad, han olvidado que antes de ser quienes son eran estudiantes o incluso peor: personas que no tenían idea de como hacer código, como escribir una linea, se volvieron elitistas, hacen software de “nerds para nerds”, si no entiendes las cosas como lo hacen ellos entonces no puedes entrar. Supongo que soy un poco paternalista en el sentido de que para mi una buena documentación es una que explica hasta las obviedades, alguien me dijo el otro día “Si alguien va a compilar mi código yo asumo que sabe lo que está haciendo, no necesito instrucciones de build”, respeto a esa persona pero, lol, yo no usaría su proyecto entonces. Para mi una mala documentación o directamente no tener ninguna es un pecado indefendible
Ahora, el último punto aquí que se conectará con el punto de la eficiencia: esto es difícil, muy difícil, probablemente alguien que trabaje en la industria me dirá que estoy exigiendo mucho, lo sé, pero, mi postura sobre no dejar a nadie atrás también se refiere a: soportar la mayor cantidad de plataformas posible, tratar de pensar en diferentes escenarios como: “Si el usuario está usando un dispositivo low end, ¿como se comportará mi software?” cosas así, también hablo de: si vas a quitarle soporte a una plataforma, debes avisar con tiempo, debes tratar de entregar una build final que como mínimo permita que tu software siga siendo usable mientras el usuario busca una alternativa o algo.
Lo de los requerimientos de hardware se arregla fácil: requisitos mínimos y recomendados, lo sé, pero es que incluso con eso, hay que software que gasta más recursos de lo que debería y a veces la respuesta de porque eso pasa es que simplemente lo dejaron así. Gran pecado… pero en fin, creo que se entiende lo suficiente (espero), pasemos al siguiente punto.
Fácil de usar, fácil de compilar, fácil de llevar a cualquier plataforma
Aquí iniciaré rompiendo una lanza a favor de algo que antes no entendía mucho: Rust, la transición que está sucediendo en la industria del software moderno, donde muchos desarrolladores y proyectos enteros están reescribiendo y cambiando partes enteras de su código, inclusive de código considerado histórico, y lo están haciendo con Rust. O en algunos casos, reescribir o cambiar el código es imposible y nacen alternativas totalmente nuevas que siguen el mismo concepto, pero en Rust.
Hay quejas y gente enojada sobre esto pero para mi es claro: Rust es el ejemplo perfecto de varios puntos en este post. Primero, siempre se habla de que Rust es “memory-safe”, es lo que siempre se lleva las luces, el debate, pero hay otras ventajas que Rust ofrece (y creo que Go también) que hacen que a mi me guste mucho.
- Rust es fácil de compilar la mayoría del tiempo y no solo eso, es fácil de compilar para casi cualquier arquitectura existente y para cualquier plataforma. Claro, esto depende del tipo de software pero, en su gran mayoría, esto es así y es un gran alivio que esto suceda.
- Rust es sumamente eficiente, es muy raro ver software Rust que no gane en eficiencia, aunque claro, este es uno de sus puntos fuertes.
- Podríamos decir que Rust cumple con lo de “no excluir a nadie”, porque realmente a menos que tengas dependencias muy asociadas a un entorno especifico, muchas herramientas Rust son tremendamente fáciles de llevar, por ejemplo en Linux, Rust se lleva de maravilla con musl, la alternativa a Glibc que usan Alpine, Chimera Linux, entre otros, a diferencia de otras herramientas que son altamente dependientes de glibc, Rust es un gran aliado de Musl.
Y en fín, aproveché para hablar de Rust, no creo que tenga otra oportunidad de hacerlo. Pero sí, el punto: un ejemplo de software que es fácil de usar y entender podría ser Discord, no es de código abierto y tiene una dirección nefasta pero, no se puede negar, Discord es fácil de usar, fácil de entender y eso, simplemente funciona. ¿Por qué creen que es tan difícil hacer una alternativa real a Discord? porque a nivel de diseño, otras alternativas no han podido entregar un software que simplemente funcione, sea útil para cualquiera y sea fácil de usar y entender en menos de 10 minutos. Ese es el punto que me faltaba, lo demás ya fue explicado con el ejemplo de Rust.
Rápido y eficiente
Esto quizás cambie en mi futuro, creo que mi opinión está muy sesgada en este punto porque claro, yo uso hardware low end, poco potente, de bajos recursos, como le quieras decir, yo le digo cafetera o patata, pero sí. Obviamente esto influye en mi opinión, si tuviera mejor hardware probablemente no me fijaría en estas cosas.
Pero aún así, creo que la eficiencia en consumo y la baja latencia de respuesta son cosas que se aprecian en cualquier dispositivo, da igual si te fijas o no. Simplemente: hay que saber aprovechar los recursos, no desperdiciarlo. En el software actual muchos tienen la mala costumbre de pensar cosas como “La ram está para gastarla” o “En mi maquina funciona”, excusas para ignorar al resto, para excluir.
No importa cuantas veces alguien diga que es imposible que su software consuma menos, siempre habrá alguien que desarrolle una herramienta similar y haga lo mismo, pero sin consumir la misma barbaridad de recursos. Ejemplos: ripgrep vs grep, uv vs pip, nanobot vs Clawbot, entre otros, ejemplos random, pero creo que se entiende la idea.
Creo que es un punto del que ya hable demasiado en los otros, so, hasta aquí lo dejo.
Software que respeta al usuario, software “aceptable”
Creo que esto debería ser lo mínimo que debemos exigirle a quienes hacen el software que usamos: que nos respeten, que no se aprovechen de nosotros. Lamentablemente, parece una idea imposible a veces.
Es con este punto que yo hago excepciones con software de código cerrado, ya que para mi más allá de una cuestión ideológica es simplemente gusto y adaptación, prefiero el código abierto porque puedo aprender, y porque me parece un modelo técnicamente superior en varios aspectos, aún creo en las buenas intenciones, yo no creo que todo el software de código cerrado es malo, de hecho ni siquiera creo que ese modelo es algo malvado (creo que Stallman se enojaría mucho si leyera esto), creo que hay empresas con muy malas practicas, creo que es un error confiar en algo de esas empresas, pero, creo que podemos depositar esa confianza (con cautela) en otros lugares, incluso si es código cerrado.
Ejemplos de esto: Vivaldi, el navegador, a mi me gusta mucho, de hecho lo estoy usando estos días, Mozilla Firefox puede ser todo lo abierto que quieran pero para mi no es ético, es un barco en llamas que no respeta a sus usuarios, los tiran por la borda, no creo que sea sano o correcto perdonar todos sus errores y todas sus malas practicas solo porque so la única alternativa a Chromium, no, para mi eso no vale, Mozilla perdió mi respeto y se ganó un hater en mi (okno), pero eso, lo único que tengo para quejarme de Vivaldi es que su código no tiene una licencia open source, aunque contrario a lo que se dice, no es totalmente cerrado, la interfaz lo es, el código para compilar Vivaldi es público, puedes compilar Vivaldi si tienes la potencia de hardware y las herramientas necesarias, ¿puedes distribuirlo libremente? no, no tiene licencia, pero para uso personal sí. En general me parece que actualmente Vivaldi es todo lo que Mozilla no ha podido mantener con Firefox, si me preguntan yo diría que Mozilla debe caer, da igual el monopolio, ¿de que alternativa real estamos hablando? una alternativa que solo se mantiene por ser financiada por Google, una alternativa que ya perdió la batalla y es inferior en prácticamente todo, ¿eso es lo que hay que defender y perdonar? nah, no soy tan masoquista.
Me fuí por las ramas con Mozilla, perdón, otra cosa de la que probablemente no tendré más oportunidad de hablar, vale, otros ejemplos de “software ético” o que son lo suficientemente aceptables para mi: Niagara Launcher en Android, Obsidian (desde donde escribo esto) y … la verdad no se me vienen muchos ejemplos a la mente ahora mismo, o sí, pero no son cosas muy conocidas.
Pero en fin, se entiende la idea, para mi el código cerrado es aceptable siempre que: me respete como usuario, sea útil, sea superior técnicamente a una alternativa de código abierto, y que simplemente funcione bien.
Mi preferencia personal: si es posible, de código abierto
Como dije, puedo hacer excepciones con el código cerrado pero mi preferencia siempre es clara: quiero código abierto, es mi primera opción siempre, para mi el software de código cerrado es una medida desesperada cuando siento que ninguna alternativa open source me convence, es todo.
Aquí entre nos, el software de código abierto ya domina el mundo, cuando digo que es superior técnicamente creo que hay muchas empresas que indirectamente están de acuerdo conmigo, porque el mundo tecnológico actual está construido en gran parte gracias al software de código abierto, no es chiste: mira cualquier app que uses, casi siempre habrá un apartado de “Licencias de código abierto” donde se detallan que herramientas de código abierto fueron usadas ahí, esto lo hace Google, lo hace Steam, lo hace Epic Games, es un estándar, todos usan código abierto. Ahora, ¿que tipo de código abierto? código con licencias flexibles, fáciles de integrar y en la mayoría de los casos sin ninguna obligación por parte de quien use eso o lo modifique, el código abierto está en todas partes y eso es una realidad, ahora, el “software libre” no lo vas a ver nunca o casi nunca a esa misma escala, ¿por qué? licencias, las licencias puristas son algo a evitar en la industria, cosas como GPL-3 son una pesadilla, son “virales”, exigen “demasiado” según algunas empresas, simplemente no tendría sentido desde un punto de vista comercial usar software con esa licencia. Pero MIT, BSD, entre otras, son el tipo de licencias de software que hacen brillar los ojos a quienes están ahí, y creo que en parte, eso está bien
Vamos al punto final, que se relaciona con esto.
Fácil de promover, fácil de adoptar
Vamos a un punto curioso aunque no planeo tocarlo mucho: licencias.
Una licencia puede definir si tu software se convierte en un estándar altamente adoptado o si se queda en el nicho, una de las mejores licencias para que algo sea un estándar es “MIT” porque no exige nada, y otorga prácticamente todo, es algo a lo que es muy difícil decirle que no. Se sataniza mucho a las licencias “permisivas” o “flexibles” pero gracias a ellas se han podido construir estándares que no podrían haber triunfado si no fuera por lo fácil que fue promoverlo y adoptarlo. Un estándar que todos usemos no puede ser GPL-3, no puede exigir, debe ser algo que pueda usar yo en mi casa y que pueda usar una corporación, y no es que me ponga del lado de las corporaciones pero, que un estándar bueno y útil sea adoptado es simplemente el mejor escenario, todos ganamos, esto es así.
Para mi el software fácil de promover entonces es software que tiene una licencia adecuada con su propósito, si quieres imponer un estándar nuevo no puedes limitarte a un nicho.
Pero esto toca otra cosa: política. Para mi el software no es político, es una postura que he mantenido y sigo manteniendo, pero: quienes hacen software si tienen intereses o intenciones ideológicas, políticas. Y a veces esas intenciones son totalmente dañinas, excluyentes, malvadas.
Yo personalmente intento no promover software que considero demasiado “explosivo” o hostil hacía algunos grupos o personas, hago excepciones cuando el tema es ambiguo o no hay mejores opciones, lo admito, pero en general, lo intento. Creo que para estas cosas es necesario un código de conducta, directivas claras, y una clara linea de respetar a quienes aportan a tu proyecto y quienes lo usan, romper esa linea es demasiado peligroso y lastimosamente pasa seguido. El código de conducta genera divisiones y debates sin fin pero, yo prefiero mil veces un proyecto que tenga un código de conducta a uno que no o que tenga uno de chiste, la experiencia me ha mostrado lo peligroso que eso puede ser.
Bueno, me he vuelto a ir por las ramas, como dije, esto es improvisado, literalmente.
Probablemente debí ordenar mejor mis ideas pero: quería escribir, vengo de un bloqueo creativo, vengo de estar enfermo y frustrado parte de este mes, vengo de un duelo por una perdida de un familiar, joder, si no escribo es que exploto. Para mi la inspiración es agua en el desierto, la aprovecho al máximo porque no sé cuando vuelva, escribo casi que desesperado de terminar sin quedarme sin ella, porque pasa, escribir un borrador y dejarlo a la mitad porque no se me ocurre más me pasa seguido, con este post sobre software me pasó más de una vez, así que o lo hacía ahora mismo o no lo hacía.
Un saludo, como siempre estoy abierto a comentarios en el formulario de abajo, o a mi correo (nubesu@tuta.io). Me alegra mucho poder terminar esto y espero volver a escribir pronto.
¡Hasta luego!