Se necesita una federación de forjas
(blog.tangled.org)- La colaboración en código abierto parte de la idea de que, en vez de una estructura que dependa fuertemente de un solo proveedor, es más deseable una combinación de protocolos distribuidos que repartan la transmisión de código y la comunicación
- La colaboración en código originalmente se hacía con la combinación de git y correo electrónico; después pasó a la combinación de git y el sitio web de GitHub; ForgeFed continúa con la combinación de git y ActivityPub, y Tangled con la de git y el protocolo AT
- Tangled tiene una estructura que federa eventos entre servidores git, llama knot a cada servidor y, aunque los servidores sean distintos, permite colaborar en repositorios, hacer forks entre servidores y abrir pull requests hacia repositorios ubicados en otros servidores
- Para el Authenticated Transfer alrededor del código usa AT, manejando en conjunto issues, pull requests, la línea de tiempo de eventos, follows y stars, y también lo aprovecha para invitar colaboradores y compartir claves públicas SSH
- Aunque se parece al flujo de operar directamente una instancia de cgit y enviar parches por correo, también deja ver una dirección que busca salir del monocultivo de GitHub sin perder el aspecto social ni la diversión de colaborar
Por qué hace falta una federación de forjas
- No es deseable que una parte importante de la colaboración en código abierto dependa de un solo proveedor, y el planteamiento parte de la idea de que los protocolos distribuidos sobreviven más que los sistemas centralizados
- La colaboración de código siempre ha usado dos protocolos al mismo tiempo: uno para la transferencia de código y otro para la comunicación
- Al principio, el flujo era una combinación de git y correo electrónico
- Después cambió a una combinación de git y el sitio web de GitHub
- ForgeFed plantea la posibilidad de una combinación de git y ActivityPub
- Tangled se está construyendo con una combinación de git y el protocolo AT
- Tangled federa eventos entre servidores git y llama knot a cada servidor
- Se puede colaborar en repositorios sin importar en qué servidor estén
- Admite forks entre servidores
- Después de hacer push a un repositorio en tu propio servidor, puedes abrir un pull request hacia un repositorio alojado en un servidor completamente distinto
- Este enfoque se parece en varios aspectos al flujo de operar directamente una instancia de cgit y enviar parches por correo electrónico
Qué papel cumple Tangled
- Tangled usa AT para el Authenticated Transfer de los eventos alrededor del código
- Se usa para transmitir eventos como issues y pull requests
- También maneja funciones sociales como la línea de tiempo de eventos, follows y stars
- También se agregarán pronto los vouches
- AT también se usa para invitar colaboradores y compartir claves públicas SSH, mientras que el resto sigue usando git tal como está
- El código abierto necesita salir del monocultivo de GitHub y, al mismo tiempo, mantener el carácter social y divertido de la colaboración en código
- tangled alpha
- docs
- source
- discord
- bluesky
- twitter (x)
- feed
1 comentarios
Comentarios en Hacker News
No tengo muy claro cuánto mejor sería esto que Mastodon
Hay una capa de hosting independiente de la app y cualquiera puede alojar sus propios datos, mientras que las apps agregan y muestran los datos de todos los hosts
Por eso ni siquiera existe el concepto de defederation al estilo Mastodon
Si quieres profundizar, puedes ver https://overreacted.io/open-social/ y https://overreacted.io/a-social-filesystem/
Las cuentas se alojan en un PDS y el registro también va ahí, pero lo que ves en la app lo entrega un AppView que reúne datos de varios PDS
Así que, sin importar en qué PDS estés, la experiencia en la app se siente como un servicio centralizado, y también puede haber varios AppView o incluso puedes alojar uno tú mismo
Sí me hace pensar un poco el costo de tener una descubribilidad prácticamente global como ahora, pero aun así cuesta verlo simplemente como otro Mastodon
También puedes no alinearte con ninguno, o irte por el que tú creas que tiene razón
Puede que esté sesgado porque uso bastante activamente el lado de atprotocol, pero de verdad estoy muy satisfecho con Tangled
Es lo más cercano a la alternativa a GitHub que yo quería, y aunque tiene funciones más simples, durante el último año fue mi servicio social/git principal para proyectos personales de código abierto
Mi cuenta es https://tangled.org/did:plc:rnpkyqnmsw4ipey6eotbdnnf
Me gusta que continúa el grafo social que ya conocía en Bluesky, así que puedo relacionar de forma intuitiva a las personas detrás de commits, PR e issues, y además iniciar sesión es cómodo porque funciona igual que otros servicios de atproto
Últimamente también añadieron soporte integrado para sitios estáticos, así que está muy bien para alojar directamente desde el repo un sitio web del lado del cliente o un
index.htmlsimpleSpindles cumple el papel de sistema de build/acciones, y aunque no soy fan de Nix, para lo que necesitaba me funcionó bastante bien
La open API también está muy buena, así que pude hacer fácilmente representaciones de información usando estándares basados en atproto, crear bots y agregar algunas funciones a npmx.dev
Puedes operar tú mismo un knot (servidor git) y un runner (Spindles), o usar los alojados, pero lo importante es que la parte social está desacoplada, así que aunque el servidor git esté aparte, las conversaciones de issues y PR siguen en una capa social compartida
No es perfecto, y el rótulo alpha en la barra de navegación no está ahí por nada, pero es muy probable que lo siga usando para trabajo de código abierto
Todavía no sé bien si ese temor está justificado
El tono de los comentarios es bastante negativo, pero aunque yo también desconfío del capital de VC, creo que hay que fomentar la competencia en este espacio
A estas alturas, arrancar algo así con bootstrap parece muy difícil o prácticamente imposible, y sí, también es cierto que salió muy bien sincronizado con los posts críticos con GitHub que estaban ayer arriba en HN, pero aun así quiero apoyar este tipo de intentos
Ojalá logre establecerse a una escala significativa
Solo con el título me había entusiasmado, pero en cuanto supe que había financiamiento de VC, salió inmediatamente de mi lista de opciones
Si voy a poner mi proyecto querido, que ni siquiera me da dinero, en una plataforma, prefiero elegir una donde la probabilidad de un rug pull dentro de unos 5 años sea baja
Un proyecto de VC tiene que devolver la inversión, así que creo que tarde o temprano el rug pull llegará de una forma u otra
Por eso, por ahora prefiero usar servicios como cliente de pago, o servicios tipo cooperativa donde pago una cuota y tengo voto en las decisiones
Por eso, como usuario, uno debería conocer esa posibilidad desde el principio
No me gustan mucho los servicios que venden idealismo excesivo cuando esa es la realidad que se viene
Preferiría que cobraran por el servicio, o si de verdad persiguen el ideal, que empiecen como non-profit, o al menos que dejen muy claro su plan de monetización
Que sea difícil, claro, pero si además apunta a federation, ¿no debería poder construirse con una infraestructura más barata, en vez de costar lo mismo o más?
Si te da curiosidad el modelo de datos de atproto, escribí una introducción en https://overreacted.io/a-social-filesystem/
Es algo larga, pero ayuda bastante a ver con claridad el panorama completo
Fue la mejor introducción a ATProto que he visto hasta ahora
Me pregunto si tienes algún tag o lista donde estén reunidos esos textos
Yo diría que lo que hace falta no es forge federation, sino un git repo más rico en sí mismo
Fossil ya está como al 90% de eso, integrando tickets, foro y wiki como parte del repositorio, y cuando clonas también descargas todo eso y puedes verlo sin conexión
Incluso en un avión puedes dejar escrita una respuesta, y si tienes los permisos adecuados puedes sincronizarla de inmediato o después cuando vuelva la conexión
Aun así, en vez de dejar ciertos tipos de artefactos hardcodeados en el VCS, me parecería mejor meter apps dentro del repo y que esas apps decidan qué artefactos permiten, qué reglas siguen y quién puede subir o bajar qué cosa y cuándo
El forge solo tendría que ejecutar esa política y renderizarla como quiera para los usuarios web
Así, mudarse a otro forge terminaría siendo básicamente solo hacer push del repo
Últimamente estaba haciendo cosas como sistemas de tickets o agentes con flat files dentro de repos git, y ahora me está dando la idea de extender eso hasta la gestión misma del repo
Suena buenísimo
El principal problema que yo veo con una federated solution es al final el cold start
Si entras a un servidor grande, vuelves a abrazar justo el problema de centralización del que querías escapar, pero al menos obtienes una red grande desde el principio
En cambio, si montas tu propio servidor, tu red es 0, tu descubribilidad es 0, tu feed está vacío y además tienes que convencer a otros sitios de federarse contigo o de no bloquearte por ser un servidor de una sola persona
No sé si solo lo siento yo, o si entendí mal federation
Tal vez esto simplemente sea un problema específico de Mastodon
Está diseñado para que AppView centrales reúnan los servidores individuales y den una vista única y consistente, como si fuera una red centralizada
Cualquiera puede alojar un AppView
En atproto, cada servidor no funciona como una zona medio aislada
La explicación desde la perspectiva de sistemas distribuidos está muy bien en https://atproto.com/articles/atproto-for-distsys-engineers
Si un servidor grande se vuelve sospechoso por moderación, políticas, contenido o problemas técnicos, es relativamente fácil salir y hacer crecer o mudarte a otro servidor también bastante grande
Eso significa que desde el principio puedes tener un refugio con cierta reputación y escala
Ya existen forges alternativos como GitLab, Codeberg, freedesktop, Fedora o Debian, así que mientras se mantengan la visibilidad y la descubribilidad del proyecto, pueden ser refugios suficientemente seguros
Pero hace unos días vi este proyecto y pensé que este sí podría funcionar de verdad
Porque el público objetivo se superpone bastante con la gente acostumbrada al self-hosting
No necesito que toda mi red esté ahí; con que esté ese subconjunto que realmente es probable que use esto, ya me resulta suficientemente útil
El costo de un servidor frontend será bajísimo, así que parece posible operarlo casi para siempre, y los datos reales los suministran otros hosts
El hecho de que Tangled tenga respaldo de VC me suena más a presión de tener que crecer sí o sí que a estabilidad
No le veo mucho el atractivo
Incluso si es federado, si el desarrollo se detiene, me pregunto quién va a corregir bugs y mantenerlo
Es decir, quieren que todo sea completamente reproducible y que pueda self-hostearse entero con costo mínimo
El financiamiento de VC no es el objetivo, sino un medio, y según cuentan los dos fundadores indios en Europa, conseguir subsidios era poco realista porque tardaban de 4 a 12 meses o más en concretarse
VC fue la forma más rápida de armar el equipo, montar la infraestructura y acelerar el desarrollo, y dicen que se tomaron más de 6 meses para encontrar inversionistas muy alineados con sus metas
Tangled tiene varias decisiones estructurales interesantes, pero el código en sí es relativamente simple y, por lo que pude ver, no parece difícil de mantener
La mayor parte son Go modules débilmente acoplados, más HTML+CSS estático, un poco de TypeScript y Nix para la orquestación
Si no recuerdo mal, los requisitos de hardware también son muy bajos, así que a esta escala una sola persona podría alojarlo por su cuenta
De hecho, una gran parte de la carga real de infraestructura la llevan los knots, spindles, PDS de los usuarios y el ecosistema atproto en general
¿por qué hace falta VC sí o sí?, ¿por qué no patrocinio corporativo como Ladybird?
Y si los inversionistas esperan un retorno de 10x, ¿por qué debería invertir tiempo en una herramienta para desarrolladores que al final va a terminar en enshittification?
Me acordé del chiste de que hay 4 estándares y, para unificarlos en uno, se crea otro estándar, así que al final hay 5 estándares
Bromas aparte, creo que hace falta una justificación más fuerte de por qué ActivityPub no basta
Antes de volver a resolver el problema de la comunicación descentralizada de otra manera
Compararlos así es como preguntar para qué hace falta la web si ya existe el correo electrónico
ActivityPub, como el email, funciona con servidores que hacen de bandeja de entrada y se envían mensajes entre sí
En cambio, atproto, como la web, hace que los repositorios del usuario alojen los datos y que las apps los reúnan y los muestren
Esa diferencia de topología cambia también sus propiedades: en atproto puedes cambiar el hosting del usuario sin romper la experiencia de la app, y cualquiera puede crear nuevas apps a partir de los datos existentes
ActivityPub no permite eso, y al final se parece más a pequeños servicios centralizados acoplados entre sí, donde hosting y app vienen juntos y se mandan mensajes entre ellos
También existe https://gitworkshop.dev/ como alternativa a GitHub relativamente madura sobre Nostr
La idea central es que puedes subir repositorios a varios relays nostr compatibles con GRASP, y aunque un servidor se caiga, se sincroniza de forma transparente por otros lados
Así que, si eliges servidores confiables, en la práctica se acerca mucho a un 100% de disponibilidad, y tanto los repositorios como la actividad y los issues están firmados criptográficamente
Desde el nombre ya parece violar la política de marcas de git
https://git-scm.com/about/trademark
En algunos casos el navegador decía que no soportaba URL ssh o https, y en otros solo aparecía
Failed to load file treecon carga infinitaAsí que me cuesta aceptar mucho la descripción de fairly mature
Yo apoyo con fuerza la federation, pero nunca he terminado de entender bien para qué serviría una federation of forges
¿Qué datos exactamente tendrían que intercambiar los forges entre sí?
¿Por qué un forge para Blender tendría que conectarse con uno para Ubuntu?
El mayor valor que obtengo de GitHub es el single sign-on para moverme entre proyectos, y creo que incluso los forges independientes podrían ofrecer buena parte de ese valor solo con social login, sin necesitar una federación compleja entre forges
Si alojas tu propio forge, a menos que seas un nombre ya grande como Blender, nadie va a encontrar tu software
Por eso casi te ves obligado a hacer al menos mirroring en GitHub, para que tu código no se pierda en el vacío
Si se quiere evitar eso y hacer que forges más pequeños compitan como un conjunto, se necesita una red única donde el software pueda encontrarse sin importar en qué host esté, y eso es precisamente lo que busca ForgeFed
También reduce la fricción de exigir un login específico de cada forge a quienes recién quieren contribuir, aunque eso es secundario y a la vez está relacionado
GitHub solo resolvió muy bien la UI, los issues y los PR para que incluso principiantes pudieran trabajar desde una pantalla, y en ese proceso centralizó todo
La federation está más cerca de la filosofía de Git, pero eso no significa que haya que irse al extremo de una distribución tan radical que si un nodo se cae, el upstream desaparezca o ni siquiera pueda encontrarse
Git no resuelve la disponibilidad, y federation puede complementarla manteniendo la filosofía descentralizada
Hace falta una forma sencilla de encontrar proyectos de código abierto repartidos en distintos servidores
La búsqueda de proyectos en GitHub solo sirve dentro de GitHub
Y además ayudaría a que todo fuera más resilient cuando el host del proyecto desaparece, cambia sus políticas o queda bloqueado por un gobierno
Luego AppView reúne en una sola pantalla los datos de múltiples PDS
Si tangled.org termina enshittificándose, puedes seguir exactamente igual desde cualquier otro AppView, porque tangled.org no ocupa una posición privilegiada
El social login de forges independientes ayuda, pero personalmente prefiero tener una sola cuenta que administrar, y gracias al AT protocol, aunque un forge individual desaparezca, los datos siguen accesibles desde otro AppView