Forgejo: nền tảng forge phần mềm nhẹ tự lưu trữ
(forgejo.org)- Forgejo là nền tảng forge phần mềm nhẹ tự lưu trữ dành cho các nhóm muốn tự vận hành nền tảng phát triển, tập trung vào việc giảm gánh nặng cài đặt và bảo trì
- Dự án được vận hành bởi cộng đồng trực thuộc Codeberg e.V., đồng thời duy trì cả dự án lẫn quy trình phát triển hoàn toàn dựa trên phần mềm tự do
- Cung cấp môi trường giúp người dùng quen với GitHub dễ dàng chuyển sang, đồng thời được thiết kế để người dùng trực tiếp kiểm soát quyền sở hữu nền tảng và năng suất cộng tác
- Cung cấp nhiều tính năng nhưng vẫn duy trì yêu cầu máy chủ thấp, và cho biết cần ít tài nguyên hơn các forge khác ở mức chỉ bằng một chữ số
- Lấy bảo mật, khả năng mở rộng, federation và quyền riêng tư làm trung tâm, hướng tới phát triển cộng tác phân tán
Vị thế và cách vận hành của Forgejo
- Forgejo là nền tảng forge phần mềm nhẹ tự lưu trữ, cho phép vận hành nền tảng phát triển phần mềm trên máy chủ riêng
- Hướng tới việc cài đặt và bảo trì dễ dàng với gánh nặng quản trị thấp
- Có thể tạo tài khoản trên Codeberg hoặc các instance công khai khác, hoặc tải xuống để tự lưu trữ
- Đơn vị vận hành là một cộng đồng cởi mở trực thuộc Codeberg e.V.
- Codeberg e.V. được giới thiệu là một tổ chức phi lợi nhuận dân chủ
- Forgejo cho biết có thể được tin cậy vì hoàn toàn là phần mềm tự do
- Trọng tâm sản phẩm nằm ở bảo mật, khả năng mở rộng, federation và quyền riêng tư
- Có thể xem điểm khác biệt so với các forge phần mềm khác tại trang so sánh
Định hướng tính năng và các lĩnh vực tham gia
- Forgejo hướng tới việc giành lại quyền kiểm soát quy trình phát triển phần mềm, tự lưu trữ dự án và giúp những người tham gia cùng tập trung vào việc cung cấp phần mềm chất lượng cao
-
Tính tiện dụng và gánh nặng vận hành
- Nhấn mạnh quản lý dự án đơn giản, coi trọng trải nghiệm người dùng cho cộng tác và năng suất
- Cung cấp môi trường quen thuộc với người dùng GitHub để họ có thể chuyển sang nền tảng do chính mình sở hữu
- Giảm gánh nặng cài đặt và bảo trì để có thể vận hành forge phần mềm riêng mà không cần kỹ năng chuyên môn sâu
-
Phần mềm tự do và cộng tác phân tán
- Duy trì cấu hình máy chủ thấp trong khi vẫn cung cấp nhiều tính năng
- Cả Forgejo lẫn quy trình phát triển dự án đều sử dụng phần mềm tự do
- Đưa ra định hướng cho phép phát triển phần mềm cộng tác thông qua nền tảng phân tán
-
Các lĩnh vực có thể đóng góp
1 bình luận
Ý kiến trên Hacker News
Theo FAQ, cách phát âm là forˈd͡ʒe.jo, và với tai nghe kiểu Trung Tây Mỹ thì nghe như “4 Jay yo”. Được nói là có nghĩa là Forge trong Esperanto
Tuy là một fork của Gitea, nhưng điểm hay là nó được vận hành phi lợi nhuận và toàn bộ đều dùng giấy phép tự do (GPL), không có upsell bản premium. Tôi cũng thích việc cộng đồng giao tiếp qua Matrix và Mastodon
Có vẻ Codeberg dùng cái này; nhìn bề ngoài thì giống Gitea/GitHub và không có vấn đề gì. Có thể xem mã nguồn từ biểu tượng nhánh nhỏ ở góc trên bên phải, và mã được host trên Codeberg. Điều tôi mới biết hôm nay là bản thân Codeberg là một instance Forgejo
https://forgejo.org/2024-02-forking-forward/
https://v10.next.forgejo.org/explore/repos
https://codeberg.org/forgejo/forgejo
Theo tôi hiểu, fork xuất hiện vì Gitea đã lập một công ty để làm tính năng tùy chỉnh khi có yêu cầu từ doanh nghiệp, chứ không phải có nhiều dấu hiệu như lật giấy phép
Nghe nói Fedora Project đang chuyển sang hướng này: https://fedoramagazine.org/fedora-moves-towards-forgejo-a-unified-decision/
Tôi tò mò vì sao Forgejo tách ra từ Gitea nên tìm hiểu, và lại thấy giống một trường hợp nữa trong đó các tác giả/người bảo trì nguồn mở tự do không có tiền bị chèn ép từ phía trên, và có lẽ cả từ phía dưới
Nhìn vào thông báo thành lập pháp nhân của Gitea thì có vẻ chỉ dựa vào nguồn mở tự do không đủ trang trải chi phí, và đã có những kẻ đi nhờ miễn phí giàu có được giấy phép MIT cho phép
Điểm mấu chốt là đoạn: “Trong nhiều năm, chúng tôi đã thử nhiều cách để hỗ trợ các maintainer và dự án, như bounty, tài trợ trực tiếp, trợ cấp. Nhiều cá nhân tuyệt vời và một số công ty đã rất hào phóng, nhưng có những công ty đạt doanh thu lớn hơn GDP của một số quốc gia, trong khi dùng Gitea trong sản phẩm cốt lõi mà không đóng góp lại các cải tiến”
Tôi không thích Bruce Perens, nhưng câu “chúng ta có một chương trình phúc lợi doanh nghiệp tuyệt vời, và người dùng là những công ty giàu nhất thế giới. Ngược lại, nếu lập trình viên không làm việc cho các công ty đó thì hầu như không được đền đáp” đã chỉ đúng vào vấn đề
Ngược lại, khi các nhà sáng lập lập công ty thì cộng đồng phản đối; nghe nói không phải vì bản thân việc lập công ty, mà vì công ty đó nắm giữ domain và nhãn hiệu. Nhìn qua thì có vẻ là lý do nhỏ, nhưng tôi không biết chi tiết
Dù sao thì, ngoài các lập trình viên làm vì sở thích và ngoài FAANG, nó trông như trường hợp FOSS thất bại #187
Phần mềm tự do vốn là một phong trào đạo đức, và không cần ưu tiên nguồn thu. Vì mục tiêu không phải là phát triển bền vững, mà là tự do của người dùng. Trong câu “người dùng phải có quyền tự do làm điều họ muốn với phần mềm” không hề có ý “và vài lập trình viên làm việc cho mục tiêu đạo đức đó phải được trả lương”
Theo lịch sử do chính OSI ghi lại, đến một thời điểm nào đó người ta bắt đầu nghĩ rằng mô hình phát triển mở về bản chất cũng tốt cho kinh doanh, Netscape tham gia, và một số người tập hợp lại để tái định vị phần mềm tự do thành nguồn mở
http://web.archive.org/web/20071115150105/https://opensource.org/history/
Từ FOSS khiến tôi có cảm giác giống Phật giáo doanh nghiệp kiểu Mỹ. Giống như chánh niệm và thiền bị tách khỏi bối cảnh tôn giáo sâu xa ban đầu để trở thành chương trình tự hoàn thiện bản thân, nó đã thành một hình thái mà những người thực hành ban đầu khó nhận ra. Phần mềm tự do không phải nói về phát triển bền vững, mà là làm điều đúng đắn: tự do của người dùng; những thứ còn lại chỉ là phương tiện cho mục đích đó. Nhưng đến một lúc nào đó, phương tiện trở thành mục đích, rồi người ta thắc mắc vì sao FOSS không hiển nhiên tự chi trả chi phí
Nơi đọc đúng xu hướng là GitLab. Họ cung cấp sản phẩm theo cách mã nguồn mở, đồng thời tìm được điểm cân bằng để trang trải chi phí vận hành, giành được cả niềm tin lẫn doanh thu, nên đó là việc làm tốt
Nếu muốn kiếm sống bằng công việc mã nguồn mở, bạn phải vận hành nó như một doanh nghiệp và dùng các cơ chế kinh doanh phù hợp. Nếu không, nỗ lực của bạn một ngày nào đó có thể quay lại như sự bóc lột chính bản thân bạn. Tôi không nói về ác ý, nhưng công bằng là vấn đề cân bằng; nếu công sức chăm chỉ không đối xử tử tế với chính bạn thì điều đó cũng là bất công
Việc từ chối đưa thêm điều kiện copyleft vào giấy phép, rồi cuối cùng lại mong các công ty thiện chí hành xử như thể các điều kiện đó tồn tại, là điều khó hiểu
Các công ty như Google thích giấy phép permissive, thậm chí còn tài trợ cho các lựa chọn thay thế theo giấy phép MIT/BSD của những thành phần phổ biến như toybox
Forgejo từ v9 trở lên có vẻ thực sự dùng giấy phép GPL
Chuyện kể về Big Tech rất hữu ích khi các dự án nguồn mở muốn biện minh cho việc lật giấy phép, nhưng không phù hợp ở đây. Thường thì nó cũng không hợp lý lắm, nhưng trong trường hợp này có vẻ chính các maintainer cũng chưa từng nói như vậy
Các dự án như MongoDB, ElasticSearch, Redis trở nên phổ biến vì chúng là nguồn mở, và có lẽ đã hạn chế cạnh tranh trong nhiều năm vì khó cạnh tranh với miễn phí. Rồi về sau họ quay lưng với người dùng. Nếu MongoDB 1.0 là sản phẩm thương mại thì chẳng ai dùng, nên số tiền họ kiếm được ngay từ đầu cũng có được vì nó là nguồn mở
Điểm thú vị của Forgejo là công việc về liên hợp forge (federation) đang được triển khai
https://codeberg.org/forgejo/forgejo/issues/59#issuecomment-1652830
Trong một thế giới lý tưởng, GitHub và GitLab cũng sẽ hỗ trợ liên hợp, nhưng có lẽ điều đó sẽ không xảy ra
Một lựa chọn thay thế trong cùng không gian vấn đề là mô hình P2P như https://radicle.xyz/
Việc liên hợp hữu ích giữa các instance Forgejo có thể được giải quyết đầy đủ chỉ bằng OIDC và vài webhook. Ví dụ như cộng tác giữa các instance, fork, pull request. Tôi không rõ vì sao cần liên hợp giữa Forgejo và Mastodon, và cũng mơ hồ không biết điều đó có nghĩa là gì
Trước đây họ còn có báo cáo tiến độ hằng năm đến năm 2023, nhưng website đó dường như cũng không còn truy cập được nữa: https://web.archive.org/web/20240830030315/https://forgefriends.org/blog/2023/06/21/2023-06-state-forge-federation/
Dù vậy, lần cuối liên hợp được nhắc đến trong bản cập nhật hằng tháng là vào tháng 10, khi đó họ nhấn mạnh rằng liên hợp là “ưu tiên cao nhất” của dự án Forgejo và sẽ tiếp tục như vậy
https://forgejo.org/2024-10-monthly-update/#:~:text=Forgejo%20federation%20is%20and%20will%20always%20be%20the%20highest%20priority%20of%20the%20Forgejo%20project
Việc đưa kho Git lên mạng rất dễ bằng HTTP hoặc SSH, và Git cũng hỗ trợ luồng review mã dựa trên email. Tuy vậy, tôi khá thích cách lưu review ngay trong repository như git-appraise
https://github.com/google/git-appraise
Pipeline CI/CD cũng có thể tích hợp đơn giản nếu có thể kích hoạt bằng push. Thế nhưng chúng ta đã tạo ra các UI tập trung bên trên Git, rồi giờ lại cố tích hợp các UI đó với nhau. Xét việc Git vốn đã phi tập trung, điều này trông như đang đi ngược lại
Nội dung liên quan: https://gitlab.com/groups/gitlab-org/-/epics/11247#why
Hiện tôi đang mirror qua Forgejo tự host, github.com và gitlab.com; instance Forgejo với tôi là một phần của thú vui tự host hơn là hạ tầng thiết yếu
GitLab Cells có vẻ cũng có thể đi theo hướng tương tự, và trong tài liệu thiết kế có nhắc đến liên hợp
https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/cells/
Trong vài năm, tôi đã chuyển từ Gogs sang Gitea rồi lại sang Forgejo, và đây thật sự là một phần mềm tuyệt vời
Với 90% trường hợp, chỉ cần đặt kho Git cá nhân lên một máy chủ SSH là đủ. Nếu chỉ muốn đặt kho Chezmoi ở nơi có thể truy cập từ mọi máy tính, dòng Forgejo không bổ sung quá nhiều
Nhưng trong 10% trường hợp, tức là khi muốn chia sẻ mã riêng tư với vài người bạn, nó rất tuyệt. Miễn phí vẫn tốt hơn gói trả phí của GitHub, và nếu đằng nào cũng vận hành nó vì 10% dự án đó thì cũng nên dùng phần còn lại làm kho Git chuẩn cá nhân
Nó cũng có Kanban và trình chỉnh sửa mã
Chuyển sang Gitea thì dễ thở hơn, và Forgejo lọt vào mắt tôi khi Fedora chọn Forgejo làm máy chủ kho lưu trữ
Nhu cầu của tôi đơn giản, chỉ là một kho tệp trung tâm cho ghi chú và mã nguồn. Tôi đã thử nghiệm di trú từ Gitea 1.21 sang Forgejo 9 và không gặp trở ngại nào
Tôi đang nghiêm túc cân nhắc chuyển hẳn, nhưng vẫn còn băn khoăn về lâu dài bên nào sẽ được hỗ trợ tốt hơn và phù hợp hơn cho việc dùng miễn phí
Thành thật mà nói, điểm đến tiếp theo của tôi có lẽ sẽ là Forgejo kèm Forgejo Actions cho CI/CD (https://forgejo.org/docs/next/user/actions/), hoặc đi hẳn vào hướng sâu hơn và quay lại Jenkins
Tagline không thật sự mang tính mô tả. Phải cuộn trang chính một hai lần tôi mới hiểu mục đích của nó là gì, tức là một lựa chọn thay thế GitHub tự host
Trong phần mềm, từ “forge” có thể được hiểu theo nhiều nghĩa, nên tốt hơn là nói rõ ngay từ đầu
Về mặt kỹ thuật, các hệ thống thời đó như Redmine cũng có thể được gọi là forge, nhưng có vẻ sau đó thuật ngữ này đã được định hình
Tham khảo: https://en.wikipedia.org/wiki/Forge_(software)
Khi nói “forge”, tôi nghĩ đến một công cụ biến nguyên liệu thô thành thành phẩm. Ví dụ như dụng cụ trong lò rèn biến sắt thành móng ngựa
Nếu dùng ẩn dụ phần mềm, thứ phù hợp hơn sẽ là việc biến mã nguồn dạng văn bản thành binary có thể chạy được, tức compiler hoặc interpreter
GitHub và SourceForge chuyển mã nguồn từ nơi này sang nơi khác. Nếu cố kéo dài ẩn dụ, nó gần với sự kết hợp giữa cửa hàng và dịch vụ giao hàng hơn. Mã nguồn có di chuyển nhưng không bị biến đổi
Vì vậy, với góc nhìn của một lập trình viên C/C++ lâu năm, forge nghe khá kỳ lạ khi dùng để chỉ máy chủ Git tự host
Sau khi khổ sở vì cố tiếp tục vận hành GitLab CE nhưng nó ngốn nhiều CPU và bộ nhớ, tôi chuyển sang Forgejo và không thất vọng
Nó chạy dưới dạng container rootless và hầu như không dùng bộ nhớ hay CPU. Cập nhật cũng chỉ cần một lần
podman pulllà xongGiờ tôi còn chạy Actions để thực thi Jekyll và các thứ khác nhằm liên tục cập nhật website tĩnh
Tôi thích việc có forge của riêng mình, nơi có thể nhập kho, issue, v.v. từ các forge khác như GitHub, GitLab, và cũng mong chờ khả năng tích hợp Fediverse rộng hơn dựa trên ActivityPub sắp tới
Cách tiếp cận hosting mã vừa phi tập trung vừa kết nối với nhau là điều tôi luôn mong muốn, và giờ có cảm giác nó gần như đã đạt được
Trong vài năm, tôi đã chuyển từ GitHub → GitLab tự host → Gitea → Forgejo, và không hối tiếc
Forgejo rất tuyệt, và khi federation hoàn thiện thì có lẽ còn tốt hơn nữa. Nếu có thể fork và tạo pull request phân tán trên nhiều instance, vấn đề phân mảnh của các giải pháp tự host sẽ được giải quyết
Gitea đã mất niềm tin khi lập ra một nhánh thương mại dựa lưng vào vốn VC, và chính vì lý do đó mà Forgejo được fork ra
Thứ duy nhất tôi mất từ GitLab là nền tảng CI/CD tích hợp sẵn. Nhưng tôi đã có thể chuyển pipeline sang Drone CI và kích hoạt bằng webhook. Tuy nhiên, tùy mức độ phức tạp của pipeline GitLab, đây không phải lúc nào cũng là lựa chọn khả thi
Dù sao thì tôi cũng không muốn host một máy chủ GitLab ngốn 5GB RAM chỉ cho vài dự án nhỏ. Forgejo chỉ dùng khoảng 500MB RAM ngay cả lúc cao điểm
Không rõ trải nghiệm review code như thế nào. Tôi đoán là tương tự Gitea, nhưng chưa dùng cả hai
Gần đây tôi đã thử review code khá nghiêm túc trên GitHub, nhưng với tư cách là công cụ review code thì nó gần như chỉ là phiên bản đồ chơi. Trừ khi thiết kế toàn bộ mô hình quản lý mã nguồn theo công cụ đó, có lẽ không thể dùng cho công việc kỹ thuật nghiêm túc; mà nếu làm vậy thì sẽ phải hy sinh các yếu tố khác ảnh hưởng đến quản lý lịch sử
Tôi chủ yếu quen với Gerrit; mô hình cơ bản hợp lý, nhưng có nhiều góc cạnh thô và cũng có vấn đề về hiệu năng
Nghĩ bất chợt thì có vẻ tôi chưa từng dùng công cụ review nào thật sự ưng ý. Có khi cả ngành chỉ đang cố chịu đựng mà không có công cụ tử tế
Theo trí nhớ thì phía GitLab nhỉnh hơn GitHub một chút, nhưng tôi không nhớ chi tiết
Có lẽ kiểu trả lời cho câu hỏi “Forgejo là gì?” sẽ là: “Forgejo là một software forge nhẹ, có thể tự host. Dễ cài đặt, ít phải bảo trì và làm đúng việc cần làm”
Tất nhiên không nhất thiết mọi thứ phải phù hợp với tiếng Anh, và họ nói đó là Esperanto, nhưng các phần khác của trang thì không như vậy, nên đa số sẽ không hiểu theo cách đó