Sau gần 25 năm sử dụng mailing lists truyền thống cho việc phát triển, dự án FFmpeg đã thực hiện một bước chuyển đổi quan trọng sang nền tảng phát triển phần mềm hiện đại. Công cụ xử lý đa phương tiện mạnh mẽ này đã công bố việc chuyển sang Forgejo, một giải pháp thay thế tự lưu trữ cho GitHub, đánh dấu sự kết thúc của một kỷ nguyên đối với một trong những dự án mã nguồn mở quan trọng nhất của internet.
Sự Kết Thúc Của Phát Triển Dựa Trên Email
Quyết định của FFmpeg xuất phát từ những bất mãn ngày càng tăng với quy trình làm việc qua mailing list. Dự án đã theo dõi hơn 150.000 email trong chín năm qua, nhưng chỉ có 54.476 email thực sự là các bản vá. Điều này tạo ra một môi trường đầy thách thức nơi những đóng góp có ý nghĩa thường bị chìm nghỉm dưới tiếng ồn thảo luận và gánh nặng quản trị.
Hệ thống dựa trên email cũng tạo ra rào cản cho các nhà đóng góp mới. Việc thiết lập cấu hình SMTP phù hợp, xử lý các biện pháp bảo mật email hiện đại, và học quy trình gửi patch phức tạp đã làm nản lòng nhiều nhà phát triển tiềm năng khỏi việc tham gia. Hệ thống theo dõi riêng của dự án, Patchwork, tỏ ra không đáng tin cậy, với nhiều patch bị bỏ sót mà không được chú ý.
Thống kê phát triển FFmpeg (9 năm qua)
- Tổng số email danh sách gửi thư: 150,736
- Các bản vá được theo dõi: 54,476
- Các bản vá chưa được lưu trữ: 53,650
- Nền tảng mới: code.ffmpeg.org (dựa trên Forgejo)
- Xác thực: Hỗ trợ đăng nhập OpenID và GitHub
Tại Sao Chọn Forgejo Thay Vì GitHub
Mặc dù GitHub vẫn là nền tảng thống trị cho phát triển mã nguồn mở, FFmpeg đã chọn Forgejo vì một số lý do chiến lược. Dự án ưu tiên việc duy trì quyền kiểm soát cơ sở hạ tầng của họ thay vì phụ thuộc vào GitHub thuộc sở hữu của Microsoft. Forgejo, là phần mềm mã nguồn mở, phù hợp với triết lý của FFmpeg về việc sử dụng các công cụ phần mềm tự do để phát triển phần mềm tự do.
Nền tảng mới tại code.ffmpeg.org cung cấp các tính năng hiện đại mà không thể có được với mailing lists: kiểm thử tích hợp liên tục, gắn nhãn issue phù hợp, công cụ giải quyết xung đột, và quy trình merge request được sắp xếp hợp lý. Các nhà đóng góp giờ đây có thể đăng nhập bằng thông tin đăng nhập OpenID hoặc GitHub hiện có, giảm đáng kể rào cản tham gia.
Phản Ứng Cộng Đồng Và Thách Thức Kỹ Thuật
Việc di chuyển đã khơi dậy những cuộc thảo luận thú vị về quy trình làm việc phát triển trong cộng đồng mã nguồn mở. Một số nhà phát triển đánh giá cao việc rời bỏ những gì họ coi là hệ thống lỗi thời, trong khi những người khác bảo vệ tính đơn giản và bản chất phổ quát của việc đóng góp dựa trên email.
Tuy nhiên, nền tảng mới cũng đối mặt với những thách thức riêng. Trang web sử dụng Anubis, một hệ thống bảo vệ chống bot đã gây ra vấn đề truy cập cho một số người dùng. Hệ thống sử dụng các thử thách proof-of-work để ngăn chặn AI crawler và spam bot, nhưng người dùng hợp pháp đã báo cáo khó khăn trong việc truy cập trang web từ một số trình duyệt hoặc thiết bị di động.
Mailing lists đã hỗ trợ phát triển của chúng tôi trong gần 25 năm, nhưng khi ngày càng nhiều nhà đóng góp bắt đầu tham gia, tỷ lệ các patch được merge so với tổng số mail bắt đầu giảm.
Nhìn Về Phía Trước
Quá trình chuyển đổi của FFmpeg đại diện cho một xu hướng rộng lớn hơn trong phát triển mã nguồn mở. Nhiều dự án lâu đời đang xem xét lại quy trình làm việc của họ khi cộng đồng nhà phát triển phát triển và kỳ vọng thay đổi. Dự án sẽ tiếp tục theo dõi mailing lists của họ cho các cuộc thảo luận và chủ đề liên quan đến dự án, nhưng quy trình phát triển chính giờ đây diễn ra thông qua nền tảng web.
Việc chuyển đổi cũng giải quyết một vấn đề thực tế: với hơn 53.000 patch chưa được lưu trữ trong hệ thống cũ, nhiều đóng góp có giá trị có thể đã bị mất trong tiếng ồn. Cách tiếp cận có cấu trúc của nền tảng mới trong việc theo dõi các đóng góp sẽ giúp đảm bảo rằng ít patch hơn sẽ bị bỏ sót, có khả năng đẩy nhanh tốc độ phát triển của FFmpeg.
Nỗ lực hiện đại hóa này cho thấy cách thức ngay cả những dự án mã nguồn mở lâu đời nhất cũng phải thích ứng với kỳ vọng thay đổi của nhà phát triển trong khi vẫn duy trì các giá trị cốt lõi về sự cởi mở và hợp tác cộng đồng.
Tham khảo: FFmpeg README