# 2020年で開発の終了したOSSプロジェクト - Moment.js

個人的に使用したこのとのあるOSSのうち、2020年で開発の終了したプロジェクトのまとめです。
本当は全部まとめて書こうと思ったけど時間がないので1つずつ紹介します。

# Moment.js

公式サイト:https://momentjs.com (opens new window)
リポジトリ:https://github.com/moment/moment/ (opens new window)

Javascriptで日時を扱うライブラリです。
終了の理由はドキュメントページ (opens new window) のProject Statusの欄に書かれています。
要約は以下のとおりです。

# イミュータブルに変更することの難しさ

Momentのオブジェクトはミュータブルです。
イミュータブルにしてほしいという要望が多いですが、

  • 変更は途方もない作業であること
  • 使用するプロジェクトにとって重大な変更になること
  • 他のライブラリで既に実現されていること
    • →なので逆にミュータブルであることが重要であると考えている

といった理由から難しいようです。

# ファイルサイズの大きさ

設計の古さからツリーシェイキング(Webpack等でバンドルする 際に使用していないコードを排除すること)が効かなかったり、 国際化やタイムゾーンのサポートでバンドルサイズが大きくなってしまいます。
また、ファイルサイズの大きさからChromeの開発者ツールでは置き換えを推奨しており、Momentチームもこれを支持しています。

# まとめ(個人的な感想)

Project Statusの最後には、日時のライブラリが必要なくなることが願いであると書かれています。
既に標準機能でTemporalというグローバルオブジェクトが検討されており、 こちらに(特にMomentやその他の日時ライブラリを使用したある人は)貢献してくださいと締められています。
プロジェクトの終了に関してはレガシーな設計というよくある理由ですが、 プロジェクト開始時はまさか2020年現在まで標準機能で実装されず、様々な日時ライブラリが作成される事態になるとは思っていなかったんだろうなぁ。。。