फोर्ज की फेडरेशन की ज़रूरत
(blog.tangled.org)- open source collaboration को ऐसे ढांचे की बजाय, जो किसी एक प्रदाता पर बहुत अधिक निर्भर हो, distributed protocols के ऐसे संयोजन पर आधारित होना चाहिए जो code transfer और communication की ज़िम्मेदारियाँ अलग-अलग संभालें
- code collaboration मूल रूप से git और email के संयोजन से होती थी, बाद में यह git और GitHub website के संयोजन में बदल गई, और अब ForgeFed, git और ActivityPub के संयोजन की ओर, जबकि Tangled, git और AT protocol के संयोजन की ओर बढ़ रहा है
- Tangled, git servers के बीच events को federate करता है, और हर server को knot कहता है; server अलग होने पर भी repository collaboration, cross-server fork, और किसी दूसरे server पर मौजूद repository के लिए pull request को support करता है
- code के आसपास होने वाले Authenticated Transfer के लिए यह AT का उपयोग करता है, और issues, pull requests, event timeline, follows, stars को साथ संभालता है; collaborator invites और SSH public key sharing में भी इसका उपयोग होता है
- यह अपने cgit instance को सीधे चलाने और email से patch भेजने वाले flow जैसा महसूस होता है, लेकिन साथ ही GitHub monoculture से बाहर निकलकर collaboration की सामाजिकता और मज़ा बनाए रखने की दिशा भी दिखाता है
फोर्ज फेडरेशन की ज़रूरत
- open source collaboration का बड़ा हिस्सा किसी एक प्रदाता पर निर्भर होना वांछनीय नहीं है, और इसके पीछे यह दृष्टिकोण है कि centralized systems की तुलना में distributed protocols अधिक समय तक टिकते हैं
- code collaboration हमेशा दो protocols के साथ मिलकर चलती रही है; एक code transfer के लिए और दूसरा communication के लिए
- शुरुआती flow git और email का संयोजन था
- बाद में यह git और GitHub website के संयोजन में बदल गया
- ForgeFed, git और ActivityPub के संयोजन की संभावना पर काम करता है
- Tangled, git और AT protocol के संयोजन पर बनाया जा रहा है
- Tangled, git servers के बीच events को federate करता है, और हर server को knot कहता है
- repository किसी भी server पर हो, collaboration संभव है
- servers के पार fork को support करता है
- अपने server की repository में push करने के बाद, किसी पूरी तरह अलग server पर hosted repository के लिए pull request खोली जा सकती है
- यह तरीका अपने cgit instance को सीधे चलाने और email से patch भेजने वाले flow से कई मायनों में मिलता-जुलता है
Tangled की भूमिका
- Tangled, code के आसपास होने वाले events के Authenticated Transfer के लिए AT का उपयोग करता है
- इसका उपयोग issues और pull requests जैसे events को पहुँचाने में होता है
- event timeline, follows, stars जैसे social features भी साथ संभाले जाते हैं
- vouches भी जल्द जोड़े जाने वाले हैं
- AT का उपयोग collaborator invites और SSH public key sharing के लिए भी होता है, जबकि बाकी हिस्सों में मौजूदा git को ही वैसे का वैसा उपयोग किया जाता है
- open source को GitHub जैसी monoculture से बाहर निकलने की ज़रूरत है, और साथ ही code collaboration की सामाजिकता और मज़ा भी बनाए रखना चाहिए
- tangled alpha
- docs
- source
- discord
- bluesky
- twitter (x)
- feed
1 टिप्पणियां
Hacker News की रायें
यह Mastodon से कितना बेहतर होगा, इस पर मुझे ज़्यादा भरोसा नहीं है
इसमें app से अलग एक hosting layer होती है, और कोई भी अपना data खुद host कर सकता है, जबकि apps उन सभी hosts से data इकट्ठा करके दिखाती हैं
इसलिए Mastodon-शैली की defederation जैसी कोई अवधारणा ही नहीं है
और जानना हो तो https://overreacted.io/open-social/ और https://overreacted.io/a-social-filesystem/ देख सकते हैं
accounts PDS पर host होते हैं और records भी वहीं जाते हैं, लेकिन app में दिखने वाला content कई PDS के data को जोड़ने वाले AppView से आता है
इसलिए आप किसी भी PDS पर हों, app का अनुभव एक centralized service जैसा लगता है, और कई AppView हो सकते हैं, जिन्हें आप खुद भी host कर सकते हैं
अभी जैसी लगभग global discoverability मिलती है, उसकी लागत पर सोचना चाहिए, लेकिन इसे बस एक और Mastodon कहना ठीक नहीं होगा
चाहे तो कोई पक्ष ही मत चुनो, या फिर जिस दिशा को खुद सही समझो उसी तरफ़ जाओ
मैं atprotocol पक्ष में काफ़ी सक्रिय हूँ, इसलिए थोड़ा पक्षपाती हो सकता हूँ, लेकिन Tangled का इस्तेमाल मुझे सच में बहुत संतोषजनक लगा है
यह GitHub के विकल्प के रूप में मेरी चाहत के सबसे करीब है; features ज़्यादा सरल हैं, लेकिन पिछले 1 साल से यह मेरे personal open source projects के लिए मुख्य social/git service रही है
मेरा account है https://tangled.org/did:plc:rnpkyqnmsw4ipey6eotbdnnf
Bluesky से मिला social graph यहाँ भी जारी रहता है, इसलिए commits, PRs और issues के पीछे के लोगों को सहज रूप से जोड़कर देख पाना अच्छा लगता है, और login भी दूसरी atproto services जैसा ही है, इसलिए सुविधाजनक है
हाल ही में built-in static site support भी आया है, इसलिए client-side websites या साधारण index.html को repo से सीधे host करना आसान हो गया है
Spindles build system/actions की भूमिका निभाता है; मैं Nix का बड़ा fan नहीं हूँ, फिर भी मेरी ज़रूरतों के लिए यह काफ़ी ठीक बैठा
open API भी अच्छा है, इसलिए atproto-आधारित standards का उपयोग करके information rendering आसानी से बना सका, bots भी बनाए और npmx.dev में कुछ features भी जोड़े
आप खुद knot (git server) और runner (Spindles) चला सकते हैं या hosted version इस्तेमाल कर सकते हैं, लेकिन मुख्य बात यह है कि social features अलग किए गए हैं, इसलिए git server अलग होने पर भी issues या PR conversations shared social layer पर जारी रहती हैं
यह perfect नहीं है, और navbar में लगा alpha टैग यूँ ही नहीं है, लेकिन open source काम के लिए मैं इसे आगे भी इस्तेमाल करता रहूँगा, इसकी संभावना काफ़ी है
यह चिंता कितनी जायज़ है, अभी कहना मुश्किल है
comments का माहौल काफ़ी नकारात्मक है, लेकिन मैं खुद भी VC funding से सावधान रहने वालों में हूँ और फिर भी मानता हूँ कि इस क्षेत्र में competition को बढ़ावा देना चाहिए
इस समय ऐसी चीज़ को bootstrap करके शुरू करना बहुत मुश्किल, बल्कि लगभग असंभव लगता है; और यह भी सही है कि कल HN के top पर आए GitHub-विरोधी पोस्ट्स के साथ timing अच्छी बैठी, फिर भी ऐसी कोशिशों का समर्थन करने का मन है
उम्मीद है कि यह meaningful scale तक पहुँचे
सिर्फ़ title देखकर उत्साहित हुआ था, लेकिन जैसे ही पता चला कि इसमें VC funding है, यह तुरंत मेरी consideration list से बाहर हो गया
अगर मैं अपने उस प्रिय project को, जो अभी कोई कमाई भी नहीं करता, किसी platform पर रखूँगा, तो मैं ऐसी जगह चुनना चाहूँगा जहाँ 5 साल बाद rug pull होने की संभावना कम हो
VC projects को investment वापस करना ही होता है, इसलिए मुझे लगता है कि आख़िरकार किसी न किसी रूप में rug pull आएगा
इसलिए अभी मैं या तो paying customer बनकर services लेना पसंद करता हूँ, या फिर ऐसे cooperative-style models जहाँ सदस्य fee दें और decision-making पर vote का अधिकार भी हो
इसलिए users के लिए इस संभावना को पहले से जानना ज़रूरी है
जब आने वाली हक़ीक़त ऐसी हो, तब ज़रूरत से ज़्यादा idealism दिखाने वाली services मुझे पसंद नहीं
बेहतर है कि service सीधे fee ले, या अगर सच में आदर्शवाद है तो non-profit के रूप में शुरू हो, या कम-से-कम monetization plan साफ़-साफ़ बताए
मुश्किल होना तो स्वाभाविक है, लेकिन खासकर अगर federation लक्ष्य है, तो क्या इसे उतने ही या उससे भी ज़्यादा cost वाले नहीं, बल्कि सस्ते infrastructure पर बन पाना चाहिए?
अगर atproto data model में दिलचस्पी है, तो https://overreacted.io/a-social-filesystem/ में मैंने एक introductory post लिखी है
थोड़ी लंबी है, लेकिन पूरा picture काफ़ी साफ़ कर देती है
अब तक देखी गई ATProto introductory posts में यह सबसे अच्छी थी
क्या इन लेखों को एक जगह इकट्ठा करने वाला कोई tag या list भी है?
मेरी नज़र में ज़रूरत forge federation की नहीं, बल्कि और समृद्ध git repo की है
Fossil लगभग 90% वहाँ तक पहुँच चुका है, क्योंकि यह tickets, forum और wiki को repository के हिस्से के रूप में जोड़ता है; और जब आप clone करते हैं, तो वे सब भी साथ आ जाते हैं ताकि उन्हें offline भी देख सकें
आप विमान में भी reply लिख सकते हैं और सही permissions हों तो तुरंत, या बाद में connection लौटने पर sync कर सकते हैं
लेकिन VCS में किसी खास artifact type को hardcode करने के बजाय, बेहतर दिशा यह लगती है कि repo के अंदर app रखी जाए और वही तय करे कि कौन-से artifacts मान्य होंगे, कौन-से rules लागू होंगे, और कौन कब upload/download कर सकता है
फिर forge बस उस policy को execute करे और web users के लिए मनचाहे तरीके से render कर दे
ऐसा होने पर किसी दूसरे forge में जाना भी बस repo push करने भर का काम रह जाएगा
मैं इन दिनों ticket systems और agents जैसी चीज़ें git repo के अंदर flat files के रूप में बना रहा था, और अब लग रहा है कि इसे repo management तक भी बढ़ाना चाहिए
यह बहुत शानदार हो सकता है
मेरे हिसाब से federated solution की मुख्य समस्या आखिरकार cold start है
अगर आप किसी बड़े existing server में जाते हैं, तो आप उसी centralization को फिर गले लगा लेते हैं जिससे निकलना चाहते थे, लेकिन बदले में शुरू से बड़ा network मिल जाता है
दूसरी तरफ़ अगर आप अपना server खुद चलाते हैं, तो network शून्य, discoverability शून्य, feed खाली, और ऊपर से दूसरे sites को मनाना पड़ता है कि वे federate करें या सिर्फ़ one-person server होने की वजह से block न करें
पता नहीं सिर्फ़ मुझे ऐसा लगता है, या मैं federation को गलत समझ रहा हूँ
शायद यह बस Mastodon की खास समस्या हो
इसे इस तरह design किया गया है कि अलग-अलग servers को central AppView इकट्ठा करके centralized network जैसी consistent single view दें
AppView कोई भी host कर सकता है
atproto में हर server आधा-अधूरा अलग-थलग इलाका बनकर काम नहीं करता
distributed systems नज़रिए से इसकी अच्छी व्याख्या https://atproto.com/articles/atproto-for-distsys-engineers में है
अगर कोई बड़ा server moderation, policy, content या technical समस्याओं के कारण संदिग्ध हो जाए, तो वहाँ से निकलकर किसी दूसरे काफ़ी बड़े server को बढ़ाना या वहाँ migrate करना अपेक्षाकृत आसान हो सकता है
यानी शुरू से ही कुछ reputation और scale वाला refuge बनाया जा सकता है
GitLab, Codeberg, freedesktop, Fedora, Debian जैसे alternative forges पहले से मौजूद हैं, इसलिए अगर project visibility और discoverability बनी रहे तो ये काफ़ी सुरक्षित शरणस्थल हो सकते हैं
लेकिन कुछ दिन पहले इस project को देखकर लगा कि यह सच में काम कर सकता है
क्योंकि इसके target users और self-hosting के अभ्यस्त लोगों के बीच काफ़ी overlap है
मेरी पूरी network का यहाँ आना ज़रूरी नहीं; वास्तव में उस subset का आना ही काफ़ी उपयोगी होगा जिसके यहाँ आने की संभावना सच में है
frontend server की लागत बहुत कम होगी, इसलिए यह लगभग स्थायी रूप से चल सकने जैसा लगता है, और असली data दूसरे hosts उपलब्ध कराते हैं
Tangled को VC support मिलना मुझे stability से ज़्यादा हर हाल में बढ़ना ही होगा वाले दबाव जैसा लगता है
इसकी appeal समझ नहीं आती
चाहे यह federated ही क्यों न हो, अगर development रुक गया तो bugs ठीक करने और maintenance करने वाला कौन होगा?
यानी सब कुछ पूरी तरह reproducible हो और न्यूनतम लागत पर पूरा stack self-host किया जा सके
VC funding मकसद नहीं, सिर्फ़ साधन है; और यूरोप में रहने वाले दो भारतीय founders के लिए grants व्यवहारिक नहीं थे, क्योंकि उन्हें वास्तव में मिलने में 4–12 महीने या उससे ज़्यादा लग जाते
team बनाना, infrastructure खड़ा करना और development तेज़ करना — इन सबके लिए VC सबसे तेज़ रास्ता था, और उन्होंने investors के साथ goals का मज़बूत alignment सुनिश्चित करने में 6 महीने से ज़्यादा लगाए
Tangled में architecturally काफ़ी दिलचस्प choices हैं, लेकिन codebase खुद अपेक्षाकृत सरल है, और मैंने जितना देखा उससे maintenance मुश्किल नहीं लगती
ज़्यादातर हिस्सा loosely connected Go modules का है, जिसके ऊपर static HTML+CSS, थोड़ा-सा TypeScript, और orchestration के लिए Nix है
अगर मुझे सही याद है, तो hardware requirements भी बहुत छोटी हैं, इसलिए मौजूदा scale पर एक व्यक्ति भी इसे खुद host कर सकता है
असली infrastructure burden का बड़ा हिस्सा users के knots, spindles, PDS और पूरे atproto ecosystem पर होता है
आखिर VC की ज़रूरत क्यों है, और Ladybird की तरह corporate sponsorship क्यों नहीं ली जाती?
और जब investors 10x return चाहते हैं, तो मैं उस developer tool पर समय क्यों लगाऊँ जो बाद में enshittification की ओर जा सकता है?
वह मज़ाक याद आता है कि 4 standards हों और आप एक unified standard बनाने जाएँ, तो नतीजे में 5 standards हो जाते हैं
मज़ाक अपनी जगह, लेकिन मुझे लगता है कि ActivityPub क्यों पर्याप्त नहीं है, इसके लिए और मज़बूत तर्क चाहिए
इससे पहले कि decentralized communication की समस्या को फिर से किसी नए तरीके से हल करने की कोशिश की जाए
इन्हें आमने-सामने रखना कुछ वैसा है जैसे पूछना कि email मौजूद है तो web की क्या ज़रूरत है
ActivityPub में servers inbox की तरह काम करते हैं और एक-दूसरे को messages भेजते हैं
जबकि atproto में user repositories data host करती हैं, और apps उन repositories से data इकट्ठा करके दिखाती हैं
topology के इसी फ़र्क की वजह से इनके गुण भी अलग हो जाते हैं; atproto में user hosting बदलने पर भी app experience नहीं टूटता, और existing data के आधार पर कोई भी नई app बना सकता है
ActivityPub ऐसा नहीं होने देता, और अंत में यह उन छोटे centralized services जैसा बन जाता है जहाँ hosting और app आपस में जुड़े होते हैं और वे बस एक-दूसरे को messages भेजते हैं
Nostr पर चलने वाले अपेक्षाकृत mature GitHub alternatives में https://gitworkshop.dev/ भी है
इसका मुख्य विचार यह है कि repositories को कई GRASP-compatible nostr relays पर रखा जा सकता है, और अगर एक server बंद हो जाए तो दूसरे के ज़रिए transparently sync हो सकता है
इसलिए अगर आप भरोसेमंद servers चुनें, तो यह व्यावहारिक रूप से लगभग 100% uptime जैसा हो सकता है, और repositories, activity, issues वगैरह भी cryptographically signed होते हैं
नाम से ही git की trademark policy का उल्लंघन होता हुआ दिखता है
https://git-scm.com/about/trademark
कुछ में browser कहता है कि ssh या https URL support नहीं करता, और कुछ में सिर्फ़
Failed to load file treeदिखता है और endless loading चलती रहती हैइसलिए इसे fairly mature कहना मुझे ठीक नहीं लगता
मैं federation का मज़बूत समर्थक हूँ, लेकिन federation of forges का उपयोग मुझे हमेशा अस्पष्ट लगा है
आखिर forges को आपस में कौन-सा data exchange करना है?
Blender के forge को Ubuntu के forge से क्यों जुड़ना चाहिए?
GitHub से मुझे सबसे बड़ा value single login का मिलता है, जिससे projects के बीच घूमना आसान हो जाता है; मेरा मानना है कि independent forges भी बिना जटिल forge federation के सिर्फ़ social login देकर उस value का बड़ा हिस्सा दे सकते हैं
अगर आप अपना forge खुद host करते हैं, तो Blender जैसे पहले से बड़े नाम न हों तो कोई आपका software ढूँढ ही नहीं पाएगा
इसलिए code को शून्य में गुम होने से बचाने के लिए कम-से-कम GitHub mirroring लगभग अनिवार्य हो जाता है
अगर इससे बचना है और छोटे forges को एक समूह के रूप में प्रतिस्पर्धी बनाना है, तो ऐसा single network चाहिए जहाँ software किसी भी host पर हो, फिर भी मिल सके — और ForgeFed का लक्ष्य यही है
इससे नए contributors के लिए हर बार अलग forge login बनाने की friction भी घटती है; वह secondary बात है, लेकिन जुड़ी हुई है
GitHub ने UI, issues और PRs को अच्छी तरह solve करके beginners को भी screen से काम करने लायक बनाया, लेकिन उसी प्रक्रिया में centralization बढ़ा
federation, Git की philosophy के ज़्यादा करीब है, लेकिन इसका मतलब यह नहीं कि हमें इतनी extreme distribution चाहिए कि किसी node के बंद होते ही upstream गायब हो जाए या खोजा भी न जा सके
Git availability की समस्या हल नहीं करता, और federation decentralization की philosophy को बनाए रखते हुए availability को बेहतर कर सकता है
बिखरे हुए servers पर मौजूद open source projects को आसानी से ढूँढने का तरीका चाहिए
GitHub project search सिर्फ़ GitHub के अंदर ही काम करती है
इसके अलावा project host के गायब हो जाने, policy बदल देने, या किसी सरकार द्वारा block किए जाने की स्थिति में भी चीज़ें ज़्यादा resilient हो सकती हैं
फिर AppView कई PDS के data को एक स्क्रीन पर जोड़कर दिखाता है
अगर tangled.org enshittify भी हो जाए, तो भी आप किसी दूसरे AppView से बिल्कुल वहीं से आगे बढ़ सकते हैं, और tangled.org को कोई विशेषाधिकार प्राप्त स्थिति नहीं मिलती
independent forges का social login भी मददगार है, लेकिन व्यक्तिगत रूप से मेरे लिए एक ही account संभालना बेहतर है, और AT protocol की वजह से किसी एक forge के गायब होने पर भी data दूसरे AppView के माध्यम से उपलब्ध रहता है