オープンソースという選択肢

しかし、ありものをそのまま使うことが尊いなら、なぜわざわざオープンソースを選択するのだろう。これもカルチャーギャップのひとつだと思う。

例えば、物理エンジンミドルウェアに、世界的に有名なライセンス製品の Havok と、オープンソースの Bullet がある。

Havok は、クローズソースなので、中を改変することはできないが、手厚いサポートもあるし機能リクエストが出せる。

クローズな SDKミドルウェアは確かに問題があっても直接解決できない。しかし、文句を言えば対応して貰えるし、そもそも自分たちが中を弄らないために金を払っているのだ。「無料のオープンソースにしますからサポートなくなります」と言われても願い下げだろう。

それでは Bullet の価値は何かといえば、ソースが開示されているので、エンジンの挙動をプロジェクト向きにカスタマイズできる点が一番に挙げられる。ソースを弄るためにオープンソースを使う。これが第一に来る。細かい話を抜きにすれば、クローズソースのミドルウェアに追加料金を払って、ソースの全文と改変権を買うのと等価といえる。

個人的にはオープンソースの導入を決めた時点で中をガッツリ弄ることは確定していると思っている。今まで中を弄らなかった試しがないし、法務部に「なんでライセンス製品ではなく、オープンソースを使うんですか」と聞かれたら「弄るから」としか答えようがないし……

そしてオープンソースのコードを、自分たちのリポジトリの突っ込んだときからそれは自分たちのソースコード自分たちのリポジトリに突っ込んだときから、それは自分たちの責任の下で自分たちのソースと同様に目的(ゲームシステムの実現)に向けて改変するなりして使っていく。(ジャイアニズムのように読める、という指摘を受けたので修正)

異論多々あろうが、自分としてはそう考えているし、特にそれで周りからアレコレ言われたことはない。しかしこれが Web の感覚からするとカルチャーギャップというか、 KY このうえない、非常識な感覚になっているのではないかと思う。

とりあえずこのへんまでは分かってきた。なもんで、空気が読める Web OSS 開発者になるためには、あと一歩のような気がする。
(永遠の溝だったりして……)

続きの話

追記:
色々このトピックについて人と話していて自分が何を言いたかったのか分かった。
要するに「XOOPS Cube が目的に合わないなら激しく弄ってもらって構わない」「自分のリポジトリに突っ込んだときから自分のソースだと思って自由に使ってください」……そういう気持ちで作ってきた、ということが(このときは)言いたかったのです。
ただ、単純に OGRE3D がそれで上手くいっているから XC もそうなるというのが、どういう類の不理解だったかはだんだん分かってきました。つまりここで「ナンデ?」と書いたけど、その「ナンデ?」が分かってきたかもしれない。

僕のほうはワンオフの文化にどっぷりはまってたということ、ありものに合わせていったほうがメンテナンスコストが下がるし、プロジェクトのコードの品質は検証されて改善されるかもしれない、ということ。
(ゲームの場合はありものに合わせることが吉とはいえない場合が多い。このへんかなり真逆の状況にあるということが分かった)

僕はプロジェクトに下手にあわせるとプロジェクトの開発者の負荷を上げてしまうというふうに考えがちだったんですが、ゲームほど派手に食い違うわけではないし、そのポリシーも理解可能です。もっと理解できるように頑張ります。

# でも XOOPS Cube に関しては気にせずに好きにやってください

それを踏まえて XC の次版をどういうコンセプトにするかはよくよく話し合いたいと思います。基本線は変わらないと思いますが、フレームワークの取り込み等はこっちで人増やして頑張ったほうが全体のためになるかもしれない。