SensioLabs is proud to organize the fourh edition of the SymfonyCon, the international Symfony conference. This year, to celebrate Symfony, we decided to bring the entire community to Germany to discover Berlin, a very special vibrating city. If you like Symfony and share fun with professionals, this is where you want to be on December!

Thursday 1st December 2016

Keynote by Fabien Potencier in All tracks


PSR-6 & Symfony Cache: fast by standards
Talk by Nicolas Grekas in Track A

After several months of discussion, the PHP-FIG (PHP Framework Interop Group) published the PSR-6. Its goal is to enable interoperability between caching systems implementations - a mandatory aspect to improve performance in your applications. At this conference, we will see the benefits and limitations of PSR-6, we will discuss the various existing cache solutions (Doctrine, Stash, php-cache), and I will present the Symfony 3.1 Cache component and its latest improvements in version 3.2.

Do not (always) use FOSUserBundle!
Talk by Damien Alexandre in Track B (40 minutes)

FOSUserBundle is evil - and I will explain why. Under this trollish introduction hide a conference about Bundles and how to chose them to avoid spending more time extending them than actually building your application which is why you needed Symfony in the first place and yeah I know this sentence is hard to read, like a project where there is too many Bundles.

5 Years with Symfony
Talk by Paweł Jędrzejewski in Track A

Sylius development has started together with one of the early alpha releases of Symfony framework. 5 years later it is the most promising competitor to existing solutions of the mainstream market, like Magento. From the age of 18, I have built my entire professional career on Symfony. This allowed me to work on countless projects. I have seen Symfony in action on very small web projects, high availability websites, complex APIs and 14 year old legacy systems. I have integrated various Symfony applications, combining Sylius with eZ Platform, Akeneo PIM and existing custom apps. In this talk I’d like to share everything I have learned during this journey. I show real world examples of projects, share solutions to both technical and more business-related problems and prove that Symfony is one of the greatest communities and projects that ever existed. This talk is supposed to be a retrospective of Symfony evolution from my perspective and knowledge-feast for the attendees.

Making your applications work together through interoperability
Talk by Michael Cullum in Track B

In all our careers at some point we’ll have multiple web applications or services we need to be able to integrate; whether that be as simple as sharing sessions or more complex such as manipulating HTTP responses provided by applications in libraries. Integration is hard but for frameworks, libraries and applications interoperability is an ever increasing goal. In this talk we’ll discuss how we can go further with interoperability to make your life easier: how you can make Drupal, phpBB and eZ Publish integrate with your Symfony web app; how you can use Symfony Components and Zend Framework modules side by side; and about decoupling your applications from any one specific library by depending on interfaces instead of implementations.

Challenges and solutions in getting your open source company to contribution
Keynote by Jeffrey A. McGuire in All tracks

How open source contribution benefits businesses and practical help on getting management and technical teams on the same page and contributing on a regular basis. Many companies and their developers struggle to incorporate contribution into their daily working routines. Why do we struggle with contributing if we "believe" in open source and "know" contribution is “obviously” a good thing for all of us? Chris Jansen and Jeffrey A. "jam" McGuire present practical, actionable ways to better unify our beliefs and our actions regarding open source contribution based on an extensive academic study Chris carried out in 2015. Our goal is to get management and developers on the same page about open source contribution and help you make it happen. * How open source contribution benefits your company. * Roadblocks and unblockers to contribution for management and technical teams. * Proven, actionable tactics, improved developer workflows. * Contribution beyond code and patches.

14:15 Knowing your state machines
Talk by Tobias Nyholm in Track A (1 hour)

Web development is not just about delivering a response. It is also about writing good code. The state pattern will help you move complexity from being all over your code to one or more state machines. This talk will introduce state machines, show how to identify uses of them and implement them in your Symfony application in an object oriented manner using the Symfony Workflow component.

Profiling PHP
Talk by Sebastian Grodzicki in Track B (1 hour)

You cannot improve what you cannot measure. That's why profiling applications should always be the first step before trying to improve its performance. Learn how to spot your applications' bottlenecks and how to adopt profiling into your developer pipeline.

15:25 When To Abstract
Talk by Kore Nordmann in Track A (1 hour)

One of the most difficult challenges in a developers life is finding the "right" abstraction, or at least the best one given the current circumstances. The core problem is that abstraction is a bet on the future development of the software and we know that future is volatile. I will discuss different environments of software development and we find a base for you to decide when and what to abstract.

A CQRS and Event Sourcing approach in a Symfony application
Talk by Samuel ROZE in Track B (1 hour)

The Command Query Responsibility Segregation pattern, instead of the traditional CRUD, introduce different models for reading and updating the application states. Event Sourcing is the idea that every state of your application can be represented by a sequence of events. Using these two principles as the heart of a system or an application is quite common but can be challenging if we don’t use the right tools or architecture. With a concrete application as example, we’ll go through the architecture, libraries and bundles we can use in a Symfony application in order to apply these patterns.

Sound of Symfony - Live on Stage!
Keynote by Magnus Nordlander in All tracks

Sound of Symfony is the unofficial Symfony Podcast, and this time we're doing a live special right from the SymfonyCon stage! Join us for a 40 minutes conference bonanza of on-stage guest interviews, discussions about PHP and Symfony, questions from the audience - and some never-before-heard clips from the Sound of Symfony archives!

Friday 2nd December 2016

