追記(2013/07/29, 17:36以降)
- Jubatusがどんなフレームワーク・機能を提供するのか明確にする #250
- 公開API/非公開モジュールの振る舞いや仕様を明確にし、それらを利用・メンテナンス可能な状態にする(一部の人間しか利用・メンテナンスできない状態を避ける)
- ライブラリのみでJubatusを利用可能にする(ユーザを増やす)
- Jubatusのアルゴリズム・fv_converterなどを拡張可能にする
- 安定性・利便性・拡張性の向上
https://github.com/jubatus/jubatus/wiki/Meeting%3A2013_04_15 より一部抜粋。
jubatus/core以下を1プロジェクト(単体の共有オブジェクト)として切り離して、API設計をしたいと思います。
jubatusリポジトリ以下は今のままで構いません。少なくとも、この作業に関してはサーバと完全に独立したリポジトリで、API・フレームワークを設計・開発する作業をやりたいと思います。
作業成果のアウトプット・時期は、厳密には決めていません。
- プロダクトオーナー: @suma
- 作業メンバー:@suma(まずは1人)、他は未定。適宜増やしたり、助言を求めることはありそう
- 作業開始時期;すぐ(2013年7月)
- 作業場所: (案)jubatus/jubatus_core リポジトリなどを作成(もしくは@sumaアカウント以下)。jubatusリポジトリとは分離する。
- リリース時期:未定。12月頃のリリースを目指す
- アウトプット:core以下のAPI化したコード、APIについて記述した文書(利用可能なクラス、ヘッダの一覧、使い方、デザインドキュメント、規約)・開発ポリシーなど
- jubatus_coreリポジトリ(仮)で@sumaをプロダクトオーナーとし、Jubatus core以下のAPI・フレームワーク設計・開発を進めてよいか
- jubatus_coreでは、Jubatus 0.4.5が提供しているすべてのアルゴリズムを提供するとは限らないかもしれない
- jubatus/jubatusのRPCサーバとは異なる(新)機能が増えることも考えられる(ただし、それより先にAPIの設計を固めるタスクから作業着手の予定であり、新機能などが出てくるのは数ヶ月先のことになると想像している)
- 作業進捗は月1回を目処に、MTGで報告する。また適宜、設計内容についてレビュー・相談を行う
- @sumaの作業は、これまで通りJubatusの開発に参加するが、作業量はやや落ちることを想定とする
https://github.com/jubatus/jubatus/wiki/Meeting%3A2013_04_15
0.4.3リリース後(2013-4-19)は、@sumaを中心に、JubatusのAPI・フレームワークの設計をする予定となっていたが、現状のJubatusを整理しているが、API・フレームワーク設計の作業をしないままそこで止まってしまっている。
また、(@sumaの)現時点でのJubatus開発の作業範囲はgithub issue対応やリリース等にとどまってしまっている。このままの状況で放置していては、単体のライブラリもしくはフレームワークとして進化していくのは難しい。また、jubatusリポジトリで作業を開始した場合、サーバの互換性や既存機能にとらわれてしまうため、それを避ける目的もある。
Jubatusにのっている各アルゴリズムのインタフェース、分散処理のインタフェースといったAPI・公開範囲・それらの振る舞い(仕様:機能・非機能・実装面)を明確にしたり、定義するのが作業の中心となります。
- APIとしてpublic/privateを切り分けるのが直近のゴール
- 最終的には全APIの仕様(文書も)を出す
- 分散の仕組みも提供できるようにする
- リファクタリング(クラスの継承関係の見直し、ディレクトリの整理も行う)
- fv_converterの拡張は、直近のタスクにはし難い(1人で作業するにはリソース不足)
- jubatus/jubatusをupstreamとして変更点を取り入れることも想定する(新バージョンの修正の追随、モデルの保存・読み込みや、依存ライブラリなど)
- 完了 jubatus/core向けのwscriptの作成
- https://github.com/suma/jubatus/tree/core
- 0.4.5〜0.5.0をupstreamとした成果物等の取り込み(逐次)
- 近傍探索, 新mixer
- 依存ライブラリの整理:pficommon移植・re2(正規表現)
- モデル保存・読み込みの仕様
- アルゴリズムのディレクトリ・モデルのストレージ構成の再設計
- MIX処理の定義(仕様化)
- アルゴリズムのAPI整理・仕様の定義
- フレームワーク設計・開発(評価)
- 分離したjubatus_coreをリリースした時点でのJubatusサーバ等のありかた
- jubatusリポジトリの行方
- 現状のように1リポジトリ、サーバを提供し続けるのか
- coreをjubatusリポジトリへ残し、サーバを別リポジトリへ移してcoreを参照する(もしくはその逆で、coreだけを別リポジトリへ分離する)