オープンソースの荒野でサバイブする

# メリークリスマス。
2019 OSSTech アドベントカレンダーも最終日となりました。
メリークリスマスです。
![IMG-2353.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316098/5e38481e-e70f-b103-fd8a-c71fe6bd6e1c.jpeg)



# OpenAM14リリース
プレスリリースに出ている通り、OpenAMコンソーシアムのOpenAM14をリリースしました。失礼ながら謝辞は末尾にあります。
このリリースにあたり、OpenAMを例に弊社のオープンソースプロジェクトへの関わり方について書きます。

# オープンソースのメンテナンスとサポート

オープンソースのOpenAMをメンテナンスすることについて、ForgeRockが当初掲げたタスクです。
> "ForgeRock will be hiring developers to keep the code current, update it to keep it up to date with the latest operating system releases, and support for integration on latest applications."

1. コードを最新に保ち（セキュリティ、バグFix)
2. 最新のオペレーティングシステムに対応（JDK含む動作環境更新)
3. 最新アプリケーションに対応 (新しいプロトコルなど潮流へ対応）
上記のために人を雇う。

全てを自力で解決していくとなると、相応なリソースが必要となります。
もちろん、自分以外の誰かが公開してくれているコードやバイナリを、有償/無償利用するなど他にも解決方法はあります。
ただし、たとえ「開発に参加」していたとしても、自分以外の誰かが主体となって公開してくれているものは永遠ではありません。

# OpenAMの開発への参加
協業しようというコンタクトがあった当時は、ForgeRockはノルウェーの会社（笑）で、CEOはSun Microsystemsの前CTO Lasse Andresen氏でした。Sun MicrosystemsのAccess Manager開発に携わっていた人間が居た関係で、弊社でもOpenSSOをビジネスとしていました。
プレスの通り[ForgeRock](https://www.forgerock.com/about-us/press-releases/forgerock-and-open-source-solution-technology-sign-joint-development-agreement),[OSSTech](https://www.osstech.co.jp/pr/2010-06-14)、弊社がOpenSSOに行った改善等をForgeRockのOpenAMツリーへマージしてOpenAM9がリリースされました。
さらに日本では[ForgeRockの賛同](https://www.openam.jp/operation/2010_operation/2010-10-14%e3%80%80%e3%83%95%e3%82%a9%e3%83%bc%e3%82%b8%e3%83%ad%e3%83%83%e3%82%af%e7%a4%be%e3%81%8b%e3%82%89%e3%81%ae%e3%82%a8%e3%83%b3%e3%83%89%e3%83%bc%e3%82%b9%e3%83%a1%e3%83%b3%e3%83%88.html)も得てOpenSSO/OpenAMコンソーシアムが立ち上がりました。
その後弊社メンバーはForgeRockのJIRAに開発用のアカウントを作ってもらってしばらくはソースの修正等に参加していましたが、技術的側面とセールス的側面で良いコラボレーションを続けていくことができませんでした。セールス面で有益な合意ができなかったので仕方がないです。

### シリコンバレー流のスタートアップ
ちょっと脱線しますが、ForgeRockはシリコンバレー的なシリーズA投資から始まって、総額140億と、かなりの調達っぷりです。CEOも4度変わってます。創業時のCEOはCTOとして残ってるのでなにか某番組的なアレを感じますが、2015のフォーキャストにあった2019 early IPOが未完なのは、まだ○k☓aなど競合との戦っている最中だから控えているのかもなどと...おや、だれか来ｇｆｓｄｆふじこ

2010/5 創業 CEO Lasse Andresen氏
2010/6 OpenAM9リリース
2012/3 シリーズA 7億調達 
2013/9 シリーズB 15億調達 
2014/6 シリーズC 30億調達
2014/12 OpenAM12リリース　バイナリライセンス変更
2016/11 github 最新ソースクローズ
2017/3 Maven リポジトリのクローズ
2017/9 シリーズD 90億調達
2019/early IPO予定は未実施
2020/4 シリーズE 103億調達
2021/9 IPO NYSE(FROG)　公募 ＄25　→　初日 ＄35 最高 ＄47 最低 $13
2023/8/23 ＄2.3bln にて Thoma Bravo に買収される ＄23.25 にて株非公開化

### これはリポジトリを閉じられる可能性が高い
2012年以降のハイカロリーぶりに、恐らくはForgeRockのソースツリーはクローズされるなという予感しかせず、「ForgeRockのツリーが閉じられても良いようにしておかなければ」と覚悟はしていました。
そして、2016年末に遂にクローズです。
オープンソースのツリーがクローズになるなんてのは、驚くべきことではないです。ある意味想定内でないと、オープンソースの世界では生きていけません。開発を引き継ぐもヨシ、他の製品を探すもヨシです。


# 最後は愛
やっぱ愛ですよ。愛。
OpenAMが最強のSSO製品であることは疑う余地もない
この素晴らしいソースがメンテされずに消えて行ってしまうのは、あまりにも惜しい。
18年オープンソースを元にした製品を扱ってきて、ここまで良いソフトウェアは見たことが無いということで、他の製品を探すなどということはもっての外、OpenAMのソース公開と開発を継続することに決定しました。というか公開を継続する義務があると思っていました。


# OpenAMコンソーシアムのツリー開始
[atmarkITの記事](https://www.atmarkit.co.jp/ait/articles/1811/05/news006.html)の通りオージス総研さんとOpenAMコンソーシアムのツリーを公開し開発を継続していくこととなりました。感謝しかありません。
OpenAMプロジェクト継続に当たってのマイルストーンは以下のとおり。

1. 依存ライブラリのフォークを完了
2. ビルド手順を公開。
3. Mavenリポジトリを公開する（作業中）

Mavenリポジトリキャッシュが無いとビルドできない状態を解決しました。
また、OpenAM14のリリースにあわせてビルド手順の公開も行っています。
Mavenリポジトリの公開はまだ完了していませんが、作業しております。

### 1. コードを最新に保ち（セキュリティ、バグFix)
上の作業と並行して、セキュリティ脆弱性やバグの修正をOpenAMコンソーシアムのツリー上へ反映していきました。
セキュリティ情報に関しては[CVE-2017-10873](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-10873)からForgeRock AMとは別のOpenAM (Open Source Edition)という製品として活動できるよう交渉と登録を実施し、メンテナンスを続けています。

# そして次へのステージ
コードのメンテナンスは滞り無く実施できる状態となりました。
次のバージョンを出せなければ、本当に開発継続したと言えないです。逆に自分たちでロードマップが決められる時が来たということです。

コンソーシアムメンバー間で議論をした結果、主に以下3つの機能を追加し14としてリリースすることにしました。

### 2.最新のオペレーティングシステムに対応（JDK含む動作環境更新)
#### JDK 11 へ対応
JDK 8 の次の長期サポートバージョンであるJDK 11に対応する修正を行いました。 

### 3. 最新アプリケーションに対応する (新しいプロトコルなど潮流へ対応）
#### FIDO2認証
パスワードレス認証のためにWebAuthn認証モジュールを開発し、FIDO2認証を使えるように対応しました。

#### SAML/OIDCサービス毎の認可
SAMLのSP、OIDC/OAuth2のRPなどサービス毎にユーザーの利用可否を制限できる実装を追加しました。

おそらく、OpenAM14は最高のシングルサインオンサーバーに仕上がっていると思います。

# Anything else?
オープンなOpenAMに他に何か必要ですか？
私個人的にはOpenSSO当時から何も不透明でなく、不透明だと感じられたとしたらこちらの情報発信が足りなかったのだと反省しております。

# コンソーシアム版独自の特徴
特徴について特筆スべき点は、バイナリのライセンスです。
ソースは変わらず、Sun MicrosystemsがOpenSSOを公開した時のCDDLとしていますが、バイナリはOpenAM 12当時の謎ライセンス形態は「踏襲」していないです。
オープンソースプロジェクトなので、オープンソースプロジェクトのあるべき姿（ソースもバイナリも全てCDDL）に戻してあります。


# 謝辞
貢献していただいたOpenAMコンソーシアム各位、
6年もの間コミュニティに還元してくれたForgeRock、
オープンソースにする判断をしたSun Microsystems、
基礎を作ったNetscape、
OpenAMに関わってきた全ての人に感謝の言葉しかありません。
そして、引き続き、よろしくお願いします。