メジャーバージョン
一部の開発者とほとんどのプロジェクトマネージャーは、オープンソースプロジェクトのメジャーバージョンを更新することを恐れています。 これはおそらく、メジャーバージョンが後方互換性の喪失に関連しているという事実によるものです。 多くの疑問が生じます:変更は私のプロジェクトに利益をもたらすでしょうか? 開発者の計画は、更新する意味があるほど明確ですか? 更新は簡単ですか? 更新できない、または更新したくない場合はどうすればよいですか? などなど。
メジャーバージョンの恐怖は過去に根ざしています。Perl6またはPHP 6を思い出してください。Symfonyの世界では、symfony 1と比較して2番目のバージョンも革命的でした。パニックする必要がない理由を説明します。
まず、メジャーバージョンとマイナーバージョンの両方の更新を定期的に行う必要があることは誰もが知っています。 コア以外の機能を削除し、アーキテクチャエラーを修正し、新しいPHP機能、新しい開発方法論、新しいWebパラダイムなどのエコシステムの変更を考慮するために、下位互換性を破る必要があります。 インターネット環境は非常に急速に進化しており、Symfonyをそれに適応させないと、あなたが思っているよりもはるかに速く無関係になります。
Symfonyプロジェクトマネージャーとして、コードを可能な限り安定した状態に保つ責任があります。 しかし、安定性は現状ではありません。例としてバージョン2.4、2.5 、および2.6でわかるように、マイナーリリースで機能を追加し、アーキテクチャ上の欠陥を修正します。 これらのバージョンはすべて、フレームワークに機能を追加し、それぞれがフレームワーク自体の顕著な前進でした。 しかし、更新は、 下位互換性が維持されたという理由だけで行われました 。 問題は、廃止された機能や無関係な機能の後方互換性を維持していることです(パフォーマンスについても話していません!)。 Symfony 2では、独立したコンポーネントの強固な基盤の上に構築されたため、非常に簡単でした。 セマンティックバージョニングの定義により、新しいメジャーバージョンはコードをクリーンアップしてゴミを取り除くことができる次のステップにすぎません。
symfony 3.0とは何ですか?
マイナーバージョンでは新しい機能が常に追加され、廃止された機能はそのようにマークされているため、今日からSymfony 3.0とのコードの互換性の改善を開始できます。 アップグレードガイドを読み、提案された変更に従ってください 。これにより、事前に移行の準備をすることができます。
おそらくすでにご想像のとおり、Symfony 3.0で低レベルアーキテクチャが劇的に変わることはなく、リリースも革新的ではありません。 以下は、3.0をさらに改善するSymfony 2.xの変更の例です。
- 標準との互換性が改善されました(PSR-3のロガーを使用し、Symfony \ Component \ HttpKernel \ Log \ LoggerInterfaceインターフェイスを削除しました)
- Symfony 3.0はいくつかのアーキテクチャ上のバグを修正します(状態ベースのコンソールヘルパーは、より良い代替物、例えばProgressBar / ProgressHelperまたはTable / TableHelperに置き換えられました; Yaml :: parse()はファイル名を受け入れなくなりました)
- Symfony 3.0はさらに分散され、再利用可能です。 HttpKernelはいくつかの小さなモジュールに分割されます。たとえば、プロファイラーは分離され、クラスはバンドルからコンポーネントに移動され、コンポーネントは既存のものから分離されます...)
Symfony 3.0リリースチャート
できるだけ早く意図を伝えれば、新しいメジャーバージョンでのパニックを回避できます。 そのため、Symfonyコミュニティは、後方互換性の約束から、サポートが強化されたロードマップやリリースまで、私たちの戦略を非常に注意深く文書化しています。
新しいバージョンへの恐怖を最小限に抑える1つの方法は、それらを予測可能にすることです。 リリーススケジュールによると、2015年5月にリリース予定のSymfony 2.7は、バグ修正のために2018年5月まで、セキュリティアップデートのために2019年5月まで実行される長期サポート付きの次のリリースになります。 2.8以降を計画する代わりに、3.0に直接ジャンプすることをお勧めします。 したがって、3.0は2015年11月にリリースされ、3.xブランチでのサポートが延長された最初のリリースは3.3になり、2017年5月にリリースされます。
インタラクティブリリーススケジュールも3.0ブランチで更新されました。
どうする? リリースプロセスのドキュメントの章によると、 2つのアップグレード戦略があります。
デュアルサポートモードは、すべてのSymfonyユーザーを満足させるために考案されました。 最も新鮮でクールなものを使いたい人のために、6か月ごとに出てくる標準バージョンがあり、更新には2か月が割り当てられています。 安定性が必要な人のために、拡張サポート付きのバージョンがあります。新しいバージョンが2年ごとにリリースされ、更新のために1年が与えられます。
Symfony 3.0はどこで入手できますか?
Symfony 3.0の開発を誰もが簡単に行えるようにするために、メインリポジトリのmasterブランチが3.0に割り当てられ、2.6と2.7では別々のブランチが作成されました。
プロジェクトでSymfonyマスターブランチを使用して2.x開発をフォローしている場合は、今すぐ2.7に切り替えてください。
いくつかの変更を除いて、マージ戦略は現在とほぼ同じです。
- 互換性が失われない場合、または変更が既存のコードに影響しない場合、2.7で新しい機能が追加されます。
- 2.7で機能させる方法がない場合、3.0で新しい機能が追加されます。
- バグ修正は、サポートされている最も古いブランチと新しいブランチ(および3.0も)に定期的に追加されます
Symfony 3.0の最小PHPバージョン
最後に、PHPの最小バージョンはどうですか? 数日前、このトピックに関する調査を実施しましたが、結果は次のとおりです。
これらの結果に基づいて、PHP 5.5をSymfony 3.0の最小サポートバージョンにすることをお勧めします。 来年中にこの要件をPHP 5.6に引き上げる能力を維持したいのですが、正確な日付は、ホスティング業者とOSディストリビューションによる新しいバージョンのニーズとサポートに依存します。
どうやって手伝う?
今日Symfony 3.0で実装できる多くの簡単な変更があります。 まず、ブランチ2.7では、廃止されたすべての機能はログにレポートする必要があります。 マスターブランチでは、これらの機能を削除する必要があります。 最後に、アップグレードガイドをテストおよび改良して、更新が簡単かつ簡単になるようにする必要があります。 Githubで3.0としてテストされたチケットも確認できます。
素敵なコードがあります!