Hướng dẫn đóng góp
Lưu ý
Tài liệu này là hướng dẫn chi tiết dành cho nhà phát triển. Để xem quy định đóng góp tóm tắt (bản gốc tiếng Anh), vui lòng xem CONTRIBUTING.md.
Cảm ơn bạn đã quan tâm đóng góp cho HieraChain! Chúng tôi hoan nghênh mọi đóng góp, từ báo lỗi, đề xuất tính năng, sửa đổi tài liệu đến gửi mã nguồn.
Quy trình đóng góp (Contribution Workflow)
Chúng tôi sử dụng quy trình Fork & Pull tiêu chuẩn:
- Fork dự án về tài khoản GitHub của bạn.
-
Clone bản fork về máy cá nhân:
-
Tạo Branch mới cho tính năng hoặc sửa lỗi của bạn:
-
Thay đổi code và Commit. Chúng tôi khuyến khích tuân thủ Conventional Commits:
feat: ...: Tính năng mớifix: ...: Sửa lỗidocs: ...: Thay đổi tài liệustyle: ...: Định dạng code (không ảnh hưởng logic)refactor: ...: Tái cấu trúc mãtest: ...: Thêm hoặc sửa test
-
Push branch lên fork của bạn.
- Tạo Pull Request (PR) từ branch của bạn vào branch
maincủa repo gốc HieraChain.
Môi trường phát triển
Để thiết lập môi trường, cài đặt dependencies và chạy test, vui lòng xem hướng dẫn chi tiết tại: Cài đặt hoặc Kiểm thử.
Tiêu chuẩn mã nguồn (Coding Standards)
- Tuân thủ tiêu chuẩn PEP 8.
- Đảm bảo mã vượt qua các kiểm tra phân tích tĩnh (static analysis) trong thư mục
scripts/. - Mã mới phải có Type Hints đầy đủ (Python >= 3.10).
Quy tắc cấm (Forbidden Patterns)
Để đảm bảo tính nhất quán và triết lý của HieraChain, các nhà phát triển TUYỆT ĐỐI KHÔNG:
- ❌ Sử dụng thuật ngữ tiền điện tử: Không dùng các từ như
transaction,mining,coin,token,wallet,address,amount,fee. Thay vào đó, hãy dùngevent,entity_id,details. - ❌ Sử dụng
print(): Luôn sử dụnglogging.getLogger(__name__). - ❌ Truy cập DB trực tiếp: Không gọi trực tiếp
sqlite3hayredisbên ngoài thư mụcadapters/storage/. - ❌ Bỏ qua Journal: Không bỏ qua bước ghi
TransactionJournalkhi thiết lập luồng ordering mới. - ❌ Lưu secret trong code: Luôn sử dụng biến môi trường hoặc Secret Manager.
Kiểm thử (Testing)
HieraChain duy trì tiêu chuẩn cao về chất lượng mã. Mọi đóng góp đều phải vượt qua các bài kiểm tra tự động.
Cấu trúc bài test
tests/unit: Unit tests, kiểm tra từng hàm/lớp riêng lẻ.tests/integration: Integration tests, kiểm tra tương tác giữa các thành phần.tests/scenarios: Scenario tests, mô phỏng luồng nghiệp vụ thực tế.
Chạy test
Bạn có thể chạy toàn bộ test bằng lệnh:
Để chạy từng phần hoặc tìm hiểu thêm, vui lòng xem chi tiết tại Kiểm thử.
Yêu cầu đóng góp
- Viết test mới: Nếu bạn thêm tính năng mới, hãy viết test case tương ứng (thường trong
tests/unit). - Không làm hỏng test cũ: Đảm bảo mã của bạn không gây lỗi cho các test hiện có.
- Docs: Docs liên quan phải được cập nhật và không bị gãy link.
Báo lỗi và Đề xuất
Sử dụng tab Issues trên GitHub để báo lỗi hoặc yêu cầu tính năng.
Khi báo lỗi, vui lòng cung cấp:
- Mô tả chi tiết lỗi.
- Các bước tái hiện.
- Môi trường (Hệ điều hành, phiên bản Python, logs lỗi...).
Chính sách bảo mật (Security Policy)
Nếu bạn phát hiện vấn đề bảo mật trong HieraChain, vui lòng KHÔNG báo cáo qua Issues công khai.
Quy trình báo cáo
Hãy gửi báo cáo bảo mật bí mật (confidential security bug) thông qua trang Security Advisories. Xem hướng dẫn chi tiết về báo cáo lỗ hổng riêng tư của GitHub.
Quy trình xử lý
Khi nhận được báo cáo, chúng tôi sẽ:
- Xác nhận vấn đề và đánh giá mức độ nghiêm trọng.
- Phát triển bản vá lỗi trong thời gian sớm nhất.
- Phát hành bản vá và công bố thông báo bảo mật (security bulletin), bao gồm việc ghi nhận công lao của người phát hiện (nếu có).
Đóng góp sửa lỗi bảo mật
Nếu bạn muốn đóng góp bản vá bảo mật, vui lòng phối hợp qua quy trình Security Advisories trước khi tạo Pull Request để đảm bảo an toàn cho người dùng.
Quy tắc ứng xử (Code of Conduct)
Chúng tôi cam kết xây dựng môi trường mở, thân thiện và tôn trọng. Vui lòng giữ thái độ chuyên nghiệp và lịch sự trong mọi tương tác.