1. 開発者向けガイド (作成中)

開発者向けガイド (作成中) 

これは、sbt の将来のアーキテクチャに関するドキュメントのセットです。このドキュメントの対象読者は、sbt プラグインの作成者および sbt 開発者です。「どのように貢献できますか?」も参照してください。

sbt 1.0 へ向けて 

2008 年 12 月 18 日、Mark Harrah は sbt 0.3.2 を sbt の最初のリリースとして発表しました。Mark は sbt 0.13.1 (2013 年 12 月 11 日) まで sbt の主要な作者でした。2014 年に、sbt プロジェクトは、このドキュメントの著者である Josh Suereth と Eugene Yokota に引き継がれました。

sbt 1.0 に向けて、私たちはすでに安定しているものを安定させ、重要な場所で革新したいと考えています。安定性にはいくつかのレベルがあります

  • 概念的な安定性
  • ビルド定義のソース互換性
  • プラグインのバイナリ互換性

概念 

概念的には、sbt はその機能において安定しています

  1. Scala をサポートするインクリメンタルコンパイル
  2. Scala のバイナリ互換性を認識する依存関係管理
  3. Scala を使用して拡張可能なタスクおよびプラグインシステム
  4. テキストベースのインタラクティブシェル

変更を計画しているのは最後の点だけです。sbt 1.0 では、インタラクティブシェルを JSON API およびテキストベースのクライアント経由でアクセス可能な sbt サーバーに置き換えます。

ビルド定義のソース互換性 

ソース互換性とは、sbt バージョン A で動作したビルドソースが、変更なしに別のバージョン B でも動作することを意味します。sbt 1.0 の目標は、セマンティックバージョニングを採用し、1.x.y の間、ビルドのソース互換性を維持することです。

プラグインのバイナリ互換性 

プラグインのバイナリ互換性(「bincompat」)とは、sbt バージョン A 用に公開されたプラグインが、再コンパイルなしに別のバージョン B でも動作することを意味します。sbt 0.13 は、2015 年 3 月の時点で 18 か月間バイナリ互換性を維持しています。ここでの安定性は、sbt プラグインエコシステムの維持に役立ちます。sbt 1.0 の目標は、セマンティックバージョニングを採用し、1.x.y の間、ビルドのバイナリ互換性を維持することです。

開発の観点から見ると、バイナリ互換性の維持は、変更を加えるたびに考慮する必要がある追加の制約になります。問題の根本は、sbt 0.13 がパブリック API と内部実装を区別していないことです。ほとんどのものがプラグインに公開されています。