Cảm ơn bạn quan tâm đến việc đóng góp cho dự án fcitx5-lotus! Tài liệu này hướng dẫn bạn cách tham gia phát triển dự án.
- Bắt đầu
- Quy trình đóng góp
- Quy tắc ứng xử
- Quy tắc code style
- Quy trình Pull Request
- Lưu ý quan trọng về nhánh
- Báo cáo lỗi
- Đề xuất tính năng
- GCC hoặc Clang với hỗ trợ C++17
- CMake >= 3.16
- Go 1.20+ (cho bamboo engine)
- Fcitx5 development headers
- Git
# Clone repository
git clone https://github.com/LotusInputMethod/fcitx5-lotus.git
cd fcitx5-lotus
# Khởi tạo submodules
git submodule update --init --recursive
# Build
mkdir build && cd build
cmake ..
make -j$(nproc)Fork repository này trên GitHub và clone fork của bạn về máy.
git clone https://github.com/yourusername/fcitx5-lotus.git
cd fcitx5-lotus
git remote add upstream https://github.com/LotusInputMethod/fcitx5-lotus.gitLuôn tạo nhánh mới cho mỗi tính năng hoặc sửa lỗi:
git checkout dev
git pull upstream dev
git checkout -b feature/ten-tinh-nang
# hoặc
git checkout -b fix/ten-loi- Viết code sạch, dễ đọc
- Tuân thủ quy tắc code style (xem bên dưới)
- Cập nhật tài liệu nếu cần
Sử dụng commit messages rõ ràng và mô tả:
feat: add emoji support
- Add emoji_data.h
- Update generate_emoji_header.py
Mọi thành viên tham gia đóng góp cho dự án này đều phải tuân thủ Quy tắc Ứng xử cho Cộng tác viên để xây dựng một cộng đồng cởi mở, thân thiện và lành mạnh.
- Tuân thủ file
.clang-formattrong repository - Khuyến khích tạo một hook cho pre-commit để tự động format code trước khi commit bằng cách tạo file .git/hooks/pre-commit với nội dung:
#!/bin/bash
FILES=$(git diff --cached --name-only --diff-filter=ACMR | grep -E '\.(cpp|h)$')
if [ -n "$FILES" ]; then
for file in $FILES; do
clang-format -i "$file"
git add "$file"
done
fiSau đó chạy lệnh: chmod +x .git/hooks/pre-commit
# Build C++ code
cd build
cmake .. && makegit checkout dev
git pull upstream dev
git checkout feature/ten-tinh-nang
git rebase devgit push origin feature/ten-tinh-nangTạo Pull Request trên GitHub với:
- Tiêu đề mô tả rõ ràng
- Mô tả chi tiết thay đổi
- Liên kết đến issue liên quan (nếu có)
- Screenshot cho UI changes
KHÔNG BAO GIỜ tạo Pull Request vào nhánh main
- Nhánh
mainchỉ chứa bản release ổn định và chỉ được merge bởi maintainer - Tất cả Pull Request phải nhắm vào nhánh
dev - Sau khi pass tất cả các bài CI/CD test và được maintainer review, code sẽ được merge vào
dev - Khi đủ điều kiện, code sẽ được merge từ
devsangmainbởi maintainer để bump version
main ← Bản release ổn định (chỉ maintainer được merge)
↑
dev ← Nhánh phát triển chính (tất cả PR merge vào đây)
↑
feature/*, fix/*, hotfix/* ← Nhánh cá nhân cho mỗi PR
- Developer tạo PR vào
dev - Code review bởi maintainer
- Merge vào
dev - Test trên
dev - Khi ổn định → merge
dev→main(bởi maintainer)
Khi báo cáo lỗi, vui lòng cung cấp:
- Phiên bản fcitx5-lotus
- Hệ điều hành và phiên bản
- Các bước để tái hiện lỗi
- Log hoặc screenshot (nếu có) (Log bằng lệnh fcitx5-diagnose)
- Môi trường (desktop environment, terminal, v.v.)
Trước khi đề xuất tính năng mới:
- Kiểm tra xem tính năng đã tồn tại chưa
- Tìm kiếm issue tương tự
- Mô tả rõ ràng tính năng và use case
- Giải thích tại sao tính năng này cần thiết
Bằng cách đóng góp, bạn đồng ý rằng code của bạn sẽ được cấp phép theo cùng giấy phép với dự án (GPL-3.0-or-later).
Cảm ơn bạn đã đóng góp!