贡献

您可以提交一个bug,一个Feature建议或者直接提交改进。

1. 如何提交Bug

当您发现一个Bug时,请提交Bug,提交前:

  • 请先在issue列表里查找一下是否该bug已经提交,如果已经有此bug,请在此bug下接着回复。
  • 如果该Bug是可以复现的。请尽量提供完整的重现步骤。

请在issues页面中提交Bug。

一个高质量的Bug通常有以下特征:

  • 使用一个清晰并有描述性的标题来定义Bug。
  • 详细的描述复现Bug的步骤。包括您的配置情况,预计产生的结果,实际产生的结果。并附加详细的TRACE日志。
  • 如果程序抛出异常,请附加完整的堆栈日志。
  • 如有可能,请附上屏幕截图或动态的GIF图,这些图片能帮助演示整个问题的产生过程。
  • 哪个版本。
  • 需要修复的优先级(危急、重大、次要、细微)。

下面是Bug的Markdown模板,请按照该模板填写issue。

  1. **标题**
  2. 标题格式: [BUG][Priority] bug标题
  3. Priority分为四级: CriticalMajorMinorTrivial
  4. **问题描述**
  5. [清晰准确描述遇到的问题]
  6. **问题复现步骤:**
  7. 1. [第一步]
  8. 2. [第二步]
  9. 3. [...]
  10. **期望的表现:**
  11. [在这里描述期望的表现]
  12. **观察到的表现:**
  13. [在这里描述观察到的表现]
  14. **屏幕截图和动态GIF图**
  15. ![复现步骤的屏幕截图和动态GIF图](图片的url)
  16. **DolphinScheduler版本:(以1.1.0为例)**
  17. -[1.1.0]
  18. **补充的内容:**
  19. [请描述补充的内容,比如]
  20. **需求或者建议**
  21. [请描述你的需求或者建议]

2. 如何提交功能(Feature)建议

提交前:

  • 请确定这不是一个重复的功能增强建议。 查看Issue Page列表,搜索您要提交的功能增强建议是否已经被提交过。

请在issues页面中提交Feature。

一个高质量的Feature通常有以下特征:

  • 一个清晰的标题来定义Feature
  • 详细描述Feature的行为模式
  • 说明为什么该Feature对大多数用户是有用的。新功能应该具有广泛的适用性。
  • 尽量列出其他调度已经具备的类似功能。商用与开源软件均可。

以下是Feature的Markdown模板,请按照该模板填写issue。

  1. **标题**
  2. 标题格式: [Feature][Priority] feature标题
  3. Priority分为四级: CriticalMajorMinorTrivial
  4. **Feature的描述**
  5. [描述新Feature应实现的功能]
  6. **为什么这个新功能是对大多数用户有用的**
  7. [解释这个功能为什么对大多数用户是有用的]
  8. **补充的内容**
  9. [列出其他的调度是否包含该功能,是如何实现的]

3. 如何领取Bug/Feature

如果您想实现某个Feature或者修复某个Bug。请参考以下内容:

  • 所有的Bug与新Feature建议使用Issues Page进行管理。
  • 如果想要开发实现某个Feature功能,请先回复该功能所关联的Issue,表明您当前正在这个Issue上工作。 并在回复的时候为自己设置一个deadline,并添加的回复内容中。
  • 最好在核心贡献者找到一个导师(指导者),导师会在设计与功能实现上给予即时的反馈。
  • 您应该新建一个分支来开始您的工作,分支的名字为Feature功能名称/issueId。 比如,您想完成依赖功能并提交了Issue 111,那么您的branch名字应为 dependency/111。 功能名称可与导师讨论后确定。
  • 完成后,发送一个pull request到incubator-dolphinscheduler,提交过程具体请参考下面《提交代码流程》。

如果是想提交Pull Request完成某一个Feature或者修复某个Bug,这里都建议大家从小处做起,完成一个小功能就提交一次,每次别改动太多文件(最好6个以下),改动文件太多也会给Reviewer造成很大的心里压力,建议通过多次pr的方式完成。