「「ひととおりできあがったらオープンソースにして公開します」の罠 - TokuLog 改め だまってコードを書けよハゲ」の感想として。

新月なんかは コード書き始めた当日からtar ballを公開していたし、 新月のJava版の2番目の実装は 「ひととおりできあがったらオープンソースにして公開します」 のまま音沙汰がなくなってしまったと記憶してるんですが、 新月の過去ログ漁ればどこかにソース残ってたりするのかな。 よくわからない。 SF.netにアカウント取るのが面倒だったのかなあ。 薦めてもアカウント取らなかった開発メンバーもいたし。

だから早いうちからソースを公開するのはいいことだと思うんですけど、 問題もあるんですよね。 ソースはできるだけ早くから公開したいんですけど、 実際にユーザが使うのは「ひととおりできあがった」あとにしてほしいんです。 早くから使われると、当然完成度も低いですし、 仕様の変更だってちょくちょくあるから、 「完成度は低いし、バージョンアップのたびに互換性なくなるし、つかえねー」 という評判が立ってしまう。

新月の場合は半々だったかなあ。 2chのP2P掲示板開発スレで告知して、 のちには単独スレ立ててもらったんですけど、 初期の頃は特にパッチくれる人とか、 公開鍵暗号で署名をつけるモジュールを作ってくれた人とか、 別の環境に移植してくれた人とか、とても感謝しています。

失敗したなあと思うのは、 「プロジェクト初期は開発者を取り込むべきで、ユーザを取り込む時期ではない」 というのを理屈ではわかっていたのですが、 時期尚早な要望をどんどん入れてしまったことですね。 最初はCygwinが必要だったのですけど、 「Cygwinではユーザが増えない。ActivePerl対応にせよ」 という要望が出ると、リソース割いて対応してしまうとか。 結局ActivePerlでは十分に動かなかったわけですが。

その後Pythonに移植したあたりでも、 ユーザを増やす=インストールを容易にする、ということで、 ZIPを落してきて解凍して起動したらOK、というところまでは来ました。 別途Pythonを入れるとか、Apacheの設定をするとか、ルータの設定とか要らないの。 UPnPとか技術的には面白いんですけどね。 ただこれらは、大きな視点としては間違っていたんじゃないかなあ。

今の新月はどう見せるかというのが、まったく決まってないんですよね。 たとえば「新規作成」っても、ネットワークに掲示板を新しく作るという意味ではなくて、 自分のローカルに掲示板を作るという意味で、 他のノードにも同じ名前の掲示板があったら勝手に同期するんですけど、 それをどう表現するか、ってのがよくわからない。

順番としては、その辺のことを先に解決しておくべきであって、 インストールしやすいかどうか、ってのは後で考えることだったんでしょうね。 さらにいえば、インストールしにくいくらいの方が、 開発者を取り込みつつ、将来のユーザは今は取り込まない、 というバランスが保てたんじゃないかなあ、とか思うわけです。

そうなると、 別途Pythonが要るとか、別途Apacheが要るとか、 手元でコンパイルしないと動かないとか、 ZIPじゃなくてSubversionがないとダウンロードすらできないとかは、 バランスを保つ意味でも役に立つんじゃないかなあ。