A quick REX on SymfonyWorld Online 2021 — Winter Edition
🌍 It’s time to close this 2022 SymfonyWorld Online, and boy, has it been a really good moment! Time for a quick REX recap, with the usual parts of such posts (some parts of this post will hence be copied and pasted, cause… “I do enjoy factorization”, y’all know what I mean).
📣 First of all, shouts out to the Symfony Team (again), for organizing this kind of event. In the shadow of what people call “The 5th COVID-19 wave” in most western Europe countries, this was obviously a refreshing wave-stopper for minds, and we surfed high above the crisis, for a couple of days. So, yeah, shouts out to Javier, Nicolas, Fabien, Anne-Sophie, Alexander, and everyone involved into that event. That was, as usual, a really nice moment!
N.B. I will probably release this blog post, translated in French, for my company, my partner in crime, Néo-Soft.
A couple introductory facts:
- I did not attend any workshops, even though I really wanted to. But I’ll save that for later.
- I didn’t have the time (so far) to watch all other conferences.
- The event lasted for 4 days: two days for workshops, two days for conferences.
- There were a total of 25 conferences and 10 workshops. Enough to get busy with for 4 days. 🥳
- The conference days happened from 10 in the morning (Paris Timezone, CET), to 16, on both days.
- As usual, the typical format was: about 30 minutes per talk, 5–10 minutes for questions, speakers are invited to the chat during all talks, including theirs, where they should answer questions with text, then they go live on visio and answer the remaning questions in the chat. Each conference has a dedicated chat session, broken down in 4 columns, among which: participans, general chat, Q&A.
- The schedule is stilll visible here.
- There were between 1 and 3 simultaneous conferences, as usual, with an effort to reduce concurrence this thime, as more moments had only two or one of them, which I felt was great (I always want to watch ALL conferences, including the ones I already saw ^^).
- The single rail (10 to 16) of conference instead of doubling the schedule really helps breathing. Previous schedules were insane, even though I’m a fan of huge cognitive loads. ;)
- Tickets are already open for the next Symfony World Summer Edition, with an early bird entrance price. I’m not working for Symfony, but if your budget is low but you still want to attend, now is the time.
I still had the time, over the last days, to:
- Write this quick article :)
- Start a soon-to-be-beta-released personal project (SPOILER: it’s based on Symfony).
- Release an open source project of mine: the Symfony Website Checklist (seriously, go check it out, I might need feedback as it just started).
Over this time, I watched 13 conferences, catching up on whatever I could. I asked over 20 questions this time, half of them got answered in the chat, half the the speakers themselves on video. That’s great.
First, as last time, about the tool itself (Hopin), one great and sad thing at the same time: it relied on YouTube videos being displayed in the app. Which means: prerecorded stuff. So there always were little time differences between the times the speakers, the organizers, the chat guests saw the things happen on their screen. But in general, that was quite an interesting app, and that did the job, even though some heavyweight JS came in and started the trouble.
The good part is that I usually got to download the YouTube videos to watch them later on this week. Don’t ask for them, I will watch them and then delete them, if you ever get those, DO NOT share them, PLEASE, do respect everyone’s work and buy your replay-access tickets.
🤟 Second, this time I had the priviledge and honour to be invited as a speaker for my conference “WORKING WITH TWIG IN SYMFONY // “Tips and tWricks” (that got renamed to avoid that feeling of typos when it actually was a pun).
🤟 That is one of the climax of my professional and technical checklist. I still have lots of things to do, and I’m only 37 years old, don’t worry, I’m far from over. Don’t tell anyone too much, but when I received the email notification that my talk proposal got selected, I had a pretty rough day and I… Sweated a little from my eyes for a minute (yeah, that means a little tear of humble joy).
To be short, and so as to talk about the first one I saw (cause I had it done a couple weeks before the event happened), this was a talk I made to quickly explain what Twig is, how it works, and give people a few tricks about how to use it efficiently, a few tips that people usually don’t do that could save their time, and give real world examples from great software and from my own ground experience.
🔗 The slides are here: https://docs.google.com/presentation/d/1n48LnXiz3KJRn2lWA5toDLP4-td9sGXa3DWsMSsk1N8/edit?usp=sharing (and my comments / subtitles are in the slides comments, if you were here but have hearing impairment, since I speak very fast).
OK, now I’m done with shameless self-promotion, let’s talk about the conferences. So, as it’s fresh in memory now, I just want to give a few lines about each talk I saw, or the most of them.
Removing SPoFs by Fabien Potencier
For the first time I remember, Fabien didn’t open the conferences with another “what’s new?” speech. This one was very different.
The narrative was as follows:
- Fabien discusssed a lot about the PHP ecosystem and PHP Foundation, and how critical it was right now, as opposed to being the number one language supporting websites for ages (around 80%), that PHP could strive and keep being maintained.
- He discussed a lot about how much we owe to Nikita Popov, Dimitri Stogov and many others, and mentioned the creation of the PHP Foundation, something I’ll come back later on to discuss a little about that fact.
- He then reminded everyone about the difference between open-source and free. And how little to massively rewarding open-source could be. At a price.
- He came back on his life as an entrepreneur and lead on his projects, and talked about how much commitment it requires to build such large-scale projects, and how he feels lucky and soothed that they work.
- He then talked about his thought process when it comes to open-sourcing some private, closed-source code.
- Which is why he discussed two new open projects: Flex server might now be open source and so is going to be the The Symfony CLI, which is now separated from internal code, apart from Platform.sh and Blackfire tight links.
- Symfony Cloud commands are removed and now replaced by Platform.sh experience, (as it is hosted on it anyway).
- As a conclusion to his enlightening talk, Fabien reminded the status of Syfmony company employees, who are lucky enough to be paid, which is not the case for everyone on Earth. Reminding that people should take some time and money to back the maintainers.
I can’t agree more on the last line, as a multiple Swiss Army knife myself. I am involved in so many organizations that it would be too long to list and too complicated to explain to other parties concerned. When the world saves so much money thanks to open initiatives, people should be realizing how lucky they actually are: the era of closed source and native code was a real nightmare.
If you want to back up Symfony, well… You already know where to head up to.
Decoupling your application using Symfony Messenger and events by Hugo Monteiro
That talk started with a lot of slides talking about DDD, which is a topic I long classified as “not interesting to me, so far”. I’ve been through DDD, read a lot about it, tried some implementations, went back from it. I’m still missing a part of it, so every once and then, I come back to DDD and watch more talks about it, cause I feel like, wihtout FOMO, I might still be missing the point.
So I moved on to another conf, will watch later definitely! Because I was interested in the Messenger component whatsoever. Added to the “watch later” list!
I actually wanted to watch this conference and the one from Jérémy Derussé, so I quickly swapped to the next one:
Vulnerabilities and Security Round Trip by Jérémy DERUSSÉ
Jérémy is an advocate security speaker, and part of the Symfony Security Team. Which is a topic that particularly catches my attention. Security, ecology and data are the three topics on a high rise since the 2010s.
- He went through some usual expoits, explanations and how to correct.
- He talked about email poisoning through password reset email links. And how to tackle this potential flow through framework.trusted_hosts and framework.trusted_headers parameters.
- He reminded us to check our apps through https://github.com/fabpot/local-php-security-checker on a regular basis.
- He also remembered us to try dependabot on Github as a dependency checker.
- He discussed about insecure unserialization. Reminded us to disable unserialization where it could be harmful and check the classes allowed for serialization.
- And also a very common security clue for attackers: use generic messages for login failures, even if it’s less convenient for users. Don’t detail what went wrong.
- Last but not the least, he opened discussions about DDOS.
Symfony Notifier Demystified by Jan Schädlich
The Notifier component has been around for some time, now, and as modern as it is, gets a lot of attention.
- Jan explained how to pick the appropriate channel: Chat / SMS / Email / Browser.
- He pointed how to customize output depending on platform, like Telegram, Slack, etc.
- I didn’t know there were so MANY chatter / texter transports!
- He also quickly demonstrated how to create a custom transport in details.
Runtime component: The game changer by Tobias Nyholm
Hopin broke down for me at this point so I couldn’t load videos, and bypassed that part of the schedule in half. This happens once per event, usually, for me. :(
I still could catch the last part of Tobias’ talk.
Talking about serverless, application runtimes, based on the Symfony Runtime component. To be fair I didn’t even remember this component existed, but seeing Lambda and Bref names popping on the screen, I know I’ll dig into that later on.
The New Testing Landscape: Panther, Foundry & More Ryan Weaver
Our everlasting all-star trainer, friendly coach and amazing speaker, Ryan, is back again, ladies and gentlemen!
Ryan went through typical REX on testing. And gave us a few tips.
- Remember to use the make:test command to generate tests.
- How to use Foundry to test with data fixtures mixed with Faker.
- How to reset a database everytime you start tests that use it, and how it affects performance or not.
- How to have Doctrine autorefresh entities to make sure tests updating data run well.
- How to use Panther for headless browser E2E testing.
- How to test on several databases at a time.
- Using zenstruck/foundry and zenstruck/browser for browser testing.
This was another amazing talk from Ryan, as usual. I’m getting less antagonist to testing with this kind of talk, definitely.
How Math, Science, and Star Trek Explain the Value of Team Diversity by Fredric Mitchell
This was the same talk as last year, I would say about the same things. ☺️
Great, inspiring talk from Fredric!
Everything about Symfony 6 by Nicolas Grekas
All aboard the hype train! This is the talk most people came for, I believe. This is about what we’re going to build apps on, take certification tests, and train over the next months!
- PHP 8! New stuff and minimal requirement for Symfony 6, now!
- Symfony 4.4 runs on PHP 8.1, thanks to the Symfony 4–6 deprecations and upgrade methodology chosen.
- PHP 8.1 starts 30% faster! Just upgrade and grab some cookies.
- Last 6 months were about 1300 PRs merged, about 5K files changed for Symfony on Github.
- Add return types to your code. Symfony 6 now uses return types a lot more. This is going to help a lot for static analysis when dealing with mixed/badly documented types.
- Wouter made a tool to help adding return types to your code!
- Commands are now described with attributes.
- BC breaks are now effective, all deprecations gone!
- All SF 5.1 / 5.2 / 5.3 / 5.4 new stuff is now part of SF6, like bash autocompletion!
As for the close future: I’d really like Titouan’s HTMLSanitizer bundle to become a core component. I will encourage you all to go thumbs up this one on GitHub, at least! ;)
Using the SecurityBundle in Symfony 6 by Wouter de Jong
- A little trip around the new SF6 stuff regarding the Security Bundle.
- The maker bundle will do most of the job for you!
- The userInterface has been rewritten and cleaned. Some methods are gone, check out what it looks like now.
- Using PHP 8 attributes to fire events during authentication is good.
- I liked the demo about how to use multiple firewalls and the whole events cycle process review.
- Wouter explained the internal Listener, Badge and credentials checking process.
- It’s still important to remember that Anonymous users no longer exist.
Symfony Forms: Advanced Use Cases Alexandre Salomé
I just realized I couldn’t watch any other talk than mine at this time, since I was answering questions live in the chat during my own! ;)
So this will be another talk I’ll need to watch again later on. Sorry Alexandre, I’ll see your talk ASAP! ;)
Symfony and Docker: a refreshing new experience by Kévin Dunglas
Once again, Kevin smashes everything. ;)
Except this time, the conference is really accessible and mainly oriented towards explaining how everything connects with containerization with Docker.
As I will soon release a whole project template containing a full stack of techs that makes Docker Symfony projects work like a charm, I didn’t really learn anything new through this talk, but it was definitely refreshing.
Also, shouts out to Maxime Hélias, a friend of mine, who is part of the project. So happy to see you appear as a maintainer of that project and be thanked online, I remember those discussions we had a few years ago around a beer, when you wanted to start getting involved… Seems so long ago already!
Static code analysis: how I learned to love the tool by Alexander M. Turek
Same here, as a DevOps enthusiast and a source code elitist, nothing was really new to me, with the exception of using PHPStan baselines, that I haven’t tried yet. This talk was about ending on the same conclusions as I do: use PHPStam, use PHPStorm, use Psalm. That’s what I do.
Check out what I do with https://docfx.github.io/symfony-website-checklist/ so that you can hopefully save yourself some time setting those tools up! 😇
Give your Traditional Site the “single-page-app” Feel with Turbo by Ryan Weaver
Finally, Ryan gave us a glimpse at what you can do with the Stimulus component and Symfony UX.
First, he reviewed the whole Stimulus basics in 5 minutes: how to use controllers and targets, all that stuff. I REALLY needed that, cause I haven’t had the time to look at Stimulus as much as I would like to, for my recent projects didn’t really need it.
Then we made a journey through Stimulus 3, all the new stuff this implies (bye bye, IE 11!), how to make Turbo work, and much more.
I intend to add Turbo / Swoop to my next projects, the smooth, handled page transition is really good, so I can’t wait to test that at least! And I have to say that I definitely want to try the DropZone component, too.
🎥 Replays are already available, on https://live.symfony.com/account/replay/.
If you have a ticket, you know where to go.
If you don’t, you know where to go.
❔ So, any regrets?
Despite not being able to (yet) watch all the conferences I missed, absolutely none. That was such a great experience, I might actually want that to happen more often!
✔️ I really enjoyed every single conference I attended, this year, again. Now is the time to check the other ones, so that I’ll know if I was right or wrong putting them in third place. We all make mistakes.
I’ll definitely give it a go! I’ll be there in 2022 again! And needless to say, I’ll try to have another conference be selected once again. Actually, by the time your read this, I’m pretty sure I’ll already have submitted 2 new conference topics at least. 😘
Also, I got a shiny * * * badge, and that’s freakin’ awesome. 😍
Massive, last thanks to Nicolas Grekas for his unyielding organizer talent and to Titouan Galopin, as ever, for being the same nice person (and a friend) for over a decade, already. Tempus fugit.
🤙 The next Symfony World Online Edition will happen on June 14–17.
And I hope I’ll meet you there.
See you in space.