From 4684ff3e9bf4362a2e5a8b23a65f7f9e788e2ddf Mon Sep 17 00:00:00 2001 From: CritasWang Date: Wed, 7 Feb 2024 09:57:30 +0800 Subject: [PATCH] perf(Development) (#178) --- src/.vuepress/navbar/zh.ts | 16 +- src/zh/Community/About.md | 169 ++++--- .../Community/Community-Project-Committers.md | 25 - src/zh/Community/Feedback.md | 66 ++- src/zh/Community/Materials.md | 90 ++++ src/zh/Development/Committer.md | 76 --- .../Community-Project-Committers.md | 107 ++++ src/zh/Development/ContributeGuide.md | 179 ------- src/zh/Development/Development-Guide.md | 470 ++++++++++++++++++ src/zh/Development/HowToCommit.md | 155 ------ src/zh/Development/HowToJoin.md | 65 --- src/zh/Development/HowtoContributeCode.md | 154 ------ .../Powered-By.md} | 22 +- src/zh/Development/VoteRelease.md | 189 ------- src/zh/Development/format-changelist.md | 56 --- src/zh/Development/rpc-changelist.md | 210 -------- 16 files changed, 818 insertions(+), 1231 deletions(-) delete mode 100644 src/zh/Community/Community-Project-Committers.md create mode 100644 src/zh/Community/Materials.md delete mode 100644 src/zh/Development/Committer.md create mode 100644 src/zh/Development/Community-Project-Committers.md delete mode 100644 src/zh/Development/ContributeGuide.md create mode 100644 src/zh/Development/Development-Guide.md delete mode 100644 src/zh/Development/HowToCommit.md delete mode 100644 src/zh/Development/HowToJoin.md delete mode 100644 src/zh/Development/HowtoContributeCode.md rename src/zh/{Community/Community-Powered-By.md => Development/Powered-By.md} (59%) delete mode 100644 src/zh/Development/VoteRelease.md delete mode 100644 src/zh/Development/format-changelist.md delete mode 100644 src/zh/Development/rpc-changelist.md diff --git a/src/.vuepress/navbar/zh.ts b/src/.vuepress/navbar/zh.ts index 10ad0f90..350c5eaa 100644 --- a/src/.vuepress/navbar/zh.ts +++ b/src/.vuepress/navbar/zh.ts @@ -43,24 +43,16 @@ export const zhNavbar = navbar([ text: '社区', children: [ { text: '关于社区', link: '/zh/Community/About' }, - { text: 'Wiki', link: 'https://cwiki.apache.org/confluence/display/iotdb' }, - { text: '开发人员', link: '/zh/Community/Community-Project-Committers' }, - { text: '技术支持', link: '/zh/Community/Community-Powered-By' }, - { text: '活动与报告', link: '/Community/Materials' }, { text: '交流与反馈', link: '/zh/Community/Feedback' }, + { text: '活动与报告', link: 'zh/Community/Materials' }, ], }, { text: '开发', children: [ - { text: '如何投票', link: '/zh/Development/VoteRelease' }, - { text: '如何提交代码', link: '/zh/Development/HowToCommit' }, - { text: '成为Contributor', link: '/zh/Development/HowToJoin' }, - { text: '成为Committer', link: '/zh/Development/Committer' }, - { text: '项目开发指南', link: '/zh/Development/ContributeGuide' }, - { text: '技术贡献指南', link: '/zh/Development/HowtoContributeCode' }, - { text: 'TsFile的更改列表', link: '/zh/Development/format-changelist' }, - { text: 'RPC变更清单', link: '/zh/Development/rpc-changelist' }, + { text: '成为开发者', link: '/zh/Development/Community-Project-Committers' }, + { text: '开发指南', link: '/zh/Development/Development-Guide' }, + { text: 'Power by', link: '/zh/Development/Powered-By' }, ], }, { diff --git a/src/zh/Community/About.md b/src/zh/Community/About.md index 6e006611..b487e42e 100644 --- a/src/zh/Community/About.md +++ b/src/zh/Community/About.md @@ -7,9 +7,9 @@ to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -18,7 +18,7 @@ under the License. --> -# 社区说明文档 +# 关于社区 ## 社区组织架构 所有抱着推动 Apache IoTDB 前进的共同目的、认同开源文化、遵循相关规范的个人或团体凝聚起来形成了我们的社区。 参考 Apache 基金会的社区理念,我们的社区存在以下四种身份。 @@ -41,87 +41,114 @@ - 积极参与项目讨论,对项目重大决策给予建议 - 社区咨询支持 - 社区开发或宣传任务支持 -Contributor:对项目的前进有相关贡献的社区成员。无需通过评选。 -- 权利: - - Pull Request approve 权限 - - 获得 Contributor 奖状与礼品 -User: Apache IoTDB 项目的用户。无需通过评选。 -- 权利: - - 获得 User 礼品 +- Contributor:对项目的前进有相关贡献的社区成员。无需通过评选。 + - 权利: + - Pull Request approve 权限 + - 获得 Contributor 奖状与礼品 +- User: Apache IoTDB 项目的用户。无需通过评选。 + - 权利: + - 获得 User 礼品 ## 社区评选规章 -### 参与评选的条件 -- PMC: +### PMC - 获得现有 PMC 的推荐 - - 技术层面:对项目的整体情况有较全面的了解 - - 发展层面:对时序数据库行业有深刻见地,并能把握项目发展方向 - - 文化层面:对开源文化有较强认同感,为项目的开源布道做出贡献 -- Committer: + - 技术层面: + - 对项目的整体情况有较全面的了解 + - 发展层面: + - 对时序数据库行业有深刻见地,并能把握项目发展方向 + - 文化层面: + - 对开源文化有较强认同感,为项目的开源布道做出贡献 +### Committer - 获得现有 PMC 的推荐 - 开发者途径 - 需对对某个功能模块完全了解 - 开源布道师途径 - 对项目的开源布道起到实质的推进作用,如沉淀技术文档、提供与宣讲用户案例、积极参与社区交流与活动等 -## 社区交流途径 -社区拥有丰富的交流途径。目前有以下五种交流途径。可以选择自己适用并倾向的渠道与社区进行交流。 - -途径一:通过 Slack 进行交流(全英文) -- 适用情况:主要的国际社区交流渠道 -途径二:通过微信群、QQ 群进行交流 -- 入群方式:微信群——添加好友 qinchuqing,QQ 群——659990460 -途经三:通过 Jira 进行交流 -- 适用情况:任务(新功能改进、BUG 修复)的管理与交流 -- 指南: - - 创建 Jira 账号(用于任务管理) - - 创建 Confluence 账号(用于设计文档共建) - - 账户创建好后,向邮件列表发送一封邮件,包括自我介绍、 Jira id 和 Confluence id,社区 PMC 会为账户添加权限 -途径四:通过 GitHub 进行交流 -途径五:通过 Apache 邮件列表进行交流(全英文) -- 适用情况:邮件列表是 Apache 唯一指定的开源贡献者的交流渠道,面向全社区的计划、路线和公告等均在邮件列表中沟通。邮件列表 (dev@iotdb.apache.org) 本质上是一个邮箱地址,所有订阅这个邮箱地址的都能收到发往此邮箱的邮件。 -- 指南: - - 发送订阅邮件:向 dev-subscribe@iotdb.apache.org 发送一封邮件,主题内容不限。 - - 确认订阅邮件:完成上一步后,将收到一封来自 iotdb.apache.org 结尾的确认订阅邮件。向该邮件再次发一封主题内容不限的邮件即可确认订阅。 + - - 了解 Apache Software Foundation 的行为准则 + - 请参阅 [ASF 文档](https://www.apache.org/foundation/policies/conduct.html)。特别是,他们致力于: + - 保持开放 + - 保持善解人意 + - 保持热情 + - 保持友善 + - 保持有耐心 + - 团队协作力强 + - 好奇心强 + - 注意言行 + - 恪守Apache Software Foundation 提交者的职责 + - 请参阅 [ASF 文档](https://www.apache.org/dev/committers.html#committer-responsibilities)。 + - 他们帮助创造的是一个产品,而不仅仅是某个贡献者的兴趣 + - 他们维护 Apache 社区的健康,并帮助社区成长 + - 他们帮忙做一些周边工作,例如维护网站、维护文档。 + - 他们帮助用户 + - 可以信任他们来决定何时准备发布代码,或何时需要别人一起做出判断。 + - 可以信任他们来决定何时合并代码(如果是代码贡献者),或何时需要别人一起做出判断。 + - 加强 IoTDB 社区的实践 + - 他们对项目有坚定的承诺 + - 他们与社区分享他们的想法 + - 他们接受社区反馈并将其整合到他们的计划,设计,代码等中。 + - 他们认真地尝试通过贡献使 IoTDB 更好 + - 特别是,如果代码贡献者: + - 他们认真尝试通过自己的代码使 IoTDB 更好 + - 他们认真地尝试通过代码审查使 IoTDB 更好 + - 他们接受并整合有关其代码的反馈 + - 他们在查看/合并代码(样式,文档,测试,向后兼容性等)时了解、遵守并不断优化 IoTDB 的最佳实践。 +### Contributor + - 创建开发平台账号: + - 创建 Jira 账号:[https://issues.apache.org/jira/projects/IOTDB/issues](https://issues.apache.org/jira/projects/IOTDB/issues) ,用来认领 issue。 + - 创建 Confluence 账号:[https://cwiki.apache.org/confluence/display/IOTDB/Home](https://cwiki.apache.org/confluence/display/IOTDB/Home) ,之后用来写设计文档。 + 创建好后,向邮件列表发送一封邮件,包括 **自我介绍** 以及 **Jira ID** 和 **Confluence ID**,社区PMC会为账户添加权限。 + - 长期事项: + - 学习如何调试IoTDB + - [如何调试 IoTDB server](https://my.oschina.net/u/3664598/blog/4500279) + - 学习IoTDB的基本使用 + - [IoTDB下载与安装](https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/WayToGetIoTDB.html) + - [IoTDB快速上手](https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/QuickStart.html) + - [数据模式与概念](https://iotdb.apache.org/zh/UserGuide/Master/Data-Concept/Data-Model-and-Terminology.html) + - [API接口](https://iotdb.apache.org/zh/UserGuide/Master/API/Programming-Java-Native-API.html) + - 了解IoTDB的内部设计 + - [IoTDB设计文档](https://cwiki.apache.org/confluence/display/IOTDB/Home) + - 寻找待做任务 + - [在Jira上解决issue](https://issues.apache.org/jira/projects/IOTDB/issues) ## 社区公约 遵循 Apache 的社区文化,形成以下公约。 -保持开放。我们诚邀各位加入我们的社区。除了敏感内容以外,我们期待大家在公开的渠道对项目有关内容展开讨论。这也适用于寻求帮助和项目支持的消息; 不仅仅是群众的支持请求更有可能得到问题的答案,还可以确保社区注意到并纠正回答该问题的人无意间犯的错误。 -拥有同理心、热情、友好和耐心。我们共同努力解决矛盾,怀揣善意,并尽最大努力以一种感同身受的方式行动。我们可能会遭受一些挫折,但这并不是进行人身攻击的借口。一个让人感到不舒服或受到威胁的社区不会成为一个卓有成效的社区。 我们应该对打交道的社区成员和社区外部人员都给予尊重。 -懂得协作。我们会互相依赖彼此的工作。我们积极向他人说明我们为项目发展所做的工作,解释相关的原理。那么他们可以在我们原有的基础上进一步提高。我们做出的任何决定都会影响到用户和同事,所以我们在做出决定时必须认真考虑可能产生的后果。 -有一颗好奇心。没有人能知道一切。尽早提出问题可以避免以后出现很多问题,所以我们鼓励大家提出问题,虽然我们可能会将一些问题引导到更合适的论坛。出于我们优化项目代码的共同目标,那些收到问题的人会积极响应并提供帮助。 -注意我们的用词。无论我们是以专业人士还是志愿者的身份参与,我们在所有的互动中都要重视专业精神并对自己的言论负责。 -善待他人。不要侮辱或贬低其他参与者。骚扰和排斥行为是不允许的。这包括但不限于: -*针对他人的暴力威胁或语言。 -*性别歧视、种族歧视或其他歧视性的笑话和语言。 -*发布色情或暴力内容。 -*发布(或威胁他人发布)其他人的个人身份信息。 -* 分享私人内容,如私人或非公开形式发送的电子邮件,或从未登录的论坛,如IRC频道历史记录。 -* 侮辱他人,尤指使用种族主义或性别歧视用语。 -* 骚扰性言语和行为。 -*不文明用语。 -*反复骚扰他人。一般来说,如果别人不希望你继续说下去,那就停下来。 -*提倡或鼓励上述任何行为。 -注意简洁。请记住,随着时间的推移,成百上千的人会读到你写的东西。写一封简短的电子邮件意味着人们可以尽可能高效地理解对话内容。简短的电子邮件应该尽量表现出感同身受、热情、友好和耐心。当需要一个很长的说明时,请考虑在信息的顶部添加一个摘要。 -试着在对话中加入新的想法,这样每封邮件都能给讨论增加一些新的内容。但是请注意,不要忽略已经讨论过的内容。 -注意围绕主题,特别是在较长的讨论中。 -离开项目时请考虑周全。每个项目都会有人加入有人离开。在有人离开或退出项目时,应该告诉其他成员他们离开了,并通过合适的方式以确保其他成员可以接起他们留下的工作。同时,他们应尊重那些继续参与项目的人,不应该歪曲项目的目标或成就。同样,社区成员也应尊重离开项目的人所做的选择。 - +1. 保持开放。我们诚邀各位加入我们的社区。除了敏感内容以外,我们期待大家在公开的渠道对项目有关内容展开讨论。这也适用于寻求帮助和项目支持的消息; 不仅仅是群众的支持请求更有可能得到问题的答案,还可以确保社区注意到并纠正回答该问题的人无意间犯的错误。 +2. 拥有同理心、热情、友好和耐心。我们共同努力解决矛盾,怀揣善意,并尽最大努力以一种感同身受的方式行动。我们可能会遭受一些挫折,但这并不是进行人身攻击的借口。一个让人感到不舒服或受到威胁的社区不会成为一个卓有成效的社区。 我们应该对打交道的社区成员和社区外部人员都给予尊重。 +3. 懂得协作。我们会互相依赖彼此的工作。我们积极向他人说明我们为项目发展所做的工作,解释相关的原理。那么他们可以在我们原有的基础上进一步提高。我们做出的任何决定都会影响到用户和同事,所以我们在做出决定时必须认真考虑可能产生的后果。 +4. 有一颗好奇心。没有人能知道一切。尽早提出问题可以避免以后出现很多问题,所以我们鼓励大家提出问题,虽然我们可能会将一些问题引导到更合适的论坛。出于我们优化项目代码的共同目标,那些收到问题的人会积极响应并提供帮助。 +5. 注意我们的用词。无论我们是以专业人士还是志愿者的身份参与,我们在所有的互动中都要重视专业精神并对自己的言论负责。善待他人。不要侮辱或贬低其他参与者。骚扰和排斥行为是不允许的。这包括但不限于: + - 针对他人的暴力威胁或语言。 + - 性别歧视、种族歧视或其他歧视性的笑话和语言。 + - 发布色情或暴力内容。 + - 发布(或威胁他人发布)其他人的个人身份信息。 + * 分享私人内容,如私人或非公开形式发送的电子邮件,或从未登录的论坛,如IRC频道历史记录。 + * 侮辱他人,尤指使用种族主义或性别歧视用语。 + * 骚扰性言语和行为。 + * 不文明用语。 + * 反复骚扰他人。一般来说,如果别人不希望你继续说下去,那就停下来。 + * 提倡或鼓励上述任何行为。 +6. 注意简洁。请记住,随着时间的推移,成百上千的人会读到你写的东西。写一封简短的电子邮件意味着人们可以尽可能高效地理解对话内容。简短的电子邮件应该尽量表现出感同身受、热情、友好和耐心。当需要一个很长的说明时,请考虑在信息的顶部添加一个摘要。 + 试着在对话中加入新的想法,这样每封邮件都能给讨论增加一些新的内容。但是请注意,不要忽略已经讨论过的内容。 + 注意围绕主题,特别是在较长的讨论中。 +7. 离开项目时请考虑周全。每个项目都会有人加入有人离开。在有人离开或退出项目时,应该告诉其他成员他们离开了,并通过合适的方式以确保其他成员可以接起他们留下的工作。同时,他们应尊重那些继续参与项目的人,不应该歪曲项目的目标或成就。同样,社区成员也应尊重离开项目的人所做的选择。 ## 社区发布新版本流程 +### 发布经理 +我们的项目指定一个提交者作为发布经理,负责发布的机制。发布经理引导从最初的社区共识到将编译的代码包最终分发,并可能参与向项目社区和ASF公开发布。 ### 流程总览 社区发布新版本流程中有两类角色。 -角色一:RM (发布经理,Release Manager),是发布新版本的发起人。一般为一个人而非多人承担这个角色。 -角色二:社区开发者。社区开发者将对新版本是否发布进行投票。值得提醒的是,不是所有的社区开发者都强制为新版本的发布进行投票。 - +- 角色一:RM (发布经理,Release Manager),是发布新版本的发起人。一般为一个人而非多人承担这个角色。 +- 角色二:社区开发者。社区开发者将对新版本是否发布进行投票。值得提醒的是,不是所有的社区开发者都强制为新版本的发布进行投票。 + 在我们的开源社区中,发布新版本主要由五步进行。 -第一步 - RM 发起提议:由某位开发者自发作为RM (发布经理,Release Manager)提起新版本发布的提议。通过邮件,发出相关提议。邮件发出的提议将对新版本的改进进行充分说明。 -第二步 - 社区开发者查看提议:当收到邮件之后,若社区开发者赞同相关提议,可以不回复相关邮件,默认认同提议。若社区开发者对新版本发布提议存在建议或质疑,可以回复邮件进行说明。 -第三步 - RM 发布内部测试版(Release Candidate):当社区开发者的建议得到充分考虑后,RM (发布经理,Release Manager)将发布内部测试版(Release Candidate),通过邮件来让大家进行新版本的测试并投票。 -第四步 - 社区开发者进行投票:社区开发者获取到内部测试版(Release Candidate)进行测验。测验后,通过邮件进行投票。 -第五步 - 投票通过后 RM 发布正式版本并对外公布:当投票情况符合相关条件,RM发布正式版本,并通过邮件对外公布这个消息。(若投票失败,则通过邮件公布本次发布新版本失败,并在修改后,重新提起发布新版本的流程。此处将不对投票失败情况展开解释。) - -### 作为社区开发者,如何验证新版本,来决定是否支持发布? +- 第一步 - RM 发起提议:由某位开发者自发作为RM (发布经理,Release Manager)提起新版本发布的提议。通过邮件,发出相关提议。邮件发出的提议将对新版本的改进进行充分说明。 +- 第二步 - 社区开发者查看提议:当收到邮件之后,若社区开发者赞同相关提议,可以不回复相关邮件,默认认同提议。若社区开发者对新版本发布提议存在建议或质疑,可以回复邮件进行说明。 +- 第三步 - RM 发布内部测试版(Release Candidate):当社区开发者的建议得到充分考虑后,RM (发布经理,Release Manager)将发布内部测试版(Release Candidate),通过邮件来让大家进行新版本的测试并投票。 +- 第四步 - 社区开发者进行投票:社区开发者获取到内部测试版(Release Candidate)进行测验。测验后,通过邮件进行投票。 +- 第五步 - 投票通过后 RM 发布正式版本并对外公布:当投票情况符合相关条件,RM发布正式版本,并通过邮件对外公布这个消息。(若投票失败,则通过邮件公布本次发布新版本失败,并在修改后,重新提起发布新版本的流程。此处将不对投票失败情况展开解释。) + +### 常见问题 +#### 问题一:作为社区开发者,如何验证新版本,来决定是否支持发布? 请见 https://iotdb.apache.org/zh/Development/VoteRelease.html; - -#### 如何决定投票是否通过? +#### 问题二:如何决定投票是否通过? 依据 Apache Software Foundation 给出的说明,我们将把投票窗口保留 72 小时及以上。当收到至少三票 PMC 赞同票并且赞同票多余反对票的时候,代表投票通过。投票的结果将由 RM (发布经理,Release Manager)汇总。RM 会通过邮件公布结果。 - -### 作为新手 RM,是否有详细的实践指导? -对于新手的 RM (发布经理,Release Manager),我们提供了详细的实践指导。每一步需要做的事情做了详细的说明,请查看博客《版本发布流程》。 \ No newline at end of file +#### 问题三:作为新手 RM,是否有详细的实践指导? +对于新手的 RM (发布经理,Release Manager),我们提供了详细的实践指导。每一步需要做的事情做了详细的说明,请查看本页面“社区发布新版本流程”章节。 \ No newline at end of file diff --git a/src/zh/Community/Community-Project-Committers.md b/src/zh/Community/Community-Project-Committers.md deleted file mode 100644 index 46627d85..00000000 --- a/src/zh/Community/Community-Project-Committers.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -home: true ---- - - - diff --git a/src/zh/Community/Feedback.md b/src/zh/Community/Feedback.md index f84d4ef6..ab95fe45 100644 --- a/src/zh/Community/Feedback.md +++ b/src/zh/Community/Feedback.md @@ -19,28 +19,44 @@ --> -## 联系我们 - -作为 Apache 项目,我们使用邮件列表、JIRA 和 Github 的 issue 模块来获取用户反馈。 - -* 邮件列表:dev@iotdb.apache.org. - - * 该列表同时用于用户反馈和开发者交流。 - * 订阅方法:用想接收邮件的邮箱向 dev-subscribe@iotdb.apache.org 发一封邮件,主题内容不限,收到回复后, - 再次向确认地址发一封确认邮件(确认地址比较长,推荐 qq 邮箱)。 - -* JIRA issue: https://issues.apache.org/jira/projects/IOTDB/issues - -* Github issue: https://github.com/apache/iotdb/issues - -* Twitter: https://twitter.com/apacheiotdb - -* 对中文用户,欢迎加入 QQ 群:659990460. - -* 我们非常期待您分享您使用 IoTDB 的经验:[调研问卷](https://github.com/apache/iotdb/issues/748) - -* 对中文用户,欢迎关注微信公众号,IoTDB 漫游指南 - -* 对中文用户,我们提供了钉钉群,可以搜索群名称加入:Apache IoTDB 交流 1 群 - -IoTDB 社区会不定期举办 Meetup,相关信息会在邮件列表和 [研讨会议和报告列表](https://iotdb.apache.org/Community/Materials.html) 页面找到。 +# 交流与反馈 + +社区拥有丰富的交流途径。目前有以下六种交流途径。可以选择自己适用并倾向的渠道与社区进行交流。 + +## 途径一:通过 Apache 邮件列表进行交流(全英文) + - 适用情况:邮件列表是 Apache 唯一指定的开源贡献者的交流渠道,面向全社区的计划、路线和公告等均在邮件列表中沟通。邮件列表 (dev@iotdb.apache.org) 本质上是一个邮箱地址,所有订阅这个邮箱地址的都能收到发往此邮箱的邮件。 + - 指南: + - 发送订阅邮件:向 dev-subscribe@iotdb.apache.org 发送一封邮件,主题内容不限。 + - 确认订阅邮件:完成上一步后,将收到一封来自 iotdb.apache.org 结尾的确认订阅邮件。向该邮件再次发一封主题内容不限的邮件即可确认订阅(确认地址比较长,推荐 qq 邮箱)。 + - 其他邮件列表: + - notifications@iotdb.apache.org (用于接收 JIRA 通知。) + - 如果你只想接收个别感兴趣的 JIRA 通知,你不需要订阅这个列表。你只需要在 JIRA issue 页面上点击"开始关注这个 issue" 或者在这个 issue 上做评论就行了。 + - commits@iotdb.apache.org (任何代码改动都会通知到此处。请注意该邮件列表邮件数量十分多。) + - reviews@iotdb.apache.org (任何代码审阅意见都会通知到此处。请注意该邮件列表邮件数量十分多。) + +## 途径二:通过 GitHub 进行交流 + +Github Issue链接:https://github.com/apache/iotdb/issues + +## 途经三:通过 Jira 进行交流 + +- JIRA issue: https://issues.apache.org/jira/projects/IOTDB/issues +- 适用情况:任务(新功能改进、BUG 修复)的管理与交流 +- 指南: + - 创建 Jira 账号(用于任务管理) + - 创建 Confluence 账号(用于设计文档共建) + - 账户创建好后,向邮件列表发送一封邮件,包括自我介绍、Jira id 和 Confluence id,社区 PMC 会为账户添加权限 + +## 途径四:通过微信群、QQ 群等方式进行交流 +- 入群方式: + - 微信群——添加好友:qinchuqing + - QQ 群——659990460 + - 钉钉群:搜索群名称加入【Apache IoTDB 交流 1 群】 + - 微信公众号:IoTDB 漫游指南 + - 我们非常期待您分享您使用 IoTDB 的经验:[调研问卷](https://github.com/apache/iotdb/issues/748) + +## 途径五:通过 Slack 进行交流(全英文) +- 适用情况:主要的国际社区交流渠道 + +## 途径六:通过 Twitter 进行交流 +- Twitter: https://twitter.com/apacheiotdb diff --git a/src/zh/Community/Materials.md b/src/zh/Community/Materials.md new file mode 100644 index 00000000..60a2cfcf --- /dev/null +++ b/src/zh/Community/Materials.md @@ -0,0 +1,90 @@ + +# 活动与报告 +## 演讲分享 + +- `2023.04.15 中国上海` IoTDB X EMQ: 智能汽车的数据基座 Meetup. + - [IoTDB 在车联网与智慧车厂场景的最佳应用实践](https://www.bilibili.com/video/BV1r24y1c7SY?share_source=copy_web) +- `2023.03.02 线上` 2023 IoTDB 核心技术 Meetup 2:IoTDB + SeaTunnel 联合 Meetup. + - [How does Apache IoTDB improve storage efficiency](https://www.bilibili.com/video/BV1yM4y1r79b?share_source=copy_web) +- `2023.02.25 线上` 2023 IoTDB 核心技术 Meetup 1:论道原生·云原生开源项目应用实践专场北京站 + - [Apache IoTDB 及云上部署实践](https://www.bilibili.com/video/BV19k4y1b71E?share_source=copy_web) +- `2022.12.03~4 线上` 2022 Apache IoTDB 物联网生态大会 + - [万物互联时代的时序数据库](https://www.bilibili.com/video/BV1z84y1x74Y?share_source=copy_web) + - [为工业物联网而生 — Apache IoTDB 1.0 全新版本](https://www.bilibili.com/video/BV1UA411D7bG?share_source=copy_web) + - [工业时序数据库 Apache IoTDB 在核电的应用实践](https://www.bilibili.com/video/BV1W84y1x7RH?t=0.3) + - [Apache IoTDB 在国家电网的应用案例](https://www.bilibili.com/video/BV1R3411Q718?t=0.3) + - [Application and Practice of Apache IoTDB in Multi-Level Data Synchronization on German Automotive Production Lines](https://www.bilibili.com/video/BV18V4y1F7do?t=0.3) + - [端边云协同:Apache IoTDB 全新单机分布式架构](https://www.bilibili.com/video/BV1314y1g7yT?t=0.3) + - [Apache IoTDB 秒级扩容能力与存算分离实践](https://www.bilibili.com/video/BV1BD4y1L7iq?t=0.3) + - [为物联网场景优化的时序数据库共识协议](https://www.bilibili.com/video/BV1mK411275q?t=0.3) + - [大规模并行处理与边缘计算在 Apache IoTDB 中的实践](https://www.bilibili.com/video/BV1Xe4y1V7VS?t=0.3) + - [Apache IoTDB 首创时序顺乱序分离存储引擎 IoTLSM](https://www.bilibili.com/video/BV1ee4y1V73w?t=0.3) + - [Apache IoTDB 在京东万物互联场景中的应用](https://www.bilibili.com/video/BV1Ao4y167tJ?t=0.3) + - [Apache IoTDB 在中航机载智能云下制造系统的应用解决方案](https://www.bilibili.com/video/BV11D4y1M7bL?t=0.3) + - [Apache IoTDB 在长安智能汽车云建设的实践](https://www.bilibili.com/video/BV1Hj411u7R6?t=0.3) + - [Apache IoTDB 在宝武装备远程智能运维平台中的使用案例](https://www.bilibili.com/video/BV1sM411s7VZ?t=0.3) + - [中冶赛迪工业互联网平台与 CISDigital-TimeS (基于 Apache IoTDB) 在流程制造业的探索与实践](https://www.bilibili.com/video/BV1324y1g77m?t=0.3) + - [Timecho:孵化于 Apache IoTDB 的开源商业化公司及其核心产品](https://www.bilibili.com/video/BV1iY411C7LZ?t=0.3) + - [用友在 Apache IoTDB 应用与生态建设方面的探索与实践](https://www.bilibili.com/video/BV1m24y1G7mf?t=0.3) + - [Apache IoTDB 在东方国信的商业化及应用](https://www.bilibili.com/video/BV1aD4y1u7eU?t=0.3) + - [Apache IoTDB 在华为云的实践](https://www.bilibili.com/video/BV1uo4y1a7HS?t=0.3) + - [向物联网时代的大数据计算平台 —— MaxCompute 基于 Apache IoTDB 构建的解决方案](https://www.bilibili.com/video/BV1jM411j7R3?t=0.3) +- `2022.10.15 线上` 2022 IoTDB 核心技术 Meetup 2:IoTDB X SeaTunnel 共建开源数据生态. + - [千万吞吐时序数据库 Apache loTDB](https://www.bilibili.com/video/BV16K411D7xJ?t=0.3) + - [loTDB 与 Spring 生态集成实践](https://www.bilibili.com/video/BV1Pg411h7Cw?t=0.3) +- `2022.08.13 中国杭州` 2022 IoTDB 核心技术 Meetup 1:IoTDB X EMQ 物联网数据基础架构实践. + - [IoTDB 多场景建模方法](https://www.bilibili.com/video/BV1fY4y1P7LP?t=0.3) + - [EMQ x loTDB 的深南电路客户案例](https://www.bilibili.com/video/BV1me4y187Jg?t=0.3) +- `2022.07.03 线上` 2022 开源技术讲座系列 3:从面试官和求职者的角度看开源. + - [大厂各轮面试中开源经验有什么用](https://www.bilibili.com/video/BV1JU4y1r7BP?t=0.3) + - [开源项目,求职者的最佳简历](https://www.bilibili.com/video/BV19Y4y1u7za?t=0.3) +- `2022.02.19 线上` Apache IoTDB. 2022 开源技术讲座系列 1:时序数据库 Apache IoTDB 的核心技术及应用. + - [ 基于开放数据文件格式的时序数据库](https://www.bilibili.com/video/BV1yi4y127js?t=0.3) + - [IoTDB 在 360 的落地实践](https://www.bilibili.com/video/BV1Pq4y147z4?t=0.3) +- `2020.12.30 北京` The 10th China Cloud Computing Standards and Application Conference + - [Apache IoTDB:工业物联网时序数据管理系统](https://www.slidestalk.com/IoTDB/IoTDB_BDTC2020) + - [IoTDB 使用进阶与背后原理介绍](https://www.bilibili.com/video/BV1fK41137Hi?t=0.0) + - [海量序列处理: IoTDB 的分布式元数据管理技术](https://www.bilibili.com/video/BV1xa4y1H7bk?t=0.0) + - [拓维物联网平台与 Apache IoTDB 的应用实践分析](https://www.bilibili.com/video/BV1ri4y157ZM?t=0.0) + - [基于IoTDB的X-DB实时数据库的使用情况](https://www.bilibili.com/video/BV1Hv411b7zp?t=0.0) + - [Apache IoTDB 社区发展情况简介](https://www.bilibili.com/video/BV1z54y1678E?t=0.0) + - [Apache 本土社区 ALC Beijing 介绍]() + - [同理心: 拥抱竞争中合作的开源必备之技](https://www.bilibili.com/video/BV1sp4y1z7vM?t=0.3) + - [IoTDB for Digital Twin Platform in Germany](https://www.bilibili.com/video/BV1VT4y1M7ZZ?t=0.0) +- `2020.11.14` "开源软件供应链 2020 峰会" + - [Apache IoTDB 核心技术剖析](https://www.slidestalk.com/IoTDB/202011ApacheIoTDBReporter82991) +- `2020.10.25 中国北京` 2020 中国开源年会暨阿帕奇中国路演 + - [Apache IoTDB: 从中国高校走向世界](https://www.slidestalk.com/IoTDB/202010ApacheIoTDBReporterJialinQiao42231) + - [Apache IoTDB: 工业物联网数据管理](https://www.slidestalk.com/IoTDB/202010ApacheIoTDBReporterXiangdongHuang11117) + +## 展会/集市 +|活动时间|活动形式|活动名称| +|:--:|:--:|:--:| +|2023.02.25-26|现场会议|全球人工智能开发者先锋大会| +|2022.10.27|现场会议和在线直播|2022 中国开源年会| +|2022.09.20|-|大数据峰会| +2022.07.29~31|线上|ApacheCon Asia 2022 IOT/IIOT +|2022.05.11|-|德国工业物联网技术峰会| +|2022.04.14|中国北京| 2022 开源技术讲座系列 2:清华开源大讲堂第三期| +|2021.08.11|线上|开源大数据技术线上 MeetUp| +|2021.01.24|中国北京|2020中国大数据技术大会| + diff --git a/src/zh/Development/Committer.md b/src/zh/Development/Committer.md deleted file mode 100644 index 4063c563..00000000 --- a/src/zh/Development/Committer.md +++ /dev/null @@ -1,76 +0,0 @@ - - -# 成为 Committer - -Apache IoTDB [Committer](https://www.apache.org/foundation/how-it-works.html#committers) 拥有代码库的写权限,可以合并 PR,但是您不必成为代码贡献者才能成为 Committer。成为一个 Committer 意味着你获得了项目的信任。阅读 [ASF 文档](https://www.apache.org/dev/committers.html#committer-responsibilities) 以获取有关成为 Apache Software Foundation 中的提交者的更多信息。 - -项目管理委员会 [PMC](https://www.apache.org/foundation/how-it-works.html#pmc-members) 通过提名、讨论、并投票(且多数人投赞成票)来将某人增选为 Committer。我们会使用尽可能多的数据来源来解释为什么增选某人。例如: - -- IoTDB 技术专家且是布道者(贡献文档、博客等) -- 公开活动 -- PMC 推荐 - -对于想成为 Committer 的贡献者,PMC 制定了以下的指导准则 - -## Apache IoTDB Committer - -### 采取多种形式 - -除了贡献代码之外,还有许多其他形式可以提高我们对贡献者的信任,例如代码审查,设计讨论,为其他用户提供支持,发展社区,改善 IoTDB 基础设施,文档,项目管理等。 - -### 知道、支持并不断强化 Apache Software Foundation 的行为准则 - -请参阅 [ASF 文档](https://www.apache.org/foundation/policies/conduct.html)。特别是,他们显然致力于: - -- 开放 -- 善解人意 -- 热情 -- 友善 -- 有耐心 -- 团队协作力强 -- 好奇心强 -- 注意言行 - -### 知道、支持并不断强化作为 Apache Software Foundation 提交者的职责 - -请参阅 [ASF 文档](https://www.apache.org/dev/committers.html#committer-responsibilities)。 - -- 他们帮助创造的是一个产品,而不仅仅是某个贡献者的兴趣 -- 他们维护 Apache 社区的健康,并帮助社区成长 -- 他们帮忙做一些周边工作,例如维护网站、维护文档。 -- 他们帮助用户 -- 可以信任他们来决定何时准备发布代码,或何时需要别人一起做出判断。 -- 可以信任他们来决定何时合并代码(如果是代码贡献者),或何时需要别人一起做出判断。 - -### 知道、支持并不断强化 IoTDB 社区的实践 - -- 他们对项目有坚定的承诺 -- 他们与社区分享他们的想法 -- 他们接受社区反馈并将其整合到他们的计划,设计,代码等中。 -- 他们认真地尝试通过贡献使 IoTDB 更好 -- 特别是,如果代码贡献者: - - 他们认真尝试用自己的代码使 IoTDB 更好 - - 他们认真地尝试通过代码审查使 IoTDB 更好 - - 他们接受并整合有关其代码的反馈 - - 他们在查看/合并代码(样式,文档,测试,向后兼容性等)时了解、遵守并不断优化 IoTDB 的最佳实践。 - -这个指导文档修改于 [Apache Beam](https://beam.apache.org/contribute/become-a-committer/) \ No newline at end of file diff --git a/src/zh/Development/Community-Project-Committers.md b/src/zh/Development/Community-Project-Committers.md new file mode 100644 index 00000000..6f6c5673 --- /dev/null +++ b/src/zh/Development/Community-Project-Committers.md @@ -0,0 +1,107 @@ + +# 成为开发者 +## 开发人员 +### Project PMC +| id | githubUsername | public name | starting date | +| :------------: | :-------------------: | :---------------: | :-----------: | :-----------------------------: | +| wangchen | | Chen Wang | 2020/9/16 | | +| cdutz | chrisdutz | Christofer Dutz | 2020/9/16 | | +| liudw | liutaohua | Dawei Liu | 2020/9/16 | | +| caogaofei | Beyyes | Gaofei Cao | 2020/9/16 | | +| haonan | HTHou | Haonan Hou | 2020/9/16 | | +| qiaojialin | qiaojialin | Jialin Qiao | 2020/9/16 | | +| jimwang (*) | | Jianmin Wang | 2020/9/16 | | +| jincheng | sunjincheng121 | Jincheng Sun | 2020/9/16 | | +| xingtanzjr (*) | xingtanzjr | Jinrui Zhang | 2020/9/16 | | +| jfeinauer | JulianFeinauer | Julian Feinauer | 2020/9/16 | | +| yuanjun | | Jun Yuan | 2020/9/16 | | +| jmclean | justinmclean, jmclean | Justin Mclean | 2020/9/16 | | +| kmcgrail | | Kevin A. McGrail | 2020/9/16 | | +| liukun | liukun4515 | Kun Liu | 2020/9/16 | | +| leirui | LeiRui | Lei Rui | 2020/9/16 | | +| kangrong | kr11 | Rong Kang | 2020/9/16 | | +| liurui | liuruiyiyang | Rui Liu | 2020/9/16 | | +| shuozhang | | Shuo Zhang | 2020/9/16 | | +| zhaoxinyi (*) | StefanieZhao7 | Stefanie Zhao | 2020/9/16 | | +| jiangtian | jt2594838 | Tian Jiang | 2020/9/16 | | +| lta | fanhualta | Tianan Li | 2020/9/16 | | +| ningjiang | WillemJiang | Willem Ning Jiang | 2020/9/16 | | +| hxd | jixuan1989 | Xiangdong Huang | 2020/9/16 | <=chair | +| chaow | mychaow | Chao Wang | 2021/6/2 | | +| neuyilan | neuyilan | Houliang Qi | 2021/12/24 | | +| jackietien | JackieTien97 | Yuan Tian | 2022/4/21 | | +| wangchao316 | wangchao316 | Chao Wang | 2022/12/12 | | +| rong | SteveYurongSu | Steve Yurong Su | 2023/9/28 | | +| tanxinyu | OneSizeFitsQuorum | Xinyu Tan | 2023/9/28 | | + +### Project Committers +| **id** | **githubUsername** | **public name** | +| :----------: | :----------------: | :-------------: | +| bensonchou | | Peichen Chou | +| chenyz | Cpaulyz | Yanze Chen | +| dope | myxof | Yi Xu | +| east | mdf369 | DongFang Mao | +| eedalong | eedalong | Xiulong Yuan | +| ejttianyu | EJTTianYu | Wangminhao Gou | +| ericpai | ericpai | Eric Pai | +| fengqingxin | FLOW4215 | Qingxin Feng | +| geniuspig | Genius-pig | Boris Zhu | +| gongning | | Gong Ning | +| heiming | HeimingZ | Haiming Zhu | +| hui | liuminghui233 | Minghui Liu | +| icloudsong | | Binghua Song | +| jessezhou | JesseZhou-1 | Jesse Zhou | +| jianyun | chengjianyun | Jianyun Cheng | +| junqing | irvine0109 | Junqing Wang | +| lancelly | | Lanyu Liao | +| marklau99 | THUMarkLau | Xuxin Liu | +| miao | CloudWise-Lukemiao | Hongshan Miao | +| qijun | jun0315 | Qijun Xie | +| renyuhua | RYH61 | Yuhua Ren | +| spricoder | SpriCoder | Hongyin Zhang | +| sunzesong | samperson1997 | Zesong Sun | +| suyue | little-emotion | Yue Su | +| tsaitsunghan | tsunghanjacktsai | Jack Tsai | +| xiangweiwei | Alima777 | Alima777 | +| xinwang | vesense | Xin Wang | +| xuekaifeng | SilverNarcissus | Kaifeng Xue | +| yongzao | crzbulabula | Yongzao Dan | +| yschengzi | | Sicheng Yu | +| yuyuankang | yuyuankang | Yuyuan Kang | +| zyk | MarcosZyk | Yukun Zhou | + + +## 如何成为项目成员 + +我们的社区存在以下四种身份 + +- PMC +- Committe +- Contributor +- User + +详细说明: + +- 若想了解四种身份的详细内容,请查看[社区组织架构](../Community/About.md) +- 若想成为 PMC ,请查看:[社区评选规章](../Community/About.md#pmc) +- 若想成为 Committe ,请查看:[社区评选规章](../Community/About.md#committe) +- 若想成为 Contributor ,请查看:[社区评选规章](../Community/About.md#contributor) \ No newline at end of file diff --git a/src/zh/Development/ContributeGuide.md b/src/zh/Development/ContributeGuide.md deleted file mode 100644 index adaac2eb..00000000 --- a/src/zh/Development/ContributeGuide.md +++ /dev/null @@ -1,179 +0,0 @@ - - -# 工作流程 - -## 主要链接 - -IoTDB 官网:https://iotdb.apache.org/ - -代码库:https://github.com/apache/iotdb/tree/master - -Go语言的代码库:https://github.com/apache/iotdb-client-go - -文档库:https://github.com/apache/iotdb-docs - -资源库(包含项目文件等):https://github.com/apache/iotdb-bin-resources - -快速上手:https://iotdb.apache.org/zh/UserGuide/V1.1.x/QuickStart/QuickStart.html - -Jira 任务管理:https://issues.apache.org/jira/projects/IOTDB/issues - -Wiki 文档管理:https://cwiki.apache.org/confluence/display/IOTDB/Home - -邮件列表: https://lists.apache.org/list.html?dev@iotdb.apache.org - -每日构建: https://ci-builds.apache.org/job/IoTDB/job/IoTDB-Pipe/job/master/ - -Slack: https://apacheiotdb.slack.com/join/shared_invite/zt-qvso1nj8-7715TpySZtZqmyG5qXQwpg#/shared-invite/email - -## 订阅邮件列表 - -邮件列表是 Apache 项目进行技术讨论和用户沟通的地方,订阅邮件列表就可以收到邮件了。 - -邮件列表地址:dev@iotdb.apache.org - -订阅方法:用想接收邮件的邮箱向 dev-subscribe@iotdb.apache.org 发一封邮件,主题内容不限,收到回复后,再次向确认地址发一封确认邮件(确认地址比较长,推荐 qq 邮箱)。 - -其他邮件列表: -* notifications@iotdb.apache.org (用于接收 JIRA 通知。) - * 如果你只想接收个别感兴趣的 JIRA 通知,你不需要订阅这个列表。你只需要在 JIRA issue 页面上点击"开始关注这个 issue" 或者在这个 issue 上做评论就行了。 -* commits@iotdb.apache.org (任何代码改动都会通知到此处。该邮件列表邮件数量十分多,请注意。) -* reviews@iotdb.apache.org (任何代码审阅意见都会通知到此处。该邮件列表邮件数量十分多,请注意。) - -## 新功能、Bug 反馈、改进等 - -所有希望 IoTDB 做的功能或修的 bug,都可以在 Jira 上提 issue - -可以选择 issue 类型:bug、improvement、new feature 等。新建的 issue 会自动向邮件列表中同步邮件,之后的讨论可在 jira 上留言,也可以在邮件列表进行。当问题解决后请关闭 issue。 - -## 邮件讨论内容(英文) - -* 第一次参与邮件列表可以简单介绍一下自己。(Hi, I'm xxx ...) - -* 开发功能前可以发邮件声明一下自己想做的任务。(Hi,I'm working on issue IOTDB-XXX,My plan is ...) - -## 贡献文档 - -IoTDB 所有官网上的内容都在 https://github.com/apache/iotdb-docs 的 src 中: - -* src/UserGuide: 用户手册-英文版 -* src/zh/UserGuide: 用户手册-中文版 -* src/Community: 社区-英文版 -* src/zh/Community: 社区-中文版 -* src/Development: 开发指南-英文版 -* src/zh/Development: 开发指南-中文版 - -文档版本和文件夹的对应关系: - -* In progress -> src/UserGuide/Master, src/zh/UserGuide/Master -* major_version.x -> src/UserGuide/major_version, src/zh/UserGuide/major_version (如 1.1.x -> V1.1.x) - -注意事项: - -* Markdown 中的图片可上传至 .vuepress/public/img 文件夹下,引用时使用相对路径即可。 - -## 代码格式化 - -我们使用 [Spotless -plugin](https://github.com/diffplug/spotless/tree/main/plugin-maven) 和 [google-java-format](https://github.com/google/google-java-format) 格式化 Java 代码。你可以通过以下步骤将 IDE 配置为在保存时自动应用格式以 IDEA 为例): - -1. 下载 [google-java-format-plugin v1.7.0.5](https://plugins.jetbrains.com/plugin/8527-google-java-format/versions/stable/83169), 安装到 IDEA(Preferences -> plugins -> search google-java-format),[更详细的操作手册](https://github.com/google/google-java-format#intellij-android-studio-and-other-jetbrains-ides) -2. 从磁盘安装 (Plugins -> little gear icon -> "Install plugin from disk" -> Navigate to downloaded zip file) -3. 开启插件,并保持默认的 GOOGLE 格式 (2-space indents) -4. 在 Spotless 没有升级到 18+之前,不要升级 google-java-format 插件 -5. 安装 [Save Actions 插件](https://plugins.jetbrains.com/plugin/7642-save-actions) , 并开启插件,打开 "Optimize imports" and "Reformat file" 选项。 -6. 在“Save Actions”设置页面中,将 "File Path Inclusion" 设置为 .*\.java”, 避免在编辑的其他文件时候发生意外的重新格式化 - -## 编码风格 -我们使用 [maven-checkstyle-plugin](https://checkstyle.sourceforge.io/config_filefilters.html) 来保证所有的 Java 代码风格都遵循在项目根目录下的 [checkstyle.xml](https://github.com/apache/iotdb/blob/master/checkstyle.xml) 文件中定义的规则集. - -您可以从该文件中查阅到所有的代码风格要求。当开发完成后,您可以使用 `mvn validate` 命令来检查您的代码是否符合代码风格的要求。 - -另外, 当您在集成开发环境开发时,可能会因为环境的默认代码风格配置导致和本项目的风格规则冲突。 - -在 IDEA 中,您可以通过如下步骤解决风格规则不一致的问题。 - -### 禁用通配符引用 - -1. 跳转至 Java 代码风格配置页面 (Preferences... -> 编辑器 -> 代码风格 -> Java)。 -2. 切换到“导入”标签。 -3. 在“常规”部分,启用“使用单个类导入”选项。 -4. 将“将 import 与‘*’搭配使用的类计数”改成 999 或者一个比较大的值。 -5. 将“将静态 import 与‘*’搭配使用的名称计数”改成 999 或者一个比较大的值。 - -## 贡献代码 - -可以到 jira 上领取现有 issue 或者自己创建 issue 再领取,评论说我要做这个 issue 就可以。 - -* 克隆仓库到自己的本地的仓库,clone 到本地,关联 apache 仓库为上游 upstream 仓库。 -* 从 master 切出新的分支,分支名根据这个分支的功能决定,一般叫 f_new_feature(如 f_storage_engine) 或者 fix_bug(如 fix_query_cache_bug) -* 在 idea 中添加 code style 为 根目录的 java-google-style.xml -* 修改代码,增加测试用例(单元测试、集成测试) - * 集成测试参考:server/src/test/java/org/apache/iotdb/db/integration/IoTDBTimeZoneIT -* 用 `mvn spotless:check` 检查代码样式,并用`mvn spotless:apply`修复样式 -* 提交 PR, 以 [IOTDB-jira 号] 开头 -* 发邮件到 dev 邮件列表:(I've submitted a PR for issue IOTDB-xxx [link]) -* 根据其他人的审阅意见进行修改,继续更新,直到合并 -* 关闭 jira issue - -# IoTDB 调试方式 - -## 导入代码 - -### Intellij idea - -推荐使用 Intellij idea。```mvn clean package -DskipTests``` - -之后把 ```antlr/target/generated-sources/antlr4``` 和 ```thrift/target/generated-sources/thrift``` 标记为 ```Source Root```。 - -### Eclipse - -如果是 eclipse 2019 之前的版本,需要现在 IoTDB 根目录执行 `mvn eclipse:eclipse -DskipTests`。 - -import -> General -> Existing Projects into Workspace -> 选择 IoTDB 根目录 - -如果 eclipse 2019 之后的版本 - -import -> Maven -> Existing Maven Projects - - -# 常见编译错误 - -## 无法下载 thrift-* 等文件 -例如 `Could not get content -org.apache.maven.wagon.TransferFailedException: Transfer failed for https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-ubuntu` -这一般是网络问题,这时候需要手动下载上述文件: - - * 根据以下网址手动下载上述文件; - * https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-MacOS - * https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-ubuntu - - * 将该文件拷贝到 thrift/target/tools/目录下 - * 重新执行 maven 的编译命令 - - -## 无法下载errorprone : -```Failed to read artifact descriptor for com.google.errorprone:javac --shaded:jar:9+181-r4173-1: Could not transfer artifact com.google.errorprone:javac-shaded:pom:9+181-r4173-1 -``` -1. 手动下载jar包: https://repo1.maven.org/maven2/com/google/errorprone/javac-shaded/9+181-r4173-1/javac-shaded-9+181-r4173-1.jar -2. 将jar包安装到本地私仓库 : mvn install:install-file -DgroupId=com.google.errorprone -DartifactId=javac-shaded -Dversion=9+181-r4173-1 -Dpackaging=jar -Dfile=D:\workspace\iotdb-master\docs\javac-shaded-9+181-r4173-1.jar diff --git a/src/zh/Development/Development-Guide.md b/src/zh/Development/Development-Guide.md new file mode 100644 index 00000000..d9a8976a --- /dev/null +++ b/src/zh/Development/Development-Guide.md @@ -0,0 +1,470 @@ + +# 开发指南 +## 开发约定 +### 代码格式化 +我们使用 [Spotless plugin](https://github.com/diffplug/spotless/tree/main/plugin-maven) 和 [google-java-format](https://github.com/google/google-java-format) 格式化 Java 代码。你可以通过以下步骤将 IDE 配置为在保存时自动应用格式以 IDEA 为例): +1.下载 [google-java-format-plugin v1.7.0.5](https://plugins.jetbrains.com/plugin/8527-google-java-format/versions/stable/83169), 安装到 IDEA(Preferences -> plugins -> search google-java-format),更详细的内容请查看[操作手册](https://github.com/google/google-java-format#intellij-android-studio-and-other-jetbrains-ides) +2.从磁盘安装 (Plugins -> little gear icon -> "Install plugin from disk" -> Navigate to downloaded zip file) +3.开启插件,并保持默认的 GOOGLE 格式 (2-space indents) +4.在 Spotless 没有升级到 18+之前,不要升级 google-java-format 插件 +5.安装 [Save Actions](https://plugins.jetbrains.com/plugin/7642-save-actions) 插件 , 并开启插件,打开 "Optimize imports" and "Reformat file" 选项。 +6.在“Save Actions”设置页面中,将 "File Path Inclusion" 设置为 .*.java”, 避免在编辑的其他文件时候发生意外的重新格式化 + +### 编码风格 +我们使用 [maven-checkstyle-plugin](https://checkstyle.sourceforge.io/config_filefilters.html)来保证所有的 Java 代码风格都遵循在项目根目录下的 [checkstyle.xml](https://github.com/apache/iotdb/blob/master/checkstyle.xml) 文件中定义的规则集. + +您可以从该文件中查阅到所有的代码风格要求。当开发完成后,您可以使用 `mvn validate` 命令来检查您的代码是否符合代码风格的要求。 + +另外, 当您在集成开发环境开发时,可能会因为环境的默认代码风格配置导致和本项目的风格规则冲突。 + +在 IDEA 中,您可以通过如下步骤解决风格规则不一致的问题。 +- 禁用通配符引用 + - 跳转至 Java 代码风格配置页面 (Preferences... -> 编辑器 -> 代码风格 -> Java)。 + - 切换到“导入”标签。 + - 在“常规”部分,启用“使用单个类导入”选项。 + - 将“将 import 与‘*’搭配使用的类计数”改成 999 或者一个比较大的值。 + - 将“将静态 import 与‘*’搭配使用的名称计数”改成 999 或者一个比较大的值。 + +## 贡献方式 +### 参与投票 +- 1.给发布版本投票 + * 非中文用户,请阅读 https://cwiki.apache.org/confluence/display/IOTDB/Validating+a+staged+Release +- 2.下载投票的版本/rc下所有内容 + * https://dist.apache.org/repos/dist/dev/iotdb/ + +- 3.导入发布经理的公钥 + + * https://dist.apache.org/repos/dist/dev/iotdb/KEYS + + * 最下边有 Release Manager (RM) 的公钥 + + * 安装 gpg2 + + - 第一种方法 + + * 公钥的开头如下 + ``` + pub rsa4096 2019-10-15 [SC] + 10F3B3F8A1201B79AA43F2E00FC7F131CAA00430 + ``` + + 或是 + + ``` + pub rsa4096/28662AC6 2019-12-23 [SC] + ``` + + * 下载公钥 + + ``` + gpg2 --receive-keys 10F3B3F8A1201B79AA43F2E00FC7F131CAA00430 (或 28662AC6) + + 或 (指定 keyserver) + gpg2 --keyserver p80.pool.sks-keyservers.net --recv-keys 10F3B3F8A1201B79AA43F2E00FC7F131CAA00430 (或 28662AC6) + ``` + + - 第二种方法 + * 把下方内容复制到一个文本文件中,文本名为 ```key.asc``` + + * 内容如下: + ``` + -----BEGIN PGP PUBLIC KEY BLOCK----- + Version: GnuPG v2 + ... + -----END PGP PUBLIC KEY BLOCK----- + ``` + + 导入 RM 的公钥到自己电脑 + + ``` + gpg2 --import key.asc + + ``` + +- 4.验证源码发布版 + + * 验证是否有 NOTICE、LICENSE,以及内容是否正确。 + + * 验证 README、RELEASE_NOTES + + * 验证 header + + ``` + mvn -B apache-rat:check + ``` + + * 验证签名和哈希值 + + ``` + gpg2 --verify apache-iotdb-0.12.0-source-release.zip.asc apache-iotdb-0.12.0-source-release.zip + + 出现 Good Singnature + + shasum -a512 apache-iotdb-0.12.0-source-release.zip + + 和对应的 .sha512 对比,一样就可以。 + ``` + + * 验证编译 + + ``` + mvnw install + + 应该最后全 SUCCESS + ``` +- 5.验证二进制发布版 + + * 验证是否有 NOTICE、LICENSE,以及内容是否正确。 + + * 验证 README、RELEASE_NOTES + + * 验证签名和哈希值 + + ``` + gpg2 --verify apache-iotdb-0.12.0-bin.zip.asc apache-iotdb-0.12.0-bin.zip + + 出现 Good Singnature + + shasum -a512 apache-iotdb-0.12.0-bin.zip + + 和对应的 .sha512 对比,一样就可以。 + ``` + + * 验证是否能启动以及示例语句是否正确执行 + + ``` + nohup ./sbin/start-server.sh >/dev/null 2>&1 & + + ./sbin/start-cli.sh + + CREATE DATABASE root.turbine; + CREATE TIMESERIES root.turbine.d1.s0 WITH DATATYPE=DOUBLE, ENCODING=GORILLA; + insert into root.turbine.d1(timestamp,s0) values(1,1); + insert into root.turbine.d1(timestamp,s0) values(2,2); + insert into root.turbine.d1(timestamp,s0) values(3,3); + select * from root.**; + + 打印如下内容: + +-----------------------------------+------------------+ + | Time|root.turbine.d1.s0| + +-----------------------------------+------------------+ + | 1970-01-01T08:00:00.001+08:00| 1.0| + | 1970-01-01T08:00:00.002+08:00| 2.0| + | 1970-01-01T08:00:00.003+08:00| 3.0| + +-----------------------------------+------------------+ + + ``` +- 6.回复邮件 + + 验证通过之后可以发邮件了 + + ``` + Hi, + + +1 (PMC could binding) + + The source release: + LICENSE and NOTICE [ok] + signatures and hashes [ok] + All files have ASF header [ok] + could compile from source: ./mvnw clean install [ok] + + The binary distribution: + LICENSE and NOTICE [ok] + signatures and hashes [ok] + Could run with the following statements [ok] + + CREATE DATABASE root.turbine; + CREATE TIMESERIES root.turbine.d1.s0 WITH DATATYPE=DOUBLE, ENCODING=GORILLA; + insert into root.turbine.d1(timestamp,s0) values(1,1); + insert into root.turbine.d1(timestamp,s0) values(2,2); + insert into root.turbine.d1(timestamp,s0) values(3,3); + select * from root.**; + + Thanks, + xxx + ``` +### 贡献代码 +#### 贡献流程: + - Apache IoTDB 社区通过 JIRA 上的 issue 进行任务管理。 +Issue 的完整生命周期:创建 issue -> 认领 issue -> 提交 pr -> 审阅 pr -> 合并 pr -> 关闭 issue。 + +#### 创建 issue : + - 在 JIRA 上创建 issue 需要注意几个事项: + * 1.命名:争取采用清晰易懂的名字,如支持一种新的聚合查询功能(avg)、优化原始数据查询性能等。Issue 的名字之后会作为发版的 release note。 + * 2.描述:新功能、优化需要描述具体希望做什么。 Bug 反馈需要描述环境、负载、现象描述(异常日志)、影响版本等,最好有复现方法。 +#### 认领 issue : + - 在 JIRA 上认领 issue:分配给自己。建议添加一句评论:I'm doing this。避免与其他贡献者重复开发。 + + 注:如果发现自己无法认领issue,则是因为自己的账户权限不够。遇到此情况,请向 dev@iotdb.apache.org 邮件列表发送邮件,标题为: [application] apply for permission to assign issues to XXX, 其中XXX是自己的JIRA用户名。 +#### 提交PR + - 1.如何提交代码 + - 贡献途径: + - IoTDB 诚邀广大开发者参与开源项目构建,您可以查看 [issues](https://issues.apache.org/jira/projects/IOTDB/issues) 并参与解决,或者做其他改善。 + - 提交 pr,通过 Travis-CI 测试和 Sonar 代码质量检测后,至少有一位以上 Committer 同意且代码无冲突,就可以合并了 + - PR指南: + - 在 Github 上面可以很方便地提交 [Pull Request (PR)](https://help.github.com/articles/about-pull-requests/),下面将以本网站项目 [apache/iotdb](https://github.com/apache/iotdb) 为例(如果是其他项目,请替换项目名 iotdb) + * 1.Fork仓库: + - 进入 apache/iotdb 的 [github 页面](https://github.com/apache/iotdb) ,点击右上角按钮 `Fork` 进行 Fork + * 2.配置 git 和提交修改 + + - 第一步:将代码克隆到本地: + + ``` + git clone https://github.com//iotdb.git + ``` + + **注意:请将 替换为您的 github 名字** + + clone 完成后,origin 会默认指向 github 上的远程 fork 地址。 + + - 第二步:将 apache/iotdb 添加为本地仓库的远程分支 upstream: + + ``` + cd iotdb + git remote add upstream https://github.com/apache/iotdb.git + ``` + + - 第三步:检查远程仓库设置: + + ``` + git remote -v + origin https://github.com//iotdb.git (fetch) + origin https://github.com//iotdb.git(push) + upstream https://github.com/apache/iotdb.git (fetch) + upstream https://github.com/apache/iotdb.git (push) + ``` + + - 第四步:新建分支以便在分支上做修改:(假设新建的分支名为 fix) + + ``` + git checkout -b fix + ``` + + 创建完成后可进行代码更改。 + + - 第五提交代码到远程分支:(此处以 fix 分支为例) + + ``` + git commit -a -m "" + git push origin fix + ``` + + 更多 git 使用方法请访问:[git 使用](https://www.atlassian.com/git/tutorials/setting-up-a-repository) + * 3.Git 提交注意事项 + - 在 Git 上提交代码时需要注意: + + - 1.保持仓库的整洁: + + - 不要上传二进制文件,保证仓库的大小只因为代码字符串的改动而增大。 + + - 不要上传生成的代码。 + + - 2.日志要有含义: + + - 题目用jira编号:[IOTDB-jira号] + + - 题目用github的ISSUE编号:[ISSUE-issue号] + + - 内容里要写#XXXX用于关联 + * 4.创建 PR + + 在浏览器切换到自己的 github 仓库页面,切换分支到提交的分支 ,依次点击 `New pull request` 和 `Create pull request` 按钮进行创建,如果您解决的是 [issues](https://issues.apache.org/jira/projects/IOTDB/issues),需要在开头加上 [IOTDB-xxx]。 + 至此,您的 PR 创建完成,更多关于 PR 请阅读 [collaborating-with-issues-and-pull-requests](https://help.github.com/categories/collaborating-with-issues-and-pull-requests/) + * 5. 冲突解决 + + 提交 PR 时的代码冲突一般是由于多人编辑同一个文件引起的,解决冲突主要通过以下步骤即可: + + 步骤一:切换至主分支 + + ``` + git checkout master + ``` + + 步骤二:同步远端主分支至本地 + + ``` + git pull upstream master + ``` + + 步骤三:切换回刚才的分支(假设分支名为 fix) + + ``` + git checkout fix + ``` + + 步骤四:进行 rebase + + ``` + git rebase -i master + ``` + + 此时会弹出修改记录的文件,一般直接保存即可。然后会提示哪些文件出现了冲突,此时可打开冲突文件对冲突部分进行修改,将提示的所有冲突文件的冲突都解决后,执行 + + ``` + git add . + git rebase --continue + ``` + + 依此往复,直至屏幕出现类似 *rebase successful* 字样即可,此时您可以进行往提交 PR 的分支进行更新: + + ``` + git push -f origin fix + ``` + - 2.需提交的内容: + - Issue 类型:New Feature + + - 1.提交中英文版本的用户手册和代码修改的 pr。 + + 用户手册主要描述功能定义和使用方式,以便用户使用。用户手册建议包括:场景描述,配置方法,接口功能描述,使用示例。官网的用户手册内容放置在 apache/iotdb-docs 仓库 src 目录下,英文版放在 src/UserGuide ,中文版放在 src/zh/UserGuide 。 + 如果需要更新用户手册,包括新增或删除文档和修改文档名,需要在 main 分支的 src/.vuepress/sidebar 中做相应修改。 + + - 2.提交单元测试UT或集成测试IT + + 需要增加单元测试UT 或集成测试IT,尽量覆盖多的用例。可以参考 xxTest(路径:iotdb/server/src/test/java/org/apache/iotdb/db/query/aggregation/), xxIT(路径:iotdb/integration/src/test/java/org/apache/iotdb/db/integration/)。 + - Issue 类型:Improvement + + * 提交代码和 UT,一般不需要修改用户手册。最好提交相关实验结果,其中包含量化的改进效果和带来的副作用。 + - Issue 类型:Bug + + * 需要编写能够复现此 bug 的 单元测试 UT 或集成测试 IT。 + * 3.代码管理 + * a.分支管理: + + * IoTDB 版本命名方式为:0.大版本.小版本。例如 0.12.4,12 就是大版本,4 是小版本。 + + master 分支作为当前主开发分支,对应下一个未发布的大版本,每个大版本发布时会切出一个单独的分支归档,如 0.12.x 系列版本的代码处于 rel/0.12 分支下。 + + 后续如果发现并修复了某发布版本的 bug。对这些 bug 的修复都需要往大于等于该版本对应的归档分支提 pr。如一个关于 0.11.x 版本 bug 修复的 pr 需要同时向 rel/0.11、rel/0.12 和 master 分支提交。 + + * b.代码格式化: + * 提交 PR 前需要使用 mvn spotless:apply 将代码格式化,再 commit,不然会导致 ci 代码格式化检查失败。 + + * c.注意事项: + * iotdb-datanode.properties 和 IoTDBConfig 默认值需要保持一致。 + * 如果需要对配置参数进行改动。以下文件需要同时修改: + 1. 配置文件:iotdb-core/datanode/src/assembly/resources/conf/iotdb-datanode.properties + 2. 代码:IoTDBDescriptor、IoTDBConfig + 3. 文档:apache/iotdb-docs/src/UserGuide/{version}/Reference/DataNode-Config-Manual.md、apache/iotdb-docs/src/zh/UserGuide/{version}/Reference/DataNode-Config-Manual.md + 如果你想要在 IT 和 UT 文件中对配置参数进行修改,你需要在 @Before 修饰的方法里修改,并且在 @After 修饰的方法里重置,来避免对其他测试的影响。合并模块的参数统一放在CompactionConfigRestorer 文件里。 + * 4. PR 命名 + * 命名方式:分支标签-Jira 标签-PR 名 + + 示例: [To rel/0.12] [IoTDB-1907] implement customized sync process: sender + + * 分支标签 + + 如果是向非 master 分支提 pr,如 rel/0.13 分支,需要在 pr 名写上 [To rel/0.13]。如果是指向master分支,则不需要写分支标签。 + + * Jira 标签 + + 以 JIRA 号开头,如:[IOTDB-1907] implement customized sync process: sender。这样创建 PR 后,机器人会将 PR 链接自动链到对应 issue 上。 + + 注:如果创建 PR 时忘记添加 JIRA 号,或 JIRA 号不规范,则 PR 不会被自动链接到 Jira 上,需要先改正 PR 命名,并手动将 PR 链接贴到 issue 页面(通过留言或链接框)。 + * 5. PR 描述 + 通常 PR 名无法涵盖所有改动,需要添加具体描述,改动了哪些内容。对于较难理解的地方给予一定的解释。 + + 修改 bug 的 pr 需要描述 bug 出现的原因,以及解决方法,另外还需要描述UT/IT测试用例添加的情况和负面效果的描述。 + * 6.提交 PR 后 + + 向邮件列表 dev@iotdb.apache.org 发送一封邮件,主要介绍 PR 的工作。重视每个审阅者的意见,一一回复,并对达成一致的建议进行修改。 + +#### 审阅PR +- 注意事项: + - 1. PR命名是否规范,新功能和bug修复类型的pr是否带了JIRA 号。 + - 2. PR 描述是否清晰。 + - 3. 功能测试用例或性能测试报告是否附上。 + - 4. 新功能是否有用户手册。 + - 5. 尽量不夹带其他问题的代码修改,将不相关的修改拆分到其他PR。 +- 审阅流程: + - 第一步: 点击 PR 的 Files changed + + - 第二步:对于有问题的行,移动到左侧,会出现加号,点击加号,然后评论,点击 Start a review,此时,所有的 Review 意见都会暂存起来,别人看不到。 + + - 第三步: 所有评论加完后,需要点击 Review changes,选择你的意见,已经可以合并的选择 Approve,有 Bug 需要改的选择 Request changes 或者 Comment,不确定的选择 Comment。最后 Submit review 提交审阅意见,提 PR 的人才能看见此意见。 + +#### 合并PR +- 确认所有审阅意见均已回复且有1个以上 committer 的Approval。 + +- 选择 squash merge (当且仅当作者仅有一个提交记录,且记录的commitlog清晰,可选择rebase)。 + +- 到 JIRA 上关闭对应的 issue,标记修复或完成的版本【注意,解决或关闭 issue 都需要对 issue 添加 pr 或描述,通过 issue 要能够追踪这个任务的变动】。 + +### 贡献文档 + +贡献用户手册和贡献代码的流程是一样的,只是修改的文件不同。 +用户手册的英文版放在 src/UserGuide , 中文版放在 src/zh/UserGuide 下。 +如果需要更新用户手册目录,包括新增或删除md文档、修改md文档名,需要在 main 分支的 src/.vuepress/sidebar 中做相应修改。 + + +### 新功能、Bug 反馈、改进等 +所有希望 IoTDB 做的功能或修的 bug,都可以在 Jira 上提 issue + +可以选择 issue 类型:bug、improvement、new feature 等。新建的 issue 会自动向邮件列表中同步邮件,之后的讨论可在 jira 上留言,也可以在邮件列表进行。当问题解决后请关闭 issue。 + +### 邮件讨论内容 +请使用英文进行讨论: + * 第一次参与邮件列表可以简单介绍一下自己。(Hi, I'm xxx ...) + + * 开发功能前可以发邮件声明一下自己想做的任务。(Hi,I'm working on issue IOTDB-XXX,My plan is ...) + +### 常见问题 +- 无法下载 thrift-* 等文件: + 例如 `Could not get content org.apache.maven.wagon.TransferFailedException: Transfer failed for https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-ubuntu` + 这一般是网络问题,这时候需要手动下载上述文件: + + * 根据以下网址手动下载上述文件; + * https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-MacOS + * https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-ubuntu + + * 将该文件拷贝到 thrift/target/tools/目录下 + * 重新执行 maven 的编译命令 +- 无法下载errorprone : + ```Failed to read artifact descriptor for com.google.errorprone:javac + -shaded:jar:9+181-r4173-1: Could not transfer artifact com.google.errorprone:javac-shaded:pom:9+181-r4173-1 + ``` + 解决方法: + 1. 手动下载jar包: https://repo1.maven.org/maven2/com/google/errorprone/javac-shaded/9+181-r4173-1/javac-shaded-9+181-r4173-1.jar + 2. 将jar包安装到本地私仓库 : mvn install:install-file -DgroupId=com.google.errorprone -DartifactId=javac-shaded -Dversion=9+181-r4173-1 -Dpackaging=jar -Dfile=D:\workspace\iotdb-master\docs\javac-shaded-9+181-r4173-1.jar + +## 常见资料 +- IoTDB 官网:https://iotdb.apache.org/ + +- 代码库:https://github.com/apache/iotdb/tree/master + +- Go语言的代码库:https://github.com/apache/iotdb-client-go + +- 文档库:https://github.com/apache/iotdb-docs + +- 资源库(包含项目文件等):https://github.com/apache/iotdb-bin-resources + +- 快速上手:https://iotdb.apache.org/zh/UserGuide/V1.1.x/QuickStart/QuickStart.html + +- Jira 任务管理:https://issues.apache.org/jira/projects/IOTDB/issues + +- Wiki 文档管理:https://cwiki.apache.org/confluence/display/IOTDB/Home + +- 邮件列表: https://lists.apache.org/list.html?dev@iotdb.apache.org + +- 每日构建: https://ci-builds.apache.org/job/IoTDB/job/IoTDB-Pipe/job/master/ + +- Slack: https://apacheiotdb.slack.com/join/shared_invite/zt-qvso1nj8-7715TpySZtZqmyG5qXQwpg#/shared-invite/email \ No newline at end of file diff --git a/src/zh/Development/HowToCommit.md b/src/zh/Development/HowToCommit.md deleted file mode 100644 index 82bcbd8c..00000000 --- a/src/zh/Development/HowToCommit.md +++ /dev/null @@ -1,155 +0,0 @@ - - -# 代码提交指南 - -## 贡献途径 - -IoTDB 诚邀广大开发者参与开源项目构建 - -您可以查看 [issues](https://issues.apache.org/jira/projects/IOTDB/issues) 并参与解决,或者做其他改善。 - -提交 pr,通过 Travis-CI 测试和 Sonar 代码质量检测后,至少有一位以上 Committer 同意且代码无冲突,就可以合并了 - -## PR 指南 - -在 Github 上面可以很方便地提交 [Pull Request (PR)](https://help.github.com/articles/about-pull-requests/),下面将以本网站项目 [apache/iotdb](https://github.com/apache/iotdb) 为例(如果是其他项目,请替换项目名 iotdb) - -### Fork 仓库 - -进入 apache/iotdb 的 [github 页面](https://github.com/apache/iotdb) ,点击右上角按钮 `Fork` 进行 Fork - -![](https://user-images.githubusercontent.com/37333508/79351839-bd288900-7f6b-11ea-8d12-feb18c35adad.png) - -### 配置 git 和提交修改 - -- 将代码克隆到本地: - -``` -git clone https://github.com//iotdb.git -``` - -**请将 替换为您的 github 名字** - -clone 完成后,origin 会默认指向 github 上的远程 fork 地址。 - -- 将 apache/iotdb 添加为本地仓库的远程分支 upstream: - -``` -cd iotdb -git remote add upstream https://github.com/apache/iotdb.git -``` - -- 检查远程仓库设置: - -``` -git remote -v -origin https://github.com//iotdb.git (fetch) -origin https://github.com//iotdb.git(push) -upstream https://github.com/apache/iotdb.git (fetch) -upstream https://github.com/apache/iotdb.git (push) -``` - -- 新建分支以便在分支上做修改:(假设新建的分支名为 fix) - -``` -git checkout -b fix -``` - -创建完成后可进行代码更改。 - -- 提交代码到远程分支:(此处以 fix 分支为例) - -``` -git commit -a -m "" -git push origin fix -``` - -更多 git 使用方法请访问:[git 使用](https://www.atlassian.com/git/tutorials/setting-up-a-repository),这里不赘述。 - -### Git提交注意事项 - -在Git上提交代码时需要注意: - -- 保持仓库的整洁: - - - 不要上传二进制文件,保证仓库的大小只因为代码字符串的改动而增大。 - - - 不要上传生成的代码。 - -- 日志要有含义: - - - 题目用jira编号:[IOTDB-jira号] - - - 题目用github的ISSUE编号:[ISSUE-issue号] - - - 内容里要写#XXXX用于关联 - -### 创建 PR - -在浏览器切换到自己的 github 仓库页面,切换分支到提交的分支 ,依次点击 `New pull request` 和 `Create pull request` 按钮进行创建,如果您解决的是 [issues](https://issues.apache.org/jira/projects/IOTDB/issues),需要在开头加上 [IOTDB-xxx],如下图所示: - -![](https://user-images.githubusercontent.com/37333508/79414865-5f815480-7fde-11ea-800c-47c7dbad7648.png) - -至此,您的 PR 创建完成,更多关于 PR 请阅读 [collaborating-with-issues-and-pull-requests](https://help.github.com/categories/collaborating-with-issues-and-pull-requests/) - -### 冲突解决 - -提交 PR 时的代码冲突一般是由于多人编辑同一个文件引起的,解决冲突主要通过以下步骤即可: - -1:切换至主分支 - -``` -git checkout master -``` - -2:同步远端主分支至本地 - -``` -git pull upstream master -``` - -3:切换回刚才的分支(假设分支名为 fix) - -``` -git checkout fix -``` - -4:进行 rebase - -``` -git rebase -i master -``` - -此时会弹出修改记录的文件,一般直接保存即可。然后会提示哪些文件出现了冲突,此时可打开冲突文件对冲突部分进行修改,将提示的所有冲突文件的冲突都解决后,执行 - -``` -git add . -git rebase --continue -``` - -依此往复,直至屏幕出现类似 *rebase successful* 字样即可,此时您可以进行往提交 PR 的分支进行更新: - -``` -git push -f origin fix -``` - -这个指导文档修改于 [Apache ServiceComb](http://servicecomb.apache.org/developers/submit-codes/) \ No newline at end of file diff --git a/src/zh/Development/HowToJoin.md b/src/zh/Development/HowToJoin.md deleted file mode 100644 index d877a315..00000000 --- a/src/zh/Development/HowToJoin.md +++ /dev/null @@ -1,65 +0,0 @@ - - -# IoTDB Contributor 入门步骤 -## 订阅邮件列表 (dev@iotdb.apache.org) -邮件列表是 Apache 唯一指定的贡献者交流渠道,所有设计和讨论尽量都在邮件列表里进行。邮件列表本质是一个邮箱,订阅之后,所有发往这个邮箱的邮件,都会转发到订阅的邮箱中,订阅方式如下: - - 1. 发送订阅邮件:向 [dev-subscribe@iotdb.apache.org](dev-subscribe@iotdb.apache.org) 发送一封邮件,主题内容不限。 - 2. 确认订阅邮件:完成上一步后,将收到一封来自 iotdb.apache.org 结尾的确认订阅邮件。向该邮件再次发一封主题内容不限的邮件即可确认订阅。 - -## 创建开发平台账号 - - 1. 创建 Jira 账号:[https://issues.apache.org/jira/projects/IOTDB/issues](https://issues.apache.org/jira/projects/IOTDB/issues) ,用来认领 issue。 - 2. 创建 Confluence 账号:[https://cwiki.apache.org/confluence/display/IOTDB/Home](https://cwiki.apache.org/confluence/display/IOTDB/Home) ,之后用来写设计文档。 - -创建好后,向邮件列表发送一封邮件,包括 **自我介绍** 以及 **Jira ID** 和 **Confluence ID**,社区PMC会为账户添加权限。 - -## 进用户/开发群 - - - QQ用户群:659990460 - - 微信用户群:IoTDB 数据库交流x群 - - Slack:[Apache IoTDB Community](https://join.slack.com/t/apacheiotdb/shared_invite/zt-qvso1nj8-7715TpySZtZqmyG5qXQwpg) - -## 关注公众号 -扫码关注官方公众号:Apache IoTDB -![IoTDB公众号二维码](https://user-images.githubusercontent.com/7240743/98633970-73671c00-235d-11eb-9913-f38e570fcfc8.png) - -## 长期事项 -### 学习IoTDB的基本使用 - - - [IoTDB下载与安装](https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/WayToGetIoTDB.html) - - [IoTDB快速上手](https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/QuickStart.html) - - [数据模式与概念](https://iotdb.apache.org/zh/UserGuide/Master/Data-Concept/Data-Model-and-Terminology.html) - - [API接口](https://iotdb.apache.org/zh/UserGuide/Master/API/Programming-Java-Native-API.html) - -### 学习如何调试IoTDB - - - [如何调试 IoTDB server](https://my.oschina.net/u/3664598/blog/4500279) - -### 了解IoTDB的内部设计 - - - [IoTDB设计文档](https://cwiki.apache.org/confluence/display/IOTDB/Home) - -### 寻找待做任务 - - - [在Jira上解决issue](https://issues.apache.org/jira/projects/IOTDB/issues) - diff --git a/src/zh/Development/HowtoContributeCode.md b/src/zh/Development/HowtoContributeCode.md deleted file mode 100644 index a07ccef1..00000000 --- a/src/zh/Development/HowtoContributeCode.md +++ /dev/null @@ -1,154 +0,0 @@ - - -# 技术贡献指南 -## 社区贡献流程概览 -Apache IoTDB 社区通过 JIRA 上的 issue 进行任务管理。 -Issue 的完整生命周期:创建 issue -> 认领 issue -> 提交 pr -> 审阅 pr -> 合并 pr -> 关闭 issue。 - -## 技术贡献规范 - - ### 创建 issue - 在 [ JIRA ](https://issues.apache.org/JIRA/projects/IOTDB/issues)上创建 issue 需要注意几个事项: - 1. 命名:争取采用清晰易懂的名字,如支持一种新的聚合查询功能(avg)、优化原始数据查询性能等。Issue 的名字之后会作为发版的 release note。 - - 2. 描述:新功能、优化需要描述具体希望做什么。 Bug 反馈需要描述环境、负载、现象描述(异常日志)、影响版本等,最好有复现方法。 - - ### 认领 issue - 在 JIRA 上认领 issue:分配给自己。建议添加一句评论:I'm doing this。避免与其他贡献者重复开发。 - 注:如果发现自己无法认领issue,则是因为自己的账户权限不够。 -遇到此情况,请向 dev@iotdb.apache.org 邮件列表发送邮件,标题为: [application] apply for permission to assign issues to XXX, 其中XXX是自己的JIRA用户名。 -### 提交 PR -#### 需提交的内容 -Issue 类型:New Feature - -1.提交中英文版本的用户手册和代码修改的 pr。 - -用户手册主要描述功能定义和使用方式,以便用户使用。用户手册建议包括:场景描述,配置方法,接口功能描述,使用示例。官网的用户手册内容放置在 apache/iotdb-docs 仓库 src 目录下,英文版放在 src/UserGuide ,中文版放在 src/zh/UserGuide 。 -如果需要更新用户手册,包括新增或删除文档和修改文档名,需要在 main 分支的 src/.vuepress/sidebar 中做相应修改。 - -2.提交单元测试UT或集成测试IT - -需要增加单元测试UT 或集成测试IT,尽量覆盖多的用例。可以参考 xxTest(路径:iotdb/server/src/test/java/org/apache/iotdb/db/query/aggregation/), xxIT(路径:iotdb/integration/src/test/java/org/apache/iotdb/db/integration/)。 - -Issue 类型:Improvement - -提交代码和 UT,一般不需要修改用户手册。 -最好提交相关实验结果,其中包含量化的改进效果和带来的副作用。 - -Issue 类型:Bug - -需要编写能够复现此 bug 的 单元测试 UT 或集成测试 IT。 - -#### 代码管理 -分支管理: - -IoTDB 版本命名方式为:0.大版本.小版本。例如 0.12.4,12 就是大版本,4 是小版本。 - -master 分支作为当前主开发分支,对应下一个未发布的大版本,每个大版本发布时会切出一个单独的分支归档,如 0.12.x 系列版本的代码处于 rel/0.12 分支下。 - -后续如果发现并修复了某发布版本的 bug。对这些 bug 的修复都需要往大于等于该版本对应的归档分支提 pr。如一个关于 0.11.x 版本 bug 修复的 pr 需要同时向 rel/0.11、rel/0.12 和 master 分支提交。 - -代码格式化: -提交 PR 前需要使用 mvn spotless:apply 将代码格式化,再 commit,不然会导致 ci 代码格式化检查失败。 - -注意事项: - -iotdb-datanode.properties 和 IoTDBConfig 默认值需要保持一致。 - -如果需要对配置参数进行改动。以下文件需要同时修改: - 1. 配置文件:iotdb-core/datanode/src/assembly/resources/conf/iotdb-datanode.properties - 2. 代码:IoTDBDescriptor、IoTDBConfig - 3. 文档:apache/iotdb-docs/src/UserGuide/{version}/Reference/DataNode-Config-Manual.md、apache/iotdb-docs/src/zh/UserGuide/{version}/Reference/DataNode-Config-Manual.md - -如果你想要在 IT 和 UT 文件中对配置参数进行修改,你需要在 @Before 修饰的方法里修改,并且在 @After 修饰的方法里重置,来避免对其他测试的影响。合并模块的参数统一放在CompactionConfigRestorer 文件里。 - -#### PR 命名 -命名方式:分支标签-Jira 标签-PR 名 - -示例: [To rel/0.12] [IoTDB-1907] implement customized sync process: sender - -分支标签 - -如果是向非 master 分支提 pr,如 rel/0.13 分支,需要在 pr 名写上 [To rel/0.13]。如果是指向master分支,则不需要写分支标签。 - -Jira 标签 - -以 JIRA 号开头,如:[IOTDB-1907] implement customized sync process: sender。这样创建 PR 后,机器人会将 PR 链接自动链到对应 issue 上。 - -如果创建 PR 时忘记添加 JIRA 号,或 JIRA 号不规范,则 PR 不会被自动链接到 Jira 上,需要先改正 PR 命名,并手动将 PR 链接贴到 issue 页面(通过留言或链接框)。 - -#### PR 描述 -通常 PR 名无法涵盖所有改动,需要添加具体描述,改动了哪些内容。对于较难理解的地方给予一定的解释。 - -修 bug 的 pr 需要描述 bug 出现的原因,以及解决方法,另外还需要描述UT/IT测试用例添加的情况和负面效果的描述。 - -#### 提交 PR 后 - -向邮件列表 dev@iotdb.apache.org 发送一封邮件,主要介绍 PR 的工作。重视每个审阅者的意见,一一回复,并对达成一致的建议进行修改。 - -### 审阅PR -主要关注以下事项: -1. PR命名是否规范,新功能和bug修复类型的pr是否带了JIRA 号。 -2. PR 描述是否清晰。 -3. 功能测试用例或性能测试报告是否附上。 -4. 新功能是否有用户手册。 -5. 尽量不夹带其他问题的代码修改,将不相关的修改拆分到其他PR。 - -代码审阅流程: - -1. 点击 PR 的 Files changed - -2. 对于有问题的行,移动到左侧,会出现加号,点击加号,然后评论,点击 Start a review,此时,所有的 Review 意见都会暂存起来,别人看不到。 -3. 所有评论加完后,需要点击 Review changes,选择你的意见,已经可以合并的选择 Approve,有 Bug 需要改的选择 Request changes 或者 Comment,不确定的选择 Comment。最后 Submit review 提交审阅意见,提 PR 的人才能看见此意见。 - -### 合并PR -确认所有审阅意见均已回复。 - -有1个以上 committer 的Approval。 - -选择 squash merge (当且仅当作者仅有一个提交记录,且记录的commitlog清晰,可选择rebase)。 - -到 JIRA 上关闭对应的 issue,标记修复或完成的版本【注意,解决或关闭 issue 都需要对 issue 添加 pr 或描述,通过 issue 要能够追踪这个任务的变动】。 - -## 如何写用户手册和设计文档 -官网的用户手册和其他文档都在 apache/iotdb-docs 仓库中进行维护。 - -官网各个页面的索引项是在 main 分支的 src/.vuepress/sidebar 文件夹维护的,用户手册的具体内容是在各个版本文件夹维护的,如 1.1 版本的用户手册文档在 src/UserGuide/V1.1.x 中。 - -用户手册 - -主要描述功能定义和使用方式,以便用户使用。 -用户手册建议包括:场景描述,配置参数,接口功能描述,使用示例。用户手册建议包括:场景描述,配置参数,接口功能描述,使用示例。 - -设计文档 - -主要描述如何实现某个功能,包括代码模块组织及算法,以便开发者参与。 -设计文档建议包括如下内容:背景描述,设计目标,总体思路,主要模块,接口设计 - -### 如何修改用户手册 -贡献用户手册和贡献代码的流程是一样的,只是修改的文件不同。 -用户手册的英文版放在 src/UserGuide , 中文版放在 src/zh/UserGuide 下。 -如果需要更新用户手册目录,包括新增或删除md文档、修改md文档名,需要在 main 分支的 src/.vuepress/sidebar 中做相应修改。 - -### 如何修改官网顶部导航栏 - -在 src/.vuepress/navbar/en.ts,src/.vuepress/navbar/zh.ts 中(应有中英文两个地方),仿照现有的代码做相应修改。之后提交PR等待合并。需要新增的文档可以放进 src 和 src/zh 文件夹下。 \ No newline at end of file diff --git a/src/zh/Community/Community-Powered-By.md b/src/zh/Development/Powered-By.md similarity index 59% rename from src/zh/Community/Community-Powered-By.md rename to src/zh/Development/Powered-By.md index e649f7c6..bbdaaae0 100644 --- a/src/zh/Community/Community-Powered-By.md +++ b/src/zh/Development/Powered-By.md @@ -19,26 +19,20 @@ --> -## 技术支持 +## Powered-By ### 使用“IoTDB”的项目和产品名称 -其他组织或企业在使用 Apache IoTDB 建立项目或者产品时,应该应该注意尊重“Apache IoTDB”的商标。 -具体事项请参阅 [ASF Trademarks Guidance](https://www.apache.org/foundation/marks/) -和 [FAQ](https://www.apache.org/foundation/marks/faq/)。 +- 其他组织或企业在使用 Apache IoTDB 建立项目或者产品时,应该应该注意尊重“Apache IoTDB”的商标。 +- 具体事项请参阅 [ASF Trademarks Guidance](https://www.apache.org/foundation/marks/)和 [FAQ](https://www.apache.org/foundation/marks/faq/)。 -一般来说,我们建议不要仅使用"IoTDB"在任何名字中,以避免出现商标风险。 -例如,不应该给自己的产品命名为"IoTDB 大数据产品",因为这个名字中包含 IoTDB。然而,如果说是命名为"Apache IoTDB 赋能的大数据产品", -或者"基于 Apache IoTDB 的大数据产品", 这种名字就是被允许的。 -简单来说,当你想在名字中出现 IoTDB 时,应为"Apache IoTDB",而不是仅"IoTDB"。 - -在你(在 Maven 或者其他模块名中)创建软件标识时,可以命名为例如"iotdb-tool"。 - -在产品描述中明确指出 Apache IoTDB 也是可以的,例如"该大数据产品是 Apache IoTDB 的一个子产品"。 +- 一般来说,我们建议不要仅使用"IoTDB"在任何名字中,以避免出现商标风险。 + - 例如,不应该给自己的产品命名为"IoTDB 大数据产品",因为这个名字中包含 IoTDB。然而,如果说是命名为"Apache IoTDB 赋能的大数据产品",或者"基于 Apache IoTDB 的大数据产品",这种名字就是被允许的。简单来说,当你想在名字中出现 IoTDB 时,应为"Apache IoTDB",而不是仅"IoTDB"。 + - 在你(Maven 或者其他模块名中)创建软件标识时,可以命名为例如"iotdb-tool"。在产品描述中明确指出 Apache IoTDB 也是可以的,例如"该大数据产品是 Apache IoTDB 的一个子产品"。 ### 相关贡献或应用的公司和组织 -要将自己添加到列表中,请给 dev@iotdb.apache.org 发送电子邮件,其中包含您的组织名称,URL,正在使用的 IoTDB 组件列表以及用例的简短描述。 -你也可以在 [Github](https://github.com/apache/iotdb/issues/748) 留言。 +- 要将自己添加到列表中,请给 dev@iotdb.apache.org 发送电子邮件,其中包含您的组织名称,URL,正在使用的 IoTDB 组件列表以及用例的简短描述。 + - 你也可以在 [Github](https://github.com/apache/iotdb/issues/748) 留言。 - 清华大学软件学院和大数据系统软件国家工程实验室最初开发了 IoTDB,并捐献给 Apache。 - 我们有很多研究生和专业软件工程师在持续开发 IoTDB diff --git a/src/zh/Development/VoteRelease.md b/src/zh/Development/VoteRelease.md deleted file mode 100644 index 6606c00b..00000000 --- a/src/zh/Development/VoteRelease.md +++ /dev/null @@ -1,189 +0,0 @@ - - -# 给发布版本投票 - -For non-Chinese users, please read https://cwiki.apache.org/confluence/display/IOTDB/Validating+a+staged+Release - -## 下载投票的 版本/rc 下的所有内容 - -https://dist.apache.org/repos/dist/dev/iotdb/ - -## 导入发布经理的公钥 - -https://dist.apache.org/repos/dist/dev/iotdb/KEYS - -最下边有 Release Manager (RM) 的公钥 - -安装 gpg2 - -### 第一种方法 - -``` -公钥的开头是这种 -pub rsa4096 2019-10-15 [SC] - 10F3B3F8A1201B79AA43F2E00FC7F131CAA00430 - -或这种 - -pub rsa4096/28662AC6 2019-12-23 [SC] -``` - -下载公钥 - -``` -gpg2 --receive-keys 10F3B3F8A1201B79AA43F2E00FC7F131CAA00430 (或 28662AC6) - -或 (指定 keyserver) -gpg2 --keyserver p80.pool.sks-keyservers.net --recv-keys 10F3B3F8A1201B79AA43F2E00FC7F131CAA00430 (或 28662AC6) -``` - -### 第二种方法 - -把下边这段复制到一个文本文件中,起个名叫 ```key.asc``` - -``` ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2 -... ------END PGP PUBLIC KEY BLOCK----- -``` - -导入 RM 的公钥到自己电脑 - -``` -gpg2 --import key.asc -``` - -## 验证源码发布版 - -* 验证是否有 NOTICE、LICENSE,以及内容是否正确。 - -* 验证 README、RELEASE_NOTES - -* 验证 header - -``` -mvn -B apache-rat:check -``` - -* 验证签名和哈希值 - -``` -gpg2 --verify apache-iotdb-0.12.0-source-release.zip.asc apache-iotdb-0.12.0-source-release.zip - -出现 Good Singnature - -shasum -a512 apache-iotdb-0.12.0-source-release.zip - -和对应的 .sha512 对比,一样就可以。 -``` - -* 验证编译 - -``` -mvnw install - -应该最后全 SUCCESS -``` - -## 验证二进制发布版 - -* 验证是否有 NOTICE、LICENSE,以及内容是否正确。 - -* 验证 README、RELEASE_NOTES - -* 验证签名和哈希值 - -``` -gpg2 --verify apache-iotdb-0.12.0-bin.zip.asc apache-iotdb-0.12.0-bin.zip - -出现 Good Singnature - -shasum -a512 apache-iotdb-0.12.0-bin.zip - -和对应的 .sha512 对比,一样就可以。 -``` - -* 验证是否能启动以及示例语句是否正确执行 - -``` -nohup ./sbin/start-server.sh >/dev/null 2>&1 & - -./sbin/start-cli.sh - -CREATE DATABASE root.turbine; -CREATE TIMESERIES root.turbine.d1.s0 WITH DATATYPE=DOUBLE, ENCODING=GORILLA; -insert into root.turbine.d1(timestamp,s0) values(1,1); -insert into root.turbine.d1(timestamp,s0) values(2,2); -insert into root.turbine.d1(timestamp,s0) values(3,3); -select * from root.**; - -打印如下内容: -+-----------------------------------+------------------+ -| Time|root.turbine.d1.s0| -+-----------------------------------+------------------+ -| 1970-01-01T08:00:00.001+08:00| 1.0| -| 1970-01-01T08:00:00.002+08:00| 2.0| -| 1970-01-01T08:00:00.003+08:00| 3.0| -+-----------------------------------+------------------+ - -``` - -## 示例邮件 - -验证通过之后可以发邮件了 - -``` -Hi, - -+1 (PMC could binding) - -The source release: -LICENSE and NOTICE [ok] -signatures and hashes [ok] -All files have ASF header [ok] -could compile from source: ./mvnw clean install [ok] - -The binary distribution: -LICENSE and NOTICE [ok] -signatures and hashes [ok] -Could run with the following statements [ok] - -CREATE DATABASE root.turbine; -CREATE TIMESERIES root.turbine.d1.s0 WITH DATATYPE=DOUBLE, ENCODING=GORILLA; -insert into root.turbine.d1(timestamp,s0) values(1,1); -insert into root.turbine.d1(timestamp,s0) values(2,2); -insert into root.turbine.d1(timestamp,s0) values(3,3); -select * from root.**; - -Thanks, -xxx -``` - -## 小工具 - -* 打印出包含某些字符的行(只看最上边的输出就可以,下边的文件不需要看) - -``` -find . -type f -exec grep -i "copyright" {} \; -print | sort -u -find **/src -type f -exec grep -i "copyright" {} \; -print | sort -u -``` \ No newline at end of file diff --git a/src/zh/Development/format-changelist.md b/src/zh/Development/format-changelist.md deleted file mode 100644 index d4c74732..00000000 --- a/src/zh/Development/format-changelist.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# 0.10.x/0.11.x (version-2) -> 0.12.x/0.13.x (version-3) -| PR# | Name | Author | Changes | -| ----- | ----------------------------------------------------------- | --------------- | ------------------------------------------------------------ | -| 2263 | Move memtable plan index from ChunkGroupFooter to a separate marker | jt2594838 | Add min/max plan index after MetaMarker.OPERATION_INDEX_RANGE when a memtable is flush| -| 2184 | [IOTDB-1081] New TsFile Format | JackieTien97 | Please see [details](https://cwiki.apache.org/confluence/display/IOTDB/New+TsFile+Format)| -| 2445 | Remove versionInfo in Tsfile and get rid of versions in memtable | wshao08 | Delete version info in TsFile | - - -# 0.9.x (version-1) -> 0.10.x (version-2) - -Last Updated on 2019-11-28 by Jialin Qiao. - -| PR# | Name | Author | Changes | -| ---- | ------------------------------------------------------------ | --------------- | ------------------------------------------------------------ | -| 553 | [IOTDB-279] Merge TsDigest into Statistics | jack870131 | Merge the function of TsDigest into Statistics class, which TsDisgest is the ByteBuffer format of Statistics | -| 587 | [IOTDB-325] Refactor Statistics | qiaojialin | Move start time, end time, count in PageHeader and ChunkMetadata into Statistics; Remove maxTombstoneTime in ChunkHeader | -| 855 | [IOTDB-587] New TsFile version 2 | HTHou | Remove ChunkGroupMetadata, store ChunkMetadata list by series, Add TimeseriesMetadata for each series | -| 1024 | [IOTDB-585] Fix recover version bug | qiaojialin | Add MetaMarker.VERSION and version behind each flushing memtable (flushAllChunkGroups) | -| 1047 | [IOTDB-593] Add metaOffset in TsFileMetadata | qiaojialin | Add metaOffset in TsFileMetadata | -| 1100 | [IOTDB-605] Add more levels of index in TsFileMetadata | sunzesong | Update the structure of deviceMetadata to a tree-level indexed TsFileMetadata | - -# 0.8.0 -> 0.9.x (version-1) - -Last Updated on 2019-10-27 by Lei Rui. - -| PR# | Name | Author | Changes | -| ---- | ------------------------------------------------------------ | --------------- | ------------------------------------------------------------ | -| 258 | [IOTDB-143]Development of merge | jt2594838 | Add totalChunkNum and invalidChunkNum to TsFileMetaData. | -| 409 | \[IOTDB-165\]\[TsFile\] Delete a current version and add a number version and an exception. | Genius_pig | (1) Delete a current version in TsFileMetaData;
(2) Change the TsFile magic number from 12 bytes to: 6 bytes magic string ("TsFile") + 6 bytes version number ({"000001", "000002", ""000003"}) ("v0.8.0" is the first version (we treat it as "000000"));
(3) The tail of a TsFile only has "TsFile" magic string, without the version number. | -| 466 | [IOTDB-208] Bloom filter | SilverNarcissus | Add four fields for the bloom filter to TsFileMetaData: 1) bit vector byte array length, 2) bit vector byte array, 3) the number of bits, 4) the number of hash functions. | - - - - - diff --git a/src/zh/Development/rpc-changelist.md b/src/zh/Development/rpc-changelist.md deleted file mode 100644 index 1efeb28c..00000000 --- a/src/zh/Development/rpc-changelist.md +++ /dev/null @@ -1,210 +0,0 @@ - - -# 0.12.x -> 0.13.x - -Last Updated on 2022.1.17 by Xin Zhao. - -## 1. Delete Old - -| Latest Changes | Related Committers | -| ---------------------------------- | ------------------ | - -## 2. Add New - -| Latest Changes | Related Committers | -|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| -| Add TSTracingInfo | Minghui Liu | -| Add structs and interfaces to append, prune, query and unset Schema Template (detail: TSAppendSchemaTemplateReq, TSPruneSchemaTemplateReq, TSQueryTemplateReq, TSQueryTemplateResp, TSUnsetSchemaTemplateReq, appendSchemaTemplate, pruneSchemaTemplate, querySchemaTemplate, unsetSchemaTemplate), and serializedTemplate in TSCreateSchemaTemplateReq | Xin Zhao | -| Add struct TSInsertStringRecordsOfOneDeviceReq | Hang Zhang | -| Add method TSStatus insertStringRecordsOfOneDevice(1:TSInsertStringRecordsOfOneDeviceReq req) | Hang Zhang | -| Add TSDropSchemaTemplateReq, TSStatus dropSchemaTemplate | Xin Zhao | -| Add TSCreateAlignedTimeseriesReq | Haonan Hou | - -## 3. Update - -| Latest Changes | Related Committers | -|--------------------------------------------------------------------------------------|--------------------| -| Add Optional field `isAligned` for all TSInsertReqs | Haonan Hou | -| Change schemaNames from required to optional in TSCreateSchemaTemplateReq | Xin Zhao | -| Change TSCreateAlignedTimeseriesReq, from `i32 compressor` to `List compressors` | Minghui Liu | - -# 0.11.x(version-2) -> 0.12.x(version-1) - -Last Updated on 2021.01.19 by Xiangwei Wei. - - -## 1. Delete Old - -| Latest Changes | Related Committers | -| ---------------------------------- | ------------------ | - - -## 2. Add New - -| Latest Changes | Related Committers | -| ------------------------------------------------------------ | ---------------------- | -| Add timeout in TSFetchResultsReq and TSExecuteStatementReq | Xiangwei Wei | - - -## 3. Update - -| Latest Changes | Related Committers | -| ------------------------------------------------------------ | ---------------------- | - - -# 0.10.x (version-2) -> 0.11.x (version-3) - -Last Updated on 2020-10-27 by Xiangwei Wei. - - -## 1. Delete Old - -| Latest Changes | Related Committers | -| ---------------------------------- | ------------------ | -| Remove TSBatchExecuteStatementResp | Tian Jiang | - - -## 2. Add New - -| Latest Changes | Related Committers | -| ------------------------------------------------------------ | ---------------------- | -| set the input/output as TFramedTransport | Tian Jiang | -| Add timeout(optional) in TSFetchResultsReq and TSExecuteStatementReq | Xiangwei Wei | - - -## 3. Update - -| Latest Changes | Related Committers | -| ------------------------------------------------------------ | ---------------------- | -| Add sub-status in TSStatus | Tian Jiang | -| Change the result of executeBatchStatement as TSStatus | Tian Jiang | -| Change TSDeleteDataReq, delete timestamp and add startTime and endTime | Wei Shao | -| Add zoneId in TSOpenSessionReq | Xiangwei Wei | - - -# 0.9.x (version-1) -> 0.10.x (version-2) - -Last Updated on 2020-5-25 by Kaifeng Xue. - - -## 1. Delete Old - -| Latest Changes | Related Committers | -| ---------------------------------- | ------------------ | -| Remove TS_SessionHandle,TSHandleIdentifier | Tian Jiang | -| Remove TSStatus,TSExecuteInsertRowInBatchResp | Jialin Qiao| - - -## 2. Add New - -| Latest Changes | Related Committers | -| ------------------------------------------------------------ | ---------------------------------- | -| Add parameter sessionId in getTimeZone, getProperties, setStorageGroup, createTimeseries... | Tian Jiang| -| Add struct TSQueryNonAlignDataSet | Haonan Hou| -| Add struct TSInsertTabletsReq | Jialin Qiao| -| Add method insertTablets | Jialin Qiao| -| Add method testInsertTablets | Xiangdong Huang | -| add new field `inferType` in TSInsertRecordReq | Jialin Qiao | - -## 3. Update - -| Latest Changes | Related Committers | -| ------------------------------------------------------------ | ---------------------- | -| Replace TS_SessionHandles with SessionIds, TSOperationHandle with queryIds | Tian Jiang | -| Add optional TSQueryNonAlignDataSet in TSExecuteStatementResp, TSFetchResultsResp and required bool isAlign in TSFetchResultsReq | Haonan Hou | -| Rename TSStatusType to TSStatus | Jialin Qiao | -| Remove sessionId in TSExecuteBatchStatementResp | Jialin Qiao | -| Rename insertRows to insertReords, insert to insertRecord, insertBatch to insertTablet | Jialin Qiao | -| Use TsDataType and binary rather than string in TSInsertInBatchReq and TSInsertReq | Kaifeng Xue | - - - -# 0.8.x -> 0.9.x (version-1) - -Last Updated on 2019-10-27 by Lei Rui. - - -## 1. Delete Old - -| Latest Changes | Related Committers | -| ---------------------------------- | ------------------ | -| Delete struct TSSetStorageGroupReq | Jialin Qiao | -| Remove struct TSDataValue | Lei Rui | -| Remove struct TSRowRecord | Lei Rui | -| Remove optional string version in TSFetchMetadataResp | Genius_pig | -| Remove optional set\ childPaths, nodesList, storageGroups, devices in TSFetchMetadataResp | Genius_pig | -| Remove optional map\ nodeTimeseriesNum in TSFetchMetadataResp | Genius_pig | -| Remove optional list\> timeseriesList in TSFetchMetadataResp | Genius_pig | -| Remove optinoal optional i32 timeseriesNum in TSFetchMetadataResp | Genius_pig | -| Remove optional i32 nodeLevel in TSFetchMetadataReq | Genius_pig | - - -## 2. Add New - -| Latest Changes | Related Committers | -| ------------------------------------------------------------ | ---------------------------------- | -| Add struct TSBatchInsertionReq | qiaojialin | -| Add method TSExecuteBatchStatementResp insertBatch(1:TSBatchInsertionReq req) | qiaojialin | -| Add Struct TSStatusType | Zesong Sun | -| Add TSCreateTimeseriesReq | Zesong Sun | -| Add method TSStatus setStorageGroup(1:string storageGroup) | Zesong Sun, Jialin Qiao | -| Add method TSStatus createTimeseries(1:TSCreateTimeseriesReq req) | Zesong Sun | -| Add struct TSInsertReq | qiaojialin | -| Add method TSRPCResp insertRow(1:TSInsertReq req) | qiaojialin | -| Add struct TSDeleteDataReq | Jack Tsai, qiaojialin | -| Add method TSStatus deleteData(1:TSDeleteDataReq req) | Jack Tsai, Jialin Qiao, qiaojialin | -| Add method TSStatus deleteTimeseries(1:list\ path) | qiaojialin | -| Add method TSStatus deleteStorageGroups(1:list\ storageGroup) | Yi Tao | -| Add Struct TSExecuteInsertRowInBatchResp | Kaifeng Xue | -| Add method insertRowInBatch(1:TSInsertInBatchReq req); | Kaifeng Xue | -| Add method testInsertRowInBatch(1:TSInsertInBatchReq req); | Kaifeng Xue | -| Add method testInsertRow(1:TSInsertReq req); | Kaifeng Xue | -| Add method testInsertBatch(1:TSBatchInsertionReq req); | Kaifeng Xue | -| Add struct TSCreateMultiTimeseriesReq | qiaojialin | -| Add method createMultiTimeseries(1:TSCreateMultiTimeseriesReq req); | qiaojialin | - - -## 3. Update - -| Latest Changes | Related Committers | -| ------------------------------------------------------------ | ---------------------- | -| Add required string timestampPrecision in ServerProperties | 1160300922 | -| Add optional list\ dataTypeList in TSExecuteStatementResp | suyue | -| Update TSStatus to use TSStatusType, instead of using ~~TS_StatusCode, errorCode and errorMessage~~ | Zesong Sun | -| Rename item in enum TSProtocolVersion from ~~TSFILE_SERVICE_PROTOCOL_V1~~ to IOTDB_SERVICE_PROTOCOL_V1 | qiaojialin | -| Rename method name from ~~TSExecuteStatementResp executeInsertion(1:TSInsertionReq req)~~ to TSExecuteStatementResp insert(1:TSInsertionReq req) | qiaojialin | -| Add required i32 compressor in TSCreateTimeseriesReq | Jialin Qiao | -| Add optional list\ nodesList, optional map\ nodeTimeseriesNum in TSFetchMetadataResp | jack870131 | -| Add optional i32 nodeLevel in TSFetchMetadataReq | jack870131, Zesong Sun | -| Change the following methods' returned type to be TSStatus:
TSStatus closeSession(1:TSCloseSessionReq req),
TSStatus cancelOperation(1:TSCancelOperationReq req),
TSStatus closeOperation(1:TSCloseOperationReq req),
TSStatus setTimeZone(1:TSSetTimeZoneReq req),
TSStatus setStorageGroup(1:string storageGroup),
TSStatus createTimeseries(1:TSCreateTimeseriesReq req),
TSStatus insertRow(1:TSInsertReq req),
TSStatus deleteData(1:TSDeleteDataReq req) | Zesong Sun, qiaojialin | -| Change from ~~required string path~~ to required list\ paths in TSDeleteDataReq | qiaojialin | -| Add optional set\ devices in TSFetchMetadataResp | Zesong Sun | -| Rename some fields in TSFetchMetadataResp: ~~ColumnsList~~ to columnsList, ~~showTimeseriesList~~ to timeseriesList, ~~showStorageGroups~~ to storageGroups | Zesong Sun | -| Change struct TSQueryDataSet to eliminate row-wise rpc writing | Lei Rui | -| Add optional i32 timeseriesNum in TSFetchMetadataResp | Jack Tsai | -| Add required i64 queryId in TSHandleIdentifier | Yuan Tian | -| Add optional set\ childPaths in TSFetchMetadataResp | Haonan Hou | -| Add optional string version in TSFetchMetadataResp | Genius_pig | -| Add required i64 statementId in TSExecuteStatementReq | Yuan Tian | -| Add required binary time, required list\ valueList, required list\ bitmapList and remove required binary values, required i32 rowCount in TSQueryDataSet| Yuan Tian | -| Add optional i32 fetchSize in TSExecuteStatementReq,
Add optional TSQueryDataSet in TSExecuteStatementResp| liutaohua | -| Add optional map\ props, optional map\ tags, optional map\ attributes and optional string aliasPath in TSCreateTimeseriesReq | Yuan Tian |