3 คะแนน โดย GN⁺ 2025-12-02 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • อธิบายขั้นตอนและผลลัพธ์อย่างละเอียดของ การย้ายโครงการส่วนตัวและเว็บไซต์จาก GitHub ไปยัง Codeberg
  • ใช้ฟังก์ชัน “migrate from GitHub” ของ Forgejo เพื่อย้ายรีโพซิทอรี, Issue, PR, wiki และ release ได้อย่างสมบูรณ์
  • ทำการแปลงลิงก์และจัดการ stub ของรีโพซิทอรี GitHub ด้วยสคริปต์อัตโนมัติ เพื่อระบุว่ามีการย้ายอย่างชัดเจน
  • ในการย้าย CI/CD ใช้ Forgejo Actions ของ Codeberg และออกแบบ workflow ให้มีขนาดเล็กลงให้เหมาะกับข้อจำกัดด้านสภาพแวดล้อม
  • ใช้ git-pages และ Grebedoc ย้ายเว็บไซต์แบบไม่หยุดทำงาน และเสร็จสิ้นการย้ายทั้งหมดภายในสุดสัปดาห์

ภาพรวมการย้าย

  • ย้ายเว็บไซต์ที่โฮสต์บน GitHub Pages และรีโพซิทอรี 45 แห่งไปยัง Codeberg
    • กระบวนการไม่จบแค่คลิกเดียว และต้องทำงานด้วยตัวเองหลายขั้นตอน
    • กระบวนการทั้งหมดเสร็จสิ้นภายในช่วงสุดสัปดาห์ โดยราบรื่น
  • วัตถุประสงค์คือเพื่อแสดงให้เห็นว่า นักพัฒนาอื่น ๆ ก็สามารถย้ายได้อย่างง่ายดาย

ขั้นตอนที่ 1: การย้ายรีโพซิทอรี

  • Codeberg เป็นแพลตฟอร์มที่พัฒนาบน Forgejo และมีฟังก์ชัน “migrate from GitHub”
    • สร้าง Personal Access Token (PAT) ใน GitHub เพื่อดึงข้อมูล metadata อย่างเช่น issue มาได้ด้วย
    • เนื่องจากข้อจำกัด rate limit ของ GitHub API การดึงข้อมูลหลายรีโพซิทอรีพร้อมกันอาจล้มเหลวได้
  • Issue, PR, wiki และ release ถูกย้ายมาได้ครบถ้วน ทำให้ไม่จำเป็นต้องอ้างอิง GitHub อีกต่อไป

ขั้นตอนที่ 2: การกำหนดเส้นทางลิงก์ใหม่

  • แปลงลิงก์ GitHub ภายในรีโพซิทอรีในเครื่องให้เป็นที่อยู่ของ Codeberg แบบรวมเป็นชุด
    • ใช้คำสั่ง sed และ find สำหรับการแทนที่ข้อความแบบอัตโนมัติด้วยการประมวลผลข้อความ (text-based)
  • อัปเดต git remote URL ของแต่ละรีโพซิทอรีเป็น Codeberg แล้ว push ไปยังทุกรีโพซิทอรี

ขั้นตอนที่ 3: การจัดการ stub ของรีโพซิทอรี GitHub

  • เพิ่ม README ประกาศการย้ายข้อมูลในรีโพซิทอรี GitHub และแก้คำอธิบายพร้อมลิงก์หน้าเว็บหลักไปยัง Codeberg
    • เขียนสคริปต์อัตโนมัติแล้วนำไปใช้กับรีโพซิทอรีหลายตัวพร้อมกัน
    • ใช้คำสั่ง gh repo archive เพื่อ archive repository

