Frente al modelo de Twitter, qué ha hecho bien Mastodon

Hace mas de medio año que he migrado mi actividad de redes sociales a Mastodon. Google+ descansa en paz en el cementerio de Google, y entro en Twitter una o dos veces máximo por mes desde web para limpiar mis menciones y adiós. Reducir el uso de Twitter ha mejorado drásticamente mi humor y la verdad es que no lo echo de menos. En cuanto a mis contactos de Google+ sigo sus blogs por lo que no han desaparecido de mi vida.
La cuestión que me planteo a día de hoy es, siendo tan similares Twitter y Mastodon, ¿por qué no se reproducen los mismos comportamientos? No creo que sólo una cuestión de educación del usuario, sino también de diseño.

El logo de Twitter soltando improperios

· No existe la posibilidad de “retweet con comentario”.

El creador del tweet (estado) original solo recibe el aviso de que dicho estado ha sido compartido, no de lo que se origine a partir de lo comentado, y la pérdida del contexto original. Esto permite la generación de “masas de linchamiento”, que con la posibilidad de tergiversar la información original pueden lanzarse a acosar al creador. Mastodon no llama a esa función retweet (volver tweetear), sino boost (impulsar), y uno por definición no impulsa algo con lo que no esté de acuerdo.

· Aparición del “content warning” o “aviso de contenido”.

Mastodon tiene la posibilidad de ocultar el texto de un estado (o toot) tras una etiqueta de “mostrar contenido”, y mostrando un texto de aviso al gusto del autor para cada estado. De manera que si por ejemplo hay un tema político que alguien quiere compartir pero sabe que puede generar crispación, nerviosismo o malestar en el personal, puede marcar el estado, por poner un ejemplo de los últimos años, con “política, inmigración, Trump”. El autor del estado mantiene la libertad de compartir la información, pero respetando a su vez a los usuarios que no desean encontrárselo en ese preciso momento o lugar.

· Posibilidad de ocultar las métricas: elimina la competitividad.
Los usuarios pueden elegir mostrar o no los datos de impacto de un estado, al igual que los de seguidores y seguidos. De esta manera previene que se le juzgue por ello o situaciones competitivas que podrían no resultar sanas.

Como podéis ver no son funcionales difíciles de implementar ni precisamente rebuscadas, y sin embargo tras todos estos años Twitter no las ha implementado (aunque recientemente he leído que Instagram se está planteando ocultar los “me gusta”). ¿Por qué no se han implementado?

La respuesta, aunque sencilla, es triste. Twitter vive de servir anuncios segmentados. Gana más cuanto más tiempo retenga tu atención. Las discusiones mantienen la atención, luego entre estado y estado se sirven anuncios. Los anuncios son dinero para la empresa, luego mantener el estado de crispación les da dinero, y por ello no tienen prisa en reducirlo. Es lo que tienen las redes sociales comerciales.

Nuget y derivados: Ninite y Chocolatey

Si comparamos Windows con otros sistemas alternativos, su mayor carencia funcional como sistema operativo es la carencia de un sistema de paquetes que nos permita realizar la instalación y actualización de las aplicaciones de forma cómoda: seguimos teniendo que buscar y descargar a mano el instalador, ir con el “siguiente, siguiente” atengto a lo que está marcado no te vayan a colar algo extra que nunca que quisiste instalar, y repetir ese proceso cuando toque actualizar. En teoría la Windows Store iba a asumir el rol de gestor de paquetes, pero sólo contiene aplicaciones para la llamada ModernUI que no termina de cuajar, o aplicaciones con Electron para tener servicios web como si fuesen aplicaciones nativas. Para quien no esté puesto en ese tema, Electron contiene el núcleo de Chromium y el código web (en general JavaScript y NodeJS) para ejecutarlo en tu equipo local, pero en la fecha en que escribo esto tiene el defecto de consumir entorno 180 megas por instancia, lo que es en muchos casos exagerado para lo que realmente es la aplicación, por lo que compensa más usar las pestañas de Chrome (o cualquier navegador derivado de Chromium) para tener levantada una sola instancia reduciendo consumo y mejorando el rendimiento de la máquina.

