# Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 貢獻( 代碼 ) )
原文鏈接 : [http://zeppelin.apache.org/docs/0.7.2/development/howtocontribute.html](http://zeppelin.apache.org/docs/0.7.2/development/howtocontribute.html)
譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10031118](http://www.apache.wiki/pages/viewpage.action?pageId=10031118)
貢獻者 : [小瑤](/display/~chenyao) [ApacheCN](/display/~apachecn) [Apache中文網](/display/~apachechina)
注意
**Apache Zeppelin** 是 **[Apache2 License](http://www.apache.org/licenses/LICENSE-2.0.html)** 軟件。對 **Zeppelin** (源代碼,文檔,圖像,網站)的任何貢獻意味著您同意許可協議作為 **Apache2 license**。
## 配置
以下是您需要 構建 和 測試 **Zeppelin** 的一些工具。
### Software Configuration Management ( SCM ) ( 軟件配置管理?)
由于 **Zeppeli** 使用 **Git** 作為其 **SCM** 系統,因此您需要在開發機器中安裝 **git** 客戶端。
### Integrated Development Environment ( IDE ) ( 集成開發環境?)
您可以隨意使用任何您喜歡的 **IDE** ,或者您最喜愛的命令行編輯器。
### Build Tools ( 構建工具?)
要構建代碼,請安裝
* Oracle Java 7
* Apache Maven
## Getting the source code ( 獲得源代碼 )
首先,您需要 **Zeppelin** 源代碼。 **Zeppelin** 的官方位置是??[http://git.apache.org/zeppelin.git](http://git.apache.org/zeppelin.git)?。
### git access
使用 **git** 獲取開發機器上的源代碼。
```
git clone git://git.apache.org/zeppelin.git zeppelin
```
您可能還想針對特定的分支開發。例如,對于 **branch-0.5.6?**
```
git clone -b branch-0.5.6 git://git.apache.org/zeppelin.git zeppelin
```
**Apache Zeppelin** 遵循 **[Fork&Pull](https://github.com/sevntu-checkstyle/sevntu.checkstyle/wiki/Development-workflow-with-Git:-Fork,-Branching,-Commits,-and-Pull-Request)**作為源代碼管理工作流程。如果您不僅要構建 **Zeppelin** ,還可以進行任何更改,那么您需要 **fork** [**Zeppelin github** 鏡像存儲庫](https://github.com/apache/zeppelin)并進行 **pull** 請求。
### Build ( 建立 )
```
mvn install
```
跳過測試
```
mvn install -DskipTests
```
用特定的 **spark / hadoop** 版本來構建
```
mvn install -Dspark.version=x.x.x -Dhadoop.version=x.x.x
```
為了進一步
### Run Zeppelin server in development mode ( 在開發模式下運行 Zeppelin 服務器?)
```
cd zeppelin-server
HADOOP_HOME=YOUR_HADOOP_HOME JAVA_HOME=YOUR_JAVA_HOME mvn exec:java -Dexec.mainClass="org.apache.zeppelin.server.ZeppelinServer" -Dexec.args=""
```
注意
確保您首先在 **zeppelin** 根目錄上運行 **mvn clean install -DskipTests** ,否則您的服務器構建將無法在本地重現中找到所需的依賴關系。
或使用 **daemon script** ( 守護程序腳本?)
```
bin/zeppelin-daemon start
```
服務器將在 **http:// localhost:8080** 上運行。
### Generating Thrift Code ( 生成 Thrift 代碼 )
[Thrift](http://thrift.apache.org/) 生成 **Zeppelin** 代碼的一些部分。對于大多數的 **Zeppelin** 更改,您不需要擔心這一點。但是如果您修改任何 **Thrift IDL** 文件(例如 **zeppelin-interpreter / src / main / thrift / *.thrift** ),那么您還需要重新生成這些文件,并將其更新的版本作為補丁的一部分提交。
要重新生成代碼,請安裝 **thrift-0.9.2** ,然后運行以下命令生成 **thrift?**代碼。
```
cd <zeppelin_home>/zeppelin-interpreter/src/main/thrift
./genthrift.sh
```
## Where to Start ( 從哪兒開始 )
你可以找到 **[beginner & newbie](https://issues.apache.org/jira/browse/ZEPPELIN-981?jql=project%20%3D%20ZEPPELIN%20AND%20labels%20in%20(beginner%2C%20newbie))**?( 初學者和新手?)的問題.
## Stay involved ( 保持參與 )
貢獻者應加入 **Zeppelin mailing lists** 。
* [dev@zeppelin.apache.org](mailto:dev@zeppelin.apache.org)適用于想向 **Zeppelin** 提供代碼的人員。訂閱,取消訂閱,存檔。
如果您有任何問題,請在 JIRA 中創建一張 **ticket** 。
- 快速入門
- 什么是Apache Zeppelin?
- 安裝
- 配置
- 探索Apache Zeppelin UI
- 教程
- 動態表單
- 發表你的段落
- 自定義Zeppelin主頁
- 升級Zeppelin版本
- 從源碼編譯
- 使用Flink和Spark Clusters安裝Zeppelin教程
- 解釋器
- 概述
- 解釋器安裝
- 解釋器依賴管理
- 解釋器的模擬用戶
- 解釋員執行Hook(實驗)
- Alluxio 解釋器
- Beam 解釋器
- BigQuery 解釋器
- Cassandra CQL 解釋器
- Elasticsearch 解釋器
- Flink 解釋器
- Geode/Gemfire OQL 解釋器
- HBase Shell 解釋器
- HDFS文件系統 解釋器
- Hive 解釋器
- Ignite 解釋器
- JDBC通用 解釋器
- Kylin 解釋器
- Lens 解釋器
- Livy 解釋器
- Markdown 解釋器
- Pig 解釋器
- PostgreSQL, HAWQ 解釋器
- Python 2&3解釋器
- R 解釋器
- Scalding 解釋器
- Scio 解釋器
- Shell 解釋器
- Spark 解釋器
- 系統顯示
- 系統基本顯示
- 后端Angular API
- 前端Angular API
- 更多
- 筆記本存儲
- REST API
- 解釋器 API
- 筆記本 API
- 筆記本資源 API
- 配置 API
- 憑據 API
- Helium API
- Security ( 安全 )
- Shiro 授權
- 筆記本 授權
- 數據源 授權
- Helium 授權
- Advanced ( 高級 )
- Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虛擬機上 )
- Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
- Zeppelin on CDH ( Zeppelin 在 CDH 上 )
- Contibute ( 貢獻 )
- Writing a New Interpreter ( 寫一個新的解釋器 )
- Writing a new Visualization (Experimental) ( 編寫新的可視化(實驗) )
- Writing a new Application (Experimental) ( 寫一個新的應用程序( 實驗 ) )
- Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 貢獻( 代碼 ) )
- Contributing to Apache Zeppelin ( Website ) ( 向 Apache Zeppelin 貢獻(website) )