ขั้นตอนที่ 4: การย้าย CI/CD

  • เอกสาร CI ของ Codeberg เน้นหลักการลดการใช้พลังงานอย่างมาก
    • จึงคงไว้เฉพาะโปรเจกต์ที่จำเป็นต้องมี CI เท่านั้น (เช่น เว็บไซต์, การ build เอกสาร)
  • Codeberg รองรับระบบ CI สองแบบ คือ Woodpecker และ Forgejo Actions
    • เลือกใช้ Forgejo Actions ที่ใกล้เคียงกับ GitHub Actions มากที่สุด
  • ความแตกต่างหลัก
    • Actions ส่วนใหญ่ทำงานได้เช่นเดิม
    • มีให้เฉพาะ Linux runner เท่านั้น ไม่รองรับ macOS·Windows
    • ติดตั้งซอฟต์แวร์เริ่มต้นน้อย และทรัพยากรมีจำกัด
    • การใช้ lazy runners ช่วยให้กระจายโหลดและทำงานแบบเป็นมิตรต่อสิ่งแวดล้อมได้
  • เพื่อปรับปรุงประสิทธิภาพ CI ได้ใช้ Docker image ที่มี LaTeX ติดตั้งล่วงหน้า แต่เนื่องจากปัญหาเรื่องเวอร์ชันจึงต้องกลับไปใช้ภาพ Ubuntu พื้นฐาน

ขั้นตอนที่ 5: การย้ายโฮสต์เว็บไซต์ใหม่

  • ต้องการย้ายเว็บไซต์ที่รันอยู่บน GitHub Pages ไปยัง Codeberg Pages แต่ฟีเจอร์ดังกล่าวอยู่ในโหมด maintenance mode
    • การอัปเดตถูกเลื่อนออกไปเนื่องจากความซับซ้อนและปัญหาด้านประสิทธิภาพ
  • ทางเลือกคือการค้นพบและใช้ git-pages และ Grebedoc
    • รองรับการอัปโหลดก่อนการเปลี่ยน DNS ทำให้สามารถย้ายแบบไม่มี downtime ได้
    • รองรับ server-side redirection และ custom headers
    • ย้ายเสร็จโดยยังคงลิงก์เดิม (eldred.fr/fortISSimO)
  • Codeberg มีแผนค่อยๆ ย้ายไปใช้ git-pages ในอนาคต
  • พึงพอใจมากกว่า GitHub Pages จึงเข้าร่วมการสนับสนุนผ่าน Patreon ของผู้พัฒนา git-pages

เวลาที่ใช้

  • การย้ายรีโพซิทอรี (ขั้นตอนที่ 1~3): ครึ่งวัน
  • การย้าย CI (ขั้นตอนที่ 4): ครึ่งวัน
  • การย้ายเว็บไซต์ (ขั้นตอนที่ 5): ใช้เวลาเป็นวัน โดยรวมการจัดการ technical debt
  • โดยรวมแล้วทำเสร็จ ภายในสุดสัปดาห์ งานง่ายกว่าที่คาด

หลังการย้าย

  • เว็บไซต์ยังทำงานได้ตามปกติ ไม่มีปัญหาฟังก์ชัน ปรับขนาดสาขา master ของ GitHub เท่านั้น
    • ลิงก์ถาวร (permalink) ยังคงทำงานได้
  • การลบรีโพซิทอรี GitHub ถูกหยุดชั่วคราวเนื่องจากไม่มีการ redirect
  • บัญชี GitHub ยังคงไว้สำหรับใช้ร่วมพัฒนากับโปรเจกต์อื่น
  • การย้ายไป Codeberg อาจทำให้จำนวนผู้ร่วมมีแนวโน้มลดลง แต่มีผู้ใช้บางส่วนที่สร้างบัญชี Codeberg แล้วและยังคงร่วมพัฒนาต่อเนื่อง

ขอบคุณ

  • Catherine ‘whitequark’: การรันและดูแล git-pages และ Grebedoc
  • ทีม SERVFAIL network: การให้บริการ DNS
  • ผู้ร่วมพัฒนา Codeberg และ Forgejo: การจัดเตรียมโครงสร้างพื้นฐานเพื่อการย้าย

