Forgejo: self-hosted हल्का software forge
(forgejo.org)- Forgejo उन टीमों के लिए एक self-hosted हल्का software forge है जो अपने development platform को खुद चलाना चाहते हैं, और इसका फोकस installation तथा maintenance का बोझ कम करने पर है
- इसे Codeberg e.V. के अंतर्गत एक community चलाती है, और project तथा development process दोनों free software आधारित बने रहते हैं
- यह GitHub से परिचित users के लिए migration आसान बनाता है, साथ ही platform ownership और collaboration productivity पर users का सीधा नियंत्रण रखने के लिए डिज़ाइन किया गया है
- यह भरपूर features देता है, लेकिन कम server requirements बनाए रखता है, और कहता है कि अन्य forges की तुलना में single-digit स्तर के कम resources की ज़रूरत होती है
- यह security, scalability, federation और privacy को केंद्र में रखकर distributed collaborative development को लक्ष्य बनाता है
Forgejo की स्थिति और संचालन का तरीका
- Forgejo एक self-hosted हल्का software forge है, जो आपको अपने server पर software development platform चलाने देता है
- इसका लक्ष्य installation और maintenance को आसान बनाना और management overhead कम रखना है
- आप Codeberg या अन्य public instances पर account बना सकते हैं, या इसे download करके खुद self-host भी कर सकते हैं
- इसे Codeberg e.V. के अंतर्गत एक समावेशी community संचालित करती है
- Codeberg e.V. को एक लोकतांत्रिक non-profit organization के रूप में प्रस्तुत किया गया है
- Forgejo कहता है कि यह पूरी तरह free software होने के कारण भरोसेमंद है
- product का फोकस security, scalability, federation और privacy पर है
- दूसरे software forges से इसका अंतर comparison page पर देखा जा सकता है
फीचर दिशा और भागीदारी के क्षेत्र
- Forgejo का लक्ष्य software development process पर नियंत्रण वापस पाना, projects को self-host करना, और प्रतिभागियों को मिलकर अच्छी quality का software देने पर ध्यान केंद्रित करने में मदद करना है
-
usability और operational burden
- यह simple project management को प्रमुखता देता है और collaboration तथा productivity के लिए user experience को महत्व देता है
- यह GitHub users के लिए परिचित environment देता है, ताकि वे user-owned platform पर आसानी से जा सकें
- installation और maintenance का बोझ कम करके यह बिना विशेषज्ञ तकनीकी ज्ञान के भी अपना software forge चलाने में मदद करता है
-
free software और distributed collaboration
- यह समृद्ध features देते हुए भी कम server profile बनाए रखता है
- Forgejo स्वयं और project development process दोनों में free software का उपयोग करता है
- यह distributed platform के माध्यम से collaborative software development को संभव बनाने की दिशा प्रस्तुत करता है
-
योगदान के क्षेत्र
1 टिप्पणियां
Hacker News की राय
FAQ के मुताबिक उच्चारण forˈd͡ʒe.jo है, और मिडवेस्ट अमेरिकी कानों को यह “4 Jay yo” जैसा सुनाई देता है। कहा जाता है कि Esperanto में इसका मतलब Forge है
यह Gitea का fork है, लेकिन अच्छा यह है कि इसे non-profit के रूप में चलाया जाता है और premium upsell के बिना सब कुछ free license (GPL) में है। मुझे यह भी पसंद है कि community communication Matrix और Mastodon पर होती है
लगता है Codeberg इसका इस्तेमाल करता है, और ऊपर से यह Gitea/GitHub जैसा दिखता है, जिसमें कोई दिक्कत नहीं। source code ऊपर दाईं ओर छोटे branch icon से देखा जा सकता है, और Codeberg पर hosted है। आज पता चला कि Codeberg खुद एक Forgejo instance है
https://forgejo.org/2024-02-forking-forward/
https://v10.next.forgejo.org/explore/repos
https://codeberg.org/forgejo/forgejo
मेरी समझ में, fork इसलिए बना क्योंकि Gitea ने कंपनियों के अनुरोध पर custom features बनाने वाली एक कंपनी बनाई थी, न कि इसलिए कि license पलटने जैसे बहुत संकेत थे
कहा जाता है कि Fedora Project इसी तरफ migrate कर रहा है: https://fedoramagazine.org/fedora-moves-towards-forgejo-a-unified-decision/
मुझे जिज्ञासा थी कि Forgejo, Gitea से अलग क्यों हुआ, तो खोजने पर यह फिर से ऐसा मामला लगा जहां बिना पैसे वाले free open source creators/maintainers ऊपर से, और शायद नीचे से भी, पिसते हैं
Gitea के incorporation announcement को देखें तो लगता है कि सिर्फ free open source से वे खर्च नहीं उठा पा रहे थे, और MIT license की अनुमति का फायदा उठाने वाले अमीर free riders भी थे
मुख्य बात यह हिस्सा है: “कई वर्षों तक हमने maintainers और project को support करने के लिए bounties, direct sponsorship, grants जैसे कई तरीके आजमाए। कई बेहतरीन individuals और कुछ companies बेहद उदार रहीं, लेकिन कुछ companies कुछ देशों की GDP से भी ज्यादा revenue कमाते हुए भी Gitea को अपने core products में इस्तेमाल करती थीं और improvements वापस नहीं देती थीं”
Bruce Perens मुझे खास पसंद नहीं हैं, लेकिन उनका यह कहना समस्या पर बिल्कुल उंगली रखता है: “हमारे पास एक शानदार corporate welfare program है, और users दुनिया की सबसे अमीर companies हैं। इसके उलट, अगर developers उन companies में काम नहीं करते, तो उन्हें लगभग कोई compensation नहीं मिलता”
दूसरी तरफ, जब founders ने company बनाई तो community ने विरोध किया; कहा जाता है कि समस्या company बनाने से ज्यादा इस बात से थी कि उस company के पास domain और trademark थे। देखने में यह छोटी वजह लगती है, लेकिन अंदर की details नहीं पता
कुल मिलाकर, hobby developers और FAANG के बाहर यह FOSS के fail होने का case #187 जैसा दिखता है
Free software मूल रूप से एक ethical movement था, और उसे revenue source को प्राथमिकता देने की जरूरत नहीं थी। क्योंकि लक्ष्य sustainable development नहीं, बल्कि user freedom था। “users को software से अपनी इच्छा का काम करने की freedom होनी चाहिए” इस बात में कहीं भी यह नहीं है कि “और उस ethical goal के लिए काम करने वाले कुछ developers को salary भी मिलनी चाहिए”
OSI के अपने इतिहास के अनुसार, किसी समय लोग यह सोचने लगे कि open development model business के लिए भी intrinsically अच्छा है, Netscape जुड़ गया, और कुछ लोगों ने मिलकर free software को open source के रूप में rebrand कर दिया
http://web.archive.org/web/20071115150105/https://opensource.org/history/
FOSS शब्द मुझे American-style corporate Buddhism जैसा लगता है। जैसे mindfulness और meditation को उनके मूल गहरे धार्मिक context से अलग करके self-improvement program बना दिया गया, वैसे ही यह भी ऐसा रूप बन गया जिसे मूल practitioners पहचानना मुश्किल समझें। Free software sustainable development के बारे में नहीं था, बल्कि user freedom नाम की सही चीज करने के बारे में था, और बाकी सब उस उद्देश्य के साधन थे। लेकिन किसी बिंदु पर साधन ही उद्देश्य बन गया, और लोग हैरान होने लगे कि FOSS अपने आप costs क्यों नहीं उठाता
जिसने trend सही पढ़ा वह GitLab है। उसने open source तरीके से product देते हुए भी operating costs निकालने का balance point ढूंढ लिया, और trust तथा revenue दोनों हासिल किए, तो यह अच्छा किया
अगर open source work से आजीविका कमानी है, तो उसे business की तरह चलाना होगा और उचित business mechanisms इस्तेमाल करने होंगे। नहीं तो अपनी मेहनत कभी न कभी खुद अपने खिलाफ exploitation जैसी बन सकती है। मैं malicious intent की बात नहीं कर रहा, लेकिन fairness balance का मामला है, और अगर आपकी मेहनत आपको सही treatment नहीं दिला पाती, तो वह भी unfair है
License में अतिरिक्त copyleft conditions डालने से इनकार करते हुए, अंत में companies से यह उम्मीद करना कि वे goodwill से ऐसा बर्ताव करें मानो वे conditions मौजूद हों, समझना मुश्किल है
Google जैसी companies permissive licenses पसंद करती हैं, और toybox जैसे common components के MIT/BSD license alternatives को sponsor तक करती हैं
Forgejo v9 और उसके बाद की versions वास्तव में GPL license वाली लगती हैं
Big tech वाली horror story open source projects के license पलटने को justify करने में काम आती है, लेकिन यहां फिट नहीं बैठती। आम तौर पर भी यह बहुत ठीक नहीं लगती, लेकिन इस case में तो maintainers ने खुद भी ऐसा कुछ कहा हो, ऐसा नहीं दिखता
MongoDB, ElasticSearch, Redis जैसे projects open source होने की वजह से popular हुए, और free से compete करना कठिन होने के कारण संभव है कि वर्षों तक competition भी सीमित रहा। फिर बाद में उन्होंने users से मुंह मोड़ लिया। अगर MongoDB 1.0 commercial product होता, तो कोई उसे इस्तेमाल नहीं करता; इसलिए उन्होंने जो पैसा कमाया वह भी शुरू से open source होने की वजह से ही पैदा हुआ
Forgejo की दिलचस्प बात यह है कि forge federation पर काम चल रहा है
https://codeberg.org/forgejo/forgejo/issues/59#issuecomment-1652830
आदर्श दुनिया में GitHub और GitLab भी federation सपोर्ट करते, लेकिन शायद ऐसा नहीं होगा
इसी problem space में विकल्प के तौर पर P2P तरीका अपनाने वाला https://radicle.xyz/ भी है
Forgejo instances के बीच उपयोगी federation सिर्फ OIDC और कुछ webhooks से भी काफी हद तक हल हो सकती है। जैसे instances के बीच collaboration, fork, pull request आदि। Forgejo और Mastodon के बीच federation की जरूरत क्यों है, यह समझ नहीं आता, और उसका मतलब क्या होगा यह भी अस्पष्ट है
पहले 2023 तक annual progress report भी आती थी, लेकिन वह website भी अब accessible नहीं लगती: https://web.archive.org/web/20240830030315/https://forgefriends.org/blog/2023/06/21/2023-06-state-forge-federation/
फिर भी monthly update में federation का आखिरी उल्लेख अक्टूबर में हुआ था, और तब जोर देकर कहा गया था कि federation Forgejo project की “सबसे ऊंची प्राथमिकता” थी और आगे भी रहेगी
https://forgejo.org/2024-10-monthly-update/#:~:text=Forgejo%20federation%20is%20and%20will%20always%20be%20the%20highest%20priority%20of%20the%20Forgejo%20project
Git repository को network पर expose करना HTTP या SSH से बहुत आसान है, और यह email-based code review flow भी support करता है। हालांकि git-appraise की तरह review को repository के अंदर store करने वाला तरीका मुझे काफी पसंद है
https://github.com/google/git-appraise
अगर CI/CD pipeline को push से trigger किया जा सके तो उसे भी सरलता से integrate किया जा सकता है। लेकिन हमने Git के ऊपर centralized UI बना दिए हैं, और अब उन्हीं UI को आपस में integrate करने की कोशिश कर रहे हैं। यह देखते हुए कि Git पहले से decentralized है, यह उल्टी दिशा में जाने जैसा लगता है
संबंधित जानकारी: https://gitlab.com/groups/gitlab-org/-/epics/11247#why
फिलहाल मैं self-hosted Forgejo, github.com, और gitlab.com में mirror कर रहा हूं, और Forgejo instance जरूरी infrastructure से ज्यादा self-hosting hobby का हिस्सा है
GitLab Cells भी उसी दिशा में जा सकता है, और design document में federation का उल्लेख है
https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/
कई सालों में Gogs से Gitea और फिर Forgejo पर आया हूं, और यह वाकई शानदार software है
90% मामलों में निजी Git repositories को SSH server पर रखना ही काफी है। अगर मकसद सिर्फ Chezmoi repository को ऐसी जगह रखना है जहां से सभी computers पर access हो सके, तो Forgejo वाली family बहुत कुछ extra नहीं जोड़ती
लेकिन 10% मामलों में, यानी जब कुछ दोस्तों के साथ code privately share करना हो, यह बेहतरीन है। GitHub paid plan से free बेहतर है, और अगर वैसे भी उन 10% projects के लिए इसे चलाना ही है, तो बाकी के लिए भी इसे अपनी निजी canonical Git repository की तरह इस्तेमाल करना अच्छा है
इसमें Kanban और code editor भी हैं
Gitea पर बदलने से राहत मिली, और जब Fedora ने अपने repository server के लिए Forgejo चुना तो Forgejo पर ध्यान गया
मेरी जरूरतें सरल हैं: notes और source code के लिए एक central file repository जैसा। Gitea 1.21 से Forgejo 9 पर migration test किया और कोई friction नहीं आया
गंभीरता से migration पर विचार कर रहा हूं, लेकिन long term में कौन सा बेहतर support पाएगा और free use के लिए ज्यादा उपयुक्त रहेगा, यह अभी सोच रहा हूं
सच कहूं तो अगला ठिकाना शायद CI/CD के लिए Forgejo Actions(https://forgejo.org/docs/next/user/actions/) के साथ Forgejo होगा, या फिर पूरी तरह गहराई में जाकर Jenkins पर वापस लौटना होगा
tagline बहुत explanatory नहीं है। main page को एक-दो बार scroll करने के बाद ही समझ आया कि इसका मकसद क्या है, यानी self-hosted GitHub alternative
software में “forge” शब्द के कई मतलब निकाले जा सकते हैं, इसलिए इसे शुरुआत में ही ज्यादा साफ कहना बेहतर होगा
technically Redmine जैसे उस दौर के systems को भी forge कहा जा सकता था, लेकिन उसके बाद शायद यह term जम गई
संदर्भ: https://en.wikipedia.org/wiki/Forge_(software)
“forge” सुनकर ऐसा tool याद आता है जो raw material को finished product में बदलता है। जैसे लोहे को horseshoe में बदलने वाली blacksmith की workshop
software analogy में text source code को executable binary में बदलना, यानी compiler या interpreter, ज्यादा सही लगता है
GitHub और SourceForge source code को एक जगह से दूसरी जगह ले जाते हैं। analogy को जबरदस्ती बढ़ाएं तो यह store और delivery service के combination जैसा है। source code move होता है, transform नहीं होता
इसलिए पुराने C/C++ developer के नजरिए से forge का self-hosted Git server के लिए term होना काफी अजीब लगता है
GitLab CE को चलाते रहने की कोशिश में CPU और memory ज्यादा खाने की समस्या से जूझने के बाद Forgejo पर आया, और निराश नहीं हुआ
यह rootless container में चलता है और memory व CPU लगभग नहीं के बराबर इस्तेमाल करता है। updates भी सिर्फ एक बार
podman pullसे आसानी से हो जाते हैंअब Actions भी चला रहा हूं, ताकि Jekyll आदि run करके static websites को लगातार update रख सकूं
अपनी खुद की forge होना अच्छा लगता है, जिसमें GitHub, GitLab जैसी दूसरी forges से repositories और issues आदि import किए जा सकते हैं, और आगे आने वाले ActivityPub-based बड़े Fediverse integration का भी इंतजार है
decentralized होते हुए भी connected code hosting approach हमेशा से चाहिए थी, और अब लगता है कि हम लगभग वहां पहुंच गए हैं
कई सालों में GitHub → self-hosted GitLab → Gitea → Forgejo पर आया हूं, और कोई पछतावा नहीं है
Forgejo शानदार है और federation पूरा होने पर और भी बेहतर लगेगा। कई instances में फैले distributed forks और pull requests संभव हो जाएं तो self-hosted solutions की fragmentation problem हल हो जाएगी
जब Gitea ने VC funding के सहारे एक for-profit branch बनाई, तो उस पर भरोसा खो गया, और इसी वजह से Forgejo fork हुआ
GitLab से जो एकमात्र चीज छूटी, वह built-in CI/CD platform था। लेकिन pipelines को Drone CI पर ले जाकर webhooks से trigger कर पाया। हालांकि GitLab pipelines कितनी complex हैं, इसके हिसाब से यह हमेशा possible option नहीं हो सकता
किसी भी हालत में, कुछ छोटे projects के लिए 5GB RAM खाने वाला GitLab server host करना मुझे पसंद नहीं था। Forgejo peak पर भी करीब 500MB RAM इस्तेमाल करता है
यह जानने की उत्सुकता है कि code review experience कैसा है। अंदाज़ा है कि यह Gitea जैसा ही होगा, लेकिन दोनों में से कोई भी इस्तेमाल नहीं किया है
हाल में GitHub पर काफ़ी गंभीर code review किया था, और code review tool के तौर पर वह खिलौना version के करीब लगा। जब तक पूरे source control model को उसी tool के हिसाब से design न किया जाए, गंभीर engineering work के लिए इसे इस्तेमाल करना मुश्किल लगा; और ऐसा करने पर history management को प्रभावित करने वाले दूसरे पहलुओं की बलि देनी पड़ती है
मुख्य रूप से Gerrit से परिचित हूँ; उसका basic model समझदारी भरा है, लेकिन कई rough edges हैं और performance issues भी हैं
अचानक सोचने पर लगता है कि मैंने शायद कभी ऐसा review tool इस्तेमाल नहीं किया जो सच में पसंद आया हो। लगता है क्या industry बस proper tools के बिना ही काम चला रही है
याददाश्त के मुताबिक GitLab वाला GitHub से थोड़ा बेहतर था, लेकिन details याद नहीं हैं
“Forgejo क्या है?” इस सवाल का जवाब शायद इस तरह है: “Forgejo self-host किया जा सकने वाला हल्का software forge है। इसे install करना आसान है, maintenance कम है, और यह जो करना चाहिए वह करता है”
बेशक हर चीज़ को English के हिसाब से ढालना ज़रूरी नहीं है, और कहा जाता है कि यह Esperanto है, लेकिन site के बाकी हिस्से वैसे नहीं हैं, इसलिए ज़्यादातर लोग इसे उस तरह नहीं समझेंगे