- 新增贡献指南、开发指南和README的中文版本 - 创建Dev Container配置文件,包括Dockerfile、docker-compose.yml和devcontainer.json - 初始化项目结构,创建必要的目录和文件 - 设置Rust开发环境,包括依赖和工具链
5.4 KiB
5.4 KiB
贡献 meta-unit-core
我们热烈欢迎你为 meta-unit-core(大道 OS 的基础微内核)做出贡献。你的努力将帮助塑造赛博生命计算的未来!
1. 贡献前须知
在开始之前,请花一点时间阅读以下指南:
- 行为准则: 请阅读并遵守我们的 行为准则(即将推出)。我们致力于营造一个开放、包容的环境。
- 开发指南: 按照我们的 开发指南 设置你的开发环境。这能确保你拥有所有必要的工具和一致的设置。
- 理解愿景: 熟悉 大道操作系统项目 的整体愿景,以及
meta-unit-core在其中扮演的角色。
2. 如何贡献
我们遵循基于主干开发 (Trunk-Based Development - TBD) 的工作流,以确保快速迭代和持续集成。
报告 Bug
如果你发现了 Bug,请在我们的 Gitea 工单追踪器 上提交一个工单。
- 先搜索: 检查现有工单,看 Bug 是否已被报告。
- 清晰描述: 提供 Bug 的清晰简洁描述。
- 重现步骤: 包含重现 Bug 的详细步骤。
- 预期行为与实际行为: 描述你期望发生的情况和实际发生的情况。
- 环境: 提供你的环境详细信息(操作系统、Rust 版本、Docker 版本等)。
提出增强或新功能建议
我们热爱新想法!如果你有建议:
- 提交工单: 在 工单追踪器 上详细描述你的想法。
- 理由: 解释为什么这个增强或功能对项目有价值。
- 潜在设计: 如果你对如何实现有想法,请一并包含。
你的首次代码贡献
对于你的首次贡献,可以考虑在我们的 工单追踪器 上查找标记为 good first issue 或 help wanted 的工单。
代码贡献工作流 (TBD)
- 拉取最新主干代码: 始终从
main分支拉取最新的更改到你的本地机器。git pull origin main - 创建短生命周期的特性分支: 为了你的本地开发,创建一个新分支。这个分支应该专注于一个单一的、小的、原子性的更改,并尽快合并回
main。命名约定: 优先使用git checkout -b feature/my-new-awesome-thing # 或者用于 Bug 修复: git checkout -b bugfix/fix-that-issuefeature/、bugfix/、docs/、refactor/前缀。 - 开发与测试:
- 测试驱动开发 (TDD): 我们鼓励在编写代码之前编写测试,以确保代码的正确性和可维护性。
- 进行小而逻辑性的提交,并附上清晰的提交信息。
- 确保所有现有测试通过(
cargo test)。 - 为你的更改添加新测试。
- 格式化和代码检查: 在提交之前,请确保你的代码符合我们的风格指南。
cargo fmt --all # 应用格式更改 cargo clippy --all-targets --all-features -- -D warnings # 运行 linter,将所有警告视为错误 - 推送你的分支:
git push origin your-branch-name - 创建拉取请求 (PR):
- 访问我们的 Gitea 仓库,并从你的分支向
main分支创建一个新的拉取请求。 - PR 标题: 使用清晰、简洁的标题总结你的更改。
- PR 描述: 提供你的更改的详细描述,为什么进行这些更改,任何相关的工单号,以及如何测试它们(如果适用)。
- CI 检查: 确保所有持续集成 (CI) 检查通过。
- 访问我们的 Gitea 仓库,并从你的分支向
- 快速审查与合并: 你的 PR 将被快速审查。一旦通过批准且 CI 通过,它将被合并到
main。我们目标是小而频繁的合并。 - 大型功能使用特性开关: 对于跨越多个 PR 或开发周期的大型或未完成的功能,直接提交到
main,但用 特性开关 (feature flags) 包裹新代码。这确保main分支始终保持稳定和可发布状态。
3. 代码风格和约定
- Rust 格式化: 我们使用
rustfmt来强制执行代码风格。提交前务必运行cargo fmt。 - Clippy: 我们使用
clippy进行代码检查。所有clippy警告都必须解决(cargo clippy --all-targets --all-features -- -D warnings)。 - 提交信息: 遵循清晰简洁的提交信息约定(例如,Conventional Commits)。
- 示例:
feat: 添加新的 IPC 机制或fix: 解决任务调度器中的竞争条件
- 示例:
- 文档: 所有公共函数、结构体、枚举和模块都应该有清晰的 Rustdoc 注释 (
///)。强烈鼓励提供示例。
4. 社区与交流
- 工单追踪器: https://nest.doylee.cn/dao-os/meta-unit-core/issues (用于 Bug、功能和讨论)
- 聊天/论坛: (如果建立了 Discord、Matrix 或论坛,可以在此处添加链接)
- 拉取请求: 用于提交代码更改。
感谢你对 meta-unit-core 贡献的兴趣!我们期待你的贡献。