GerritはなぜBuckを選んだのですか?


この文章は私がInfoQ中国語ステーションで翻訳した文章から来ました.http://www.infoq.com/cn/news/2013/11/gerrit-buck
Shawn Pearce(Gerritプロジェクトのメンテナ)は、直前のEclipseConで、ジャックを使ってJava構築を改善するというテーマの講演(スライド、より多くの情報)を発表しました.Gerrit 2.8から、プロジェクトの構築はすでにBuckを完全に使用し始めました.
BUCKは、Googleの内部構築システム「blaze」をモデルにした元Google、現Facebookエンジニアによって開発されたシステムです.Facebookでは,この構築システムはオープンソースであり,Apacheの許可に基づいてGitHubに位置している.BuckはPythonに基づいて構築されているが、Gerritでは主にJavaをコンパイルするために用いられている.
Buck言語はDSLで、Pythonを使って下の層のファイルを構築します.下記のコードは「printymulib」というJavaライブラリを定義しています.それはGuavaに依存しています.後者はファイルシステムのどこにありますか?
java_library(
  name = 'printy_lib',
  srcs = glob(['src/main/java/**/*.java']),
  deps = [':guava'],
)

prebuilt_jar(
  name = 'guava',
  binary_jar = 'guava.jar',
)

Gerrit Maven Central JAR , JAR 。JAR GAV , SHA1 , 。 Buck , 。

include_defs('//lib/maven.defs')

maven_jar(
  name = 'guava',
  id = 'com.google.guava:guava:14.0',
  sha1 = '67b7be4ee7ba48e4828a42d6d5069761186d4a53',
  license = 'Apache2.0',
)

Buck Maven 。 , , ,Buck 1.25xCPU (Maven Make , )。 Gerrit :

  • mvn package -Dmaven.{javadoc,test}.skip=true  ... 6m50s
    buck build :gerrit                            ... 2m 3s
    buck test --all                               ... 2m 5s
    
  • mvn package -Dmaven.{javadoc,test}.skip=true  ... 4m44s
    buck build :gerrit                            ...    2s
    
  • Buck , buckd
    ~/buck/bin/buckd
    time buck :gerrit                             ...    0.5s
    

,Buck , 。 ( ),Buck SHA 。 , , 。

Buck Java , , API , 。

, Buck Apache Cassandra , 。 , , , 。 , 。 , 。

。 ( Gerrit daemon),Gerrit , HTTP 。 , 。

Buck , Gradle 。 , Buck Java , Python DSL, Mac Linux , Windows 。

Buck , Facebook Buck 。

Why Gerrit chose Buck