jfluteの日記 このページをアンテナに追加

2017-04-02

ドキュメントを無料(タダ)だと思っている?

|

Closed有償ツール v.s. オープンソース(OSS)

オープンソースはドキュメントがなくて使いづらい」

まあ、ドキュメントないと使いづらいのは事実でしょう。

「オープンソースはドキュメントがないから使い物にならない」

その意見には賛成できないな。

ソースコードを公開せずお金を取って "商売" として、
そのお金でドキュメントを整備して提供する...
オープンソースはそれをやめてソースコードを公開し、
(大抵は)お金は取らないことを選んでいるわけです。
より気軽にユーザーに機能を提供するために。

ソースコードを読めばわかるかもしれない。
コミッタメーリングリストに聞けばわかるかもしれない。
有償のものはそれが気軽にできないことが多いわけで。

その行動をせずにオープンソースに対して何かを言うのは、
流言飛語と言わざるを得ません。

「そんな行動をしなきゃいけないのか?」

と思うのであれば、オープンソースを使うのを止めて、
お金でドキュメント(があるツール)を買えばいい。
求めているものが違うだけだから。

オープンソースに寄付だってできる。
 => Eclipseに寄付しました (Donate to Eclipse)

ドキュメント豊富OSS v.s. ドキュメント少なOSS

「このツール、ドキュメントが少なくて使いづらい」

まあ、ドキュメントないと使いづらいのは事実でしょう。

「このツール、ドキュメントが少ないから使い物にならない」

その意見には賛成できないな。

ソースコードを読めばわかるかもしれない。
作者やメーリングリストに聞けばわかるかもしれない。
その行動をせずに何かを言うのは、
流言飛語と言わざるを得ません。

もしかしたら...ソースコードを読むことで、
もっと良い機能が見つかるかもしれないし、
コミッタメーリングリストに聞けば、
あっさり問題解決するかもしれない。
コードは読みやすければ細かいところも発見しやすい。

もしかしたら、トータル的には、
その "ドキュメント豊富OSS" よりも、
その "ドキュメント少なOSS" の方が、
使いやすいかもしれない。

一概にドキュメントだけで、
オープンソースの比較はできない。

オープンソーストレードオフ

OSSの作者がドキュメントを書く時間に対して、
誰がお金を払っているのだろう?

ほとんどのOSSでは、お金をもらっていないでしょう。
OSSのドキュメントを完全完璧に作るとなると、
その作者の人生のすべてを失うでしょう。
「業務仕様書を毎週サービス残業で土日に作ってくれ」
と言う人を尊敬できるでしょうか?

完全完璧なドキュメントがないと使えないのであれば、
現実的ではなく誰もツール作りを提供しなくなります。

ソースコードをオープンにし、
少量のドキュメントとソースコードと属人性の
ハイブリッドでユーザーに使い方を伝えることで、
やっと無料で提供することができるわけです。

少なくとも個人コミュニティレベルでやっている
オープンソースはそうと言えるでしょう。
(ただし、その分コードは綺麗に書かないと!)

その少量のドキュメントの質は確かに重要です。
ユーザーの時間にも限りがありますから、
いかに入り(はいり)がわかるドキュメントを書くかは、
コミッタの永遠の努めでしょう。

でも、仮にドキュメントが一切なくても文句は言えません。
ソースコードがあって自由に使えるだけでありがたいもので、
ドキュメントがあったら「ラッキー」的な感じです。
実際に、一切ないツールを使うことはよくあることです。

また、自分でドキュメントも書けるわけです。
プルリクだって送れる。ないから使えないと言うなら、
自分で作ってみればいい。
多くのオープンソースは互助的な精神で成り立っている。
フリーライダーの割合が多ければ多いほど退廃していく。
それができないのであれば、静かに使わなければいいだけ。
黙ること。

業務プログラムでも

共通ライブラリのクラスを作ったり。
自分たちの中のクラスだからコードは自由に読める。

ドキュメントがないと使い方がわからない?
そこにコードもあるよ。

もちろん、入りがわかるドキュメントは欲しい。
あと間違いを防ぐためのドキュメントは欲しい。
作者はそれ意識してドキュメント作って欲しい。

でも、丁寧なドキュメントを求めれば求めるほど、
お金かかるよ。会社がその勤務時間を払う。

オープンソースの話と似ていると思っています。
(大抵)作者も近くにいて聞けるしコードも読める、
つまりハイブリッドができるわけで。
(ただし、その分コードは綺麗に書かないと!)

聞けばいい読めばいい。その方がお金かからないなら、
営利団体である会社としては正しい判断になる。

それをやらずして、
ドキュメントを完全完璧に作らないと使えないなら、
「コストのかかるディベロッパー」と言わざるを得ない。

...

ただ、コードを読めばってのは程度の話です。

例えば jflute も、MySQL のコードまでは、
さすがに読んだことはありません。
(MySQLJDBCドライバは少し読みましたが)
読むのにさすがにコストが掛かりそうなので、
すでに存在しているドキュメントや、
ブログメーリングリスト勉強会などを使って、
情報収集をしてうまく乗り切っています。

でも、例えば使っている言語が Java であれば、
IDE上でフレームワークソースコードを簡単に辿れます。
そして、同じ Java 言語で読むことができます。
大抵の知りたいことは奥底まで読む必要はありません。
ちょこっとクリックして辿ればわかったりします。
それをやるかどうかが分かれ道だとも言えます。
完全完璧に読もうと言っているわけじゃない。
ほんのちょっとでも全然違う。

伝えていこうと

jfluteも、
もちろんドキュメントあれこれ言うことはあります。
ドキュメントあった方がもっと良いのは事実だし、
ドキュメントないと使いづらいってのも事実だし、
ドキュメントを書いて差別化しようって事実だし。

ただ、お金を一銭も払ってないプロダクトに対して、
ダメダメ言うことは少なくとも今は恥ずかしく思います。
あまりこういうことを深く考えてなかった時代には、
なにかそれっぽいことは言ってしまったかもしれませんが、
気が引けるイメージはずっと抱えていたように思えます。

気づいたらオープンソースの提供者になってたから、
自分を擁護してるように取られてしまうのが怖くて、
あんまりこういうことは書きづらかったのですが、
最近「もういいや」みたいな感じになってきて(^^、
しっかりと伝えていこうと思いました。

だって、jfluteもディベロッパーだもん。
良い判断をするディベロッパーと一緒に仕事がしたいから。
そういうディベロッパーに育ってほしいから。

...

ちなみに、
DBFluteはドキュメント豊富と褒められることが多いです。
最近、わりと追いついてないけど...
あと、逆にあり過ぎてわからないみたいな...><
一時期、完全完璧を目指してものすごい頑張っていました。
でも、やはり思ったのです。

組織化して会社化して利益化していかない限り、
完全完璧なドキュメント作るのは無理だと。
このままでは人生が完全に壊れる。
自分もオープンソースを少し勘違いしてたなと。
もっとオープンソースって意識していかないと。
どのような現実的なドキュメントが書けるだろう?
どのようなOSSならではな伝え方ができるだろう?

ある意味では、jflute自身の整理整頓のために、
書いたエントリかもしれませんね。


# いや、単にDBFlute以外のOSS(LastaFlute)を
# やり始めちゃったから...かも!?笑

f:id:jflute:20170313182232j:image