$30 off During Our Annual Pro Sale. View Details »

How Symfony 3.0 moves forward without letting anyone behind

How Symfony 3.0 moves forward without letting anyone behind

Migrating from Symfony 2.3 to the newest Symfony 3.0 won't force you to rewrite all your application. Instead, you'll follow a well documented and continuous upgrade path to make a smooth transition. How is this possible? In this session, I'll tell you how the BC promise enables easy migrations. I'll also tell you about the creation of the new deprecation policy introduced in Symfony 2.7. These are the two corner stones that allow Symfony to do the split: having a wide range of stable apps and innovating at the same time.

Nicolas Grekas

December 14, 2015
Tweet

More Decks by Nicolas Grekas

Other Decks in Programming

Transcript

  1. Symfony 3.0
    does the split!
    #SymfonyCon
    @nicolasgrekas
    joind.in/16479

    View Slide

  2. components
    framework
    +
    =

    View Slide

  3. One monolithic
    repo.
    +
    46 synchronized
    components
    =

    View Slide

  4. #SymfonyCon @nicolasgrekas joind.in/16479
    Symfony Lifecycle
    Release
    end of
    support
    +8 months +14 months +36 months +48 months
    end of security
    support
    end of security
    support
    end of
    support
    Standard Releases
    (2.4, 2.5, 2.6, 3.0)
    LTS Releases
    (2.3, 2.7, 2.8)

    View Slide

  5. Backward
    Compatibility
    Promise

    View Slide

  6. #SymfonyCon @nicolasgrekas joind.in/16479
    3. @internal @api
    The Backward Compatibility Promise
    http://symfony.com/bc

    View Slide

  7. #SymfonyCon @nicolasgrekas joind.in/16479
    Major
    Minor
    Patch

    View Slide

  8. #SymfonyCon @nicolasgrekas joind.in/16479

    o

    o

    o
    Semantic Versioning

    View Slide

  9. What’s new
    in Symfony 3?

    View Slide

  10. Well... Nothing!

    View Slide

  11. #SymfonyCon @nicolasgrekas joind.in/16479
    The Symfony 3.0 Architecture





    View Slide

  12. #SymfonyCon @nicolasgrekas joind.in/16479
    The Symfony 3.0 Architecture

    View Slide

  13. #SymfonyCon @nicolasgrekas joind.in/16479
    All new features are
    already included in
    Symfony 2.8
    What’s new in Symfony 3?

    View Slide

  14. What’s new
    in Symfony 2.8?

    View Slide

  15. #SymfonyCon @nicolasgrekas joind.in/16479
    500 new features since 2.3

    View Slide

  16. #SymfonyCon @nicolasgrekas joind.in/16479
    100+ new features since 2.7

















    View Slide

  17. What’s new
    in Symfony 3?

    View Slide

  18. The
    Continuous
    Upgrade
    Path

    View Slide

  19. #SymfonyCon @nicolasgrekas joind.in/16479
    The Symfony Core Team Wish!

    View Slide

  20. #SymfonyCon @nicolasgrekas joind.in/16479
    Continuous Migration Path Before 2.7






    • 

    View Slide

  21. #SymfonyCon @nicolasgrekas joind.in/16479
    Continuous Migration Path Since 2.7







    View Slide

  22. #SymfonyCon @nicolasgrekas joind.in/16479
    Trigger deprecation notices at run-time

    View Slide

  23. #SymfonyCon @nicolasgrekas joind.in/16479
    Trigger deprecation notices at run-time

    View Slide

  24. #SymfonyCon @nicolasgrekas joind.in/16479
    Trigger deprecation notices at run-time

    View Slide

  25. #SymfonyCon @nicolasgrekas joind.in/16479
    Trigger deprecation notices at run-time

    View Slide

  26. #SymfonyCon @nicolasgrekas joind.in/16479
    Trigger deprecation notices at run-time

    View Slide

  27. #SymfonyCon @nicolasgrekas joind.in/16479
    Trigger deprecation notices at run-time

    View Slide

  28. #SymfonyCon @nicolasgrekas joind.in/16479
    Statically-detect deprecated code paths

    View Slide

  29. Sustainability
    of the CUP wish?

    View Slide

  30. #SymfonyCon @nicolasgrekas joind.in/16479
    Cross Versions Dependencies

    o
    o ~2.x|~3.0.0

    o
    o ~2.8|~3.0

    View Slide

  31. #SymfonyCon @nicolasgrekas joind.in/16479
    Prefer Lowest Requirements

    View Slide

  32. #SymfonyCon @nicolasgrekas joind.in/16479
    The @legacy PHPUnit Group

    View Slide

  33. #SymfonyCon @nicolasgrekas joind.in/16479
    Travis Matrix

    View Slide

  34. #SymfonyCon @nicolasgrekas joind.in/16479
    Appveyor for Windows

    View Slide

  35. #SymfonyCon @nicolasgrekas joind.in/16479


    Sustainability of the CUP

    View Slide

  36. What about the
    Symfony ecosystem?

    View Slide

  37. #SymfonyCon @nicolasgrekas joind.in/16479
    Use the Symfony PHPUnit Bridge

    View Slide

  38. #SymfonyCon @nicolasgrekas joind.in/16479
    Use the Symfony PHPUnit Bridge

    View Slide

  39. #SymfonyCon @nicolasgrekas joind.in/16479
    Allow Symfony ~3.0 Dependencies

    View Slide

  40. #SymfonyCon @nicolasgrekas joind.in/16479
    Their turn to deprecate

    View Slide

  41. #SymfonyCon @nicolasgrekas joind.in/16479
    Their turn to deprecate

    View Slide

  42. Now your turn!

    View Slide

  43. #SymfonyCon @nicolasgrekas joind.in/16479




    o
    o
    o


    Some guidelines

    View Slide

  44. #SymfonyCon @nicolasgrekas joind.in/16479
    Use the Symfony PHPUnit Bridge
    * Since 2.8.1. The regexp is checked against the deprecation message.

    View Slide

  45. #SymfonyCon @nicolasgrekas joind.in/16479
    Some guidelines

    View Slide

  46. #SymfonyCon @nicolasgrekas joind.in/16479
    Some guidelines

    View Slide

  47. What’s new
    in Symfony 3?

    View Slide

  48. #SymfonyCon @nicolasgrekas joind.in/16479
    @trigger_error(…, E_USER_DEPRECATED);




    View Slide

  49. Let’s
    Keep
    Innovating!

    View Slide

  50. Merci !
    #SymfonyCon
    @nicolasgrekas
    joind.in/16479

    View Slide

  51. #SymfonyCon @nicolasgrekas joind.in/16479
    Some guidelines

    View Slide

  52. #SymfonyCon @nicolasgrekas joind.in/16479
    Some guidelines

    View Slide

  53. #SymfonyCon @nicolasgrekas joind.in/16479
    Some guidelines

    View Slide

  54. #SymfonyCon @nicolasgrekas joind.in/16479
    Some guidelines

    View Slide

  55. #SymfonyCon @nicolasgrekas joind.in/16479
    Some guidelines

    View Slide