Submit Search
Upload
Carbon と Chronos から見る OSS 運営
•
3 likes
•
6,194 views
Ryo Shibayama
Follow
Carbon、Chronos の実装面からの紹介をしつつ、CakePHP が Carbon を捨てた理由からより良い OSS 運営の方法を探る。
Read less
Read more
Internet
Report
Share
Report
Share
1 of 19
Download now
Download to read offline
Recommended
Applicationとは何か(哲学)(PHPBLT #6)
Applicationとは何か(哲学)(PHPBLT #6)
sitri kamishirasawa
Introduction to Guzzle
Introduction to Guzzle
DQNEO
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
sters
倒れても進捗
倒れても進捗
Ryo Shibayama
CircleCI 導入への入門
CircleCI 導入への入門
Ryo Shibayama
エンジニア採用と PHP #phpconfuk_rej
エンジニア採用と PHP #phpconfuk_rej
Ryo Shibayama
Start OSS Contribution With What You Know / できることから始める OSS Contribution
Start OSS Contribution With What You Know / できることから始める OSS Contribution
Ryo Shibayama
チームから気軽に始めるピアボーナス
チームから気軽に始めるピアボーナス
Ryo Shibayama
Recommended
Applicationとは何か(哲学)(PHPBLT #6)
Applicationとは何か(哲学)(PHPBLT #6)
sitri kamishirasawa
Introduction to Guzzle
Introduction to Guzzle
DQNEO
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
sters
倒れても進捗
倒れても進捗
Ryo Shibayama
CircleCI 導入への入門
CircleCI 導入への入門
Ryo Shibayama
エンジニア採用と PHP #phpconfuk_rej
エンジニア採用と PHP #phpconfuk_rej
Ryo Shibayama
Start OSS Contribution With What You Know / できることから始める OSS Contribution
Start OSS Contribution With What You Know / できることから始める OSS Contribution
Ryo Shibayama
チームから気軽に始めるピアボーナス
チームから気軽に始めるピアボーナス
Ryo Shibayama
ソフトウェアエンジニアとしてのワークアズライフ
ソフトウェアエンジニアとしてのワークアズライフ
Ryo Shibayama
Try to use chromeless on AWS Lambda
Try to use chromeless on AWS Lambda
Ryo Shibayama
CircleCI 2.0 でビルド時間を大幅に短縮する
CircleCI 2.0 でビルド時間を大幅に短縮する
Ryo Shibayama
OSS Contribution through CircleCI 2.0
OSS Contribution through CircleCI 2.0
Ryo Shibayama
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
Ryo Shibayama
ElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチする
Ryo Shibayama
Amazon inspector で自動セキュリティ診断
Amazon inspector で自動セキュリティ診断
Ryo Shibayama
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
Ryo Shibayama
Security Advisories Checker on Travis/Circle CI
Security Advisories Checker on Travis/Circle CI
Ryo Shibayama
第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話
第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話
Ryo Shibayama
More Related Content
More from Ryo Shibayama
ソフトウェアエンジニアとしてのワークアズライフ
ソフトウェアエンジニアとしてのワークアズライフ
Ryo Shibayama
Try to use chromeless on AWS Lambda
Try to use chromeless on AWS Lambda
Ryo Shibayama
CircleCI 2.0 でビルド時間を大幅に短縮する
CircleCI 2.0 でビルド時間を大幅に短縮する
Ryo Shibayama
OSS Contribution through CircleCI 2.0
OSS Contribution through CircleCI 2.0
Ryo Shibayama
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
Ryo Shibayama
ElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチする
Ryo Shibayama
Amazon inspector で自動セキュリティ診断
Amazon inspector で自動セキュリティ診断
Ryo Shibayama
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
Ryo Shibayama
Security Advisories Checker on Travis/Circle CI
Security Advisories Checker on Travis/Circle CI
Ryo Shibayama
第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話
第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話
Ryo Shibayama
More from Ryo Shibayama
(10)
ソフトウェアエンジニアとしてのワークアズライフ
ソフトウェアエンジニアとしてのワークアズライフ
Try to use chromeless on AWS Lambda
Try to use chromeless on AWS Lambda
CircleCI 2.0 でビルド時間を大幅に短縮する
CircleCI 2.0 でビルド時間を大幅に短縮する
OSS Contribution through CircleCI 2.0
OSS Contribution through CircleCI 2.0
PHP-MLを使用して気軽に機械学習にトライしてみる
PHP-MLを使用して気軽に機械学習にトライしてみる
ElasticBeanstalk で新規事業を爆速ローンチする
ElasticBeanstalk で新規事業を爆速ローンチする
Amazon inspector で自動セキュリティ診断
Amazon inspector で自動セキュリティ診断
WordPress on PHP7 on CentOS7 on Saraku-VPS
WordPress on PHP7 on CentOS7 on Saraku-VPS
Security Advisories Checker on Travis/Circle CI
Security Advisories Checker on Travis/Circle CI
第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話
第87回PHP勉強会 LT 知って得するかもしれないテキスト処理コマンドのお話
Carbon と Chronos から見る OSS 運営
1.
CarbonとChronos から見るOSS 運営 CakePHP
がCarbonを捨てるに至った経緯 @serimaPHP BLT #6
2.
日付/時刻操作ライブラリといえばCarbon?
3.
4.
Carbonとの出会いはLaravel Laravel4.2 を使い始めた時、Carbonを知りました めっちゃ便利!日付操作簡単! DateTime クラスを継承している
5.
使用例 // 現在時刻 $now =
Carbon::now(); // $now : 2017-02-20 03:32:09 // 明日 $now->addDay(); // $now : 2017-02-21 03:32:09 // 月末 $now->endOfMonth(); // $now : 2017-02-28 23:59:59
6.
とても便利だけど、ちょっと違和感
7.
違和感の正体はミュータブル リリース後最初に作られたissueがミュータブルについて しかし、今は対応しないということでクローズされる Ref: Stillmutable· Issue#2
· briannesbitt/Carbon
8.
ミュータブルの何が良くないのか オブジェクトが変更可能= 複数の状態をとりうる 複数の状態を扱う必要 想定外のデータが飛んでくる可能性 バグの温床
9.
バグを生みそうな例 Carbonを使っているとこんな場面はよくあるはず $now = Carbon::now(); $two_hours_later
= $now->modify('+2 hours'); このとき、 $now も $two_hours_later も2時間後をさしている あとで、 $now を使うとき、もはやそれはnow じゃない
10.
では、どのように回避するか copy() を使って新たなインスタンスをコピーし、その上で時間操作 $now = Carbon::now(); $two_hours_later
= $now->copy()->modify('+2 hours'); もしくは $now = Carbon::now(); $two_hours_later = clone $now; $two_hours_later->modify('+2 hours'); どちらもバグが入り込みやすそうな記述
11.
Chronos PHP 5.5.0 から実装されている DateTimeImmutable クラスを継 承している CakePHP
にv3.2.0 から導入 CakePHP はこのタイミングでCarbonを捨てた
12.
使用例 // 現在時刻 $now =
Chronos::now(); // $now : 2017-02-20 07:09:06 // 明日 $tomorrow = $now->addDay(); // $now : 2017-02-20 07:09:06 // $tomorrow : 2017-02-21 07:09:06 // 月末 $end_of_month = $now->endOfMonth(); // $now : 2017-02-20 07:09:06 // $end_of_month : 2017-02-28 23:59:59 Chronos において、 $now はイミュータブル(不変)
13.
CarbonとChronos の比較表 nesbot/carbon cakephp/chronos Requirements "php":
“>=5.3.0" "symfony/translation": "~2.6 || ~3.0" "php": ">=5.5.9" Owner briannesbitt cakephp Stars 5209 295 Downloads 21.59M 513K Dependents 980 7
14.
時系列 2012年09月11日 Carbonv1.0.0 公開(この時点での、PHPのメジャー バージョンは 5.4 ) 2012年09月12日 Carbonのリポジトリでイミュータブルに出来ないか というissueが作られる 2013年04月19日 LaravelのリポジトリでEloquent
内でDateTimeの代 わりにCarbonを使っては?という提案issueが作られる 2013年04月20日 LaravelにCarbonが取り込まれる 2013年05月28日 Carbonが取り込まれたLaravelv4.0.0 (php >= 5.3.0) が公開 2013年06月20日 DateTimeImmutable クラスが実装されたPHP 5.5.0 が公開 2014年04月17日 CakePHP にCarbonが取り込まれる 2015年05月08日 CakePHP コミュニティでCarbonを使うのを止めよ うという提案がされる
15.
分岐点となったissue https://github.com/cakephp/cakephp/issues/6509
16.
何が決め手だったのか Carbonコミュニティの不活発性 バグ修正の遅さ(クリティカルなバグ修正も遅かった) より良い実装の実現例がイメージできていた
17.
時系列 2015年10月12日 Chronos v0.1.0 公開 2016年01月02日 CarbonがすべてChronos
に置き換えられた CakePHP 3.2.0‑RC1 (php >= 5.5.10) が公開 2017年01月08日 Carbonneeds tobemoreACTIVE. というissueが Carbonリポジトリ内で作成される(2016年、1度もリリースがなかった) 2017年01月11日 @lucammichot がCarbonのメンバーに追加される 2017年01月15日 1 年3 ヶ月ぶりにCarbonのマイナーバージョンアッ プされ1.22.0 が公開 結果的にCarbonは危機を乗り越えた。今後もメンテナンスは続きそう だが、イミュータブルな実装を取っていくことはなさそうな気がする。 PHP 5.5 未満をサポートしなくてはならないプロジェクトでもない限 り、Chronos を使ったほうが良いのでは
18.
いちデベロッパーとしての教訓 スター数が多くても、その時点で適切なライブラリとは限らない Laravelのような巨大なフレームワークが使用しているライブラリ だからといって鵜呑みにするのは良くない 違和感を大切にしたい
19.
OSS 運営側としての教訓 コントリビュータは大切 いずれメンバーに昇格できるように設計思想や指針などをオープン にしていく必要がある 適切な権限委譲ができないと、いかにデファクトスタンダードを取 っていても、廃れていく可能性がある 先日、emacs も同じような問題に直面してるという記事も 結局、OSS
も人間の集まりということを認識する
Download now