ソフトウェアのライフサイクルについて

前のエントリで「OSSなら使い続けてもOK」と書いた。
しかしそれを実際に行うには、そのソフトウェアをソースコードレベルでメンテナンスするための技術力を持った人間が必要になる。
(僕はPHPはメンテナンスできないのでWAFでなんとか逃げたが、これはベストではなくベターな選択肢だろう)
もし社内にOSSをメンテできる技術者がいない場合にはどうすればよいだろうか?多くの場合はいないだろう。
EOLを迎えたOSSに有料でパッチを開発してくれる開発会社などがあってもよさそうだ。
RedHatなんかはLinuxカーネルにバグが見つかった場合などに、古いバージョンのカーネルに対しても該当するパッチを開発してくれていると思うが、あれに似た感じ。

要するに、EOLを迎えたOSSを使い続けるには、コストがかかるということだ。
OSSは(少なくともある特定のバージョンは)大体どこかでEOLを迎える。例えばRDBMSのPostgreSQLはもうずいぶん前から広く使われているけど、現在も7系統や8系統を使っている人もいると思う。
いきなり最新版の9にバージョンアップできればいいんだけど、細かい仕様が変わっていたりするので、切り替えてもアプリケーションに不具合がでたりする。そのため、結局バージョンアップをためらっているうちにEOLになってしまう。

先に書いたようにEOLを迎えたOSSを使い続けるのはコストがかかる。では使っているソフトウェアがEOLにならないようにする、という戦略はどうだろうか。
できるだけポピュラーなソフトウェアを選択し、常に最新版に保つのである。
この場合、以下の問題がある。

・ソフトウェアの選択を誤ってしまい、徐々に開発が活発でなくなり、最終的にEOLになってしまう
・常に最新版に保つために、バージョンアップ作業に伴う作業コストが必要

どちらの場合にも言えることは、コストがかかるということだ。

結局、結論として言えることは、長い目で見た場合、OSSにただ乗りできたからといって最終的に安上がりだとは言えないということである。

では商用ソフトウェアならどうか?というと、最初からお金がかかるので当然コストがかかり、安上がりではない。そのため特に商用ソフトウェアが優れているということでもない。
特に、作ってみたが使われずに、すぐ死んでしまうアプリケーションなどは、初期コストがかからないOSSに向いていると言えるだろう。
内製という選択肢もあるかもしれないが、これも当然OSSを持ってきて使うより初期コストは高くなる。

さて視点を変えてみる。僕がStruts1の騒ぎを見ていて思ったのは、「Struts1のような古いソフトウェアが未だに使われているということは、けっして悪いことではない」ということだ。何が言いたいかというと、「皆に使われ続けている、実際に役に立つアプリケーションだからこそ、いまだにStruts1なのにそこにある」ということである。

ソフトウェア開発者なら経験があると思うが、開発されたはいいものの、結局ろくに使われず、消えていくアプリケーションはたくさんある。「モッタイナイ」の精神ではないが、せっかく作ったのだから、アプリケーションはたくさん使われて欲しいと思う。

「OSSを使い続けるにはコストがかかる」という認識を皆で共有し、たとえ(Struts1のように)EOLを迎えたものであっても、きちんとコストをかけて安全な状態を保ちながら使っていこう、というのがよいのではないだろうか。

Advertisements


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s