Skynet Công Bố Phiên Bản Chính Thức Đầu Tiên
Kể từ ngày dự án Skynet được công bố mã nguồn mở đã hơn 20 tháng, nếu tính từ giai đoạn phát triển nội bộ thì thời gian này lên tới hơn 30 tháng. Hiện tại tại công ty chúng tôi, Skynet đã được áp dụng trong 5 dự án khác nhau, và theo thông tin nắm bắt được thì ít nhất đã có 2 dự án bên ngoài công ty đang sử dụng Skynet ổn định trong một khoảng thời gian dài. Đây chính là thời điểm thích hợp để ra mắt phiên bản chính thức đầu tiên của dự án.
Vào hôm nay, phiên bản chính thức đầu tiên của Skynet - v0.1.0 đã chính thức được phát hành.
Trước khi phát hành phiên bản này, tôi đã dành vài ngày để hỗ trợ các dự án nội bộ công ty hợp nhất mã nguồn. Kết quả là toàn bộ dự án đã thống nhất chuyển sang sử dụng phiên bản mới này. Trước đây, mỗi dự án thường được quản lý bởi một trưởng nhóm fork riêng một bản mã nguồn và tùy chỉnh theo nhu cầu cụ thể, gây ra nhiều khó khăn trong quá trình hợp nhất mã nguồn.
Việc ra mắt phiên bản chính thức này với mong muốn sẽ thống nhất công tác bảo trì phần khung nền tảng trong tương lai. Tôi khuyến nghị cách tổ chức dự án như sau: Sử dụng Skynet như một submodule, tuyệt đối không sửa đổi trực tiếp mã nguồn của nó. Trong thư mục dự án, hãy tạo riêng một Makefile gọi đến Makefile của Skynet để biên dịch ra file nhị phân. Nếu cần chỉnh sửa đường dẫn đích khi biên dịch, có thể truyền tham số khi thực thi lệnh make. Tất cả các đường dẫn này đều được định nghĩa qua macro nên rất dễ dàng ghi đè.
Trong trường hợp cần tùy biến các module có sẵn trong Skynet, bạn có thể tạo một module cùng tên trong dự án của mình và sử dụng thiết lập trong file config để ưu tiên nạp module này trước. Hoặc đơn giản hơn, hãy sao chép và đổi tên module đó. Hiện tại, số lượng module mặc định của Skynet rất ít, hầu như không ảnh hưởng đến nhu cầu phát triển cụ thể của các dự án.
Để chuẩn bị cho lần phát hành này, tôi đã loại bỏ nhiều tính năng cũ, hiện tại không còn được sử dụng trong các dự án (hoặc không ảnh hưởng đến dự án đang triển khai). Ví dụ như các module multicast, phân tích hiệu năng… nhằm giúp cho phần nhân của Skynet trở nên gọn nhẹ hơn.
Phiên bản này cũng bổ sung một nhóm API mới có tên gọi snax để hỗ trợ phát triển nhanh ứng dụng.
Module phân tích hiệu năng được thiết kế lại hoàn toàn mới dưới dạng một module Lua (profile) tích hợp vào thư viện coroutine gốc của Lua. Một ví dụ minh họa đã được triển khai trong snax.
Từ nay đến khi phát hành phiên bản v0.2, nhánh master trên kho lưu trữ GitHub của Skynet sẽ chỉ nhận các bản sửa lỗi nghiêm trọng. Những cập nhật nhỏ sẽ được đánh dấu theo phiên bản v0.1.x. Các tính năng mới sẽ tiếp tục được phát triển trên nhánh dev.
Kế hoạch phát triển tạm thời tới đây sẽ là xây dựng lại các chức năng broadcast và multicast dưới dạng module cao cấp.
Về tài liệu hướng dẫn, ví dụ minh họa và demo: Do nguồn lực hạn chế nên dù đã có dự định từ lâu, nhưng việc này vẫn chưa hoàn thiện. Hiện tại, người dùng có thể tham khảo blog cá nhân của tôi để nắm rõ kiến trúc của Skynet. Tôi cũng sẽ dần cập nhật các bài viết dạng tài liệu lên wiki của GitHub.
Càng ngày, số lượng người sử dụng Skynet càng tăng lên, tôi tin tưởng rằng cộng đồng sẽ ngày càng lớn mạnh và hỗ trợ lẫn nhau nhiều hơn.
Nếu gặp vấn đề, các bạn có thể tạo issue trên GitHub. Đặc biệt, tôi rất hoan nghênh các pull request. Tính đến thời điểm hiện tại, Skynet đã hợp nhất mã nguồn từ 14 contributor khác nhau, và con số này chắc chắn sẽ tăng lên trong thời gian tới.
Cuối cùng, một thông tin mang đậm bản sắc văn hóa Trung Hoa:
Một thành viên nhiệt huyết đã lập nhóm trao đổi QQ cho người dùng Skynet với số hiệu 340504014. Trong nhóm đã có nhiều bạn có kinh nghiệm sử dụng Skynet sẵn sàng hỗ trợ giải đáp thắc mắc. Thậm chí, vì mục đích này mà tôi cũng phải cài lại ứng dụng QQ trên máy tính của mình.