You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by GitBox <gi...@apache.org> on 2018/12/28 14:23:07 UTC

[GitHub] wu-sheng closed pull request #2096: guides cn md

wu-sheng closed pull request #2096: guides cn md
URL: https://github.com/apache/incubator-skywalking/pull/2096
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/docs/others/cn/guides/Component-library-settings.md b/docs/others/cn/guides/Component-library-settings.md
new file mode 100644
index 0000000000..16806b0677
--- /dev/null
+++ b/docs/others/cn/guides/Component-library-settings.md
@@ -0,0 +1,62 @@
+# 组件库设置
+组件库设置与受监视应用程序中使用的您自己或第三方库有关。
+
+在 agent 或 SDK 中, 无论将库名称收集为ID或String(简单地说,例如SpringMVC),收集器格式化ID中的数据,以获得更好的性能和更少的存储要。
+
+此外,收集器根据组件库推测远程服务,例如:
+组件库是MySQL驱动程序库,那么远程服务应该是MySQL Server。
+
+出于这两个原因,收集器需要此文件中的两部分设置:
+
+1.组件库ID,名称和语言。
+1.远程服务器映射,基于本地库。
+
+**必须在此文件中定义所有组件名称和ID。**
+
+## 组件库ID
+定义受监视应用程序中使用的所有组件库的名称和ID。
+这是双向映射,agent或SDK可以value(ID)来表示上行链路数据中的组件名称。
+
+- Name:agent和UI中使用的组件名称
+- id:唯一ID。 一旦发布,所有ID都会被保留。
+- languages:程序语言可以使用此组件。 多语言应该用`,`分隔
+
+### ID 规则
+- Java and 多语言共享: (0, 3000]
+- .NET 平台使用: (3000, 4000]
+- Node.js 平台使用: (4000, 5000]
+- Go 平台使用: (5000, 6000]
+- PHP 平台使用: (6000, 7000]
+- Python 使用: (7000, 8000]
+
+实例
+```yaml
+Tomcat:
+  id: 1
+  languages: Java
+HttpClient:
+  id: 2
+  languages: Java,C#,Node.js
+Dubbo:
+  id: 3
+  languages: Java
+H2:
+  id: 4
+  languages: Java
+```
+
+## 远端服务映射
+远端服务器根据本地组件推断而出,映射基于组件库名称.
+
+- Key: 客户端组件库名称
+- Value: 服务组件名称
+
+```yaml
+Component-Server-Mappings:
+  Jedis: Redis
+  StackExchange.Redis: Redis
+  SqlClient: SqlServer
+  Npgsql: PostgreSQL
+  MySqlConnector: Mysql
+  EntityFrameworkCore.InMemory: InMemoryDatabase
+```
\ No newline at end of file
diff --git a/docs/others/cn/guides/How-to-build.md b/docs/others/cn/guides/How-to-build.md
new file mode 100644
index 0000000000..65cb6e043f
--- /dev/null
+++ b/docs/others/cn/guides/How-to-build.md
@@ -0,0 +1,106 @@
+# 编译指南
+本文档会介绍Skywalking在maven和您使用的IDE下如何进行编译和构建.
+
+## 项目构建
+**因为我们使用了`Git submodule`,所以我们建议不要使用`GitHub`标签或发布页面来下载用于编译的源代码。**
+
+### 从GitHub代码构建
+1. 准备git、JDK8和maven3。
+1. `git clone https://github.com/apache/incubator-skywalking.git`
+1. `cd incubator-skywalking/`
+1. 使用`git checkout [tagname]`切换对应的标签代码版本(可选项,如果要从源代码构建版本,则切换)
+1. `git submodule init`
+1. `git submodule update`
+1. 运行 `./mvnw clean package -DskipTests`
+1. 打包后的代码在`/dist`文件夹中(Linux系统使用.tar.gz文件 and Windows使用.zip文件)。
+
+### 从Apache源代码发行版本构建
+- 什么是 `Apache源代码发行版本`?
+
+对于每个正式的Apache发行版本,都有一个完整且独立的源代码tar包,其中包含所有源代码。您可以从[SkyWalking Apache 下载页面](http://skywalking.apache.org/downloads/)下载它。 编译时不需要与git相关的东西。 只需按照以下步骤操作
+
+1. 准备JDK8和maven3
+1. 运行 `./mvnw clean package -DskipTests`
+1. 打包后的代码在`/dist`文件夹中(Linux系统使用.tar.gz文件 and Windows使用.zip文件)。
+
+## 设置IntelliJ IDEA
+1. 将项目按照maven项目的形式导入进来。
+1. 运行 `./mvnw compile -Dmaven.test.skip=true`编译项目并生成源代码。 因为Skywalking使用gRPC和protobuf。
+1. 所以还需要设置 **Generated Source Codes** 文件夹.
+    * **apm-protocol/apm-network/target/generated-sources/protobuf** 文件夹下的`grpc-java` 和 `java`
+    * **oap-server/server-core/target/generated-sources/protobuf** 文件夹下的`grpc-java` 和 `java`
+    * **oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/target/generated-sources/protobuf** 文件夹下的`grpc-java` 和 `java`
+    * **oap-server/generate-tool/target/generated-sources** 文件夹下的 `antlr4`
+    * **oap-server/generated-analysis/target/generated-sources** 文件夹下的 `oal`
+    
+## 设置Eclipse IDE
+1. 将项目按照maven项目的形式导入进来。
+2. 要支持多个源目录,需要添加以下配置 `incubator-skywalking/pom.xml`:
+
+```
+<plugin>
+    <groupId>org.codehaus.mojo</groupId>
+    <artifactId>build-helper-maven-plugin</artifactId>
+    <version>1.8</version>
+    <executions>
+        <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+                <goal>add-source</goal>
+            </goals>
+            <configuration>
+                <sources>
+                    <source>src/java/main</source>
+                    <source>apm-protocol/apm-network/target/generated-sources/protobuf</source>
+                    <source>apm-collector/apm-collector-remote/collector-remote-grpc-provider/target/generated-sources/protobuf</source>
+               </sources>
+            </configuration>
+        </execution>
+    </executions>
+</plugin>
+```
+3. 添加以下配置,让eclipse的M2e插件支持执行的解决方案配置
+
+```
+<pluginManagement>
+    <plugins>
+    <!--This plugin's configuration is used to store Eclipse m2e settings 
+    only. It has no influence on the Maven build itself. -->
+        <plugin>
+            <groupId>org.eclipse.m2e</groupId>
+            <artifactId>lifecycle-mapping</artifactId>
+            <version>1.0.0</version>
+            <configuration>
+                <lifecycleMappingMetadata>
+                    <pluginExecutions>
+                        <pluginExecution>
+                            <pluginExecutionFilter>
+                                <groupId>org.codehaus.mojo</groupId>
+                                <artifactId>build-helper-maven-plugin</artifactId>
+                                <versionRange>[1.8,)</versionRange>
+                                <goals>
+                                    <goal>add-source</goal>
+                                </goals>
+                            </pluginExecutionFilter>
+                        </pluginExecution>
+                    </pluginExecutions>
+                </lifecycleMappingMetadata>
+            </configuration>
+        </plugin>
+    </plugins>
+</pluginManagement>
+```
+4. 将Google guava依赖项添加到 **apm-collector-remote/collector-remote-grpc-provider/pom.xml**文件中
+
+```
+<dependency>
+   <groupId>com.google.guava</groupId>
+   <artifactId>guava</artifactId>
+   <version>24.0-jre</version>
+</dependency>
+```
+5. 运行 `./mvnw compile -Dmaven.test.skip=true`
+6. 运行 `maven update`. update命令前不能有clean(这将清除complie生成的proto转换Java文件)
+7. 运行 `./mvnw compile` 编译 collector-remote-grpc-provider 和 apm-protocol
+8. 刷新项目
diff --git a/docs/others/cn/guides/How-to-release.md b/docs/others/cn/guides/How-to-release.md
new file mode 100644
index 0000000000..1f332d6055
--- /dev/null
+++ b/docs/others/cn/guides/How-to-release.md
@@ -0,0 +1,377 @@
+Apache SkyWalking 发布指南
+--------------------
+本文档指导每个提交者在Apache Way中发布SkyWalking,并且还帮助提交者检查发布的投票。
+
+
+## 设置您的开发环境
+按照 [Apache maven部署环境文档](http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env)设置gpg工具和加密密码
+
+使用以下代码块作为模板并将其放入 ~/.m2/settings.xml
+
+```
+<settings>
+...
+  <servers>
+    <!-- To publish a snapshot of some part of Maven -->
+    <server>
+      <id>apache.snapshots.https</id>
+      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
+      <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>
+    </server>
+    <!-- To stage a release of some part of Maven -->
+    <server>
+      <id>apache.releases.https</id>
+      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
+      <password> <!-- YOUR APACHE LDAP PASSWORD (encrypted) --> </password>
+    </server>
+   ...
+  </servers>
+</settings>
+```
+
+## 添加您的GPG公钥
+1. 将您的GPG公钥添加到 [SkyWalking GPG KEYS](https://dist.apache.org/repos/dist/release/incubator/skywalking/KEYS) 文件中,
+只有你是一个提交者,使用你的Apache id和密码登录这个svn,并更新文件。 **不要覆盖现有文件**
+1. 将您的GPG公钥上传到公共GPG站点。 如[MIT's 站点](http://pgp.mit.edu:11371/). 这个网站应该在Apache maven staging repository检查列表
+
+## 测试你的配置
+此步骤仅用于测试,如果您的env设置正确,则不需要每次都检查。
+```
+./mvnw clean install -Papache-release (这将构建工件,来源和标志)
+```
+
+## 准备发布
+```
+./mvnw release:clean
+./mvnw release:prepare -DautoVersionSubmodules=true -Pauto-submodule
+```
+_你可以在发布之前做一个GPG标志,如果你需要输入密码进行签名,而且maven没有给出机会,
+但只是失败。 运行`gpg --sign xxx`到任何文件都可以记住密码有足够的时间来发布._
+
+## 发布阶段 
+```
+./mvnw release:perform -DskipTests -Pauto-submodule
+```
+1.将版本号设置为x.y.z,标记为** v ** x.y.z(版本标记必须以** v **开头,您将在下一步中找到目的。)
+1.该版本将自动插入临时存储库中。
+
+## 构建并签署源代码包
+```shell
+export RELEASE_VERSION=x.y.z (example: RELEASE_VERSION=5.0.0-alpha)
+cd tools/releasing
+sh create_source_release.sh
+```
+
+**注意**, `create_source_release.sh` 只适合MacOS。 欢迎任何人贡献Windows bat和Linux shell。
+
+这个脚本应该做以下事情
+1. 使用 `v` + `RELEASE_VERSION` 作为标记来克隆代码。
+1. 完成 `git submodule init/update` .
+1. 排除目标源tar中的所有不必要的文件,例如.git,.github,.gitmodules。 有关详细信息,请参阅脚本。
+1. 执行 `gpg` 和 `shasum 512`. 
+
+
+应该在`tools/releasing`文件夹中找到`apache-skywalking-apm-incubating-x.y.z-src.tgz`和.asc, .sha512结尾的文件
+
+## 在Apache Nexus Staging存储库中查找和下载分发
+1. 使用ApacheId登录 `https://repository.apache.org/`。
+1. 跳转到 `https://repository.apache.org/#stagingRepositories`。
+1. 搜索 `skywalking` 并找到您的暂存存储库。
+1. 关闭存储库并等待所有检查通过。 在此步骤中,将检查您的GPG KEYS。参考[设置PGP文档](#add-your-gpg-public-key),如果你以前没有这样做过。
+1. 跳转到 `{REPO_URL}/org/apache/skywalking/apache-skywalking-apm-incubating/x.y.z`
+1. 下载 `.tar.gz` 和 `.zip` 且有 .asc 和 .sha1 结尾的文件
+
+
+## 上传到Apache svn
+1. 使用ApacheId登录 `https://dist.apache.org/repos/dist/dev/incubator/skywalking/`。
+1. 创建文件夹,按发行版本和圆形命名,例如:x.y.z。
+1. 将源代码包上传到包含.asc,.sha512的文件夹
+    * 包名:apache-skywalking-incubating-x.y.z-src.tar.gz
+    * 有关详细信息,请参见“构建和签署源代码包”一节 
+1. 使用.asc,.sha512将分发包上载到该文件夹
+    * 包名:apache-skywalking-incubating-x.y.z.tar.gz, apache-skywalking-incubating-x.y.z.zip
+    * 有关详细信息,请参见“在Apache Nexus Staging存储库中查找和下载分发”一节
+    * 创建.sha512包: `shasum -a 512 file > file.sha512`
+
+## 发表内部公告
+在开发邮件列表中发送公告邮件。
+
+```
+邮件标题: [ANNOUNCE] SkyWalking x.y.z test build available
+
+邮件内容:
+The test build of x.y.z is available.
+
+This is our Apache Incubator release.
+We welcome any comments you may have, and will take all feedback into
+account if a quality vote is called for this build.
+
+Release notes:
+
+ * https://github.com/apache/incubator-skywalking/blob/master/CHANGES.md
+
+Release Candidate:
+
+ * https://dist.apache.org/repos/dist/dev/incubator/skywalking/xxxx
+ * sha512 checksums
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x-src.tgz
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x.tar.gz
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x.zip
+
+Maven 2 staging repository:
+
+ * https://repository.apache.org/content/repositories/xxxx/org/apache/skywalking/
+
+Release Tag :
+
+ * (Git Tag) x.y.z
+
+Release CommitID :
+
+ * https://github.com/apache/incubator-skywalking/tree/(Git Commit ID)
+ * Git submodule
+   * skywalking-ui: https://github.com/apache/incubator-skywalking-ui/tree/(Git Commit ID)
+   * apm-protocol/apm-network/src/main/proto: https://github.com/apache/incubator-skywalking-data-collect-protocol/tree/(Git Commit ID)
+   * oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol https://github.com/apache/incubator-skywalking-query-protocol/tree/(Git Commit ID)
+
+Keys to verify the Release Candidate :
+
+ * http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x2EF5026E70A55777 corresponding to pengys@apache.org
+
+Guide to build the release from source :
+
+ * https://github.com/apache/incubator-skywalking/blob/x.y.z/docs/en/guides/How-to-build.md
+
+A vote regarding the quality of this test build will be initiated
+within the next couple of days.
+```
+
+## 等待至少48小时的测试响应
+任何PPMC,提交者或贡献者都可以测试发布和反馈的功能。
+基于此,PPMC将决定是否开始投票。
+
+## 在dev群组中投票
+在`dev @ skywalking.apache.org`中投票
+
+```
+邮件标题: [VOTE] Release Apache SkyWalking (incubating) version x.y.z
+
+邮件内容:
+Hi All,
+This is a call for vote to release Apache SkyWalking (Incubating) version x.y.z.
+
+Release notes:
+
+ * https://github.com/apache/incubator-skywalking/blob/x.y.z/CHANGES.md
+
+Release Candidate:
+
+ * https://dist.apache.org/repos/dist/dev/incubator/skywalking/xxxx
+ * sha512 checksums
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x-src.tgz
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x.tar.gz
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x.zip
+
+Maven 2 staging repository:
+
+ * https://repository.apache.org/content/repositories/xxxx/org/apache/skywalking/
+
+Release Tag :
+
+ * (Git Tag) x.y.z
+
+Release CommitID :
+
+ * https://github.com/apache/incubator-skywalking/tree/(Git Commit ID)
+ * Git submodule
+   * skywalking-ui: https://github.com/apache/incubator-skywalking-ui/tree/(Git Commit ID)
+   * apm-protocol/apm-network/src/main/proto: https://github.com/apache/incubator-skywalking-data-collect-protocol/tree/(Git Commit ID)
+   * oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol https://github.com/apache/incubator-skywalking-query-protocol/tree/(Git Commit ID)
+
+Keys to verify the Release Candidate :
+
+ * http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x2EF5026E70A55777 corresponding to pengys@apache.org
+
+Guide to build the release from source :
+
+ * https://github.com/apache/incubator-skywalking/blob/x.y.z/docs/en/guides/How-to-build.md
+
+Voting will start now (xxxx date) and will remain open for at least 72 hours, Request all PPMC members to give their vote.
+[ ] +1 Release this package.
+[ ] +0 No opinion.
+[ ] -1 Do not release this package because....
+```
+
+## 投票检查
+所有PPMC成员和提交者都应在投票+1之前检查这些。
+
+1. 功能测试。
+1. staging repository中的所有工件都使用.asc,.md5,* sha1文件发布
+1. 源代码和下发包 (apache-skywalking-incubating-x.y.z-src.tar.gz, apache-skywalking-incubating-x.y.z.tar.gz, apache-skywalking-incubating-x.y.z.zip)
+都应该在 `https://dist.apache.org/repos/dist/dev/incubator/skywalking/x.y.z` 且包含 .asc, .sha512
+1. `LICENSE` 和 `NOTICE` 文件在源代码和分发包中。
+1. 检查 `shasum -c apache-skywalking-apm-incubating-x.y.z-src.tgz.sha512`
+1. 构建发布源代码包 (apache-skywalking-incubating-x.y.z-src.tar.gz) by following this [文档](https://github.com/apache/incubator-skywalking/blob/master/docs/en/How-to-build.md#build-from-apache-source-codes).
+1. Apache RAT检查。运行`./mvnw apache-rat:check`. (源代码中没有二进制文件)
+1. 需要有免责声明
+
+投票结果应遵循这些。
+1.PPMC投票是+1绑定,所有其他投票是+1没有约束力。
+1.在72小时内,你得到至少3(+1绑定),并且+1比-1更多。投票通过。
+
+## 要求在Apache IPMC中投票
+在`general @ incubator.apache.org`中投票
+
+```
+邮件标题: [VOTE] Release Apache SkyWalking (incubating) version x.y.z
+
+邮件内容:
+Hi All,
+This is a call for vote to release Apache SkyWalking (Incubating) version x.y.z.
+
+The Apache SkyWalking community has tested, voted and approved the proposed
+release of Apache SkyWalking (Incubating) x.y.z
+
+We now kindly request the Incubator PMC members review and vote on this
+incubator release.
+
+SkyWalking: APM (application performance monitor) tool for distributed systems, 
+especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures. 
+Underlying technology is a distributed tracing system.
+
+Vote Thread:
+
+ * From `list.apache.org`
+
+Result Thread:
+
+ * From the vote thread.
+
+Release notes:
+
+ * https://github.com/apache/incubator-skywalking/blob/x.y.z/CHANGES.md
+
+Release Candidate:
+
+ * https://dist.apache.org/repos/dist/dev/incubator/skywalking/xxxx
+ * sha512 checksums
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x-src.tgz
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x.tar.gz
+   - sha512xxxxyyyzzz apache-skywalking-apm-incubating-x.x.x.zip
+
+Maven 2 staging repository:
+
+ * https://repository.apache.org/content/repositories/xxxx/org/apache/skywalking/
+
+Release Tag :
+
+ * (Git Tag) x.y.z
+
+Release CommitID :
+
+ * https://github.com/apache/incubator-skywalking/tree/(Git Commit ID)
+ * Git submodule
+   * skywalking-ui: https://github.com/apache/incubator-skywalking-ui/tree/(Git Commit ID)
+   * apm-protocol/apm-network/src/main/proto: https://github.com/apache/incubator-skywalking-data-collect-protocol/tree/(Git Commit ID)
+   * oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol https://github.com/apache/incubator-skywalking-query-protocol/tree/(Git Commit ID)
+
+Keys to verify the Release Candidate :
+
+ * http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x2EF5026E70A55777 corresponding to pengys@apache.org
+
+Guide to build the release from source :
+
+ * https://github.com/apache/incubator-skywalking/blob/x.y.z/docs/en/guides/How-to-build.md
+
+Voting will start now (xxxx date) and will remain open for at least 72 hours, Request IPMC to give their vote.
+[ ] +1 Release this package.
+[ ] +0 No opinion.
+[ ] -1 Do not release this package because....
+```
+
+## 投票结果邮件
+关闭投票,如果:
+1. I在72小时内,你得到至少3(+1绑定),并且+1比-1更多。 投票通过。 在IPMC投票中,只有孵化器项目PMC
+投票将被视为+1绑定。
+1. 一些评论者在这个版本中发现了一些严重的错误,团队可以决定取消投票并准备一个新的RC。
+
+发送邮件到 `general@incubator.apache.org` 涉及投票结果和状态.
+```
+邮件标题: [Result][VOTE] Release Apache SkyWalking (incubating) version x.y.z
+
+邮件内容:
+Hi all,
+
+The vote for releasing Apache SkyWalking x.y.z (incubating) is closed, now.
+
+Vote result:
+x (+1 binding) (Names of voters)
+y -1.
+
+Thank you everyone for taking the time to review the release and help us. 
+
+I will process to publish the release and send ANNOUNCE.
+```
+
+## 发版
+1. 将源代码tar球和发行版移动到 `https://dist.apache.org/repos/dist/release/incubator/skywalking/`.
+
+```
+> export SVN_EDITOR=vim
+> svn mv https://dist.apache.org/repos/dist/dev/incubator/skywalking/x.y.z https://dist.apache.org/repos/dist/release/incubator/skywalking
+....
+enter your apache password
+....
+
+```
+2. 在nexus staging repo中发布.
+3. 公共下载源和下发 tar/zip 位于 `http://www.apache.org/dyn/closer.cgi/incubator/skywalking/x.y.z/xxx`.
+我们只发布Apache镜像路径作为发布信息。
+4. 公共asc和sha512位于 `https://www.apache.org/dist/incubator/skywalking/x.y.z/xxx`
+5. 公共密钥指向 `https://www.apache.org/dist/incubator/skywalking/KEYS`
+6. 将ANNOUNCE邮件发送到 `general@incubator.apache.org` 和 `dev@skywalking.apache.org`.
+
+```
+邮件标题: [ANNOUNCE] Release Apache SkyWalking (incubating) version x.y.z
+
+邮件内容:
+Hi all,
+
+Apache SkyWalking (incubating) Team is glad to announce the first release of Apache SkyWalking Incubating x.y.z.
+
+SkyWalking: APM (application performance monitor) tool for distributed systems, 
+especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures. 
+Underlying technology is a distributed tracing system.
+
+Vote Thread: 
+
+Download Links : http://skywalking.apache.org/downloads/
+
+Release Notes : https://github.com/apache/incubator-skywalking/blob/x.y.z/CHANGES.md
+
+Website: http://skywalking.apache.org/
+
+SkyWalking Resources:
+- Issue: https://github.com/apache/incubator-skywalking/issues
+- Mailing list: dev@skywalkiing.incubator.apache.org
+- Documents: https://github.com/apache/incubator-skywalking/blob/x.y.z/docs/README.md
+
+
+- Apache SkyWalking (incubating) Team
+
+=====
+*Disclaimer*
+
+Apache SkyWalking (incubating) is an effort undergoing incubation at The
+Apache Software Foundation (ASF), sponsored by the name of Apache
+Incubator PMC. Incubation is required of all newly accepted
+projects until a further review indicates that the
+infrastructure, communications, and decision making process have
+stabilized in a manner consistent with other successful ASF
+projects. While incubation status is not necessarily a reflection
+of the completeness or stability of the code, it does indicate
+that the project has yet to be fully endorsed by the ASF.
+```
+
+7. 更新网站下载页面。 http://skywalking.apache.org/downloads/ 。 包括新的下载源,分发,sha512,asc和文档,链接。 可通过遵循上述规则(3) - (6)找到链接。
+8. 在网站主页甚至页面上添加发布活动。 通过更改日志或主要功能宣布公开发布。
diff --git a/docs/others/cn/guides/Java-Plugin-Development-Guide.md b/docs/others/cn/guides/Java-Plugin-Development-Guide.md
new file mode 100644
index 0000000000..615e13afea
--- /dev/null
+++ b/docs/others/cn/guides/Java-Plugin-Development-Guide.md
@@ -0,0 +1,299 @@
+# 插件开发指南
+本文档描述了如何理解,开发和贡献插件。
+
+## 概念
+### Span
+Span是分布式跟踪系统中一个重要且通用的概念。
+可从[Google Dapper Paper](https://research.google.com/pubs/pub36356.html) 和
+[OpenTracing](http://opentracing.io)学习**Span**相关知识
+
+SkyWalking从2017年开始支持OpenTracing和OpenTracing-Java API,我们的Span概念与论文和OpenTracing类似。我们也扩展了Span。
+
+Span有三种类型
+
+1.1 EntrySpan
+EntrySpan代表服务提供者,也是服务器端的端点。 作为一个APM系统,我们的目标是
+应用服务器。 所以几乎所有的服务和MQ-comsumer都是EntrySpan。
+
+1.2 LocalSpan
+LocalSpan表示普通的Java方法,它与远程服务无关,也不是MQ生产者/消费者
+也不是服务(例如HTTP服务)提供者/消费者。
+
+1.3 ExitSpan
+ExitSpan代表一个服务客户端或MQ的生产者,在SkyWalking的早期命名为“LeafSpan”。
+例如 通过JDBC访问DB,读取Redis / Memcached被编目为ExitSpan。
+
+### ContextCarrier
+为了实现分布式跟踪,需要绑定跨进程的跟踪,并且应该传播上下文
+整个过程。 这就是ContextCarrier的职责。
+
+以下是有关如何在`A -> B`分布式调用中使用**ContextCarrier**的步骤。
+
+1. 在客户端,创建一个新的空的`ContextCarrier`。
+1. 通过 `ContextManager#createExitSpan` 创建一个 ExitSpan 或者 使用 `ContextManager#inject` 来初始化 `ContextCarrier`.
+1. 将`ContextCarrier`所有信息放到heads(例如HTTP HEAD)、attachments(例如Dubbo RPC framework) 或者messages(例如Kafka)
+1. 通过服务调用,将`ContextCarrier`传递到服务端。
+1. 在服务端,在对应组件的heads、attachments或messages获取`ContextCarrier`所有消息。
+1. `ContestManager#createEntrySpan`创建EntrySpan 或者使用 `ContextManager#extract` 将服务端和客户端的绑定。
+
+让我们通过Apache HTTPComponent client插件 和Tomcat 7服务器插件演示,步骤如下:
+
+1. 客户端Apache HTTPComponent client插件
+
+```java
+            span = ContextManager.createExitSpan("/span/operation/name", contextCarrier, "ip:port");
+            CarrierItem next = contextCarrier.items();
+            while (next.hasNext()) {
+                next = next.next();
+                httpRequest.setHeader(next.getHeadKey(), next.getHeadValue());
+            }
+```
+
+2. 服务端Tomcat 7服务器插件
+
+```java
+            ContextCarrier contextCarrier = new ContextCarrier();
+            CarrierItem next = contextCarrier.items();
+            while (next.hasNext()) {
+                next = next.next();
+                next.setHeadValue(request.getHeader(next.getHeadKey()));
+            }
+
+            span = ContextManager.createEntrySpan(“/span/operation/name”, contextCarrier);
+```
+
+### ContextSnapshot
+除了跨进程,跨线程也是需要支持的,例如异步线程(内存中的消息队列)和批处理在java中很常见,跨进程和跨线程十分相似,因为都是需要传播
+上下文。 唯一的区别是,不需要跨线程序列化。
+
+以下是有关跨线程传播的三个步骤:
+1. 使用`ContextManager#capture`获取ContextSnapshot对象。
+2. 让子线程以任何方式,通过方法参数或由现有参数携带来访问ContextSnapshot
+3. 在子线程中使用`ContextManager#continies`。
+
+## 核心 API
+### ContextManager
+ContextManager提供所有主要API。
+
+1. Create EntrySpan
+
+```java
+public static AbstractSpan createEntrySpan(String endpointName, ContextCarrier carrier)
+```
+按操作名称创建 EntrySpan (例如服务名称, uri) 和 **ContextCarrier**.
+
+2. Create LocalSpan
+
+```java
+public static AbstractSpan createLocalSpan(String endpointName)
+```
+按操作名称创建 LocalSpan (例如完整的方法结构)
+
+3. Create ExitSpan
+
+```java
+public static AbstractSpan createExitSpan(String endpointName, ContextCarrier carrier, String remotePeer)
+```
+按操作名称创建 ExitSpan (例如服务名称, uri) 和 **ContextCarrier** 和 对端地址 (例如ip+port或hostname+port)
+
+### AbstractSpan
+```java
+    /**
+     * Set the component id, which defines in {@link ComponentsDefine}
+     *
+     * @param component
+     * @return the span for chaining.
+     */
+    AbstractSpan setComponent(Component component);
+
+    /**
+     * Only use this method in explicit instrumentation, like opentracing-skywalking-bridge.
+     * It it higher recommend don't use this for performance consideration.
+     *
+     * @param componentName
+     * @return the span for chaining.
+     */
+    AbstractSpan setComponent(String componentName);
+
+    AbstractSpan setLayer(SpanLayer layer);
+
+    /**
+     * Set a key:value tag on the Span.
+     *
+     * @return this Span instance, for chaining
+     */
+    AbstractSpan tag(String key, String value);
+
+    /**
+     * Record an exception event of the current walltime timestamp.
+     *
+     * @param t any subclass of {@link Throwable}, which occurs in this span.
+     * @return the Span, for chaining
+     */
+    AbstractSpan log(Throwable t);
+
+    AbstractSpan errorOccurred();
+
+    /**
+     * Record an event at a specific timestamp.
+     *
+     * @param timestamp The explicit timestamp for the log record.
+     * @param event the events
+     * @return the Span, for chaining
+     */
+    AbstractSpan log(long timestamp, Map<String, ?> event);
+
+    /**
+     * Sets the string name for the logical operation this span represents.
+     *
+     * @return this Span instance, for chaining
+     */
+    AbstractSpan setOperationName(String endpointName);
+```
+除了设置操作名称,标签信息和日志外,还要设置两个属性,即component(组件)和layer(层),特别是对于EntrySpan和ExitSpan。
+
+SpanLayer 是span的编目. 有五个值:
+1. UNKNOWN (默认)
+1. DB
+1. RPC_FRAMEWORK, (为了RPC框架,非普通的HTTP调用)for a RPC framework, not an ordinary HTTP
+1. HTTP
+1. MQ
+
+组件ID由SkyWalking项目定义和保留,对于组件的名称或ID的扩展,请遵循[组件库的定义与扩展](Component-library-settings.md) 
+
+## 开发插件
+### Abstract(抽象)
+跟踪的基本方法是拦截Java方法,使用字节码操作技术和AOP概念。
+SkyWalking包装了字节码操作技术并跟踪上下文的传播,
+所以你只需要定义拦截点(换句话说就是Spring的切面)
+
+### Intercept(拦截)
+SkyWalking提供两类通用的定义去拦截构造器,实例方法和类方法。
+* Extend `ClassInstanceMethodsEnhancePluginDefine` defines `Contructor` intercept points and `instance method` intercept points.
+* 继承 `ClassInstanceMethodsEnhancePluginDefine` 定义 `Contructor`(构造器)拦截点和 `instance method`(实例化方法)拦截点.
+* 继承 `ClassStaticMethodsEnhancePluginDefine` 定义 `class method`(类方法)拦截点.
+
+当然,您也可以集成`ClassEnhancePluginDefine`去设置所有的拦截点,担着不常用。
+
+### Implement plugin(实现插件)
+下文,我将通过扩展`ClassInstanceMethodsEnhancePluginDefine`来演示如何实现一个插件
+
+1. 定义目标类的名称
+
+```java
+protected abstract ClassMatch enhanceClass();
+```
+
+ClassMatch 以下有四种方法表示如何去匹配目标类:
+* byName, 通过完整的类名(package name + `.` + class name)(包名+类名)。
+* byClassAnnotationMatch, 通过目标类存在某些注释。
+* byMethodAnnotationMatch, 通过目标类的方法存在某些注释.
+* byHierarchyMatch, 通过目标类的父类或接口
+
+**注意事项**:
+* 禁止使用 `*.class.getName()` 去获取类名, 建议你使用文字字符串,这是为了
+避免ClassLoader问题。
+* `by*AnnotationMatch` 不支持继承的注释.
+* 非必要的话,不推荐使用 `byHierarchyMatch`, 因为使用它可能会触发拦截
+许多未被发现的方法,会导致性能问题和不稳定。
+
+实例:
+
+```java
+@Override
+protected ClassMatch enhanceClassName() {
+    return byName("org.apache.catalina.core.StandardEngineValve");		
+}		      
+
+```
+
+2. 定义实例方法拦截点
+
+```java
+protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints();
+
+public interface InstanceMethodsInterceptPoint {
+    /**
+     * class instance methods matcher.
+     *
+     * @return methods matcher
+     */
+    ElementMatcher<MethodDescription> getMethodsMatcher();
+
+    /**
+     * @return represents a class name, the class instance must instanceof InstanceMethodsAroundInterceptor.
+     */
+    String getMethodsInterceptor();
+
+    boolean isOverrideArgs();
+}
+```
+
+也可以使用`Matcher`来设置目标方法。 如果要更改参数,请在`isOverrideArgs`中返回** true ** 参考拦截器。
+
+以下部分将告诉您如何实现拦截器。
+
+3. Add plugin define into skywalking-plugin.def file
+```properties
+tomcat-7.x/8.x=TomcatInstrumentation
+```
+
+
+### 实现一个拦截器
+作为一个实例方法的拦截器,需要实现
+`org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor`
+```java
+/**
+ * A interceptor, which intercept method's invocation. The target methods will be defined in {@link
+ * ClassEnhancePluginDefine}'s subclass, most likely in {@link ClassInstanceMethodsEnhancePluginDefine}
+ *
+ * @author wusheng
+ */
+public interface InstanceMethodsAroundInterceptor {
+    /**
+     * called before target method invocation.
+     *
+     * @param result change this result, if you want to truncate the method.
+     * @throws Throwable
+     */
+    void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes,
+        MethodInterceptResult result) throws Throwable;
+
+    /**
+     * called after target method invocation. Even method's invocation triggers an exception.
+     *
+     * @param ret the method's original return value.
+     * @return the method's actual return value.
+     * @throws Throwable
+     */
+    Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes,
+        Object ret) throws Throwable;
+
+    /**
+     * called when occur exception.
+     *
+     * @param t the exception occur.
+     */
+    void handleMethodException(EnhancedInstance objInst, Method method, Object[] allArguments, Class<?>[] argumentsTypes,
+        Throwable t);
+}
+```
+在before,after和exception处理阶段使用核心API。
+
+
+### 将插件贡献到Apache SkyWalking 仓库中
+我们欢迎大家贡献插件。
+
+请按照以下步骤操作:
+
+1. 提交有关您要贡献哪些插件的问题,包括支持的版本。
+1. 在`apm-sniffer / apm-sdk-plugin`或`apm-sniffer / optional-plugins`下创建子模块,名称应包含支持的库名和版本
+1. Create sub modules under `apm-sniffer/apm-sdk-plugin` or `apm-sniffer/optional-plugins`, and the name should include supported library name and versions
+1. 按照本指南进行开发。 确保提供评论和测试用例。
+1. 开发并测试。
+1. 发送拉取请求并要求审核。
+1. 提供自动测试用例。 
+所有测试用例都托管在[SkywalkingTest/skywalking-agent-testcases repository](https://github.com/SkywalkingTest/skywalking-agent-testcases).
+关于如何编写测试用例,请按照[如何编写](https://github.com/SkywalkingTest/skywalking-agent-testcases/blob/master/docs/how-to-write-a-plugin-testcase.md) 文档来实现.
+1. 在提供自动测试用例并在CI中递交测试后,插件提交者会批准您的插件。
+1. SkyWalking接受的插件。 
diff --git a/docs/others/cn/guides/README.md b/docs/others/cn/guides/README.md
index a05f9ea4f0..390e3db44a 100644
--- a/docs/others/cn/guides/README.md
+++ b/docs/others/cn/guides/README.md
@@ -1,2 +1,43 @@
-# 指南
-TODO
+# 贡献指南
+你可以通过以下方式,为SkyWalking社区做成贡献。
+
+- 审阅SkyWalking的文档,指出或修复文档不准确的地方,也可以将SkyWalking文档翻译成其他语言。
+- 下载我们的[发布版本](http://skywalking.apache.org/downloads/),尝试用其监控你的应用程序,并向我们反馈您的想法、疑问或使用案例。
+- 阅读我们的源码,带着细节信息向我们提问。
+- 发现bug时,可在这里[提交问题](https://github.com/apache/incubator-skywalking/issues), 并且您也可以尝试修复它。
+- 你可以从完成[社区需要的帮助](https://github.com/apache/incubator-skywalking/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22),
+着手做起.
+- 提交问题或讨论在[GitHub问题处](https://github.com/apache/incubator-skywalking/issues/new).
+- 通过[网页邮件列表](https://lists.apache.org/list.html?dev@skywalking.apache.org)查看所有邮件的讨论,如果您是SkyWalking项目的committer,可在浏览器模式下登录并使用邮件列表。否则,根据按照下面进行订阅。
+- 问题的报告和讨论也可在 `dev@skywalking.apache.org`进行, 
+发送邮件到`dev-subscribe@skywalking.apache.org`,按照回复订阅邮件列表。
+
+
+## 与我们联系
+以下所有渠道均向社区开放,您可以选择自己喜欢的方式。
+
+* 提交[问题](https://github.com/apache/incubator-skywalking/issues)
+* 邮件列表: **dev@skywalking.apache.org**. 发送邮件到 `dev-subscribe@skywalking.apache.org`,按照回复订阅邮件列表。
+* [Gitter](https://gitter.im/openskywalking/Lobby)
+* QQ群: 392443393
+
+## 对于代码开发者
+作为开发者,首先阅读[编译指南](How-to-build.md). 它会告诉你如何在本地构建。
+
+### 项目扩展
+SkyWalking项目支持许多扩展现有功能的方法。 如果你对这些方式感兴趣,
+阅读以下指南。
+
+- [Java agent 插件开发指南](Java-Plugin-Development-Guide.md).
+本指南将帮助您开发SkyWalking Java agent插件以支持更多框架或组件。 无论是进行开源插件或私有插件的开发都需要阅读这个指南。
+- 如果您想开发其他语言的探针或组件,请阅读[组件库定义和扩展](Component-library-settings.md) 文档.
+- [数据存储扩展开发指南](storage-extention.md). 除了官方已经支持的存储实现外,可帮助钱在的贡献者实现新的数据存储的实现。
+- [通过oal脚本自定义分析](write-oal.md). 指导您使用oal脚本来提供自己所需的指标。
+### UI开发者
+Skywalking UI 由静态页面和Web容器构成。
+
+- **静态页面** 是建立在 [Ant Design Pro](https://pro.ant.design/)之上,Skywalking UI源码托管在[Skywalking UI](https://github.com/apache/incubator-skywalking-ui)。
+- **Web容器** 源代码在`apm-webapp`模块中。这是一个简单的zuul代理,用于托管静态资源并使用GraphQL想后端发送查询请求。
+
+## 发布
+[Apache发布指南](How-to-release.md)向提交者团队介绍了正式的Apache版本发布流程,以避免破坏任何Apache规则。如果您在重新分发中保留我们的许可和通知,则Apache许可允许每个人重新分发。
\ No newline at end of file
diff --git a/docs/others/cn/guides/backend-oal-scripts.md b/docs/others/cn/guides/backend-oal-scripts.md
new file mode 100644
index 0000000000..cba020cd8c
--- /dev/null
+++ b/docs/others/cn/guides/backend-oal-scripts.md
@@ -0,0 +1,11 @@
+# 官方 OAL(可观测性分析语言) 脚本
+首先请阅读[OAL 介绍](../../../en/concepts-and-designs/oal.md).
+
+发行版本中官方脚本:`generated-analysis-x.y.z.jar/official_analysis.oal`,并且源代码库在模块`server-core`中**src/main/resources/official_analysis.oal**。
+**注意**, 这个文件虽然包含在发行版本中,但是在项目运行期间不会起任何作用。您需要使用OAL工具器去真实的分析代码。所生成的代码在`server-core`模块**org.apache.skywalking.oap.server.core.analysis.generated**中
+
+此脚本中命名的所有度量标准都可用于警报和UI查询。 当然,你可以改变这个
+脚本并重新生成分析过程和度量标准,例如添加过滤条件。
+
+如果您尝试添加或删除某些指标,UI项目可能出现问题,我们建议您在计划时执行此操作是
+基于自定义分析核心构建自己的UI。
\ No newline at end of file
diff --git a/docs/others/cn/guides/storage-extention.md b/docs/others/cn/guides/storage-extention.md
new file mode 100644
index 0000000000..0996b77605
--- /dev/null
+++ b/docs/others/cn/guides/storage-extention.md
@@ -0,0 +1,41 @@
+# 数据存储扩展
+SkyWalking g已经提供了多种存储解决方案。在本文档中,您可以
+学习如何轻松实现新存储。
+
+## 定义您的数据存储提供实现
+1. 定义一个类扩展 `org.apache.skywalking.oap.server.library.module.ModuleProvider`.
+2. 将此数据存储提供实现继承存储模块。
+```java
+@Override 
+public Class<? extends ModuleDefine> module() {
+    return StorageModule.class;
+}
+```
+
+## 实现所有DAO接口
+下面是所有数据存储所需实现的DAO接口
+
+1. IServiceInventoryCacheDAO
+1. IServiceInstanceInventoryCacheDAO
+1. H2EndpointInventoryCacheDAO
+1. H2NetworkAddressInventoryCacheDAO
+1. IBatchDAO
+1. StorageDAO
+1. IRegisterLockDAO
+1. H2TopologyQueryDAO
+1. IMetricQueryDAO
+1. ITraceQueryDAO
+1. IMetadataQueryDAO
+1. IAggregationQueryDAO
+1. IAlarmQueryDAO
+1. IHistoryDeleteDAO
+
+## 注册所有的service实现
+在 `public void prepare()`, 使用 `this#registerServiceImplementation` 方法去注册绑定您的接口实现。
+
+## 实例
+`org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider` 
+或 `org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider`  就是一个很好的例子。
+
+## 重新发布新的数据存储实现
+您不必为了实现数据存储而克隆主托管库,您可以轻松地依赖我们的Apache版本。看一下 [OpenSkywalking/SkyWalking-With-Es5x-Storage](https://github.com/OpenSkywalking/SkyWalking-With-Es5x-Storage) 仓库, SkyWalking v6 重新发布 ElasticSearch 5 TCP 链接数据存储的实现。
\ No newline at end of file
diff --git a/docs/others/cn/guides/write-oal.md b/docs/others/cn/guides/write-oal.md
new file mode 100644
index 0000000000..e62d81af90
--- /dev/null
+++ b/docs/others/cn/guides/write-oal.md
@@ -0,0 +1,15 @@
+# 编写 OAL(可观测性分析语言) 脚本
+阅读 [OAL 概述](../../../en/concepts-and-designs/oal.md) 以了解oal脚本。
+
+## 在源代码中查找oal脚本
+官方official_analysis.oal在[这里](../../../../oap-server/generated-analysis/src/main/resources/official_analysis.oal).
+
+## 生成工具
+`oap-server/generate-tool` 模块包含编译工具的源代码。 该工具已经集成在
+maven编译阶段。 所以,除非您想要更改工具源代码,否则无需进行任何设置。
+
+运行 `./mvnw compile` 或 `./mvnw package`, 生成的oal脚本代码位于`oap-server/generate-tool/target/generated-sources/oal/*`.
+
+## 编写并重新编译
+您可以更改`official_analysis.oal`脚本, 然后重新编译代码.
+生成的代码位于 **oap-server/generated-analysis/target/generated-sources/oal**.
\ No newline at end of file


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services