1 ความคิดเห็น

 
GN⁺ 2025-12-02
ความคิดเห็นจาก Hacker News
  • สิ่งที่สะดุดตาใน เรื่องการย้ายครั้งนี้ ไม่ใช่ประเด็นทางเทคนิค แต่คือประเด็นที่ว่า ‘feature parity’ ไม่ใช่อุปสรรคที่แท้จริง
    Codeberg เพียงพอสำหรับเวิร์กโฟลว์ประจำวัน แต่ยังขาด network effect และ inertia ที่ GitHub สั่งสมมา

    • โปรเจกต์อย่าง Tangled.org กำลังพยายามแก้ปัญหานี้บางส่วน
      มันถูกออกแบบบนพื้นฐานของโปรโตคอลอย่าง Bluesky เพื่อให้ อัตลักษณ์และความเชื่อมโยง ยังคงอยู่ไม่ว่า Git จะโฮสต์อยู่ที่ไหน
    • ปัญหาใหญ่ที่สุดที่ฉันเจอกับ Codeberg คือ ฟังก์ชันค้นหา issue ยังอ่อน
      หายากที่จะกลับไปหา issue ที่เคยเห็นชัดๆ มาก่อนอีกครั้ง ประสิทธิภาพช่วงหลังก็ดีขึ้นแล้ว แต่ถ้าเป็นโปรเจกต์ที่มี issue หลายร้อยรายการ ก็ควรลองทำ test migration ก่อน
    • GitHub มี เอกสารและตัวอย่าง จำนวนมาก ทำให้คนที่เพิ่งเข้าร่วมก็ปรับตัวได้ง่าย
      เรื่องอย่าง CI/CD ไม่จำเป็นที่ทั้งทีมต้องรู้ แค่มีสักคนที่เชี่ยวชาญก็พอ
  • Codeberg เป็นฟอร์กของ Gitea และ Gitea ก็เป็นฟอร์กของ Gogs
    ทั้งสองฟอร์กเริ่มต้นขึ้นด้วย เหตุผลทางปรัชญา มากกว่าเหตุผลทางเทคนิค และ Joe Chen ผู้สร้าง Gogs ก็มีบทบาทสำคัญมาก

    • ในทางปฏิบัติ Codeberg เป็นเว็บไซต์ที่ทำงานบน Forgejo
      Gitea ถูกฟอร์กเพราะมีนักพัฒนาคนหนึ่งผูกขาดสิทธิ์ในรีโพซิทอรี ส่วน Forgejo เป็นฟอร์กที่สร้างขึ้นเพื่อทวงคืนสิทธิ์ในเครื่องหมายการค้าของ Gitea
    • แม้จะเป็นมุกขำๆ แต่ก็มีคนพูดกันว่าวันหนึ่งชุมชน Codeberg เองอาจ แตกแยก จากความต่างทางอุดมการณ์เล็กๆ น้อยๆ ก็ได้
  • สงสัยว่ามีใครใช้ Codeberg ร่วมกับ F-Droid บ้างไหม
    อยากรู้ว่ามันสามารถตรวจจับรีลีสอัตโนมัติได้เหมือน GitHub หรือเปล่า

    • ไม่ใช่ F-Droid โดยตรง แต่ตอนนี้มีโปรเจกต์ที่เพิ่มการรองรับ Codeberg มากขึ้นเรื่อยๆ
      ดูเหมือนว่าจะถึง จุด threshold effect แล้ว
  • ช่วงไม่กี่วันที่ผ่านมาเห็นหลายโปรเจกต์ ย้ายออก จาก GitHub
    เลยสงสัยว่ามีเหตุการณ์หรือเทรนด์อะไรอยู่หรือไม่

    • สาเหตุอาจเป็นปัญหา ความพร้อมใช้งาน ของ GitHub, การที่ Microsoft ยัด AI เข้ามา, และการที่ไปโฟกัสกับการย้ายไป Azure จนการปรับปรุงฟีเจอร์ตามไม่ทัน
    • ประกาศการย้ายของ Zig เป็นข้อมูลอ้างอิงที่ดี
    • ดูเหมือน GitHub กำลังเผชิญปรากฏการณ์ trust thermocline
      ความไม่พอใจในชุมชนโอเพนซอร์สสะสมมาเรื่อยๆ จนถึงจุดวิกฤต
      ประเด็นถกเถียงเรื่อง AI และการทำเป็นแพลตฟอร์มโฆษณา ของ Microsoft โดยรวม รวมถึงการสิ้นสุดการสนับสนุน Windows 10 ก็น่าจะมีผลด้วย
      แนวคิดนี้ถูกเสนอครั้งแรกใน เธรด Twitter นี้
    • ส่วนตัวฉันเบื่อกับ การใช้ AI แบบพร่ำเพรื่อ ของ GitHub
      รู้สึกว่าสมัยที่ยังใช้ Rails นั้นดีกว่า
    • มันดูคล้ายปรากฏการณ์ Summer of the Shark
      คืออาจเป็นเพียงกระแสชั่วคราวที่ได้รับความสนใจมากเกินจริงเมื่อเทียบกับความเป็นจริง
  • สงสัยว่ามีทางเลือกแทน GitHub แบบไหนที่เหมาะกับ ทีมเล็กหรือผู้พัฒนาเดี่ยว บ้าง
    Codeberg ดูเน้น FOSS จึงอาจไม่เหมาะกับการใช้งานเชิงพาณิชย์

    • สามารถโฮสต์ Forgejo ซึ่งเป็นฐานของ Codeberg ได้ด้วยตัวเอง
      GitLab มีฟีเจอร์เยอะ แต่ดูแลรักษาหนัก
      นอกจากนี้ยังมีฟอร์จ FOSS หลากหลายแบบ เช่น Gitea, Gogs, Phorge
    • แก่นสำคัญของ GitHub ไม่ใช่เทคโนโลยี แต่คือ โซเชียลเน็ตเวิร์ก
    • ฉันชอบ sourcehut มากกว่า
      มันไม่ได้ลอก UI ของ GitHub และฉันชอบ อินเทอร์เฟซที่ตอบสนองทันที แบบเดียวกับการทำงานบนเครื่องโลคัล
    • ถ้าไม่มีเหตุผลพิเศษ การใช้ GitHub ต่อไปก็ถือว่าสมเหตุสมผล
      ไม่จำเป็นต้องย้ายเพียงเพราะ “ไม่ชอบ Microsoft”
    • สำหรับใช้งานส่วนตัว ฉันเคยมองหา private hosting ราคาประหยัด แบบ Migadu แต่ไม่เจอตัวเลือกที่เหมาะ
      สุดท้ายเลยเอาโปรเจกต์ใหม่ขึ้น Codeberg และคงบางส่วนไว้เป็น private mirror บน GCP
      ฉันยังเคยตั้ง เธรด Ask HN ที่เกี่ยวข้อง แต่ก็ไม่มีใครตอบ
  • ถ้าดู บล็อกโพสต์ของ eldred.fr เหตุผลของผู้เขียนก็ดูสมเหตุสมผล แต่ในมุมผู้ใช้ แทบไม่รู้สึกว่าดีขึ้นเลย
    พอลองใช้ Codeberg แล้ว

    • หน้าตรวจสอบแบบแอนิเมชัน “กำลังยืนยันว่าไม่ใช่บอต” เด้งขึ้นมาบ่อย
    • ปุ่มล็อกอินด้วย GitHub ถูกซ่อนไว้เล็กมาก
    • UI แทบเหมือน GitHub และ README อยู่ล่างลงไป ทำให้ใช้งานไม่สะดวก
      ตัวอย่าง: https://codeberg.org/dnkl/foot
      ดูเหมือนว่าการวาง README ไว้เป็นหน้าหลักจะดีกว่า
    • สุดท้ายแล้ว กลยุทธ์การลอกแบบโดยไม่มีความแตกต่าง ก็ไม่น่าดึงดูด
    • “การยืนยันบอต” ใช้โซลูชันโอเพนซอร์สชื่อ Anubis
      ในเวอร์ชันเสียเงินยังสามารถปรับแต่งรูปภาพได้ด้วย
    • การเดินตาม GitHub แบบตรงๆ เป็นการเลือกเพื่อ ความคุ้นเคยของผู้ใช้
      ถ้าทำให้ต่างเกินไปก็อาจยิ่งโดนต่อต้าน
      การซ่อนปุ่มล็อกอิน GitHub เป็นการตัดสินใจที่ยึดชุมชนเป็นศูนย์กลาง และถ้าต้องการก็สามารถ เสนอผ่าน PR ได้
    • ปัญหาเหล่านี้อาจเป็น สัญญาณที่สะท้อนปัญหาลึกๆ ของบริการ ก็ได้
    • ฉันย้ายมา Codeberg เพราะเหนื่อยกับ ประเด็น AI training ของ GitHub และความรวมศูนย์
      เป้าหมายคือหาทางเลือกที่ มีจริยธรรมมากกว่า แต่ยังมีฟังก์ชันเหมือน GitHub
  • ถ้าไม่ถือว่า AI scan ของ GitHub เป็นปัญหา ก็สงสัยว่ามีเหตุผลแบบ ไม่เกี่ยวกับการเมือง ไหมที่ควรย้าย

    • ช่วงหลัง GitHub มี ความพร้อมใช้งานลดลง อยู่บ้าง แต่ระดับความรำคาญก็ขึ้นอยู่กับแต่ละคน
  • สงสัยว่า Codeberg มี CI runner ฟรี ให้หรือไม่
    มีการคาดกันว่า GitHub ใช้งบกับ CI มากกว่า 100 ล้านดอลลาร์ต่อปี

    • ตามเอกสารของ Codeberg (docs.codeberg.org/ci) ระบุว่ามีข้อจำกัดด้านทรัพยากรและต้อง ส่งคำขอแล้วรออนุมัติ
    • ส่วนตัวฉันใช้ Woodpecker instance ร่วมกับ Codeberg และมันทำงานได้ดี
    • Codeberg เน้นเรื่อง ต้นทุนพลังงาน ของ CI/CD
      แต่การพูดถึงต้นทุนด้านสิ่งแวดล้อมอาจกลับทำให้ผู้ใช้ไม่อยากมีส่วนร่วม
      สำหรับคนสายเทคนิค การอธิบายในฐานะ ปัญหาการปรับประสิทธิภาพ น่าจะได้ผลมากกว่า
    • ฉันคิดว่าโครงสร้างพื้นฐาน CI แบบนี้แหละคือ คูเมืองทางการแข่งขัน (moat) ของ GitHub
  • ฉันเคยผิดหวังที่ Codeberg เอาเหตุการณ์ สแปมในอดีต ไปขยายความเป็น “แคมเปญแห่งความเกลียดชังจากฝ่ายขวาจัด” พร้อมชมตัวเองเกินจริง
    แค่ยอมรับว่าป้องกันไม่สำเร็จก็น่าจะพอแล้ว แต่กลับเอาไปใส่กรอบทางการเมือง
    ลิงก์ที่เกี่ยวข้อง: issue, การถกเถียงบน HN, บล็อกโพสต์

    • ท่าทีแบบนี้ดูเหมือน การยกยอตัวเองเกินไป
    • แต่ถ้าเป็นสแปมที่ใช้คำเหยียดเชื้อชาติจริง ฉันก็มองว่าการตอบสนองของ Codeberg นั้นสมเหตุสมผล
      ถ้าคุณหมดความเคารพเพราะเรื่องนั้น ปัญหาก็อาจไม่ได้อยู่ที่โปรเจกต์ แต่อยู่ที่มุมมองนั้นเอง
  • ฉันเองก็เคย ย้ายรีโพซิทอรี ไป Codeberg แล้วสุดท้ายก็กลับมาที่ GitHub
    แม้จะไม่ชอบหลายฟีเจอร์ของ GitHub แต่ Codeberg ยังขาด แรงดึงดูดด้านการทำงานร่วมกัน
    สำหรับคนดูแลโปรเจกต์คนเดียว การมองเห็นและ network effect เป็นสิ่งจำเป็นมาก