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

How do we decide to create a Symfony component?

How do we decide to create a Symfony component?

If you look at the evolution of Symfony over time, you may wonder how the core-team decides that a given topic would make a good component? There are existing libraries for almost everything, so why create new ones? How does Symfony get inspired by other projects and does it happen often? Does the fact that Symfony components are used everywhere give them additional features? How are Symfony dependencies chosen? Or more generally: how does the Symfony project interact with other frameworks and libraries? During this conference, I propose to study these questions, to help you understand the underlying reasoning. It will be an opportunity to illustrate the famous "package principles" and maybe give you a better idea of how you can decide to adopt (or rewrite) such or such dependency.

Nicolas Grekas

October 27, 2022
Tweet

More Decks by Nicolas Grekas

Other Decks in Programming

Transcript

  1. View Slide

  2. •
    •
    •
    •
    •
    •

    View Slide

  3. BrowserKit
    Config
    Console
    CssSelector
    DependencyInjectio
    DomCrawler
    EventDispatcher
    Filesystem
    Finder
    Form
    HttpFoundation
    HttpKernel
    Process
    Routing
    Serializer
    Templating
    Translation
    Validator
    Yaml
    OptionsResolver
    Stopwatch
    Intl
    PropertyAccess
    Security/Acl
    Security/Core
    Security/Csrf
    Security/Http
    ExpressionLanguage

    View Slide

  4. Asset
    VarDumper
    Ldap
    PropertyInfo
    Polyfill*
    Workflow
    Cache
    patchwork/error-logger (2011)
    patchwork/utf8 (2012)
    raulfraile/ladybug (2012)
    dunglas/php-property-info (2015)
    yohang/finite (2014)
    doctrine/cache, tedivm/stash (2012)

    View Slide

  5. Dotenv
    Lock
    WebLink
    Messenger
    VarExporter
    Contracts/*
    Mercure*
    Panther
    Encore*
    Mailer
    Mime
    Notifier
    ErrorHandler
    HttpClient
    String
    guzzlehttp/guzzle (2011)
    kriswallsmith/assetic (2012)
    patchwork/utf8 (2012)
    doctrine/instantiator (2014)
    ocramius/proxy-manager (2013)
    php-fig
    Laravel Mix & Dusk
    symfony/debug (2011)
    swiftmailer/swiftmailer (2011)
    league/mime-type-detection (2020)
    illuminate/notifications (2016)
    vlucas/phpdotenv (2013)
    fig/link-util (2016)
    enqueue/enqueue (2016)

    View Slide

  6. RateLimiter
    Runtime
    Semaphore
    Uid
    Deprecation
    UX*
    HtmlSanitizer
    PasswordHasher
    Clock
    illuminate/cache (2015)
    ramsey/uuid (2012)
    doctrine/deprecations (2020)
    ezyang/htmlpurifier (2006)
    lcobucci/clock (2017)

    View Slide

  7. •
    •

    View Slide

  8. •
    •

    View Slide

  9. View Slide

  10. •
    •
    •
    •
    •
    •
    •
    •
    •
    •

    View Slide

  11. View Slide

  12. View Slide

  13. daverandom
    kelunik
    laminas
    lcobucci
    lorenzo
    stella-maris
    tijsverkoyen
    webmozart

    View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide