# 贡献指南

你可以通过以下方式, 为 SkyWalking 社区做出贡献.

  • 通览 SkyWalking 的文档, 指出或修复文档不准确的地方, 也可以将 SkyWalking 文档翻译成其他语言.
  • 下载我们的发行版本, 尝试用其监控你的应用程序, 并向我们反馈您的想法, 疑问或使用案例.
  • 阅读我们的源码, 如果对于细节有疑问, 向我们提问.
  • 寻找代码中的 bug, 可在这里提交问题, 并且您也可以尝试修复它.
  • 从标记为需要帮助的问题列表中入手开始你的贡献.
  • GitHub 的问题列表提交问题或开启一个讨论.
  • 通过网页邮件列表查看所有邮件的讨论, 如果您是 SkyWalking 项目的 committer, 可在浏览器模式下登录并使用邮件列表. 否则, 按照下面指南进行订阅.
  • 问题的报告和讨论也可在 dev@skywalking.apache.org 邮件列表中进行. 发送任意内容邮件到 dev-subscribe@skywalking.apache.org, 按照回复订阅邮件列表.

# 与我们联系

以下所有渠道均向社区开放, 您可以选择自己喜欢的方式.

  • 提交问题
  • 邮件列表: dev@skywalking.apache.org. 发送邮件到 dev-subscribe@skywalking.apache.org, 按照回复订阅邮件列表.
  • Gitter
  • QQ 群: 392443393

# 对于代码开发者

对于代码开发者, 首先阅读编译指南. 它会告诉你如何在本地构建 SkyWalking.

在搭建好本地开发环境并且写完代码之后, 为了能够让你的代码更快更容易被 SkyWalking 合并, 你需要在本地先运行单元测试 (UT), 确保你修改/新加的代码 没有破坏现有的功能, 还需要新增一些单元测试代码来验证你修改/新增的代码正常工作, 同时也可以避免以后的贡献者修改你代码的时候遭到破坏. 如果新增的代码涉及到第三方组件/库, 你还需要编写一些集成测试 (IT).

SkyWalking 利用插件 maven-surefire-plugin 来运行单元测试, 而使用插件 maven-failsafe-plugin 来运行集成测试, 插件 maven-surefire-plugin 运行时将会把集成测试 (类名以 IT 开头的类) 排除, 留给插件 maven-failsafe-plugin 去运行, maven-failsafe-plugin 被绑定到 maven 的 CI-with-IT profile, verify 执行目标上. 因此, 如果你要运行单元测试, 使用 ./mvnw clean test, 这只会运行单元测试, 不会运行集成测试.

如果你想运行集成测试, 请确保激活 CI-with-IT profile 以及你要运行集成测试的模块的 profile. 举个例子, 如果你想运行 oap-server 模块的集成测试, 使用 ./mvnw -Pbackend,CI-with-IT clean verify, 如果你想运行所有集成测试, 只需要运行 ./mvnw -Pall,CI-with-IT clean verify.

请注意, 如果你要编写集成测试, 命名时请使用 IT* 开头, 使得只在 CI-with-IT profile 下才会运行.

# 项目扩展

SkyWalking 提供了许多方法来对现有功能进行扩展. 如果你对这些方式感兴趣, 阅读以下指南.

# UI 开发者

SkyWalking UI 由静态页面和 Web 容器构成.

  • 自 6.1 版本开始, RocketBot UI 已经成为 SkyWalking 的原生 UI. 其采用 VueJS + TypeScript 构建. 你可以在 RocketBot 代码仓库了解更多.
  • Web容器 源代码在 apm-webapp 模块中. 这是一个简单的 zuul 代理, 用于托管静态资源并使用 GraphQL 向后端发送查询请求.
  • 旧的 UI 代码仓库 依旧保留, 但从 6.0.0-GA 以后不会再被包含在 SkyWalking 发行版中.

# 发布

Apache 发布指南向提交者团队介绍了正式的 Apache 版本发布流程, 以避免破坏任何 Apache 规则. 如果您在重新分发中保留我们的许可和须知, 则 Apache 许可允许每个人重新分发.