GitHub से Codeberg तक: मेरा अनुभव
(eldred.fr)- व्यक्तिगत परियोजनाओं और वेबसाइट को GitHub से Codeberg पर माइग्रेट करने की प्रक्रिया और परिणाम का विस्तृत विवरण
- Forgejo के “migrate from GitHub” फीचर की मदद से repositories, issues, PR, wiki और releases को पूरी तरह ट्रांसफर किया
- लिंक पुनर्निर्देशन और GitHub repository stubs को ऑटोमेशन स्क्रिप्ट से संभालकर माइग्रेशन की स्थिति को साफ़ दिखाया
- CI/CD माइग्रेशन में Codeberg के Forgejo Actions का उपयोग किया और वातावरणीय सीमाओं के अनुसार lightweight workflows तैयार किए
- वेबसाइट को git-pages और Grebedoc की मदद से बिना किसी डाउनटाइम के माइग्रेट किया, और पूरी माइग्रेशन वीकेंड के भीतर पूरी हो गई
माइग्रेशन का अवलोकन
- GitHub Pages पर होस्ट की जा रही साइट और 45 repositories को Codeberg पर माइग्रेट किया गया
- यह सिर्फ क्लिक करने से खत्म होने वाला काम नहीं था; कई चरणों में मैनुअल काम करना पड़ा
- पूरी प्रक्रिया सप्ताहांत में पूरी हुई और बिना किसी समस्या के की गई
- इस प्रक्रिया का मकसद यह दिखाना था कि अन्य डेवलपर्स भी आसानी से माइग्रेट कर सकते हैं
चरण 1: रिपॉज़िटरी माइग्रेशन
- Codeberg, Forgejo आधारित है और इसमें “migrate from GitHub” फीचर उपलब्ध है
- GitHub से Personal Access Token (PAT) बनाकर issues आदि metadata को साथ में लाया जा सकता है
- GitHub API के rate limit के कारण एक साथ कई repositories import करने पर failure हो सकता था
- issues, PR, wiki और release पूरी तरह माइग्रेट हुए, जिससे GitHub references की जरूरत नहीं रही
चरण 2: लिंक पुनर्निर्देशन
- लोकल repositories के अंदर के GitHub लिंक को Codeberg पते में बैच में बदलना
sedऔरfindcommands से text-based auto replace किया गया
- प्रत्येक repository का
git remoteURL बदलकर Codeberg किया और सभी repositories में push किया
चरण 3: GitHub repository stubs का हैंडलिंग
- GitHub repositories में migration नोटिस वाला README जोड़ा और description तथा homepage लिंक Codeberg पर बदल दिए
- कई repositories पर बैच में लागू करने के लिए automation script लिखी
gh repo archivecommand से repositories को archive किया गया
चरण 4: CI/CD माइग्रेशन
- Codeberg के CI दस्तावेज़ों में energy consumption को न्यूनतम रखने का सिद्धांत बताया गया है
- इसलिए केवल जरूरी परियोजनाओं (वेबसाइट, docs build आदि) के लिए ही CI रखा
- Codeberg में Woodpecker और Forgejo Actions दो CI विकल्प हैं
- GitHub Actions के समान होने के कारण Forgejo Actions चुना
- मुख्य अंतर
- अधिकांश Actions सीधे काम करते हैं
- केवल Linux runners उपलब्ध हैं, macOS और Windows उपलब्ध नहीं
- pre-installed software कम है और resources सीमित हैं
- lazy runners का उपयोग करने पर load balancing और eco-friendly execution संभव होता है
- CI performance बेहतर करने के लिए हमने LaTeX pre-installed Docker image का उपयोग किया, लेकिन version issue के कारण default Ubuntu image पर वापस आना पड़ा
चरण 5: वेबसाइट re-hosting
- GitHub Pages पर चल रही साइट को Codeberg Pages पर शिफ्ट करने की कोशिश की, लेकिन यह फीचर maintenance mode में था
- जटिलता और परफॉर्मेंस कारण अपडेट में देरी हो रही थी
- विकल्प के तौर पर git-pages और Grebedoc का उपयोग चुना
- DNS बदलने से पहले upload सपोर्ट होने से बिना डाउनटाइम के migration संभव रहा
- server-side redirection और custom headers सपोर्ट उपलब्ध था
- पुराने लिंक (
eldred.fr/fortISSimO) को बनाए रखते हुए migration पूरा हुआ
- Codeberg भविष्य में git-pages पर चरणबद्ध माइग्रेशन की योजना बना रहा है
- GitHub Pages से बेहतर satisfaction मिलने पर हमने git-pages developer Patreon support में contribute किया
समय
- रिपॉज़िटरी माइग्रेशन (1~3 चरण): आधा दिन
- CI माइग्रेशन (4 चरण): आधा दिन
- वेबसाइट माइग्रेशन (5 चरण): technical debt साफ़ करने सहित कई दिन
- कुल मिलाकर सप्ताहांत के भीतर पूरा, अपेक्षा से कहीं सरल कार्य
माइग्रेशन के बाद
- वेबसाइट पूरी तरह ठीक चल रही है, GitHub पर सिर्फ़ master शाखा ही बाकी रखा गया
- स्थायी लिंक (permalink) अभी भी काम कर रहे हैं
- GitHub repository हटाने का काम redirection न होने के कारण अभी hold पर है
- GitHub account को अन्य projects में योगदान (contribution) के लिए बनाए रखा गया है
- Codeberg पर migration होने से contributors कम हो सकते हैं, लेकिन कुछ users पहले ही Codeberg account बना कर लगातार योगदान दे रहे हैं
आभार
- Catherine ‘whitequark’ : git-pages और Grebedoc का संचालन
- SERVFAIL network टीम: DNS उपलब्ध कराने के लिए
- Codeberg तथा Forgejo contributors: migration foundation उपलब्ध कराने के लिए
1 टिप्पणियां
Hacker News राय
इस migration कहानी में जो बात सबसे ज़्यादा ध्यान खींचती है, वह तकनीकी हिस्सा नहीं है, बल्कि यह है कि ‘feature parity’ असली बाधा नहीं है
Codeberg रोज़मर्रा के workflow के लिए काफ़ी है, लेकिन GitHub ने जो network effect और inertia बनाया है, उसकी कमी है
यह Bluesky जैसे protocol पर आधारित है, ताकि Git कहीं भी host हो, identity और connectivity बनी रहे
पहले निश्चित रूप से देखे गए issue को फिर से ढूँढना मुश्किल होता है। performance हाल में ठीक हुई है, लेकिन अगर किसी project में सैकड़ों issue हों, तो पहले test migration करना बेहतर होगा
CI/CD जैसी चीज़ें पूरी टीम को जानना ज़रूरी नहीं, एक व्यक्ति भी अच्छी तरह जानता हो तो काफ़ी है
Codeberg, Gitea का fork है, और Gitea, Gogs का fork है
दोनों fork तकनीकी कारणों से ज़्यादा दार्शनिक कारणों से शुरू हुए थे, और Gogs बनाने वाले Joe Chen का इसमें बड़ा योगदान रहा
Gitea को इसलिए fork किया गया क्योंकि एक developer ने repository permissions पर एकाधिकार कर लिया था, और Forgejo, Gitea के trademark को वापस लेने के लिए बनाया गया fork है
मैं जानना चाहता हूँ कि क्या किसी ने Codeberg और F-Droid को साथ में इस्तेमाल किया है
यह जानना है कि क्या GitHub की तरह यह अपने-आप release detect कर सकता है
लगता है कि अब threshold effect तक पहुँच गया है
पिछले कुछ दिनों में मैंने कई project को GitHub से दूर जाते देखा है
सोच रहा हूँ कि क्या कोई घटना या trend चल रहा है
open source community की नाराज़गी जमा होती गई और शायद अब सीमा तक पहुँच गई है
Microsoft की कुल मिलाकर AI और advertising से जुड़ी controversy और Windows 10 support ख़त्म होना भी असर डालते दिखते हैं
यह संबंधित concept पहली बार इस Twitter thread में रखा गया था
Rails-आधारित पुराने दिनों में यह ज़्यादा अच्छा लगता था
हो सकता है कि यह वास्तविकता से ज़्यादा ध्यान खींचने वाली अस्थायी घटना हो
मैं जानना चाहता हूँ कि GitHub के विकल्पों में छोटी टीमों या solo developers के लिए क्या उपयुक्त है
Codeberg FOSS-केंद्रित है, इसलिए commercial use के लिए शायद उपयुक्त नहीं लगता
GitLab में बहुत features हैं, लेकिन उसका maintenance भारी है
इसके अलावा Gitea, Gogs, Phorge जैसी कई FOSS forge भी हैं
यह GitHub UI की नकल नहीं करता, और इसका local जैसा तेज़ immediate interface मुझे अच्छा लगता है
सिर्फ़ “Microsoft पसंद नहीं है” इस वजह से migrate करने की ज़रूरत नहीं
आख़िरकार मैंने नए project Codeberg पर डाले, और कुछ को GCP पर private mirror के रूप में बनाए रखा है
इस बारे में मैंने Ask HN thread भी पोस्ट किया था, लेकिन कोई प्रतिक्रिया नहीं मिली
eldred.fr की ब्लॉग पोस्ट को देखें तो लेखक के कारण तर्कसंगत हैं, लेकिन user के नज़रिए से महसूस होने वाला सुधार लगभग नहीं है
Codeberg इस्तेमाल करके देखा तो
उदाहरण: https://codeberg.org/dnkl/foot
README को main page पर रखना बेहतर लगता है
paid version में image customization भी संभव है
अगर बहुत अलग बनाया जाए तो उल्टा विरोध ज़्यादा होता है
GitHub login button छिपाना community-केंद्रित निर्णय है, और चाहें तो इसे PR के ज़रिए propose भी किया जा सकता है
उद्देश्य GitHub जैसे ही features रखते हुए एक ethical alternative ढूँढना था
अगर GitHub का AI scan समस्या नहीं है, तो क्या गैर-राजनीतिक कारणों से migrate करने की ज़रूरत है
मैं जानना चाहता हूँ कि क्या Codeberg मुफ़्त CI runners देता है
अनुमान है कि GitHub हर साल CI पर 100 million dollar से ज़्यादा खर्च करता है
लेकिन environmental cost का उल्लेख करना उल्टा users की भागीदारी को हतोत्साहित कर सकता है
engineers के लिए इसे performance optimization problem की तरह पेश करना ज़्यादा असरदार होगा
Codeberg ने पहले एक spam incident को “अत्यंत-दक्षिणपंथी नफ़रत अभियान” बताकर बढ़ा-चढ़ाकर पेश किया और खुद की तारीफ़ की, यह देखकर निराशा हुई
बस prevention failure स्वीकार करना काफ़ी था, लेकिन उसे राजनीतिक frame में पेश किया गया
संबंधित लिंक: issue, HN discussion, blog post
अगर इसी वजह से सम्मान खो गया, तो समस्या project में नहीं बल्कि उस नज़रिए में है
मैं भी एक समय Codeberg पर repository migrate करके फिर GitHub पर वापस आ गया था
GitHub की कई features मुझे पसंद नहीं हैं, लेकिन Codeberg में collaboration को खींच लाने की ताकत कम है
एक solo maintainer के लिए visibility और network effect बेहद ज़रूरी हैं