You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/08/22 11:10:39 UTC

[kylin] branch document updated: KYLIN-3498 Chinese translation of community, development docs

This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a commit to branch document
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/document by this push:
     new f917558  KYLIN-3498 Chinese translation of community, development docs
f917558 is described below

commit f91755828e23c0f8fead064f123a675c5f5faaf1
Author: GinaZhai <na...@kyligence.io>
AuthorDate: Tue Aug 21 16:27:08 2018 +0800

    KYLIN-3498 Chinese translation of community, development docs
---
 website/_config.yml                                |   6 +-
 website/_data/development-cn.yml                   |  33 +++
 website/_dev/about_temp_files.cn.md                |  29 +++
 website/_dev/coding_naming_convention.cn.md        |  62 ++++++
 website/_dev/dev_env.cn.md                         | 182 ++++++++++++++++
 website/_dev/howto_contribute.cn.md                | 116 ++++++++++
 website/_dev/howto_docs.cn.md                      | 199 +++++++++++++++++
 website/_dev/howto_docs.md                         |   2 -
 website/_dev/howto_hbase_branches.cn.md            |  23 ++
 website/_dev/howto_package.cn.md                   |  39 ++++
 .../_dev/{howto_release.md => howto_release.cn.md} | 239 ++++++++++-----------
 website/_dev/howto_release.md                      |   4 +-
 website/_dev/howto_test.cn.md                      |  45 ++++
 website/_dev/howto_test.md                         |  29 +--
 website/_dev/index.cn.md                           |  35 +++
 website/_dev/index.md                              |   5 +-
 website/_dev/new_metadata.cn.md                    |  30 +++
 website/_dev/new_metadata.md                       |   2 +-
 website/_dev/plugin_arch.cn.md                     |  42 ++++
 website/_dev/web_tech.cn.md                        |  46 ++++
 .../dev_nav.cn.html}                               |  41 ++--
 website/_includes/dev_ul.cn.html                   |  27 +++
 website/_includes/header.cn.html                   |   4 +-
 website/_includes/home_header.cn.html              |   4 +-
 website/_layouts/community-cn.html                 |   4 +-
 .../_layouts/{community-cn.html => dev-cn.html}    |  53 +++--
 .../{community-cn.html => powered-cn.html}         |  18 +-
 website/community/index.cn.md                      | 178 +++++++++++++++
 website/community/index.md                         |   5 +-
 website/community/poweredby.cn.md                  |  65 ++++++
 website/community/poweredby.md                     |   4 +-
 31 files changed, 1340 insertions(+), 231 deletions(-)

diff --git a/website/_config.yml b/website/_config.yml
index d52449c..5ea233e 100644
--- a/website/_config.yml
+++ b/website/_config.yml
@@ -27,7 +27,7 @@ encoding: UTF-8
 timezone: America/Dawson 
 
 exclude: ["README.md", "Rakefile", "*.scss", "*.haml", "*.sh", "Dockerfile", "Makefile"]
-include: [_docs,_docs16,_docs20,_docs21,_docs23,_dev]
+include: [_docs,_docs16,_docs20,_docs21,_docs23,_dev,community]
 
 # Build settings
 markdown: kramdown
@@ -76,3 +76,7 @@ collections:
     output: true
   dev:
     output: true
