主要な OpenFlow プログラミングフレームワークの github 上での watcher 数と fork 数を比べてみました。比較したフレームワークとそれぞれがターゲットとしているプログラミング言語は次の通りです。
- Trema: Ruby と C
- Floodlight: Java
- POX: Python
- OpenFaucet: Python
- NOX: C++ と Python
比較の目的
いきなりですが、実はこういう比較することにはあまり意味がありません。それぞれのプログラミングフレームワークはターゲットとするプログラミング言語が違いますし、しかも Web プログラミングフレームに比べて OpenFlow はフレームワークの数も少ないので、多くのプログラマにとって選択肢は一つしか無いからです。つまり、Ruby プログラマは Trema 一択ですし、Java プログラマは Floodlight 一択だということです。そういう状況で比較をしてもしょうがありません。
このポストを書いた理由はただ単純に、「OpenFlow やりたいけど Trema を選んでも大丈夫かな?」と不安になっている人の心配を取り去るためです。また OpenFlow の開発案件でどれを使うか迷っている人や、上司に説明するのに説得力ある資料が欲しい人も以下の結果を自由に使ってくれてかまいません。
それでは、比較結果を見て行きましょう。
Watcher 数
Watcher 数では Trema が一位、次いで Floodlight が 2 位でした。プロジェクトの歴史的にはどれも大差無いですし、Trema は他のフレームワークに比べて外国での露出が多くないのでちょっと意外です。日本国内での雑誌連載や勉強会等での発表が地味に効いてるのかなという感じです。
Fork 数
Fork 数では Floodlight が断トツで一位、次いで Trema が二位でした。やはり Floodlight は Java を採用しているのでプログラマ人口が多いことが影響していると思います。あと、ちゃんと調べていないのですが Floodlight ではコーディング基準が Trema と比較してゆるく、Pull-Request を出したときに取り入られる率が高いのかもしれません。そのへんまったくわからないので知っている人がいましたらぜひ教えてください。
まとめ
Trema を選んでも大丈夫です。