Resulta que Microsoft sí que tiene un repositorio de paquetes .NET llamado NuGet, pero la cantidad de aplicaciones disponibles desde allí, si bien son las “aplicaciones clásicas” (es decir, las que utilizamos de verdad), las opciones son escasas.

La web de NuGet

He encontrado 2 formas cómodas de interactuar con NuGet:

  • La primera es una solución para todos los públicos mediante Ninite, que te permite crear un instalador o actualizador “al vuelo” desde su web. Selecciona las aplicaciones que quieres instalar descarga, ejecuta y deja el ordenador a su aire, que ya se encargará él. Es gráfico e intuitivo, y te genera un ejecutable a medida a diferencia del venerable Soft2base de windows XP y Windows 7.
  • La segunda, bastante mas potente, es Chocolatey. Esta emula los sistemas de paquetes mediante línea de comandos de una consola (o el Windows Powershell para quien le guste). Posee el tan deseado “comando para actualizar todo lo que tengo en el repositorio” pero no es para cualquier usuario en el sentido de que implica usar el terminal y no tiene iconos 🙂 Unos ejemplos de uso serían:
# instalar paquete
choco install vlc
# desinstalar paquete
choco uninstall flashplayer
# actualizar todo lo instalado con chocolatey
choco upgrade all -y
# alias para actualizar todos lo instalado
cup all -y
# lista de los paquetes desactualizados
choco outdated

Yo soy mas de la segunda por su versatilidad, pero es bueno conocer todas las opciones.

Oracle y el nuevo soporte de JDK

Desde el mes de abril los programadores hemos ido recibiendo el aviso de Oracle JDK (Java Developer Kit) del cambio de condiciones de las nuevas versiones: el soporte de Java 8, la última versión estable con las condiciones tradicionales llegará a su fin y las versiones posteriores ya no serán gratuitas. Recopilo las preguntas que he ido recibiendo desde entonces:

– ¿Por qué ese cambio?

Porque Oracle quiere hacer más dinero.

– ¿Las nuevas versiones de corta duración no siguen siendo gratis?

Sí, pero cada 6 meses tienes que hacer una migración completa a la siguiente versión, lo que no es operativo para aplicaciones grandes. Además haces de conejillo de indias, porque con ciclos de desarrollo tan cortos no se garantiza la estabilidad.

– ¿Pero Java no era de código abierto?

Lo era por parte de Sun Microsystems. Luego Oracle los compró e hizo lo que suele hacer con los proyectos de software libre: añadió capas extras propietarias y llegado un punto cerró para intentar monetizar.

– ¿Pero puede tener efecto retroactivo?

No, el código que era libre lo sigue siendo como OpenJDK, cuyo mantenimiento ha pasado a manos de Red Hat. A día de hoy esta versión es fácil de instalar en Linux, pero en otros sistemas no es tan amigable de poner en marcha.

– Espera, entonces, ¿cómo queda el tema de desarrollo de Java?

Oracle (código propietario) lidera el desarrollo porque es quien tiene la propiedad intelectual de Java SE (Standard Edition). Red Hat (código abierto) mantendrá la parte libre dándole las actualizaciones de seguridad. Lo que solía ser Java EE queda en manos de la Eclipse Foundation (software libre) y pasa a llamarse Jakarta. Básicamente Oracle se lava las manos de toda la parte colaborativa, pero sigue siendo quien manda.

– ¿Tengo alternativas entonces?

Si, AdoptOpenJDK proporciona los binarios libres y compilados. Va a remolque de OpenJDK, pero ellos ofrece versiones larga duración (LTS) con soporte mucho más largo que las LTS de Oracle.

– ¿Pero los entornos de desarrollo como Eclipse e IntelliJ funcionan con estas versiones alternativas?

Eclipse Photon funciona sin problemas, e IntelliJ 2019 incluye su propio bundle de Java basado en OpenJDK, por lo que la respuesta es sí.

– ¿Tiene sentido esta maniobra?