+  dev-cn:
+    output: true
+  community:
+    output: true
\ No newline at end of file
diff --git a/website/_data/development-cn.yml b/website/_data/development-cn.yml
new file mode 100644
index 0000000..d1b2331
--- /dev/null
+++ b/website/_data/development-cn.yml
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file 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 KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Development menu items, for English one, dev-cn.yml is for Chinese one
+# The development menu is constructed in dev_nav.html with these data
+
+- title: 开发指南
+  dev:
+    - index
+    - dev_env
+    - coding_naming_convention
+    - howto_test
+    - howto_contribute
+    - howto_docs
+    - howto_package
+    - howto_hbase_branches
+    - howto_release
+    - plugin_arch
+    - new_metadata
+    - web_tech
+    - about_temp_files
diff --git a/website/_dev/about_temp_files.cn.md b/website/_dev/about_temp_files.cn.md
new file mode 100644
index 0000000..dcf95a1
--- /dev/null
+++ b/website/_dev/about_temp_files.cn.md
@@ -0,0 +1,29 @@
+---
+layout: dev-cn
+title:  关于临时文件
+categories: development
+permalink: /cn/development/about_temp_files.html
+---
+
+在我们查看代码时,我们发现 Kylin 在下列位置留下了大量垃圾文件:
+
+* 客户端的本地文件系统
+* HDFS
+* hadoop 节点的本地文件系统。
+
+开了一个单子来追踪这个 issue:
+[https://issues.apache.org/jira/browse/KYLIN-926](https://issues.apache.org/jira/browse/KYLIN-926)
+
+为了将来的开发,请:
+
+* 每当您想在本地创建临时文件时,请选择
+  File.createTempFile 或使用文件夹:
+  BatchConstants.CFG_KYLIN_LOCAL_TEMP_DIR(/tmp/kylin),不要随意使用
+  /tmp 中的另一个文件夹,它会变得一团糟,看起来不专业。
+* 每当您在本地创建临时文件时,请记得在使用之后删除它
+  使用它。最好使用 FileUtils.forceDelete,因为它也适用于
+  删除文件夹。如果 Kylin 异常退出,请尽量避免使用 deleteOnExit 方法。
+* 每当您想要在 HDFS 中创建文件,请尝试在
+  kylin.hdfs.working.dir 或 BatchConstants.CFG_KYLIN_HDFS_TEMP_DIR 下创建文件,以及
+  记得在它不再有用之后删除它。尽量避免投掷
+  一切到 hdfs:///tmp 并将其留作垃圾。
diff --git a/website/_dev/coding_naming_convention.cn.md b/website/_dev/coding_naming_convention.cn.md
new file mode 100644
index 0000000..fca6de8
--- /dev/null
+++ b/website/_dev/coding_naming_convention.cn.md
@@ -0,0 +1,62 @@
+---
+layout: dev-cn
+title:  编码和命名惯例
+categories: development
+permalink: /cn/development/coding_naming_convention.html
+---
+
+## 编码惯例
+
+团队合作中编码管理是非常重要的。它不仅使得代码整齐及整洁,它也节省了许多的工作。不同的代码惯例(自动格式化)将会导致不必要的代码改动使得在代码复审和合并时需要更多的努力。
+
+对于 Java 代码,我们使用 Eclipse 默认的格式化配置,其中一个改动允许长行。
+
+- 对于 Eclipse 开发者,无需手动设置。代码格式化配置 `.settings/org.eclipse.jdt.core.prefs` 在 git 仓库。当项目被引入时,您的 IDE 应该自动配置。
+- 对于 intellij IDEA 开发者,您需要安装 "Eclipse Code Formatter" 并手动将 Eclipse 格式化配置加载到您的 IDE。详细内容请看[搭建开发环境](dev_env.html)。
+- 我们在 maven 中有 *checkstyle plugin* 能强制进行规范检查。
+
+对于 JavaScript,XML 和其它编码,请使用空格来缩进。作为常规,请保持代码格式与现有行一致。目前没有其他的强制措施。
+
+
+
+## 配置命名惯例
+
+Kylin 配置名称(在 `kylin.properties` 中的那些)
+
+- 惯例是 `dot.separated.namespace.config-name-separated-by-dash`,所有的字符都是小写。
+- 基本原理:点分隔前缀用于命名空间,如 java 包名。最后一级与类名相同,但要小写并以短划线分隔。结果与常见的 hadoop 配置名称一致,即。`dfs.namenode.servicerpc-bind-host`。
+- 正面例子:`kylin.metadata.url`; `kylin.snapshot.max-mb`
+- 反面例子:`kylin.cube.customEncodingFactories`,应该为 `kylin.cube.custom-encoding-factories`
+- 名称的命名空间(或包)应映射来自配置中使用的 Java 项目和包。 下面是当前名称空间的列表。
+  - kylin.env
+  - kylin.metadata
+  - kylin.snapshot
+  - kylin.dictionary
+  - kylin.cube
+  - kylin.job
+  - kylin.engine
+  - kylin.engine.mr
+  - kylin.engine.spark
+  - kylin.source
+  - kylin.source.hive
+  - kylin.source.kafka
+  - kylin.storage
+  - kylin.storage.hbase
+  - kylin.storage.partition
+  - kylin.query
+  - kylin.security
+  - kylin.server
+  - kylin.web
+
+
+
+## 配置文件命名惯例
+
+对于配置文件如日志配置,spring 配置,mapreduce job 配置等。
+
+- 惯例是 `words-separated-by-dash.ext`,所有的字符要小写。
+- 基本原理:要和 hadoop 配置文件命名一致,即。hdfs-site.xml
+- 正面例子:`kylin-server-log4j.properties`
+- 反面例子:`kylin_hive_conf.xml`,应该为 `kylin-hive-conf.xml`
+
+
diff --git a/website/_dev/dev_env.cn.md b/website/_dev/dev_env.cn.md
new file mode 100644
index 0000000..8a9a191
--- /dev/null
+++ b/website/_dev/dev_env.cn.md
@@ -0,0 +1,182 @@
+---
+layout: dev-cn
+title:  搭建开发环境
+categories: development
+permalink: /cn/development/dev_env.html
+---
+
+开发者想要在他们的开发机器上运行 Kylin 测试用例或应用。
+
+跟随这个教程,您可以通过运行一个具体测试样例构建 Kylin 测试 cubes,且您能针对已构建的 cube 进一步运行其它测试样例
+
+## Hadoop 客户端环境
+
+Off-Hadoop-CLI 安装需要您有一个有 hadoop 客户端的机器(或一个 hadoop 沙箱)以及本地开发机器。为了简化操作,我们强烈建议您从 hadoop 沙箱上运行 Kylin 开始。在下面的教程中,我们将使用 Hortonworks®Sandbox2.4.0.0-169,您可以从 Hortonworks 下载页面下载它,展开“Hortonworks Sandbox Archive”链接,然后搜索“HDP® 2.4 on Hortonworks Sandbox”进行下载。建议您为沙箱虚拟机提供足够的内存,首选 8G 或更多。
+
+### 启动 Hadoop
+
+在 Hortonworks sandbox 中, ambari 会帮助您运行 hadoop:
+
+{% highlight Groff markup %}
+ambari-agent start
+ambari-server start
+{% endhighlight %}
+	
+上述命令执行成功后您可以到 ambari 主页 <http://yoursandboxip:8080> 去检查所有组件的状态。默认情况下 ambari 使 HBase 失效,您需要手动启动 `HBase` 服务。
+![start hbase in ambari](https://raw.githubusercontent.com/KylinOLAP/kylinolap.github.io/master/docs/installation/starthbase.png)
+
+对于 hadoop 分布式,基本上启动 hadoop 集群,确保 HDFS,YARN,Hive,HBase 运行着即可。
+
+
+## 开发机器的环境
+
+
+### 安装 Maven
+
+最新的 maven 下载地址:<http://maven.apache.org/download.cgi>,我们创建一个符号,以便 `mvn` 可以在任何地方运行。
+
+{% highlight Groff markup %}
+cd ~
+wget http://xenia.sote.hu/ftp/mirrors/www.apache.org/maven/maven-3/3.2.5/binaries/apache-maven-3.2.5-bin.tar.gz
+tar -xzvf apache-maven-3.2.5-bin.tar.gz
+ln -s /root/apache-maven-3.2.5/bin/mvn /usr/bin/mvn
+{% endhighlight %}
+
+### 安装 Spark
+
+在像 /usr/local/spark 这样的本地文件夹下手动安装 spark-2.1.2-bin-hadoop2.7
+
+{% highlight Groff markup %}
+wget -O /tmp/spark-2.1.2-bin-hadoop2.7.tgz http://d3kbcqa49mib13.cloudfront.net/spark-2.1.2-bin-hadoop2.7.tgz
+cd /usr/local
+tar -zxvf /tmp/spark-2.1.2-bin-hadoop2.7.tgz
+ln -s spark-2.1.2-bin-hadoop2.7 spark
+{% endhighlight %}
+
+
+为 hbase 客户端创建本地临时文件夹(如果其不存在):
+
+{% highlight Groff markup %}
+mkdir -p /hadoop/hbase/local/jars
+chmod 777 /hadoop/hbase/local/jars
+{% endhighlight %}
+
+### 编译
+
+首先将 Kylin 工程下载到本地:
+
+{% highlight Groff markup %}
+git clone https://github.com/apache/kylin.git
+{% endhighlight %}
+	
+将 Kylin 工件安装到 maven 仓库
+
+{% highlight Groff markup %}
+mvn clean install -DskipTests
+{% endhighlight %}
+
+### 修改本地配置
+
+必须修改本地配置以指向 hadoop 沙箱(或 CLI)机器。 
+
+* 在 **examples/test_case_data/sandbox/kylin.properties** 中
+   * 找到 `sandbox` 并替换成您的 hadoop hosts(如果您使用的是 HDP 沙箱,这步可以跳过)
+   * 找到 `kylin.job.use-remote-cli` 并修改为 "true"(在代码库中其默认值为 false,假定其运行在 hadoop CLI 上)
+   * 找到 `kylin.job.remote.cli.username` 和 `kylin.job.remote.cli.password`,填写用于登录 hadoop 集群执行 hadoop 命令的用户名和密码;如果您使用的是 HDP 沙箱,默认用户名使 `root` 密码是 `hadoop`。
+
+* 在 **examples/test_case_data/sandbox** 中
+   * 遍历每一个 xml 配置文件,找到所有的 `sandbox` 和 `sandbox.hortonworks.com`,替换成您的 hadoop hosts;(如果您使用的是 HDP 沙箱,这步可以跳过)
+
+host 替换的替代方法是更新您的 `hosts` 文件,来解决 `sandbox` 和 `sandbox.hortonworks.com` 映射为沙箱机器的 IP 的问题。
+
+### 运行单元测试
+运行单元测试来测试每一个 classes 基本功能的有效性。
+
+{% highlight Groff markup %}
+mvn test -fae -Dhdp.version=<hdp-version> -P sandbox
+{% endhighlight %}
+
+### 运行集成测试
+在真正运行集成测试前,需要为测试数据的填充运行一些端到端的 cube 构建作业,同时验证 cube 过程。然后是集成测试。
+
+其可能需要一段时间(也许一小时),请保持耐心。
+ 
+{% highlight Groff markup %}
+mvn verify -fae -Dhdp.version=<hdp-version> -P sandbox
+{% endhighlight %}
+
+关于测试想要了解更多,请参考[如何测试](/cn/development/howto_test.html).
+
+### 本地运行 Kylin Web 服务器
+
+拷贝 server/src/main/webapp/WEB-INF 到 webapp/app/WEB-INF 
+
+{% highlight Groff markup %}
+cp -r server/src/main/webapp/WEB-INF webapp/app/WEB-INF 
+{% endhighlight %}
+
+为 Kylin web GUI 下载 JS。`npm` 是 `Node.js` 的一部分,请搜索有关如何在您的操作系统上安装它的信息。
+
+{% highlight Groff markup %}
+cd webapp
+npm install -g bower
+bower --allow-root install
+{% endhighlight %}
+
+注意,如果是在 Windows 上,安装完 bower,需要将 "bower.cmd" 的路径加入系统环境变量 'PATH' 中,然后运行:
+
+{% highlight Groff markup %}
+bower.cmd --allow-root install
+{% endhighlight %}
+
+在 IDE,运行 `org.apache.kylin.rest.DebugTomcat` 将工作目录设置为 /server 文件夹。(默认情况下 Kylin 服务器将会监听 7070 端口;如果您想要使用另一个端口,请在运行 `DebugTomcat` 时将其指定为参数)
+
+查看 Kylin Web `http://localhost:7070/kylin`(用户名:ADMIN,密码:KYLIN)
+
+对于 IntelliJ IDEA 用户,需要修改 "server/kylin-server.iml" 文件,将所有的 "PROVIDED" 替换为 "COMPILE",否则可能会抛出 "java.lang.NoClassDefFoundError: org/apache/catalina/LifecycleListener" 错误。
+
+## 安装 IDE 编码格式化工具
+
+如果你正在为 Kylin 编写代码,你应该确保你的代码符合预期的格式。
+
+对于 Eclipse 用户,只需在提交代码之前格式化代码。
+
+对于 intellij IDEA 用户,您还需要执行一些额外步骤:
+
+1. 安装 "Eclipse Code Formatter" 并在 core-common/.settings 中使用 "org.eclipse.jdt.core.prefs" 和 "org.eclipse.jdt.ui.prefs" 来配置 "Eclipse Java Formatter config file" 和 "Import order"
+
+	![Eclipse_Code_Formatter_Config](/images/develop/eclipse_code_formatter_config.png)
+
+2. 去 Preference => Code Style => Java,将 "Scheme" 设为默认,并设置 "Class count to use import with '\*'" 和 "Names count to use static import with '\*'" 为 99。
+
+	![Kylin_Intellj_Code_Style](/images/develop/kylin-intellij-code-style.png)
+
+3. 禁用 intellij IDEA 的 "Optimize imports on the fly"
+
+	![Disable_Optimize_On_The_Fly](/images/develop/disable_import_on_the_fly.png)
+
+3. 提交代码前格式化代码。
+
+## 设置 IDE license 头部模板
+
+每一个源文件都应该包括以下的 Apache License 头部
+{% highlight Groff markup %}
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+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 KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+{% endhighlight %}
+
+当打包时 checkstyle 插件将会检查头部规则。license 文件在 `dev-support/checkstyle-apache-header.txt`。为了方便开发人员,请将头部添加为 `Copyright Profile`,并将其设置为 Kylin 项目的默认值。
+![Apache License Profile](/images/develop/intellij_apache_license.png)
\ No newline at end of file
diff --git a/website/_dev/howto_contribute.cn.md b/website/_dev/howto_contribute.cn.md
new file mode 100644
index 0000000..1058079
--- /dev/null
+++ b/website/_dev/howto_contribute.cn.md
@@ -0,0 +1,116 @@
+---
+layout: dev-cn
+title:  如何贡献
+categories: development
+permalink: /cn/development/howto_contribute.html
+---
+
+Apache Kylin 一直寻求的不只是代码的贡献,还寻求使用文档,性能报告,问答等方面的贡献。所有类型的贡献都为成为 Kylin Committer 铺平了道路。每个人都有机会,尤其是那些有分析和解决方案背景的,因为缺少来自于用户和解决方案视角的内容。
+
+
+## 源分支
+代码和文档都在 Git 源代码控制之下。注意不同分支的用途。
+
+* `master`: 新功能的主开发分支
+* `2.[n].x`: 一些主要版本的维护分支
+* `document`: 文档分支
+
+## 组件及拥有者
+Apache Kylin 有几个子组件。为了更好地帮助社区的发展,我们为每个组件安排了一个或多个组件负责人。 
+
+- 组件负责人是志愿者(组件领域的专家)。负责人需要成为 Apache Kylin 提交者或 PMC。 
+
+- 负责人将尝试审查其组件范围内的补丁。
+
+- 负责人可以根据他的愿望和社区需求进行轮换。
+
+- 在提名或投票新提交者时,提名者需要说明候选人可以成为哪个组件的负责人。
+
+- 如果您已经是 Apache Kylin 提交者或 PMC 成员并希望成为组件负责人的志愿者,请给 dev 列表写信,我们将为您注册。 
+
+- 所有项目计划,决策仍由 Apache Kylin PMC 管理。
+
+- 如果您认为组件列表需要更新(添加,删除,重命名等),请给 dev 列表写信,我们将对其进行审核。
+
+组件负责人列在了这个 Apache Kylin [JIRA components page](https://issues.apache.org/jira/projects/KYLIN?selectedItem=com.atlassian.jira.jira-projects-plugin:components-page) 页面中的 Description 字段位置。负责人列在“Description”字段中而不是“Component Lead”字段中,因为后者仅允许我们列出一个人,然而其鼓励组件具有多个负责人。
+
+## 选择一个任务
+这里有新创建的任务等待被完成,由 JIRA 追踪。为了让其容易被搜索,这里有一些过滤条件。
+
+* 由李扬管理的[任务列表](https://issues.apache.org/jira/issues/?filter=12339895) 。
+* 由 Ted Yu 创建的[任务列表](https://issues.apache.org/jira/issues/?filter=12341496),重要的小的 bugs 且其中一些很容易被修复。
+* 您也可以在 Kylin JIRA 中搜索标签 “newbie”。
+
+在做大任务之前别忘了在[邮箱列表](/community/index.html)中讨论。
+
+如果为 bug 或功能创建了新的 JIRA,请记住为社区提供足够的信息:
+
+* 问题或功能的良好摘要
+* 详细说明,可能包括:
+	- 这个问题发生的环境 
+	- 重现问题的步骤
+	- 错误跟踪或日志文件(作为附件)
+	- model 或 cube 的元数据
+* 相关组件:我们将根据此选择安排审核人员。
+* 受影响的版本:您正在使用的 Kylin 版本。
+
+## 进行代码更改
+* [搭建开发环境](/cn/development/dev_env.html)
+* 提出 JIRA,描述功能/提升/bug
+* 在邮件列表或 issue 评论中与其他人讨论,确保提议的更改符合其他人正在做的事情以及为项目规划的内容
+* 在您的 fork 中进行修改
+	* 目前没有严格的代码样式,但一般规则与现有文件保持一致。例如,对 java 文件使用 4 空格缩进。
+	* 尽可能为代码更改添加测试用例。
+	* 确保“mvn clean package”和“mvn test”能够获得成功。
+	* 充分的单元测试和集成测试是代码更改的必要部分。 
+* [运行测试](/cn/development/howto_test.html) 以确保您的更改质量良好且不会破坏任何内容。如果您的补丁生成不正确或您的代码不符合代码指南,则可能会要求您重做某些工作。
+* 生成补丁并将其附加到相关的 JIRA。
+
+## 生成 Patch
+* 使用 `submit-patch.py`(推荐)创建 patches,上传到 jira 并可选择在 Review Board 上创建/更新评论。 Patch 名称自动格式化为(JIRA).(分支名称).(补丁号).patch,遵循 Yetus 的命名规则。
+
+```
+$ ./dev-support/submit-patch.py -jid KYLIN-xxxxx -b master -srb
+```
+
+* 用 -h 标志可以了解此脚本的详细用法信息。最有用的选项是:
+	* -b BRANCH, --branch BRANCH : 指定用于生成 diff 的基本分支。如果未指定,则使用跟踪分支。如果没有跟踪分支,则会抛出错误。
+	* -jid JIRA_ID, --jira-id JIRA_ID : 如果使用,则从 jira 中的附件推断下一个补丁版本并上传新补丁。脚本将要求 jira 用户名/密码进行身份验证。如果未设置,则将补丁命名为 .patch。
+* 默认情况下,它还会创建/更新 review board。要跳过该操作,请使用 -srb 选项。它使用 jira 中的“Issue Links”来确定审核请求是否已存在。如果没有审核请求,则创建一个新请求并使用 jira 摘要,patch 说明等填充所有必填字段。此外,还将此评论的链接添加到 jira。
+* 安装需要的 python 依赖,从 master 分支执行 `pip install -r dev-support/python-requirements.txt`。
+
+* 或者,您也可以手动生成 patch。请首先使用 `git rebase -i`,将较小的提交组合(squash)为一个较大的提交。然后使用 `git format-patch` 命令生成 patch,有关详细指南,请参阅[如何使用 Git 创建和应用补丁](https://ariejan.net/2009/10/26/how-to-create-and-apply-a-patch-with-git/)。
+
+## 代码审查
+审核人员需要从以下角度审核 patch:
+
+* _功能性_:patch 必须解决问题,并在提交审核之前已经过贡献者的验证。
+* _测试范围_:更改必须由 UT 或集成测试覆盖,否则无法维护。执行案例包括 GUI,shell 脚本等。
+* _性能_:改变不应该降低 Kylin 的性能。
+* _元数据兼容性_:更改应支持旧元数据定义。否则,需要元数据迁移工具和文档。
+* _API 兼容性_:更改不应该破坏公共 API 的功能和行为;如果需要用新 API 替换旧 API,请在那里打印警告消息。
+* _文档_:如果需要同时更新 Kylin 文档,请创建另一个 JIRA,并将“Document”作为要跟踪的组件。在 JIRA 文档中,附加“文档”分支的文档更改 patch。
+
+不符合上述规则的补丁可能无法合并。
+
+## Patch +1 政策
+
+在提交之前,适合单个组件范围的修补程序至少需要一个组件负责人的 +1。如果负责人不在 — 在忙或其他 — 两个非负责人(即两个提交者)的 +1,就足够了。
+
+跨组件的 patch 在提交之前至少需要两个 +1s,最好由 x-component patch 涉及的组件负责人的 +1。
+
+任何人都可以在 patch 上 -1,任何 -1 都可以否决补丁;在解决 -1 的理由之前,它不能被提交。
+
+
+## 应用 Patch
+* Committer 将审核 JIRA 中的 Pull Requests 和 Patches 的正确性,性能,设计,编码风格,测试覆盖率
+* 必要时进行讨论和修改;
+* committer 将代码合并到目标分支中
+	* 对于 git patch,请使用“git am -s -3 patch-file”命令进行应用;
+	* 如果是来自 github Pull Request,则需要添加“This closing#”作为提交消息的一部分。这将允许 ASF Git bot 关闭 PR。
+	* 使用 `git rebase` 确保合并结果是提交的简化。
+
+
+## 进行文档更改
+查看[如何写文档](/cn/development/howto_docs.html).
+
diff --git a/website/_dev/howto_docs.cn.md b/website/_dev/howto_docs.cn.md
new file mode 100644
index 0000000..0d1665a
--- /dev/null
+++ b/website/_dev/howto_docs.cn.md
@@ -0,0 +1,199 @@
+---
+layout: dev-cn
+title:  如何写文档
+categories: development
+permalink: /cn/development/howto_docs.html
+---
+
+我们以 MD 格式编写文档并使用 [Jekyll](http://jekyllrb.com) 转换为 HTML。Jekyll 生成的 HTML 上传到 apache SVN 并成为 Kylin 网站。所有 MD 源文件都在 git 中管理,因此可以清楚地跟踪所有更改和贡献者。
+
+## 工作前
+
+在您添加或修改文档前请安装以下工具:  
+
+1. 首先,确保 Ruby 和 Gem 能在您的机器上工作  
+	* 对于 Mac 用户,请参考[这个](https://github.com/sstephenson/rbenv#homebrew-on-mac-os-x)来搭建 ruby 环境。
+	* 对于 Windows 用户,使用 [ruby installer](http://rubyinstaller.org/downloads/)。
+	* 对于 China 用户,考虑使用一个[本地 gem 仓库](https://ruby.taobao.org/)以防止网络问题。
+
+2. 然后,安装 [Jekyll](http://jekyllrb.com),以及需要的插件
+	* `gem install jekyll jekyll-multiple-languages kramdown rouge`  
+	* __注意__:一些特定的 jekyll 和 jekyll-multiple-languages 版本不能一起使用(使用 jekyll 3.0.1 和 jekyll-multiple-languages 2.0.3 时我遇到一个 "undefined method" 错误)。这种情况下,`jekyll 2.5.3` 和 `jekyll-multiple-languages 1.0.8` 是已知可运行的版本。
+        * 例如. 使用 `gem install jekyll --version "=2.5.3"` 来安装具体的版本。
+	* __注意__:对于 Mac 用户,如果 gem 安装时遇到类似这样的错误 'ERROR:  While executing gem ... (Gem::FilePermissionError)'。您可以使用 'brew install ruby' 的方式解决这个问题,然后重启您的终端。
+3. 您可以选择任何 markdown 编辑器
+
+下面是一个可以工作的 gem 列表。如果 jekyll 安装成为问题,请坚持使用这些版本。
+
+```
+$ gem list
+
+...
+jekyll (2.5.3)
+jekyll-coffeescript (1.0.1)
+jekyll-gist (1.4.0)
+jekyll-multiple-languages (1.0.8)
+jekyll-paginate (1.1.0)
+jekyll-sass-converter (1.4.0)
+jekyll-watch (1.3.1)
+json (1.8.1)
+kramdown (1.9.0)
+...
+rouge (1.10.1)
+...
+```
+
+## 使用 Docker 为文档编译
+
+最新版的 kylin 发布提供了 dockerfile,来减少构建复杂性使用 docker 和 Makefile 能调用 docker 命令。
+
+```
+$ pwd
+/Users/<username>/kylin/website
+$ make docker.build
+docker build -f Dockerfile -t kylin-document:latest .
+Sending build context to Docker daemon  82.44MB
+Step 1/3 : FROM jekyll/jekyll:2.5.3
+ ---> e81842c29599
+Step 2/3 : RUN gem install jekyll-multiple-languages -v 1.0.11
+ ---> Using cache
+ ---> e9e8b0f1d388
+Step 3/3 : RUN gem install rouge -v 3.0.0
+ ---> Using cache
+ ---> 1bd42c6b93c0
+Successfully built 1bd42c6b93c0
+Successfully tagged kylin-document:latest
+$ make runserver
+docker run --volume="/Users/<username>/kylin/website:/srv/jekyll" -p 4000:4000 --rm -it kylin-document:latest jekyll server --watch
+Configuration file: /srv/jekyll/_config.yml
+            Source: /srv/jekyll
+       Destination: /srv/jekyll/_site
+      Generating...
+...
+```
+
+## 关于 Jekyll
+Jekyll 是一个用于从源文本和主题生成静态 HTML 网站的 Ruby 脚本,HTML 在部署到 Web 服务器之前生成。Jekyll 恰好也是 GitHub 页面背后的引擎。
+
+Apache Kylin 的网站和文档使用 Jekyll 来管理和生成,可在 [http://kylin.apache.org](http://kylin.apache.org) 上看到最终内容。
+
+## Multi-Language
+要草拟中文版文档或翻译现有文档,只需添加或复制该文档,名称以 .cn.md 作为后缀。它将在 /cn 文件夹下生成与 html 同名的文件。
+要添加其他语言,请更新 _config.yml 并遵循与中文版相同的模式。  
+
+# Kylin 文档结构以及导航菜单
+
+[作为 Jekyll 源的 Kylin 网站](https://github.com/apache/kylin/tree/document/website)是在 `doucment` 分支下维护的。
+
+1. __Home Page__:_"index.md"_ 文档的主页
+2. __Getting Started__:_"gettingstarted"_ 生成 Apache Kylin 的文档,包括 FAQ,术语
+3. __Installation__:_"install"_ Apache Kylin 安装指南
+4. __Tutorial__:_"tutorial"_ 关于用户如何使用 Apache Kylin 的教程
+5. __How To__:_"howto"_ 更细节的帮助指南
+6. __Development__:_"development"_ 为了开发者贡献,集成其它应用和扩展 Apache Kylin
+7. __Others__:其它文档。
+
+菜单由 Jekyll 集合管理:
+
+* ___data/docs.yml__:英文版本菜单结构  
+* ___data/docs-cn.yml__:中文版本菜单结构   
+* __add new menu item__:添加新的条目:在相关文件夹下创建新文档,例如 howto_example.md。添加如下的前标记: 
+
+```
+---
+layout: docs
+title:  How to expamle
+categories: howto
+permalink: /docs/howto/howto_example.html
+version: v0.7.2
+since: v0.7.2
+---
+```
+
+将链接更改为完全链接
+然后将条目添加到 docs.yml,如:
+
+```
+- title: How To
+  docs:
+  - howto/howto_contribute
+  - howto/howto_jdbc
+  - howto/howto_example
+```
+
+# 如何编写文档
+使用任何 markdown 编辑器打开文档,草拟内容并在本地预览。
+
+样例文档:
+
+```
+---
+layout: docs
+title:  How to example
+categories: howto
+permalink: /docs/howto/howto_example.html
+version: v0.7.2
+since: v0.7.2
+---
+
+## This is example doc
+The quick brown fox jump over the lazy dog.
+
+```
+
+# 如何添加图片
+所有的图片请放到 _images_ 文件夹下,在你的文件中,请使用以下样式引入图片:  
+
+```
+![](/images/Kylin-Web-Tutorial/2 tables.png)
+
+```
+
+# 如何添加连接
+使用站点链接的相对路径,例如
+
+```
+[REST API](docs/development/rest_api.html). 
+
+```
+
+# 如何添加代码高亮
+我们使用 [Rouge](https://github.com/jneen/rouge) 突出显示代码语法。
+查看此 doc 的源代码以获取更多详细信息示例。
+
+# 如何在本地预览
+您可以在 markdown 编辑器中预览,要检查网站上的确切内容,请从 `website` 文件夹中运行 Jekyll:
+
+```
+jekyll server
+
+```
+然后在浏览器中访问 http://127.0.0.1:4000。
+
+## 如何发布到网站(只适用于 committer)  
+
+### 搭建
+
+1. `cd website`
+2. `svn co https://svn.apache.org/repos/asf/kylin/site _site`
+
+___site__ 文件夹是工作目录,将由 maven 或 git 随时删除,请确保只有当你想要发布到网站时从 svn 检出。
+
+### 本地运行  
+在创建一个 PR 或推送到 git 仓库之前,您可以通过以下方式在本地预览更改:
+
+1. `cd website`
+2. `jekyll s`
+3. 在您的浏览器打开 [http://127.0.0.1:4000](http://127.0.0.1:4000)
+
+### 推到网站 
+
+1. 拷贝 jekyll 生成的 `_site` 到 svn 的 `website/_site`
+2. `cd website/_site`
+3. `svn status`
+4. 您需要使用 `svn add` 添加任意新的文件
+5. `svn commit -m 'UPDATE MESSAGE'`
+
+在几分钟内,svnpubsub 应该开始且您将能够在 [http://kylin.apache.org](http://kylin.apache.org/) 看到结果。
+
+
diff --git a/website/_dev/howto_docs.md b/website/_dev/howto_docs.md
index 8867b59..a2ce143 100644
--- a/website/_dev/howto_docs.md
+++ b/website/_dev/howto_docs.md
@@ -75,8 +75,6 @@ Configuration file: /srv/jekyll/_config.yml
 ## About Jekyll
 Jekyll is a Ruby script to generate a static HTML website from source text and themes, the HTML is generated before being deployed to the web server. Jekyll also happens to be the engine behind GitHub Pages.
 
-Here are good reference about basic usage of Jekyll: [Learning Jekyll By Example](http://learn.andrewmunsell.com/learn/jekyll-by-example/tutorial)
-
 Apache Kylin's website and documentation is using Jekyll to manage and generate final content which avaliable at [http://kylin.apache.org](http://kylin.apache.org).
 
 ## Multi-Language
diff --git a/website/_dev/howto_hbase_branches.cn.md b/website/_dev/howto_hbase_branches.cn.md
new file mode 100644
index 0000000..4b0319a
--- /dev/null
+++ b/website/_dev/howto_hbase_branches.cn.md
@@ -0,0 +1,23 @@
+---
+layout: dev-cn
+title:  如何维护 HBase 分支
+categories: development
+permalink: /cn/development/howto_hbase_branches.html
+---
+
+### Kylin 不同版本的 HBase 分支 
+
+因为 HBase API 基于版本和供应商的不同,因此必须针对不同的 HBase 版本维护不同的代码分支。
+
+分支设计为
+
+- `master` 分支编译的是 HBase 0.98,也是开发的主要分支。 所有错误修复和新功能仅提交给 `master`。
+- `master-hbase1.x` 分支编译的是 HBase 1.x。通过在 `master` 上应用一个 patch 来创建此分支。换句话说,`master-hbase1.x` = `master` + `a patch to support HBase 1.x`.
+- 同样的,有 `master-cdh5.7` = `master-hbase1.x` + `a patch to support CDH 5.7`。
+- 在 `master-hbase1.x` 和 `master-cdh5.7` 上不会直接发生代码更改(除非分支上最后一次提交采用了 HBase 调用)。
+
+有一个脚本有助于保持这些分支同步:`dev-support/sync_hbase_cdh_branches.sh`。
+
+
+
+
diff --git a/website/_dev/howto_package.cn.md b/website/_dev/howto_package.cn.md
new file mode 100644
index 0000000..71aff08
--- /dev/null
+++ b/website/_dev/howto_package.cn.md
@@ -0,0 +1,39 @@
+---
+layout: dev-cn
+title:  如何打二进制包
+categories: development
+permalink: /cn/development/howto_package.html
+---
+
+### 生成二进制包
+本文档讲述的是如何从源码构建二进制包
+
+#### 下载源码
+您可以从 github 仓库下载 Apache Kylin 源码。
+
+```
+git clone https://github.com/apache/kylin kylin
+```
+
+#### 构建二进制包
+
+为了生成二进制包,需要预先准备好 **maven** 和 **npm**。
+
+**(可选)** 如果您在代理服务器后面,在运行 ./script/package.sh 之前,需要将代理信息告知 npm 和 bower:
+
+```
+export http_proxy=http://your-proxy-host:port
+npm config set proxy http://your-proxy-host:port
+```
+
+##### 为 HBase 1.x 打包
+```
+cd kylin
+build/script/package.sh
+```
+
+##### 为 CDH 5.7 打包
+```
+cd kylin
+build/script/package.sh -P cdh5.7
+```
diff --git a/website/_dev/howto_release.md b/website/_dev/howto_release.cn.md
similarity index 56%
copy from website/_dev/howto_release.md
copy to website/_dev/howto_release.cn.md
index 9b0a116..5613c4c 100644
--- a/website/_dev/howto_release.md
+++ b/website/_dev/howto_release.cn.md
@@ -1,77 +1,77 @@
 ---
-layout: dev
-title:  How to Make Release
+layout: dev-cn
+title:  如何发布
 categories: development
-permalink: /development/howto_release.html
+permalink: /cn/development/howto_release.html
 ---
 
-_This guide is for Apache Kylin Committers only._  
-_Shell commands are on Mac OS X as sample._  
-_For people in China, please aware using proxy to avoid potential firewall issue._  
+_本教程只适用于 Apache Kylin Committers。_  
+_以在 Mac OS X 上的 Shell 命令作为样例。_  
+_对于中国用户,请谨慎使用代理以避免潜在的防火墙问题。_  
 
-## Setup Account
-Make sure you have avaliable account and privilege for following applications:
+## 建立账户
+确保您有可使用的账号且对以下应用有权限:
 
-* Apache account: [https://id.apache.org](https://id.apache.org/)    
-* Apache Kylin git repo (main cobe base): [https://git-wip-us.apache.org/repos/asf/kylin.git](https://git-wip-us.apache.org/repos/asf/kylin.git)  
-* Apache Kylin svn repo (for website only): [https://svn.apache.org/repos/asf/kylin](https://svn.apache.org/repos/asf/kylin)  
-* Apache Nexus (maven repo): [https://repository.apache.org](https://repository.apache.org)  
-* Apache Kylin dist repo: [https://dist.apache.org/repos/dist/dev/kylin](https://dist.apache.org/repos/dist/dev/kylin)  
+* Apache 账户: [https://id.apache.org](https://id.apache.org/)    
+* Apache Kylin git repo (main cobe base): [https://github.com/apache/kylin](https://github.com/apache/kylin)  
+* Apache Kylin svn 仓库 (只针对网站): [https://svn.apache.org/repos/asf/kylin](https://svn.apache.org/repos/asf/kylin)  
+* Apache Nexus (maven 仓库): [https://repository.apache.org](https://repository.apache.org)  
+* Apache Kylin dist 仓库: [https://dist.apache.org/repos/dist/dev/kylin](https://dist.apache.org/repos/dist/dev/kylin)  
 
-## Setup GPG signing keys  
-Follow instructions at [http://www.apache.org/dev/release-signing](http://www.apache.org/dev/release-signing) to create a key pair  
-Install gpg (On Mac OS X as sample):  
+## 设置 GPG 签名密钥  
+按照 [http://www.apache.org/dev/release-signing](http://www.apache.org/dev/release-signing) 上的说明创建密钥对  
+安装 gpg (以 Mac OS X 为例):  
 `brew install gpg`
 
-Generate gpg key:  
-Reference: [https://www.gnupg.org/gph/en/manual/c14.html](https://www.gnupg.org/gph/en/manual/c14.html)  
-_All new RSA keys generated should be at least 4096 bits. Do not generate new DSA keys_  
+生成 gpg 密钥:  
+参考: [https://www.gnupg.org/gph/en/manual/c14.html](https://www.gnupg.org/gph/en/manual/c14.html)  
+_生成的所有新 RSA 密钥应至少为 4096 位。不要生成新的 DSA 密钥_  
 `gpg --full-generate-key`  
 
-Verify your key:  
+验证您的密钥:  
 `gpg --list-sigs YOUR_NAME`
 
-Get the fingerprint of your key:
+获取密钥的指纹:
 `gpg --fingerprint YOUR_NAME`
 
-It will display the fingerprint like "Key fingerprint = XXXX XXXX ...", then add the fingerprint to your apache account at [https://id.apache.org/](https://id.apache.org/) in "OpenPGP Public Key Primary Fingerprint" field; wait for a few hours the key will added to [https://people.apache.org/keys/](https://people.apache.org/keys/), for example:
+它将显示指纹,如 "Key fingerprint = XXXX XXXX ...",然后在 [https://id.apache.org/](https://id.apache.org/) 上的"OpenPGP Public Key Primary Fingerprint"字段处将指纹添加到您的 apache 帐户;等待几个小时,密钥将添加到 [https://people.apache.org/keys/](https://people.apache.org/keys/),例如:
 [https://people.apache.org/keys/committer/lukehan.asc](https://people.apache.org/keys/committer/lukehan.asc)
 
-Generate ASCII Amromed Key:  
+生成 ASCII Amromed 键:  
 `gpg -a --export YOUR_MAIL_ADDRESS > YOUR_NAME.asc &`
 
-Upload key to public server:  
+上传密钥到公共服务器:  
 `gpg --send-keys YOUR_KEY_HASH`
 
-or Submit key via web:  
-Open and Submit to [http://pool.sks-keyservers.net:11371](http://pool.sks-keyservers.net:11371) (you can pickup any available public key server)
+或通过 web 提交密钥:  
+打开并提交到 [http://pool.sks-keyservers.net:11371](http://pool.sks-keyservers.net:11371) (您可以选择任意一个有效的公钥服务器)
 
-Once your key submitted to server, you can verify using following command:  
+一旦您的密钥提交到服务器,您可以通过使用以下命令验证:  
 `gpg --recv-keys YOUR_KEY_HASH`
-for example:  
+举例:  
 `gpg --recv-keys 027DC364`
 
-Add your public key to the KEYS file by following instructions in the KEYS file.:  
-_KEYS file location:_ __${kylin}/KEYS__  
-For example:  
+按照 KEYS 文件中的说明将公钥添加到 KEYS 文件:  
+_KEYS 文件位于:_ __${kylin}/KEYS__  
+例如:  
 `(gpg --list-sigs YOURNAME && gpg --armor --export YOURNAME) >> KEYS`
 
-Commit your changes.
+提交您的改动。
 
-## Prepare artifacts for release  
-__Before you start:__
+## 准备 release 的工件  
+__开始前:__
 
-* Set up signing keys as described above.
-* Make sure you are using JDK 1.8.
-* Make sure you are using GIT 2.7.2 or above.
-* Make sure you are working on right release version number.
-* Make sure that every “resolved” JIRA case (including duplicates) has a fix version assigned.
-* Make sure you are working in clean dir
+* 如上所述设置签名密钥。
+* 确保您使用的是 JDK 1.8。
+* 确保您使用的是 GIT 2.7.2 或更高版本。
+* 确保您使用的是正确的 release 版本号。
+* 确保每个“resolved”的 JIRA 案例(包括重复案例)都分配了修复版本。
+* 确保你在干净的目录工作
 
-__Configure Apache repository server in Maven__
-If you're the first time to do release, you need update the server authentication information in ~/.m2/settings.xml; If this file doesn't exist, copy a template from $M2_HOME/conf/settings.xml;
+__在 Maven 中配置 Apache 存储库服务器__
+如果您是第一次发布,您需要在 ~/.m2/settings.xml 中服务器授权信息;如果该文件不存在,从 $M2_HOME/conf/settings.xml 拷贝一个模板;
 
-In the "servers" section, make sure the following servers be added, and replace #YOUR_APACHE_ID#, #YOUR_APACHE_PWD#, #YOUR_GPG_PASSPHRASE# with your ID, password, and passphrase:
+在“服务器”部分中,确保添加以下服务器,并将 #YOUR_APACHE_ID#, #YOUR_APACHE_PWD#, #YOUR_GPG_PASSPHRASE# 替换为您的 ID,密码和口令:
 {% highlight bash %}
   <servers>
     <!-- To publish a snapshot of some part of Maven -->
@@ -114,7 +114,7 @@ In the "servers" section, make sure the following servers be added, and replace
   </servers>
 {% endhighlight %}
 
-__Fix license issues__
+__修复许可证问题__
 {% highlight bash %}
 # Set passphrase variable without putting it into shell history
 $ read -s GPG_PASSPHRASE
@@ -132,20 +132,20 @@ $ mvn test
 $ mvn -Papache-release -DskipTests -Dgpg.passphrase=${GPG_PASSPHRASE} install
 {% endhighlight %}
 
-Optionally, when the dry-run has succeeded, change install to deploy:
+可选的,当 dry-run 成功了,将安装变为部署:
 {% highlight bash %}
 $ mvn -Papache-release -DskipTests -Dgpg.passphrase=${GPG_PASSPHRASE} deploy
 {% endhighlight %}
 
-__Prepare__
+__准备__
 
-Create a release branch named after the release, e.g. v0.7.2-release, and push it to Apache.  
+创建一个以 release 后命名的发布分支,例如,v0.7.2-release,并将其推到 Apache。  
 {% highlight bash %}
 $ git checkout -b vX.Y.Z-release
 $ git push -u origin vX.Y.Z-release
 {% endhighlight %}
 
-If any of the steps fail, clean up (see below), fix the problem, and start again from the top.  
+如果任何步骤失败,请清理(见下文),解决问题,然后从头重新开始。  
 {% highlight bash %}
 # Set passphrase variable without putting it into shell history
 $ read -s GPG_PASSPHRASE
@@ -158,22 +158,21 @@ $ mvn clean
 $ mvn -DdryRun=true -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=(X.Y.Z+1)-SNAPSHOT -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests" release:prepare 2>&1 | tee /tmp/prepare-dry.log
 {% endhighlight %}
 
-__Check the dry run output:__
+__查看 dry run 输出:__
 
-* In the `target` directory should be these 8 files, among others:
+* 在 `target` 目录中应该是这 8 个文件,其中包括:
   * apache-kylin-X.Y.Z-SNAPSHOT-src.zip
   * apache-kylin-X.Y.Z-SNAPSHOT-src.zip.asc
   * apache-kylin-X.Y.Z-SNAPSHOT-src.zip.md5
   * apache-kylin-X.Y.Z-SNAPSHOT-src.zip.sha1
-* Remove the .zip, .zip.asc, .zip.md5 and zip.sha1 file as they are not needed.
-* Note that the file names start `apache-kylin-`.
-* In the source distro `.tar.gz`, check that all files belong to a directory called
-  `apache-kylin-X.Y.Z-src`.
-* That directory must contain files `NOTICE`, `LICENSE`, `README.md`
-* Check PGP, per [this](https://httpd.apache.org/dev/verification.html)
-
-__Run real release:__
-Now, run the release for real.  
+* 移除 .zip, .zip.asc, .zip.md5 和 zip.sha1 文件因为不需要。
+* 注意文件名以 `apache-kylin-` 开始
+* 在源发行版 `.tar.gz` 中,检查所有文件是否属于名为 `apache-kylin-X.Y.Z-src` 的目录。
+* 该目录必须包含 `NOTICE`, `LICENSE`, `README.md` 文件
+* 按[此](https://httpd.apache.org/dev/verification.html)检查 PGP
+
+__运行真实的 release:__
+现在真正开始 release  
 {% highlight bash %}
 # Prepare sets the version numbers, creates a tag, and pushes it to git.
 $ mvn -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=(X.Y.Z+1)-SNAPSHOT -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests" release:prepare
@@ -182,7 +181,7 @@ $ mvn -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=(X.Y.Z+1)-SNAPSHOT
 $ mvn -DskipTests -Papache-release -Darguments="-Dgpg.passphrase=${GPG_PASSPHRASE} -DskipTests" release:perform
 {% endhighlight %}
 
-__Cleaning up after a failed release attempt:__
+__一个失败的 release 尝试后进行清理:__
 {% highlight bash %}
 # Make sure that the tag you are about to generate does not already
 # exist (due to a failed release attempt)
@@ -201,18 +200,18 @@ $ git status
 $ git reset --hard HEAD
 {% endhighlight %}
 
-__Close the staged artifacts in the Nexus repository:__
+__关闭 Nexus 仓库中的阶段性工件:__
 
-* Go to [https://repository.apache.org/](https://repository.apache.org/) and login
-* Under `Build Promotion`, click `Staging Repositories`
-* In the `Staging Repositories` tab there should be a line with profile `org.apache.kylin`
-* Navigate through the artifact tree and make sure the .jar, .pom, .asc files are present
-* Check the box on in the first column of the row, and press the 'Close' button to publish the repository at
+* 输入 [https://repository.apache.org/](https://repository.apache.org/) 并登陆
+* 在 `Build Promotion` 下,点击 `Staging Repositories`
+* 在 `Staging Repositories` 选项卡中,应该有一个包含配置文件 `org.apache.kylin` 的行
+* 浏览工件树并确保存在 .jar,.pom,.asc 文件
+* 选中行第一列中的复选框,点击 'Close' 按钮发布仓库到
   [https://repository.apache.org/content/repositories/orgapachekylin-1006](https://repository.apache.org/content/repositories/orgapachekylin-1006)
-  (or a similar URL)
+  (或相似的 URL)
 
-__Upload to staging area:__  
-Upload the artifacts via subversion to a staging area, https://dist.apache.org/repos/dist/dev/kylin/apache-kylin-X.Y.Z-rcN:
+__上传到临时区域:__  
+通过 subversion 将工件上传到临时区域,https://dist.apache.org/repos/dist/dev/kylin/apache-kylin-X.Y.Z-rcN:
 {% highlight bash %}
 # Create a subversion workspace, if you haven't already
 $ mkdir -p ~/dist/dev
@@ -231,7 +230,7 @@ $ svn add apache-kylin-X.Y.Z-rcN
 $ svn commit -m 'Upload release artifacts to staging' --username <YOUR_APACHE_ID>
 {% endhighlight %}
 
-__Cleaning up after a failed release attempt:__
+__一个失败的 release 尝试后进行清理:__
 {% highlight bash %}
 # Make sure that the tag you are about to generate does not already
 # exist (due to a failed release attempt)
@@ -250,7 +249,7 @@ $ git status
 $ git reset --hard HEAD
 {% endhighlight %}
 
-# Validate a release
+# 验证 release
 {% highlight bash %}
 # Check unit test
 $ mvn test
@@ -288,10 +287,10 @@ function checkHash() {
 $ checkHash apache-kylin-X.Y.Z-rcN
 {% endhighlight %}
 
-## Apache voting process  
+## Apache 投票过程  
 
-__Vote on Apache Kylin dev mailing list__  
-Release vote on dev list, use the commit id that generated by Maven release plugin, whose message looks like "[maven-release-plugin] prepare release kylin-x.x.x":  
+__在 Apache Kylin dev 邮件列表上投票__  
+在 dev 邮件列表上进行 release 投票,使用由 Maven release plugin 生成的 commit id,其消息看起来像 "[maven-release-plugin] prepare release kylin-x.x.x":
 
 {% highlight text %}
 To: dev@kylin.apache.org
@@ -344,7 +343,7 @@ Here is my vote:
 
 {% endhighlight %}
 
-After vote finishes, send out the result:  
+投票完成后,发出结果:  
 {% highlight text %}
 Subject: [RESULT] [VOTE] Release apache-kylin-X.Y.Z (RC[N])
 To: dev@kylin.apache.org
@@ -367,28 +366,27 @@ Luke
 
 {% endhighlight %}
 
-## Publishing a release  
-After a successful release vote, we need to push the release
-out to mirrors, and other tasks.
+## 发布  
+成功发布投票后,我们需要推动发行到镜像,以及其他任务。
 
-In JIRA, search for
+在 JIRA 中,搜索
 [all issues resolved in this release](https://issues.apache.org/jira/issues/?jql=project%20%3D%20KYLIN%20),
-and do a bulk update changing their status to "Closed",
-with a change comment
+并进行批量更新,将它们的状态更改为“关闭”,
+并加上更改的评论
 "Resolved in release X.Y.Z (YYYY-MM-DD)"
-(fill in release number and date appropriately).  
-__Uncheck "Send mail for this update".__
+(填写适当的发布号和日期)。  
+__取消 "Send mail for this update"。__
 
-Mark the version released in JIRA system, [Manage Versions](https://issues.apache.org/jira/plugins/servlet/project-config/KYLIN/versions).
+标记 JIRA 系统中发布的版本,[管理版本](https://issues.apache.org/jira/plugins/servlet/project-config/KYLIN/versions)。
 
-Promote the staged nexus artifacts.
+推广分阶段的 nexus 工件。
 
-* Go to [https://repository.apache.org/](https://repository.apache.org/) and login
-* Under "Build Promotion" click "Staging Repositories"
-* In the line with "orgapachekylin-xxxx", check the box
-* Press "Release" button
+* 转到 [https://repository.apache.org/](https://repository.apache.org/) 并登陆
+* 在 "Build Promotion" 下点击 "Staging Repositories"
+* 在 "orgapachekylin-xxxx" 行中,选中框
+* 点击 "Release" 按钮
 
-Check the artifacts into svn.
+将工件检入 svn。
 {% highlight bash %}
 # Get the release candidate.
 $ mkdir -p ~/dist/dev
@@ -407,11 +405,11 @@ $ svn add apache-kylin-X.Y.Z
 svn commit -m 'checkin release artifacts'
 {% endhighlight %}
 
-Svnpubsub will publish to
-[https://dist.apache.org/repos/dist/release/kylin](https://dist.apache.org/repos/dist/release/kylin) and propagate to
-[http://www.apache.org/dyn/closer.cgi/kylin](http://www.apache.org/dyn/closer.cgi/kylin) within 24 hours.
+Svnpubsub 将会发布到
+[https://dist.apache.org/repos/dist/release/kylin](https://dist.apache.org/repos/dist/release/kylin) 并会在 24 小时内传播到
+[http://www.apache.org/dyn/closer.cgi/kylin](http://www.apache.org/dyn/closer.cgi/kylin)。
 
-If there are now more than 2 releases, clear out the oldest ones:
+如果现在有超过 2 个版本,请清除最旧的版本:
 
 {% highlight bash %}
 cd ~/dist/release/kylin
@@ -419,47 +417,46 @@ svn rm apache-kylin-X.Y.Z
 svn commit -m 'Remove old release'
 {% endhighlight %}
 
-The old releases will remain available in the
-[release archive](http://archive.apache.org/dist/kylin/).
+旧版本将保留在 [release archive](http://archive.apache.org/dist/kylin/).
 
-Release same version in JIRA, check [Change Log](https://issues.apache.org/jira/browse/KYLIN/?selectedTab=com.atlassian.jira.jira-projects-plugin:changelog-panel) for the latest released version.
+在 JIRA 中发布相同版本,检查最新发布版本的更改日志。
 
-## Build and upload binary package
-After publish the release, you need generate the binary packages and then put them to the svn release repository;
+## 构建和上传二进制包
+发布后,您需要生成二进制包并将它们放入到 VPN 发布库中;
 
-* Do `git fetch --all --prune --tags` to sync your local repo with remote.
-* Git checkout the tag for current release; 
-* Make a binary package by refering to [this doc](howto_package.html);
-* Sign the generated binary package with gpg, e.g,:
+* 使用 `git fetch --all --prune --tags` 来同步您本地和远程的仓库。
+* Git 检出当前发布的标签;
+* 通过参考[此文档](howto_package.html)制作二进制包;
+* 使用 gpg 对生成的二进制包进行签名,例如:
   {% highlight bash %}
   gpg --armor --output apache-kylin-1.5.0-bin.tar.gz.asc --detach-sig apache-kylin-1.5.0-bin.tar.gz
   {% endhighlight %}
-* Generate the md5 file for the binary package, e.g,:
+* 生成二进制包的 md5 文件,例如:
   {% highlight bash %}
   md5sum < apache-kylin-1.5.0-bin.tar.gz > apache-kylin-1.5.0-bin.tar.gz.md5
   {% endhighlight %}
-* Push the binary package, the signature file and the md5 file to the svn __dev__ repo, then run `svn mv <files-in-dev> <files-in-release>` to move them to svn __release__ repo.
-* For different Hadoop/HBase version, you may need repeat the above steps;
-* Add the files and then commit the svn changes. 
+* 将二进制包,签名文件和 md5 文件推送到 svn __dev__ 仓库,然后运行 `svn mv <files-in-dev> <files-in-release>` 命令将他们移动到 svn __release__ 仓库。
+* 对于不同的 Hadoop/HBase 版本,您可能需要上述步骤;
+* 添加文件,然后将更改提交 svn。 
 
 
-## Update source code
-After publish the release, you need to manually update some source code:
+## 更新源码
+发布后,您需要手动更新一些源代码:
 
-* Update `KylinVersion` class, change value of `CURRENT_KYLIN_VERSION` to current development version. 
+* 更新 `KylinVersion` 类,将 `CURRENT_KYLIN_VERSION` 的值更改为当前开发版本。
 
-## Publishing the web site  
-Refer to [How to document](howto_docs.html) for more detail.
+## 发布网站  
+更多细节参考[如何写文档](howto_docs.html)。
 
-## Send announcement mail to mailing list
-Send one mail with subject like "[Announce] Apache Kylin x.y.z released" to following list:
+## 发送通知邮件到邮件列表
+发送一个邮件主题如 "[Announce] Apache Kylin x.y.z released" 到以下列表:
 
-* Apache Kylin Dev mailing list: dev@kylin.apache.org
-* Apache Kylin User mailing list: user@kylin.apache.org
-* Apache Announce mailing list: announce@apache.org
-  Please notice to always use your Apache mail address to send this;
+* Apache Kylin Dev 邮箱列表: dev@kylin.apache.org
+* Apache Kylin User 邮箱列表: user@kylin.apache.org
+* Apache Announce 邮箱列表: announce@apache.org
+  请注意始终使用您的 Apache 邮件地址发送;
 
-Here is a sample of announcement email (by studying Kafka's):
+这是一个公告电子邮件的样本(通过研究 Kafka):
 
 {% highlight text %} 
 The Apache Kylin team is pleased to announce the immediate availability of the 2.1.0 release. 
@@ -484,6 +481,6 @@ https://kylin.apache.org/
 
 {% endhighlight %}
 
-# Thanks  
-This guide drafted with reference from [Apache Calcite](http://calcite.apache.org) Howto doc, Thank you very much.
+# 感谢  
+本指南起草于 [Apache Calcite](http://calcite.apache.org) Howto doc 的参考资料,非常感谢。
 
diff --git a/website/_dev/howto_release.md b/website/_dev/howto_release.md
index 9b0a116..0117b28 100644
--- a/website/_dev/howto_release.md
+++ b/website/_dev/howto_release.md
@@ -13,7 +13,7 @@ _For people in China, please aware using proxy to avoid potential firewall issue
 Make sure you have avaliable account and privilege for following applications:
 
 * Apache account: [https://id.apache.org](https://id.apache.org/)    
-* Apache Kylin git repo (main cobe base): [https://git-wip-us.apache.org/repos/asf/kylin.git](https://git-wip-us.apache.org/repos/asf/kylin.git)  
+* Apache Kylin git repo (main cobe base): [https://github.com/apache/kylin](https://github.com/apache/kylin)  
 * Apache Kylin svn repo (for website only): [https://svn.apache.org/repos/asf/kylin](https://svn.apache.org/repos/asf/kylin)  
 * Apache Nexus (maven repo): [https://repository.apache.org](https://repository.apache.org)  
 * Apache Kylin dist repo: [https://dist.apache.org/repos/dist/dev/kylin](https://dist.apache.org/repos/dist/dev/kylin)  
@@ -422,7 +422,7 @@ svn commit -m 'Remove old release'
 The old releases will remain available in the
 [release archive](http://archive.apache.org/dist/kylin/).
 
-Release same version in JIRA, check [Change Log](https://issues.apache.org/jira/browse/KYLIN/?selectedTab=com.atlassian.jira.jira-projects-plugin:changelog-panel) for the latest released version.
+Release same version in JIRA, check Change Log.
 
 ## Build and upload binary package
 After publish the release, you need generate the binary packages and then put them to the svn release repository;
diff --git a/website/_dev/howto_test.cn.md b/website/_dev/howto_test.cn.md
new file mode 100644
index 0000000..9b313c5
--- /dev/null
+++ b/website/_dev/howto_test.cn.md
@@ -0,0 +1,45 @@
+---
+layout: dev-cn
+title:  "如何测试"
+categories: development
+permalink: /cn/development/howto_test.html
+---
+
+一般来说,应该有单元测试来涵盖个别 classes;必须有集成测试来涵盖端到端的场景,如构建,合并和查询。单元测试必须独立运行(不需要外部沙箱)。
+
+## 测试 v1.5 及以上
+
+* `mvn clean test` 运行单元测试,它的测试覆盖范围有限。
+    * 单元测试没有额外的依赖且能在任何机器上运行
+    * 单元测试不覆盖端到端的场景,如构建,合并和查询。
+    * 单元测试只需几分钟即可完成。
+* `dev-support/test_all_against_hdp_2_4_0_0_169.sh` 运行集成测试,有很好的覆盖率。
+    * 集成测试 __最好运行在 Hadoop 沙箱上__。我们建议您在沙箱中检出一个代码副本,并在其中直接运行 test_all_against_hdp_2_2_4_2_2.sh。如果您不想在沙箱上添加代码,请参阅 __更多关于 V1.5+ UT/IT 分离__ 的内容。
+    * 正如名称所示,脚本仅适用于 HDP 2.4.0.0-169.2,但您可以从中理解集成测试是如何运行的。
+    * 集成测试从生成随机数据开始,然后构建 Cube、合并 Cube,最后查询结果并与 H2 引擎进行比较。
+    * 集成测试需要一到两个小时才能完成。
+* `nohup dev-support/test_all_against_hdp_2_4_0_0_169.sh < /dev/null 2>&1 > nohup.out &` 以无人值守的方式运行集成测试。
+
+## 更多关于 V1.5 UT/IT 分离
+
+运行 `mvn verify -Dhdp.version=2.4.0.0-169` (假定您运行在 HDP 2.4 沙箱上) 是运行完整的所有测试套件所需的全部内容。
+
+它将按顺序执行以下步骤:
+ 
+    1. Build Artifacts 
+    2. Run all UTs (takes few minutes) 
+    3. Provision Cubes on the sandbox environment for IT uasge (takes 1~2 hours) 
+    4. Run all ITs (takes few tens of minutes) 
+    5. Verify jar stuff 
+
+如果您的代码改动很小那么只需要运行 UT,使用: 
+`mvn test`
+如果您的沙箱已经配置,并且您的代码更改不会影响沙箱配置的结果,(并且您不想等待数小时的配置),只需运行以下命令来单独运行 UT 和 IT: 
+`mvn test`
+`mvn failsafe:integration-test`
+
+### Cube 配置
+
+测试用的 cube 配置确实会运行 kylin cube 作业,以在沙箱中准备样例 cube。这些准备好的 cubes 将会被集成测试使用,当前准备步骤与 maven 预集成测试阶段绑定,且其包含运行 BuildCubeWithEngine(需要 HBase),BuildCubeWithStream(需要 Kafka)。您可以在沙箱或进行开发的计算机中运行 mvn 命令。对于后者情况您需要在 __$KYLIN_HOME/examples/test_case_data/sandbox/kylin.properties__ 中设置 kylin.job.use-remote-cli=true。
+尝试将 `-DfastBuildMode=true` 附加到 mvn verify 命令,通过跳过增量 Cubing 来加速配置。 
+
diff --git a/website/_dev/howto_test.md b/website/_dev/howto_test.md
index 1d52ef2..8e81f7d 100644
--- a/website/_dev/howto_test.md
+++ b/website/_dev/howto_test.md
@@ -20,21 +20,10 @@ In general, there should be unit tests to cover individual classes; there must b
     * The integration tests take one to two hours to complete.
 * `nohup dev-support/test_all_against_hdp_2_4_0_0_169.sh < /dev/null 2>&1 > nohup.out &` runs IT in an unattended mode.
 
-## Test v1.3 and below
-
-* `mvn test` to run unit tests, which has a limited test coverage.
-    * What's special about v1.3 and below is that a hadoop/hbase mini cluster is used to cover queries in unit test.
-* Run the following to run integration tests.
-    * `mvn clean package -DskipTests`
-    * `mvn test  -Dtest=org.apache.kylin.job.BuildCubeWithEngineTest -Dhdp.version=2.2.0.0-2041 -DfailIfNoTests=false -P sandbox`
-    * `mvn test  -Dtest=org.apache.kylin.job.BuildIIWithEngineTest -Dhdp.version=2.2.0.0-2041 -DfailIfNoTests=false -P sandbox`
-    * `mvn test  -fae -P sandbox`
-    * `mvn test  -fae  -Dtest=org.apache.kylin.query.test.IIQueryTest -Dhdp.version=2.2.0.0-2041 -DfailIfNoTests=false -P sandbox`
 
 ## More on v1.5 UT/IT separation
 
-From Kylin v1.5 you can run UT(Unit test), environment cube provision and IT (Integration test) separately. 
-Running `mvn verify -Dhdp.version=2.2.4.2-2`  (assume you're on your sandbox) is all you need to run a complete all the test suites.
+Running `mvn verify -Dhdp.version=2.4.0.0-169` (assume you're on your sandbox) is all you need to run a complete all the test suites.
 
 It will execute the following steps sequentially:
  
@@ -52,20 +41,6 @@ If your sandbox is already provisioned and your code change will not affect the
 
 ### Cube Provision
 
-Environment cube provision is indeed running kylin cubing jobs to prepare example cubes in the sandbox. These prepared cubes will be used by the ITs. Currently provision step is bound with the maven pre-integration-test phase, and it contains running BuildCubeWithEngine (HBase required), BuildCubeWithStream(Kafka required) and BuildIIWithStream(Kafka Required). You can run the mvn commands on you sandbox or your develop computer. For the latter case you need to set kylin.job.use-remote-c [...]
+Test cube provision is indeed running kylin cubing jobs to prepare example cubes in the sandbox. These prepared cubes will be used by the ITs. Currently provision step is bound with the maven pre-integration-test phase, and it contains running BuildCubeWithEngine (HBase required) and BuildCubeWithStream(Kafka required). You can run the mvn commands on you sandbox or your development computer. For the latter case you need to set `kylin.job.use-remote-cli=true`in __$KYLIN_HOME/examples/tes [...]
 Try appending `-DfastBuildMode=true` to mvn verify command to speed up provision by skipping incremental cubing. 
 
-## More on v1.3 Mini Cluster
-
-Kylin v1.3 (and below) used to move as many as possible unit test cases from sandbox to HBase mini cluster, so that user can run tests easily in local without a hadoop sandbox. Two maven profiles are created in the root pom.xml, "default" and "sandbox". The default profile will startup a HBase Mini Cluster to prepare the test data and run the unit tests (the test cases that are not supported by Mini cluster have been added in the "exclude" list). If you want to keep using Sandbox to run  [...]
-
-### When use the "default" profile, Kylin will
-
-* Startup a HBase minicluster and update KylinConfig with the dynamic HBase configurations
-* Create Kylin metadata tables and import six example cube tables
-* Import the hbase data from a tar ball from local: `examples/test_case_data/minicluster/hbase-export.tar.gz` (the hbase-export.tar.gz will be updated on complete of running BuildCubeWithEngineTest)
-* After all test cases be completed, shutdown minicluster and cleanup KylinConfig cache
-
-### To ensure Mini cluster can run successfully, you need
-
-* Make sure JAVA_HOME is properly set
diff --git a/website/_dev/index.cn.md b/website/_dev/index.cn.md
new file mode 100644
index 0000000..ae95559
--- /dev/null
+++ b/website/_dev/index.cn.md
@@ -0,0 +1,35 @@
+---
+layout: dev-cn
+title: 开发快速指南
+permalink: /cn/development/index.html
+---
+
+Apache Kylin 一直寻求的不只是代码的贡献,还寻求使用文档,性能报告,问答等方面的贡献。所有类型的贡献都为成为 Kylin Committer 铺平了道路。每个人都有机会,尤其是那些有分析和解决方案背景的,因为缺少来自于用户和解决方案视角的内容。
+
+### 如何贡献
+查看[如何贡献](/cn/development/howto_contribute.html)文档。
+
+### 源仓库
+Apache Kylin™ 源码使用 Git version control 进行版本控制:
+Commits [总结](https://github.com/apache/kylin/commits/master)  
+源仓库:[https://github.com/apache/kylin ](https://github.com/apache/kylin )  
+Gitbox 的镜像:[https://gitbox.apache.org/repos/asf?p=kylin.git ](https://gitbox.apache.org/repos/asf?p=kylin.git )
+
+### CI 和代码分析
+使用 JDK 1.7(过时)的 master 分支上的 UT:[Kylin-Master-JDK-1.7](https://builds.apache.org/job/Kylin-Master-JDK-1.7/) 
+使用 JDK 1.8 的 master 分支上的 UT:[Kylin-Master-JDK-1.8](https://builds.apache.org/job/Kylin-Master-JDK-1.8/) 
+静态代码分析:[SonarCube dashboard](https://builds.apache.org/analysis/overview?id=org.apache.kylin%3Akylin)
+
+[![Build Status](https://travis-ci.org/apache/kylin.svg?branch=master)](https://travis-ci.org/apache/kylin)[![Codacy Badge](https://api.codacy.com/project/badge/Grade/74f0139786cd4e8a8ce69bb0c17c2e71)](https://www.codacy.com/app/kyligence-git/kylin?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=apache/kylin&amp;utm_campaign=Badge_Grade)
+[![Quality Gate](https://sonarcloud.io/api/badges/gate?key=org.apache.kylin%3Akylin)](https://sonarcloud.io/dashboard/index/org.apache.kylin%3Akylin)[![SonarCloud Coverage](https://sonarcloud.io/api/badges/measure?key=org.apache.kylin%3Akylin&metric=coverage)](https://sonarcloud.io/component_measures/metric/coverage/list?id=org.apache.kylin%3Akylin)[![SonarCloud Bugs](https://sonarcloud.io/api/badges/measure?key=org.apache.kylin%3Akylin&metric=bugs)](https://sonarcloud.io/component_measu [...]
+
+### Issue 追踪  
+在 Apache JIRA 上的 "Kylin" 项目追踪 issues([浏览](http://issues.apache.org/jira/browse/KYLIN))。
+
+### 路线图
+- 支持 Hadoop 3.0(纠偏编码)
+- 完全使用 Spark 的 Cube 引擎
+- 接入更多的源(MySQL,Oracle,Spark SQL 等)
+- 无需构建 Cube 的即席查询 
+- 更好的存储引擎(Druid,Kudu,等)
+- 支持实时数据分析的 Lambda 架构
diff --git a/website/_dev/index.md b/website/_dev/index.md
index f970248..e861074 100644
--- a/website/_dev/index.md
+++ b/website/_dev/index.md
@@ -18,7 +18,6 @@ Mirrored to Gitbox: [https://gitbox.apache.org/repos/asf?p=kylin.git ](https://g
 ### CI and Code Analysis
 UT on master branch with JDK 1.7(deprecated): [Kylin-Master-JDK-1.7](https://builds.apache.org/job/Kylin-Master-JDK-1.7/) 
 UT on master branch with JDK 1.8: [Kylin-Master-JDK-1.8](https://builds.apache.org/job/Kylin-Master-JDK-1.8/) 
-Integretion test within Hadoop Sandbox (HDP 2.4) : [http://34.226.50.254:8081/](http://34.226.50.254:8081/)
 Static Code Analysis: [SonarCube dashboard](https://builds.apache.org/analysis/overview?id=org.apache.kylin%3Akylin)
 
 [![Build Status](https://travis-ci.org/apache/kylin.svg?branch=master)](https://travis-ci.org/apache/kylin)[![Codacy Badge](https://api.codacy.com/project/badge/Grade/74f0139786cd4e8a8ce69bb0c17c2e71)](https://www.codacy.com/app/kyligence-git/kylin?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=apache/kylin&amp;utm_campaign=Badge_Grade)
@@ -29,8 +28,8 @@ Track issues on the "Kylin" Project on the Apache JIRA ([browse](http://issues.a
 
 ### Roadmap
 - Hadoop 3.0 support (Erasure Coding)
-- Spark Cubing enhancement
-- Connect more sources (JDBC, SparkSQL)
+- Fully on Spark Cube engine
+- Connect more data sources (MySQL, Oracle, SparkSQL, etc)
 - Ad-hoc queries without Cubing
 - Better storage (Druid, Kudu, etc)
 - Real-time analytics with Lambda Architecture
diff --git a/website/_dev/new_metadata.cn.md b/website/_dev/new_metadata.cn.md
new file mode 100644
index 0000000..8fe616e
--- /dev/null
+++ b/website/_dev/new_metadata.cn.md
@@ -0,0 +1,30 @@
+---
+layout: dev-cn
+title:  "新的元数据模型"
+categories: development
+permalink: /cn/development/new_metadata.html
+---
+
+Kylin 正在进行循环代码重构,它将对元数据引入以下两个更改:
+
+* 从 "cube_desc" 抽象一个 "model_desc" 层
+
+定义一个 cube 前,用户将需要首先定义一个模型("model_desc");模型定义了哪个是事实表,哪些是维度表以及它们是如何 join 的;
+
+在定义模型时,当用户定义 cube(“cube_desc”)时,他/她只需要为维度指定表/列名称,因为已经定义了 join 条件;
+
+这种抽象是扩展元数据以实现非 cube 查询(即将推出);
+
+* 支持来自多个 hive 数据库的数据表;
+
+用户有这样的场景:表来自多个 hive 数据库,表名可能相同;为了支持这种情况,Kylin 将使用数据库名称 + 表名作为表的唯一名称;并且当在 Kylin 中查询时,用户需要在 SQL 中指定数据库名称(如果它不是“default”)。 
+
+这里有一个样例;事实表 "test_kylin_fact" 来自于默认的 hive 数据库,您不需要指定数据库名称;然而维度表来自于 "edw",在查询中您需要使用 "edw.test_cal_dt":
+
+{% highlight Groff markup %}
+select test_cal_dt.Week_Beg_Dt, sum(price) as c1, count(1) as c2 
+ from test_kylin_fact
+ inner JOIN edw.test_cal_dt as test_cal_dt
+ ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt 
+ where test_kylin_fact.lstg_format_name='ABIN' 
+{% endhighlight %}
diff --git a/website/_dev/new_metadata.md b/website/_dev/new_metadata.md
index d52aa61..71e3bd2 100644
--- a/website/_dev/new_metadata.md
+++ b/website/_dev/new_metadata.md
@@ -17,7 +17,7 @@ This abstraction is to extend the meta data to fulfill non-cube queries (coming
 
 * Support data tables from multiple hive databases;
 
-User has the case that tables are from multiple hive database, and the table name might be the same; To support this case Kylin will use the database name + table name as the unique name for tables; And user need to specify the database name (if it is not "default") in SQL when query Kylin. 
+User has the case that tables are from multiple hive database, and the table name might be the same; To support this case Kylin will use the database name + table name as the unique name for tables; And user need to specify the database name (if it is not "default") in SQL when query in Kylin. 
 
 Here is a sample; the fact table "test_kylin_fact" is from default hive database, you don't need to specify the db name; while lookup table is from "edw", you need use "edw.test_cal_dt" in the query:
 
diff --git a/website/_dev/plugin_arch.cn.md b/website/_dev/plugin_arch.cn.md
new file mode 100644
index 0000000..ef7e521
--- /dev/null
+++ b/website/_dev/plugin_arch.cn.md
@@ -0,0 +1,42 @@
+---
+layout: dev-cn
+title:  插件架构
+categories: development
+permalink: /cn/development/plugin_arch.html
+---
+
+插件架构旨在使 Kylin 在计算框架,数据源和 cube 存储方面具有可扩展性。从 v1 开始,Kylin 与作为计算框架的 Hadoop MapReduce,作为数据源的 Hive,作为存储的 HBase 紧密结合。这样的问题出现了:Kylin 可以使用 Spark 作为 cube 引擎,或者可以使用像 Cassandra 那样不同的存储。我们希望对不同的选择持开放态度,并确保 Kylin 用最好的技术堆栈进化。这就是 Kylin v2 中引入插件架构的原因。
+
+![Plugin Architecture Overview](/images/develop/plugin_arch_overview.png)
+
+## 如何运行
+
+cube 元数据定义了 cube 所依赖的引擎,源和存储的类型。工厂模式用于构造每个依赖项的实例。适配器模式用于将部件连接在一起。
+
+例如一个 cube 描述可能包含:
+
+- fact_table: `SOME_HIVE_TABLE`
+- engine_type: `2` (MR Engine v2)
+- storage_type: `2` (HBase Storage v2)
+
+基于元数据,工厂创建 MR 引擎,Hive 数据源和 HBase 存储。
+
+![Plugin Architecture Factory Pattern](/images/develop/plugin_arch_factory_pattern.png)
+
+引擎就像一个主板,源和存储必须由输入和输出接口定义。数据源和存储必须适应接口,以便连接到引擎主板。
+
+![Plugin Architecture Adaptor Pattern](/images/develop/plugin_arch_adaptor_pattern.png)
+
+一旦上面的对象图被创建和连接,引擎就可以驱动 cube 构建过程。
+
+## 插件架构的好处
+
+- 自由
+	- Zoo 打破了,不再与 Hadoop 绑定
+	- 免费使用更好的引擎或存储
+- 可扩展性
+	- 接受任意输入,例如 Kafka
+	- 拥抱下一代分布式平台,例如 Spark
+- 灵活性
+	- 为不同的数据集选择不同的引擎
+
diff --git a/website/_dev/web_tech.cn.md b/website/_dev/web_tech.cn.md
new file mode 100644
index 0000000..89deb39
--- /dev/null
+++ b/website/_dev/web_tech.cn.md
@@ -0,0 +1,46 @@
+---
+layout: dev-cn
+title:  "Kylin Web 摘要"
+categories: development
+permalink: /cn/development/web_tech.html
+---
+
+### 项目依赖
+* npm: 用于开发阶段安装 grunt 和 bower
+* grunt: 构建并安装 kylin web
+* bower: 管理 kylin 技术依赖
+
+### 技术依赖
+* Angular JS: kylin web 的基础支持
+* ACE: sql 和 json 编辑器
+* D3 JS: 绘制报表图表和 cube 图表
+* Bootstrap: css 库
+
+### 支持的用例:
+
+###### Kylin web 支持 BI 工作流中各种角色的需求 
+
+* 分析师:运行查询和检出结果
+* Modeler:cube 设计,cube/job 操作和监视器
+* 管理员:系统操作。
+
+### 技术概览 
+Kylin web 是一个基于 restful 服务构建的单页应用程序。Kylin web 使用 nodejs 中的工具来管理项目,并使用 AngularJS 来启用单页 Web 应用程序。Kylin web 使用来自 js 开源社区的流行技术,使其易于追赶和贡献。 
+
+### 强调:
+* 查询实用功能:
+    * 表和列名称的 SQL 自动建议
+    * 远程/本地查询保存
+    * 数据网格通过简单的 BI 操作能支持百万级数据
+    * 数据导出
+    * 简单的数据可视化(折线图,柱状图,饼图)
+* Cube 管理:
+    * 精心设计的 cube 创建流程
+    * cube 关系结构的可视化
+    * 精心设计的 cube 访问管理
+* Job 管理:
+    * Job 步骤和日志监视器
+    * 杀死
+    * 恢复
+* 有用的管理工具。
+* 精致的外观和感觉。
diff --git a/website/_layouts/community-cn.html b/website/_includes/dev_nav.cn.html
similarity index 58%
copy from website/_layouts/community-cn.html
copy to website/_includes/dev_nav.cn.html
index d6a9f0e..43d48a6 100644
--- a/website/_layouts/community-cn.html
+++ b/website/_includes/dev_nav.cn.html
@@ -16,33 +16,18 @@
 * limitations under the License.
 -->
 
-<!DOCTYPE html>
-<html>
-
-  {% include head.html %}
-
-  <body>
-
-    {% include header.html %}
-<main id="main" >
-  <div >
-    <div id="zero" class=" main community" >
-      <header style="padding:2em 0 2em 0;">
-        <div class="page-content">
-          <div class="wrapper">
-            {{ content }}
-          </div>
-        </div>
-      </header>
-    </div>
+<div class="col-md-4 col-lg-4 col-xs-12 col-sm-12 aside1 visible-sm visible-xs visible-md visible-lg" id="nside1" style=" margin-top: 5em;float:right;">
+    <ul class="nav nav-pills nav-stacked">
+    {% for section in site.data.development-cn %}
+    <li><a href="#{{ section | first }}" data-toggle="collapse" class="navtitle">{{ section.title }}</a></li>
+    <div class="collapse in">
+  	<div class="list-group" id="list1">
+    <ul>
+    {% include dev_ul.cn.html items=section.dev %}
+        <ul>
   </div>
-</main>
-
-    {% include footer.html %}
-
-  <script src="/assets/js/jquery-1.9.1.min.js"></script> 
-  <script src="/assets/js/bootstrap.min.js"></script> 
-  <script src="/assets/js/main.js"></script>
-  </body>
+</div>
+    {% endfor %}
 
-</html>
+    </ul>
+</div>
\ No newline at end of file
diff --git a/website/_includes/dev_ul.cn.html b/website/_includes/dev_ul.cn.html
new file mode 100644
index 0000000..4f2877d
--- /dev/null
+++ b/website/_includes/dev_ul.cn.html
@@ -0,0 +1,27 @@
+{% assign items = include.items %}
+
+
+
+{% for item in items %}
+   
+  {% assign item_url = item | prepend:"/cn/development/" | append:".html" %}
+
+  {% if item_url == page.url %}
+    {% assign c = "current" %}
+  {% else %}
+    {% assign c = "" %}
+  {% endif %}
+
+
+
+  {% for p in site.dev %}
+    {% if p.url == item_url %}
+      <li class="navlist">
+        <a href="{{ p.url }}" class="list-group-item-lay pjaxlink">{{p.title}}</a></li>      
+      {% break %}
+    {% endif %}
+  {% endfor %}
+
+{% endfor %}
+
+
diff --git a/website/_includes/header.cn.html b/website/_includes/header.cn.html
index 0631a33..278bd11 100644
--- a/website/_includes/header.cn.html
+++ b/website/_includes/header.cn.html
@@ -43,8 +43,8 @@
             <li><a href="/cn">首页</a></li>
             <li><a href="/cn/docs" >文档</a></li>
             <li><a href="/cn/download">下载</a></li>
-            <li><a href="/community" >社区</a></li>
-            <li><a href="/development" >开发</a></li>
+            <li><a href="/cn/community" >社区</a></li>
+            <li><a href="/cn/development" >开发</a></li>
             <li><a href="/blog">博客</a></li>
             <li><a href="/" >English</a></li>           
         </ul>
diff --git a/website/_includes/home_header.cn.html b/website/_includes/home_header.cn.html
index c648477..b5db6cc 100644
--- a/website/_includes/home_header.cn.html
+++ b/website/_includes/home_header.cn.html
@@ -42,8 +42,8 @@
             <li><a href="/cn">首页</a></li>
             <li><a href="/cn/docs" >文档</a></li>
             <li><a href="/cn/download">下载</a></li>
-            <li><a href="/community" >社区</a></li>
-            <li><a href="/development" >开发</a></li>
+            <li><a href="/cn/community" >社区</a></li>
+            <li><a href="/cn/development" >开发</a></li>
             <li><a href="/blog">博客</a></li>
             <li><a href="/" >English</a></li>           
         </ul>
diff --git a/website/_layouts/community-cn.html b/website/_layouts/community-cn.html
index d6a9f0e..c8e4af2 100644
--- a/website/_layouts/community-cn.html
+++ b/website/_layouts/community-cn.html
@@ -19,11 +19,11 @@
 <!DOCTYPE html>
 <html>
 
-  {% include head.html %}
+  {% include head.cn.html %}
 
   <body>
 
-    {% include header.html %}
+    {% include header.cn.html %}
 <main id="main" >
   <div >
     <div id="zero" class=" main community" >
diff --git a/website/_layouts/community-cn.html b/website/_layouts/dev-cn.html
similarity index 53%
copy from website/_layouts/community-cn.html
copy to website/_layouts/dev-cn.html
index d6a9f0e..4745a14 100644
--- a/website/_layouts/community-cn.html
+++ b/website/_layouts/dev-cn.html
@@ -16,33 +16,32 @@
 * limitations under the License.
 -->
 
-<!DOCTYPE html>
+<!doctype html>
 <html>
+	{% include head.cn.html %}
+	<body>
+		{% include header.cn.html %}
+		
+		<div class="container">
+			<div class="row"  style="clear:both;">
+				
+				<div class="col-md-8 col-lg-8 col-xs-12 col-sm-12 aside2" style="float: right;">
+					<div id="container" class="docs">
+						<div id="pjax">
+							<h1 class="post-title">{{ page.title }}</h1>
+							<article class="post-content" >
+							{{ content }}
+							</article>
+						</div>
+					</div>
+				</div>
+				{% include dev_nav.cn.html %}
+			</div>
+		</div>		
+		{% include footer.html %}
 
-  {% include head.html %}
-
-  <body>
-
-    {% include header.html %}
-<main id="main" >
-  <div >
-    <div id="zero" class=" main community" >
-      <header style="padding:2em 0 2em 0;">
-        <div class="page-content">
-          <div class="wrapper">
-            {{ content }}
-          </div>
-        </div>
-      </header>
-    </div>
-  </div>
-</main>
-
-    {% include footer.html %}
-
-  <script src="/assets/js/jquery-1.9.1.min.js"></script> 
-  <script src="/assets/js/bootstrap.min.js"></script> 
-  <script src="/assets/js/main.js"></script>
-  </body>
-
+	<script src="/assets/js/jquery-1.9.1.min.js"></script> 
+	<script src="/assets/js/bootstrap.min.js"></script> 
+	<script src="/assets/js/main.js"></script>
+	</body>
 </html>
diff --git a/website/_layouts/community-cn.html b/website/_layouts/powered-cn.html
similarity index 77%
copy from website/_layouts/community-cn.html
copy to website/_layouts/powered-cn.html
index d6a9f0e..df5f00d 100644
--- a/website/_layouts/community-cn.html
+++ b/website/_layouts/powered-cn.html
@@ -19,21 +19,23 @@
 <!DOCTYPE html>
 <html>
 
-  {% include head.html %}
+  {% include head.cn.html %}
 
   <body>
 
-    {% include header.html %}
+    {% include header.cn.html %}
 <main id="main" >
   <div >
-    <div id="zero" class=" main community" >
-      <header style="padding:2em 0 2em 0;">
-        <div class="page-content">
-          <div class="wrapper">
-            {{ content }}
-          </div>
+    <div id="zero" class=" main powered" >
+
+      <header style=" padding:2em 0 0 0">
+        <div class="container" >
+          <h4 class="index-title"><span>Apache Kylin™ 技术支持</span></h4>
         </div>
       </header>
+      <div class="container" >
+        {{ content }}
+      </div>
     </div>
   </div>
 </main>
diff --git a/website/community/index.cn.md b/website/community/index.cn.md
new file mode 100644
index 0000000..db23f58
--- /dev/null
+++ b/website/community/index.cn.md
@@ -0,0 +1,178 @@
+---
+layout: community-cn
+title: 社区
+permalink: /cn/community/index.html
+---
+<div class="container" >
+	<div class="row">
+		<div class="col-sm-6 col-md-6">
+		    <h2> Apache Kylin 用户案例 </h2>
+			<p>想要了解谁在使用 Apache Kylin,请参考 <a href="/cn/community/poweredby.html">powered by</a> 页面。</p>
+		</div>
+
+		<div class="col-sm-6 col-md-6">
+		    <h2> 社交媒体 </h2>
+		    <p>Apache Kylin 官方 Twitter 账号: <a href="https://twitter.com/ApacheKylin">@ApacheKylin</a></p>
+		</div>
+	</div>
+
+	<div class="row">
+		<div class="col-sm-6 col-md-6">
+		    <h2> Apache Kylin 邮件群组 </h2>
+
+		    <p>如果您在使用 Kylin 过程中遇到问题,请加入 Kylin 邮件群组参与讨论,这是参与 Apache 项目讨论的正确方式。根据您的参与性质: 普通用户或开发者,可以分别订阅 user@kylin.apache.org 和 dev@kylin.apache.org 邮件群组。</p>
+
+			<p>
+		   	请先订阅Kylin邮件群组,再发邮件到对应的组,否则您的问题将会被阻止。
+			例如,如果您要订阅 user@kylin.apache.org,那么先发一个空邮件到user-subscribe@kylin.apache.org,稍后您会收到一封确认邮件,对它进行回复即可完成订阅。在订阅成功后,请再发送您的问题到 user@kylin.apache.org,那么所有订阅该邮件组的其它用户将会收到您的邮件,并做出分享。</p>
+
+
+		    <p>  
+		    	<span>用户(user)邮件列表</span>
+		    	<span>
+		    		<a href="mailto:user-subscribe@kylin.apache.org">订阅</a>
+		    	</span>
+		    	<span>
+		    		<a href="mailto:user-unsubscribe@kylin.apache.org">退订</a>
+		    	</span>
+		    	<span>
+		    	    <a href="mailto:user@kylin.apache.org">发送新邮件</a>
+		    	</span>
+		    	<span>
+		    	    <a href="http://mail-archives.apache.org/mod_mbox/kylin-user/">历史存档</a>
+		    	</span>
+		    </p>
+
+		    <p>  
+		    	<span>开发者(dev)邮件列表</span>
+		    	<span>
+		    		<a href="mailto:dev-subscribe@kylin.apache.org">订阅</a>
+		    	</span>
+		    	<span>
+		    		<a href="mailto:dev-unsubscribe@kylin.apache.org">退订</a>
+		    	</span>
+		    	<span>
+		    	    <a href="mailto:dev@kylin.apache.org">发送新邮件</a>
+		    	</span>
+		    	<span>
+		    	    <a href="http://mail-archives.apache.org/mod_mbox/kylin-dev//">历史存档</a>
+		    	</span>
+		    </p>
+
+		    <p>  
+		    	<span>Issues 邮件列表</span>
+		    	<span>
+		    		<a href="mailto:issues-subscribe@kylin.apache.org">订阅</a>
+		    	</span>
+		    	<span>
+		    		<a href="mailto:issues-unsubscribe@kylin.apache.org">退订</a>
+		    	</span>
+		    	<span>N/A</span>
+		    	<span>
+		    	    <a href="http://mail-archives.apache.org/mod_mbox/kylin-issues/">历史存档</a>
+		    	</span>
+		    </p>
+
+		    <p>  
+		    	<span>Commits 邮件列表</span>
+		    	<span>
+		    		<a href="mailto:commits-subscribe@kylin.apache.org">订阅</a>
+		    	</span>
+		    	<span>
+		    		<a href="mailto:commits-unsubscribe@kylin.apache.org">退订</a>
+		    	</span>
+		        <span>N/A</span>
+		    	<span>
+		    	    <a href="http://mail-archives.apache.org/mod_mbox/kylin-commits/">历史存档</a>
+		    	</span>
+		    </p>
+		</div>
+
+		<div class="col-sm-6 col-md-6">
+		    <h2>社区活动报告</h2>
+
+		    <p><a href="https://github.com/apache/kylin/pulse">Git Pulse</a></p>
+		    <p><a href="https://reporter.apache.org/?kylin">Apache 委员会报告</a></p>
+		</div>
+	</div>
+
+	<div class="row">
+		<div class="col-sm-6 col-md-6">
+		    <h2> 邮件列表档案 </h2>
+		    <p>为方便起见,有一个论坛风格的邮件列表存档,它不是官方 Apache 档案的一部分:</p>
+
+		    <p><a href="http://apache-kylin.74782.x6.nabble.com">Nabble 上的开发者列表档案</a></p>
+		</div>
+
+		<div class="col-sm-6 col-md-6">
+		    <h2>Apache Kylin 开发团队</h2>
+		    <p>一个成功的项目需要很多人扮演不同的角色。一些成员编写代码,提供项目指导或写文档。其他人作为有价值的测试人员,提交补丁和建议。</p>
+		</div>
+	</div>
+</div>
+
+<div class="kylin-member">
+	<div class="container">
+		<h2> PMC Members & Committer</h2>
+		<div class="clearfix">
+		{% for c in site.data.contributors %} 
+		  <div class="col-sm-6 col-md-4">
+		  	<div class="members-card">
+			  	<a href="http://github.com/{{ c.githubId }}"> 
+			  		<img class="github-pic" src="{% unless c.avatar %}http://github.com/{{ c.githubId }}.png{% else %}{{ c.avatar }}{% endunless %}">
+			  	</a>  
+			  	<p class="members-name"> {{ c.name }} </p> 
+				<p class="member-role">Org: {{ c.org }} </p>
+			  	<p class="members-role">Role : {{ c.role }}</p> 
+			  	<p>Apache ID : <a href="http://home.apache.org/phonebook.html?uid={{ c.apacheId }}" class="apache-id">{{ c.apacheId }}</a> </p>  
+			</div>
+		  </div>
+		{% endfor %}
+		</div>
+
+        <div class="contributors">
+			<p >详细的委员会信息在 <a href="https://projects.apache.org/committee.html?kylin">这里</a>。</p>
+			<p >详细的代码贡献在 <a href="https://github.com/apache/kylin/graphs/contributors">这里</a>。</p>
+
+		    <h5>其他的贡献者</h5>
+		    <table>
+		    <tr>  
+		    	<th>姓名</th>
+		    	<th>Github</th>
+		    	<th></th>
+		    </tr>
+		    <tr>  
+		    	<td>Rui Feng</td>
+		    	<td><a href="https://github.com/fengrui129">fengrui129</a></td>
+		    	<td>网站设计,Kylin Logo</td>
+		    </tr>
+		    <tr>  
+		    	<td>Luffy Xiao</td>
+		    	<td><a href="http://github.com/luffy-xiao">luffy-xiao</a></td>
+		    	<td>Kylin Web 应用,REST 服务</td>
+		    </tr>
+		    <tr>  
+		    	<td>Kejia Wang</td>
+		    	<td><a href="https://github.com/Kejia-Wang">Kejia-Wang</a></td>
+		    	<td>Web 应用, 网站</td>
+		    </tr>
+		    <tr>  
+		    	<td>Yue Yang</td>
+		    	<td></td>
+		    	<td>Web 应用 UI 设计</td>
+		    </tr>
+		    </table>
+		</div>
+	</div>
+</div>
+
+<div class="container credits">
+  <h2> 荣誉</h2>
+  <ul>
+  	<li>感谢 <a href="https://www.ebayinc.com/">eBay Inc.</a> 将这个项目贡献到开源社区,首先在 <a href="http://www.ebaytechblog.com/2014/10/20/announcing-kylin-extreme-olap-engine-for-big-data/">eBay Techblog</a>宣布。</li>
+  	<li>感谢 <a href="https://www.jetbrains.com/">JetBrains</a> 为我们提供 <a href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a> 的免费 license。</li>
+  	<li>感谢 <a href="vikash_agarwal@hotmail.com">Vikash Agarwal</a>,他的文章 <a href="http://www.drdobbs.com/windows/odbc-driver-development/184416434?pgno=5">ODBC Driver Development</a> 和示例代码介绍了如何从头开始编写 ODBC 驱动程序的基本思想。</li>
+  </ul>
+
+</div>
+
diff --git a/website/community/index.md b/website/community/index.md
index 384aab6..5a62352 100644
--- a/website/community/index.md
+++ b/website/community/index.md
@@ -88,7 +88,6 @@ permalink: /community/index.html
 		    <h2>Community Activity Report</h2>
 
 		    <p><a href="https://github.com/apache/kylin/pulse">Git Pulse</a></p>
-		    <p><a href="https://github.com/apache/kylin/graphs">Git Graphs</a></p>
 		    <p><a href="https://reporter.apache.org/?kylin">Apache Committee Report</a></p>
 		</div>
 	</div>
@@ -151,12 +150,12 @@ permalink: /community/index.html
 		    <tr>  
 		    	<td>Kejia Wang</td>
 		    	<td><a href="https://github.com/Kejia-Wang">Kejia-Wang</a></td>
-		    	<td>Web aplication, Website</td>
+		    	<td>Web application, Website</td>
 		    </tr>
 		    <tr>  
 		    	<td>Yue Yang</td>
 		    	<td></td>
-		    	<td>Web aplication UI design</td>
+		    	<td>Web application UI design</td>
 		    </tr>
 		    </table>
 		</div>
diff --git a/website/community/poweredby.cn.md b/website/community/poweredby.cn.md
new file mode 100644
index 0000000..fde41d6
--- /dev/null
+++ b/website/community/poweredby.cn.md
@@ -0,0 +1,65 @@
+---
+layout: powered-cn
+title: 技术支持
+permalink: /cn/community/poweredby.html
+---		
+
+__如何贡献案例__
+如果您的公司或组织正在使用 Kylin,并且想加入到案例列别,请发送一个使用情况的简短描述给[用户邮件列表](mailto:user@kylin.apache.org)或给 [@apachekylin](https://twitter.com/apachekylin) 或给 twitter 上的 [@lukehq](https://twitter.com/lukehq),随后我们会添加您的案例。
+
+__公司 & 组织__
+
+* [Hobsons, Inc.](https://www.hobsons.com/), 2018-08-11
+    * Hobsons 解决方案使教育工作者能够改善大学和职业规划,招生和入学管理,学生成功和建议。Hobsons 使用 Apache Kylin 为教育者提供有关学校表现和学生成功指标的宝贵见解。
+
+* [DiDi 滴滴](http://www.didiglobal.com/), 2018-06-27
+    * Apache Kylin 作为 Didi 中 OLAP 的特定场景引擎运行。借助聚合缓存功能,它已经为 10 多条业务线和 3000 多个用户提供服务,为我们提供稳定,可靠和高性能的数据服务。想要了解更多请阅读[此博客](https://mp.weixin.qq.com/s/WDaSJHeHvWTDjGkUR7zmfg)。 
+
+* [StrateBI](http://www.stratebi.com/), 2018-05-23
+    * Apache Kylin 已成为我们大数据项目的重要组成部分。我们已成功为数字营销和零售客户部署了 Kylin,其中数据刷新(分钟)和查询延迟(亚秒)的要求非常严格,而数据量仍然非常高(十亿行)。此外,为了尝试及展示 Kylin 功能,我们创建了一些与 [Tableau](http://bigdata.stratebi.com/kylin-tableau/index.htm),[Superset](http://bigdata.stratebi.com/kylin-superset/index.htm) 甚至基于 [Mondrian MDX](http://bigdata.stratebi.com/kylin-olap/index.htm) 的工具集成的演示。
+* [Grow Force](http://www.300.cn/), 2018-01-02
+    * Grow Force 主要在新的数据仓库系统和 BI 报告的数据计算中使用 Kylin。一方面,它提高了我们的开发效率,并且消除了开发人员手动编写 HQL/SQL 语句以查询维度数据的需要;另一方面,它解耦了现有的系统设计。因此,数据计算层主要包括 Spark 的实时计算和 HQL 的离线计算。引入 Kylin 后,整个离线计算可以迁移到 Kylin,大大提高了灵活性。 
+* [ZTE 中兴](http://www.zte.com.cn/), 2017-11-09
+    * Apache Kylin 是 ZTE 大数据平台的基础组件之一。ZTE 使用 Apache Kylin 为电信,政府,银行,金融和其他行业的客户提供 OLAP 功能。
+* [4399.com](http://www.4399.com/), 2017-07-30
+    * Apache Kylin 在 4399.com 上用于 Hadoop 上的大数据分析,它允许我们以亚秒级延迟查询海量数据集。
+* [Wuba (58.com)](https://www.58.com)  (_NYSE:WUBA_), 2017-07-28
+    * Apache Kylin 在 Wuba 的大数据平台上用作 OLAP 引擎,为推荐引擎,搜索引擎,广告引擎,BI 等提供数据分析。每天在 crontab 下构建 100 多个立方体。查询统计信息显示,超过 95% 的查询可以在不到一秒的时间内获得响应,这提供了比传统工具更好的用户体验。并且可以通过添加机器来简单地解决资源瓶颈,这对于管理员来说是特别友好的。
+* [Yahoo! Japan](https://about.yahoo.co.jp/info/en/), 2017-05-22
+    * Yahoo! JAPAN 使用 Apache Kylin 为 Yahoo! Shopping 生成量身定制的报告。Apache Kylin 最大限度地减少了查看报告的延迟。因而,平台团队从提升性能的特定任务中解放出来且其能专注于为用户添加新功能。
+* [Strikingly 上线了](https://strikingly.com/), 2017-05-22
+    * Strikingly 采用 Kylin + AWS EMR 解决方案。通过采用 Kylin,查询性能从 5~10 秒提高到只需不到 1 秒,现在可以提供更多的并发请求。当工作负载和数据增加时,我们只需要按需添加 EMR 节点然后容量就得以扩展。这种架构确保我们不必担心未来几年的数据增长。
+* [Qunar 去哪儿](https://www.qunar.com)  (_NASDAQ:QUNR_), 2017-04-18
+    * Apache Kylin 在 Qunar 中用来在 Hadoop 上作为数据分析引擎,它为飞行业务提供了强大的OLAP功能,并具有良好的性能。
+* [Toutiao 今日头条](https://www.toutiao.com/), 2017-04-17
+    * 作为中国最流行的手机新闻 app,Toutiao 每天有超过 7800 万的活跃用户(数据是 2017 年 2 月收集),我们需要在**万亿级**数据上使用 OLAP 功能,只有 Kylin 才能实现。举个例子,用于视频分析的 Cube 拥有超过 2.4 万亿个源记录,占用 4+ TB 存储空间(源文件超过 100 TB);大多数查询可以在不到 1 秒的时间内完成(相同的查询在 Hive 中需要几个小时)。从另一个角度来看,Kylin 减轻了我们 Hadoop 集群的压力。这就是所谓的“一次构建,多次使用”。
+* [LeEco 乐视](http://www.leeco.com/), 2017-04-16
+    * Apache Kylin 已经被用作 LeEco 大数据平台的 OLAP 引擎和数据查询引擎的一部分,LeEco 正在为各种大数据业务提供支持,例如流媒体数据和云数据。
+* [Gome 国美](https://www.gome.com.cn/), 2017-04-14
+    * Apache Kylin 为 Gome 的在线运营顾问提供了完美的解决方案。它不仅提高了分析性能,还提高了生产率。我们在 T + 1 批处理和实时分析中采用了 Kylin。它是我们场景中最好的 OLAP 解决方案。
+* [Sohu 搜狐](https://www.sohu.com)   (_NASDAQ: SOHU_), 2017-04-13
+    * 在 Sohu,Apache Kylin 是运行在 Hadoop 上的分析引擎,服务于多个业务领域,包括广告分析,流量预测等。
+* [Meizu 魅族](https://www.meizu.com), 2017-04-13
+    * Meizu 技术在其统计分析平台和自助服务分析平台上成功地采用了 Apache Kyin,克服了传统 RDBMS 在海量数据上的性能瓶颈。
+* [iQIYI 爱奇艺](http://www.iqiyi.com/), 2017-04-13
+    * Apache Kylin 被用作 iQIYI 大数据分析平台的一部分。它为各种 OLAP 场景提供了强大的性能,并简化了数据处理过程。
+* [glispa](https://www.glispa.com/), 2016-09-16  
+    * glispa 在其数据管理平台中使用 Apache Kylin 作为 OLAP 组件。它使我们能够满足对大量数据进行实时分析的延迟要求。这有助于我们的数据科学家和分析师以快速的特设方式理解 DMP 中难以理解的数据。
+* [NetEase 网易](http://www.163.com/)  (_NASDAQ: NTES_), 2015-12-04
+    * Apache Kylin 已作为 NetEase 数据平台的 OLAP 引擎推出,为各种产品和业务提供数据分析,并具有很好的性能。
+* [Baidu Map 百度地图](http://map.baidu.com/)  (_NASDAQ: BIDU_), 2015-12-04
+    * Apache Kylin 被用来分析百度地图的大量关于用户,渠道及其它的数据,因其自身的预计算、索引技术及 cubes,展现出极快的一面
+* [Exponential](http://www.exponential.com), 2015-11-05
+    * 使用 Kylin 作为其数据平台 LAMBDA 的一个组件,为广告提供财产目录,活动,行为和需求分析。它在处理旧的生成系统的尺寸和速度限制方面表现出色。第一个版本已经投入生产,我们期待将更多数据推送到 kylin 并实现近乎实时的更新。
+* [DreamSoft](http://www.dream-it.cn/), 2015-11-05
+    * DreamSoft 使用 Apache Kylin 作为大数据分析引擎,为来自零售业,制造业,财务业等的客户提供服务。
+* [VIP.com 唯品会](http://www.vip.com)  (_NYSE: VIPS_), 2015-11-05
+    * Apache Kylin 用于 VIP.com 的大数据自助分析平台。Apache Kylin 为我们提供了一个新选项,使用户体验更加友好,并让我们有机会将 Cube 引回到大数据。
+* [Meituan.com 美团&点评](http://www.meituan.com), 2015-11-05
+    * Apache Kylin 正在为 Meituan 的数据平台提供各种 OLAP 方案,例如流量分析和支付渠道分析。它非常稳定,速度非常快。我们也非常愿意在其他产品上尝试 Kylin。
+* [MiningLAMP 明略](http://www.mininglamp.com), 2015-11-05
+    * Apache Kylin 是 MiningLAMP 的大数据分析产品的一部分,该产品为银行,金融和其他行业的客户提供 OLAP 功能。
+* [JD.com, Inc. 京东](http://www.jd.com)  (_NASDAQ: JD_), 2015-11-05
+    * Apache Kylin 作为数据分析引擎,用于分析 [JOS](http://jos.jd.com) API 访问并报告到 [JCloud](http://www.jcloud.com)。
+* [eBay](http://www.ebay.com)  (_NASDAQ: EBAY_), 2015-11-05
+    * Apache Kylin 在 eBay 用于 Hadoop 上的大数据分析。为各种数据产品提供支持,包括行为分析,流量报告,帐户管理器应用程序和流式仪表板。
\ No newline at end of file
diff --git a/website/community/poweredby.md b/website/community/poweredby.md
index e95e4e2..d86ea37 100644
--- a/website/community/poweredby.md
+++ b/website/community/poweredby.md
@@ -18,7 +18,7 @@ __Companies & Organizations__
 * [StrateBI](http://www.stratebi.com/), 2018-05-23
     * Apache Kylin has become an essential part in our Big Data projects. We have deployed Kylin with successful for a digital marketing and retail customers, where requirements for data refreshing (minutes) and query latency (sub-second) were very strict while data volumes remain very high (billion rows). Moreover, in order to try and show Kylin features, we have created some demos integrating it with [Tableau](http://bigdata.stratebi.com/kylin-tableau/index.htm), [Superset](http://bigd [...]
 * [Grow Force](http://www.300.cn/), 2018-01-02
-    * Kyin in Grow Force are mainly in the new data warehouse system and the data computing of BI reports. On one hand, it increases our development efficiency and eliminates the need for the developer to manually write HQL/SQL statement to query dimension data; on the other hand, it decouples the existing system design. The data computing layer thus mainly includes the real-time calculation of Spark and the offline calculation of HQL. After Kylin being introduced, the whole offline calc [...]
+    * Kylin in Grow Force are mainly in the new data warehouse system and the data computing of BI reports. On one hand, it increases our development efficiency and eliminates the need for the developer to manually write HQL/SQL statement to query dimension data; on the other hand, it decouples the existing system design. The data computing layer thus mainly includes the real-time calculation of Spark and the offline calculation of HQL. After Kylin being introduced, the whole offline cal [...]
 * [ZTE 中兴](http://www.zte.com.cn/), 2017-11-09
     * Apache Kylin is one of the foundational components of ZTE's Big Data Platform. ZTE uses Apache Kylin to provide OLAP capabilities to customers in the  telecom, government, banking, finance and other industries.
 * [4399.com](http://www.4399.com/), 2017-07-30
@@ -58,7 +58,7 @@ __Companies & Organizations__
 * [Meituan.com](http://www.meituan.com), 2015-11-05
     * Apache Kylin is powering various OLAP scenarios at Meituan's Data Platform, such as traffic analysis and payment channel analysis. It's quite stable and super fast. We are very willing to try Kylin on other product as well.
 * [MiningLAMP](http://www.mininglamp.com), 2015-11-05
-    * Apache Kylin is part of MiningLAMP's Big Data Analytics product offering OLAP capability for customers from Banking, Finance and others industuies.
+    * Apache Kylin is part of MiningLAMP's Big Data Analytics product offering OLAP capability for customers from Banking, Finance and others industries.
 * [JD.com, Inc.](http://www.jd.com)  (_NASDAQ: JD_), 2015-11-05
     * Apache Kylin as Data Analytics Engine to analysis [JOS](http://jos.jd.com) API access behavior and report in [JCloud](http://www.jcloud.com).
 * [eBay](http://www.ebay.com)  (_NASDAQ: EBAY_), 2015-11-05