Symfony Distributions Reloaded
Keynote by Fabien Potencier in All tracks


10:00 Soup up Symfony - Keep PHP Alive Between Requests
Talk by Andrew Carter in Track A (1 hour)

Traditionally in PHP, each HTTP request is processed by a new instance of an application. This "shared nothing" architecture provides crucial simplicity, security and stability. However, we can keep Symfony applications alive between requests and vastly improve their performance. Wait a minute before charging off! When using PHP in this way we have to pay careful attention to session handling, application state and memory leaks. This talk will demonstrate how to develop and configure Symfony applications for this purpose.

Make your code do your job
Talk by Larry Garfield in Track B (1 hour)

Throughout history, advancement has come from reducing the amount of work that needs to be done by humans and letting technology do it for us. Long before computers, humans were letting our technology work for us in order to make ourselves better. So too with programming. We have the ability in PHP, as in many languages, to make the language syntax itself find bugs for us. It's called "types", and is a far too under-utilized part of the language. Even many seasoned developers don't realize the benefits that come from having strict, explicit types in their code rather than relying on haphazard "duck typing". This talk will make the case that your best way to improve your productivity as a developer is to make your language itself do your work for you. With PHP 7's improved typing support that is now even easier than ever.

Modernizing with Symfony
Talk by Alexander M. Turek in Track A

A legacy application. It still earns the money, but maintaining the old code base is getting harder and harder. Feature development is too slow and the bug tracker is full of severe defect reports. Rewriting the whole application is something your developers would simply love to do. But the rewrite probably won't go live before it's running out of budget. Let's have a look at simple techniques that allow us to transform our legacy application step by step into a modern Symfony application.

Jenkins deployment pipeline
Talk by Nicole Cordes in Track B

Currently I'm working on a flexible deployment pipeline in Jenkins where I can reuse some templates and create new pipelines within minutes. I'd like to present my solution, talk about the basics of Jenkins and explain why it's the better way to deploy with a CI server.

13:30 Kafka will get the message across, guaranteed
Talk by David Zuelke in Track A (40 minutes)

Apache Kafka is a message broker that offers not only massive scalability and fault tolerance, but also unique guarantees around message ordering and delivery. Relaying billing information, detecting security-related events, storing information at high-throughput - Kafka greatly simplifies it all and gives developers a chance to rethink the data flows between components, moving information interchange into the center of their architectures.

Symfony Plugin for PhpStorm - 3 years later
Talk by Daniel Espendiller in Track B

In 2013 the "Symfony Plugin" for PhpStorm was born. Today we see over 1 million downloads and several other plugins for projects like Laravel, Drupal, Shopware, ... that help to improve your productivity. I will talk about Symfony related features and will give you some tips and tricks. Also, we take a look at the infrastructure behind these plugins and how I maintain all of them.

14:15 A year of Symfony
Talk by Sarah Khalil in Track A (1 hour)

Last year, Symfony 3 was out right before the SymfonyCon. A lot happened! 52 blog posts to help you keep up with all new things, 1200+ pull requests, 2 new versions out… Well I'm sure you missed something. Let's review what happened during last year: basically we'll see and/or discover nice new features that appeared since the last SymfonyCon.

Form : One use case, many optimizations
Talk by Jules Pietri in Track B (1 hour)

By taking one of the most usual and simple use case: a post and some tags, we will identify many ways to optimize our work with forms. The focus will be about: - simple many-to-many relationship, - data mapping, - PHP 7 scalar type hints, - form type inheritance mechanism, while some tricks will be shared along the way. Also the final may reveal a surprise! Stay tuned ;)

15:25 HTTP Security: headers as a shield over your application
Talk by Romain Neutron in Track A (45 minutes)

You are all aware of what are XSS vulnerabilities; do you know what's Clickjacking? You have probably heard of Root Certificate compromission; do you know the principle of a protocol downgrade attack? You're coming to SymfonyCon because you are HTTP application developers and I will present you awesome HTTP headers that will help you to mitigate these kind of attacks, just using W3C WebAppSec recommendations.

Adventures in Symfony - Building an MMO-RPG
Talk by Margaret Staples in Track B

Ride along on a tour of my latest adventure! I will unpack my process for turning design ideas into game mechanics, talk about the tools that were used (including Symfony and other open source goodies), examine major roadblocks and how they were overcome, give a postmortem on key implementation decisions, and share the highlights of what I learned along the way.

16:10 How I learned to Stop Wiring and Love Autowiring Containers
Talk by Beau Simensen in Track A (1 hour)

Does managing YAML, XML or PHP container configurations make you sad? Do you dread making changes to your classes' dependencies for fear of the inevitable container configuration wiring blues? Life doesn't have to be this way! Not if your container supports autowiring, that is. Hear one developer's journey into the wild world of containers, learn how autowiring works, and find out how using autowiring can free you from having to manually configure every dependency.

Handling 10k Requests/second With Symfony and Varnish
Talk by Alexander Lisachenko in Track B (1 hour)

It is believed that the Symfony framework is quite heavy and it can be difficult to develop a website that will be able to work under the high load. It is true, but does this mean that it is impossible to implement a dynamic caching and to update only a small part of entire page as data is updated? This talk will give your an answer to that. It is Varnish, ESI-blocks and load balancing. With hundreds of thousands of unique visitors and million hits a day, we continue to use Symfony, and do not see any problems.