En mi opinión a largo plazo, no. El lenguaje Kotlin podría ser el gran beneficiado, pues corre sobre la máquina virtual de Java, la cual sigue siendo libre, y garantiza retrocompatibilidad con Java. Ya es un lenguaje oficial de Android y le evita a Google la guerra desgaste que Oracle tiene con ellos, por lo que se prevé crecimiento por esa parte. Además el negocio de sus creadores, Idea, es vender licencias de sus herramientas de desarrollo (IntelliJ), por lo que al ser ellos los que controlan el desarrollo del lenguaje tendrían una ventaja sobre sus competidores.

– ¿Es Oracle malvada con el software libre y el código abierto?

Tienen un largo y triste historial de comprar compañías con proyectos de software libre y dejarlos marchitarse (OpenOffice, MySQL…) o meterse en largas guerras de patentes, hasta el punto que tienen un nómina muchos más abogados que ingenieros. Yo siempre sonrío recordando que el edificio de Cyberdyne en Terminator Genisys está basado en su oficina…

La oficina de Cyberdyne en Terminator Genisys, basada en la oficina de Oracle de Redwood

Gab pretende utilizar el código de Mastodon

Supongo que la mayoría de los que me leéis ni conocéis la existencia de Gab: se trata de una red social a imagen de Twitter con ideales de extrema derecha, supremacistas, antisemitas, y homófobos: cuando la empresa del pájaro expulsa a alguien bajo esos términos, por definición se muda allí. A mí personalmente siempre me ha hecho gracia que el código de su sistema se llame HYDRA, pues me hace pensar en los malos del Capítan América diciendo “Hail Hydra” y la asociación no me puede parecer más adecuada.

Dejando los ideales políticos, simpatías y antipatías aparte, la semana pasada publicaron la noticia en Twitter y como cabe esperar, esta hizo eco en Mastodon:

Toot de Eugen comentando la noticia de que Gab utilizará el código de Mastodon

Rob Colbert: Esto va a ser ser un “hard fork” y fue decidido en base a completitud de funcionalidades. Nuestra meta es una transición desde esta base de código pronto hacia HYDRA. Básicamente, una pequeña parte de Mastodon está escrita en Node.js y una gran parte en Ruby On Rails en Postgres. Como que eso no nos emociona. Así que vamos a hacer una  transición de manera relajada durante los próximos meses (quizás hasta un año) para tener el 100% en Node.js y posiblemente un diferente tipo de tier.El primer movimiento es acabar con todo ese dolor ahora. No puedo esperar a hacer videos y explicarlo.

Aclaraciones sobre el tweet del CTO de Gab:

  • Hacer un “hard fork” significa que van a clonar el repositorio de Mastodon en el estado actual, y separarse por completo de él para hacer sus propios desarrollos sin mirar atrás. Mastodon es software libre, pueden hacerlo legalmente siempre que mantengan la licencia (es decir, su codigo debe ser también libre).
  • Reescribirlo entero en NodeJS supongo que es una cuestión de modas: hace unos años Ruby era el niño bonito de los programadores y ahora lo es NodeJS. Como alguien que programa NodeJS puedo decir que es útil para hacer ciertas acciones rápidas, pero aunque responde bien mediante Promises es un sistema con un único hilo, luego para una carga de procesamiento grande es un absoluto desastre. Ellos verán.
  • Este movimiento tiene sentido porque al colarse en el Fediverso, podrían utilizar las Apps ya existentes para él en lugar de la suya propia que ha sido retirada de la App Store por incitar al odio. Si bien el código es agnóstico, lo que se respira en ese sitio infringe las reglas de Apple, así que también fue eliminada.

Eugen: Así que Gab ha decido que su propio código en el que gastaron $5M del dinero de sus inversores para desarrolar is tan insalvablemente malo que van a usar en su lugar el código de Mastodon, con el bono añadido de aprovecharse de nuestras apps (con las aplicaciones de Gab apps siendo eliminadas de las tiendas de Apps). Esto es un primer aviso para los compañeros administradores para estar alerta y bloquear sus dominios en cuanto los veamos, cuando/si aparecen (no está confirmado si pretenden federar), y a los desarrolladores de las Apps para considerar si deben bloquear los dominios de Gab si fuese necesario.

