Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Carbon と Chronos から見る OSS 運営 / OSS operation se...

Carbon と Chronos から見る OSS 運営 / OSS operation seen from Carbon and Chronos

Ryo Shibayama

February 20, 2017
Tweet

More Decks by Ryo Shibayama

Other Decks in Technology

Transcript

  1. C arbon と C hronos から見る OSS 運営 C ake

    PHP が C arbon を捨てるに至った経緯 @serima PHP BL T #6
  2. C arbon との出会いは L aravel L ar av el 4.2

    を使い始めた時、C ar bon を知りました めっちゃ便利! 日付操作簡単! D a t e T i m e クラスを継承している
  3. 使用例 / / 現在時刻 $ n o w = C

    a r b o n : : n o w ( ) ; / / $ n o w : 2 0 1 7 - 0 2 - 2 0 0 3 : 3 2 : 0 9 / / 明日 $ n o w - > a d d D a y ( ) ; / / $ n o w : 2 0 1 7 - 0 2 - 2 1 0 3 : 3 2 : 0 9 / / 月末 $ n o w - > e n d O f M o n t h ( ) ; / / $ n o w : 2 0 1 7 - 0 2 - 2 8 2 3 : 5 9 : 5 9
  4. バグを生みそうな例 C ar bon を使っているとこんな場面はよくあるはず $ n o w =

    C a r b o n : : n o w ( ) ; $ t w o _ h o u r s _ l a t e r = $ n o w - > m o d i f y ( ' + 2 h o u r s ' ) ; このとき、 $ n o w も $ t w o _ h o u r s _ l a t e r も2時間後をさしている あとで、 $ n o w を使うとき、 もはやそれは now じゃない
  5. では、 どのように回避するか c o p y ( ) を使って新たなインスタンスをコピー し、

    その上で時間操作 $ n o w = C a r b o n : : n o w ( ) ; $ t w o _ h o u r s _ l a t e r = $ n o w - > c o p y ( ) - > m o d i f y ( ' + 2 h o u r s ' ) ; もしくは $ n o w = C a r b o n : : n o w ( ) ; $ t w o _ h o u r s _ l a t e r = c l o n e $ n o w ; $ t w o _ h o u r s _ l a t e r - > m o d i f y ( ' + 2 h o u r s ' ) ; どちらもバグが入り込みやすそうな記述
  6. C hronos PHP 5.5.0 から実装されている D a t e T

    i m e I m m u t a b l e クラスを継 承している C ake PHP に v3.2.0 から導入 C ake PHP はこのタイミングで C ar bon を捨てた
  7. 使用例 / / 現在時刻 $ n o w = C

    h r o n o s : : n o w ( ) ; / / $ n o w : 2 0 1 7 - 0 2 - 2 0 0 7 : 0 9 : 0 6 / / 明日 $ t o m o r r o w = $ n o w - > a d d D a y ( ) ; / / $ n o w : 2 0 1 7 - 0 2 - 2 0 0 7 : 0 9 : 0 6 / / $ t o m o r r o w : 2 0 1 7 - 0 2 - 2 1 0 7 : 0 9 : 0 6 / / 月末 $ e n d _ o f _ m o n t h = $ n o w - > e n d O f M o n t h ( ) ; / / $ n o w : 2 0 1 7 - 0 2 - 2 0 0 7 : 0 9 : 0 6 / / $ e n d _ o f _ m o n t h : 2 0 1 7 - 0 2 - 2 8 2 3 : 5 9 : 5 9 C hr onos において、 $ n o w はイミュー タブル( 不変)
  8. C arbon と C hronos の比較表 nesbot/carbon cakephp/chronos R equirements

    "p hp": “>=5.3.0" "sy mfony/tr ans lat ion": "~2.6 || ~3.0" "p hp": ">=5.5.9" O wner br iannes bitt cakep hp S tars 5209 295 D ownloads 21.59M 513K D ependents 980 7
  9. 時系列 2 0 1 2 年0 9 月1 1 日

    C ar bon v1.0.0 公開 (この時点での、PHP のメジャー バー ジョンは 5 . 4 ) 2 0 1 2 年0 9 月1 2 日 C ar bon のリポジトリでイミュー タブルに出来ないか という issu e が作られる 2 0 1 3 年0 4 月1 9 日 L ar av el のリポジトリで E loqu ent 内で D at e T ime の代 わりに C ar bon を使っては? という提案 issu e が作られる 2 0 1 3 年0 4 月2 0 日 L ar av el に C ar bon が取り込まれる 2 0 1 3 年0 5 月2 8 日 C ar bon が取り込まれた L ar av el v4.0.0 (p hp >= 5.3.0) が公開 2 0 1 3 年0 6 月2 0 日 D a t e T i m e I m m u t a b l e クラスが実装された PHP 5.5.0 が公開 2 0 1 4 年0 4 月1 7 日 C ake PHP に C ar bon が取り込まれる 2 0 1 5 年0 5 月0 8 日 C ake PHP コミュニティで C ar bon を使うのを止めよ うという提案がされる
  10. 時系列 2 0 1 5 年1 0 月1 2 日

    C hr onos v0.1.0 公開 2 0 1 6 年0 1 月0 2 日 C ar bon がすべて C hr onos に置き換えられた C ake PHP 3.2.0‑RC 1 (p hp >= 5.5.10) が公開 2 0 1 7 年0 1 月0 8 日 C arbon needs to be more ACTIVE . という issu e が C ar bon リポジトリ内で作成される (2016年、1度もリリー スがなかった) 2 0 1 7 年0 1 月1 1 日 @lu cammichot が C ar bon のメンバー に追加される 2 0 1 7 年0 1 月1 5 日 1 年 3 ヶ月ぶりに C ar bon のマイナー バー ジョンアッ プされ 1.22.0 が公開 結果的に C ar bon は危機を乗り越えた。 今後もメンテナンスは続きそう だが、 イミュー タブルな実装を取っていくことはなさそうな気がする。 PHP 5.5 未満をサポー トしなくてはならないプロジェクトでもない限 り、C hr onos を使ったほうが良いのでは
  11. いちデベロッパー としての教訓 スター 数が多くても、 その時点で適切なライブラリとは限らない L ar av el のような巨大なフレー

    ムワー クが使用しているライブラリ だからといって鵜呑みにするのは良くない 違和感を大切にしたい
  12. OSS 運営側としての教訓 コントリビュー タは大切 いずれメンバー に昇格できるように設計思想や指針などをオー プン にしていく必要がある 適切な権限委譲ができないと、 いかにデファクトスタンダー

    ドを取 っていても、 廃れていく可能性がある 先日、 emacs も同じような問題に直面してるという記事も 結局、OSS も人間の集まり ということを認識する