Del comentario de Eugen “Gargron”, creador de Mastodon:

  • Si Gab no libera el código derivado de su fork, podrían emprender el acciones legales contra ellos.
  • Gargron está en su derecho como administrador de su instancia (mastodon.social) a bloquearlos si violan sus términos y condiciones.
  • Es natural que intente avisar al resto de los administradores de lo que se avecina en caso de que federen, puesto que él mantiene el directorio de instancias joinmastodon cuyas condiciones de admisión similares (no se permite discurso de odio).
  • Muchas instancias se crearon con la intención de proveer un lugar seguro e inclusivo, y obviamente el contenido procedente de Gab dista mucho de ese ideal, de ahí que probablemente el uso de herramientas de moderación esté al orden del día si federan.
  • El tema de bloqueo de las aplicaciones a nivel de código del Fediverso a los dominios de Gab me parece espinoso, pero os lo planteo de otra forma: si por ejemplo Amaroq (cliente de Mastodon de iOS) o Tusky (cliente de Android) se utilizasen para conectarse a esa Gab, ambas podrían sufrir el mismo destino que la aplicación oficial de Gab, y no creo que sea una buena perspectiva para sus desarrolladores. El código seguirá siendo libre y los ingenieros de Gab seguirán pudiendo hacer otro “hard fork” y quitarle esas líneas de bloqueo publicándola bajo otro nombre. Así, si la tiran, al menos no afectaría a las originales. No voy a decir que me agrade que piquen bloqueo de dominio en el código, pero lo comprendo como defensa propia.

Personalmente creo acabarán como CounterSocial, una red social con la base de código de Mastodon que es un silo de americanos con tendencia más de izquierdas con bastantes prejuicios contra los rusos y musulmanes. Ni un extremo ni el otro suelen ser bienvenidos en ninguna plataforma si traen conflicto, abuso y poca educación. Eso sí, todos ellos son libres de tener sus propios sitios aislados si encuentran un proveedor que los quiera mantener.

Despedida de Antergos

Siempre que me han preguntado cuál ha sido mi mejor experiencia a nivel de uso diario de una distribución de GNU/Linux, he respondido que fue hace bastantes años con Arch. Aquel equipo nunca fue más fino que con ella, teniendo instalados únicamente los paquetes que necesitaba para desarrollar software, y actualizado siempre a la última. Sin embargo también digo sin tapujos que en muchos equipos no tengo narices de instalarlo: hay placas que directamente lo repudian, y buscar los drivers a mano uno a uno requiere un tiempo y una energía que en mi situación actual rara vez tengo.

Imagen de la web de Antergos

Antergos era una distro gallega que resolvía ese problema: proporcionaba un live-CD (¿live-pendrive?) con un instalador llamado Cnchi que te ayudaba a elegir los paquetes necesarios: los drivers compatibles que necesitases para arrancar, la interfaz gráfica que prefirieses y algunos de los programas más típicos para llevarlos instalados (o no) de salida completamente a la carta. En resumen, de manera similar a la primera época de Ubuntu con Debian, hacia que instalar Arch fuese fácil.

Esta última semana el equipo que lo mantiene ha anunciado que van a descontinuar el proyecto, por falta de tiempo. Coincido con ellos en que es mejor descontinuarlo que dar un mal servicio a la comunidad, y sólo puedo agradecerles el esfuerzo que han realizado durante 9 años para hacer la vida más fácil a todos aquellos que querían instalar Arch.

La lastima es que perdemos una capa entre la elitista comunidad de Arch y el usuario corriente, porque seamos sinceros, yo soy informática y tengo un interés por aprender del que el usuario medio carece, y si bien la wiki de Arch Linux me parece una absoluta maravilla, hace falta una base para ser capaz de entenderla. Ojalá mas usuarios tuviesen esa inquietud para poder obtener la capacidad de elegir por si mismos, pero si no los ayudamos, seguirán dejando que Microsoft, Apple y Google lo hagan por ellos. De ahí que la labor de Antergos y Manjaro es encomiable, pues les da una puerta de entrada, y poco a poco pueden ir aprendiendo más hasta tener conocimientos y capacidad crítica.

¡Gracias por todo ya seguir usando GNU/Linux!