Progress requires both stability and innovation, Symfony is nailing it
The topic between stagnation and progress is often discussed passionately about. Proponents of progress will call conservatives luddites and the latter will say the former are like hamsters on acid. And off they go on Hacker News or on Reddit...
Things are obviously rarely this black and white, but it is fair to say that everything with moderation is the right way to go and there have been some sobering articles discussing the topic recently.
In an article discussing Eric Elliott discusses the dreaded JavaScript fatigue and advises simply letting go of knowing "everything" about web development:
The cure for JavaScript fatigue is not to learn all the things. The cure is to stop trying to keep up and just learn the bits that you’re really excited about right now, or the stuff you need to know to do the job you’re doing today.
- Why I’m Thankful for JS Fatigue. I know you’re sick of those words, but this is different.
As the knowledge domain of what is considered as web development has grown, the key is maintaining focus. God knows every developer is (or should be) always on the look out whether the technology they're using is relevant and how are the prospects. This is common sense and essentially a requirement if you plan to be in development for the long haul.
But change again is something that again should moderated in the fashion that you won't get that far with changing things all the time. Constant change and the never ending search for the perfect technology in turn is discussed indepth in an article from Marek Kirejczyk:
Software development teams often make decisions about software architecture or technological stack based on inaccurate opinions, social media, and in general on what is considered to be “hot”, rather than solid research and any serious consideration of expected impact on their projects.
- Hype Driven Development
So while it's definitely worth keeping tabs on things, it's also worth understanding your (and your organizations, no matter how large) limitations. You simply cannot build anything lasting on any technology if you never take the time to learn it thoroughly.
So what about Symfony?
This year the Symfony project turned ten years old. Within the ten year advancement the project had a single defining watershed, the release of the Symfony2 framework in 2011. This was the start to the component based development which has broadened the horizons of Symfony beyond it's own framework to other frameworks like Laravel and helping other projects, like Drupal, improve their legacy code base.
While Symfony2 was a big risk that paid out, it was never a given that it would be. With radical change there is always the risk of alienating existing users of your platform. With the third major release, Symfony3, the project took an evolutionary approach by keeping radical changes to a minimum.
Now with the third minor version of Symfony 3, Symfony 3.2, is nearing it's release you can see that there have again been some major features added. The new Workflow component and Cache tagging are something that many have been waiting for, but not everyone. This is why even after a year after launch a lot of projects are still happily running the last Symfony2 version, Symfony 2.8.
Now that there are major improvements to caching and other core features in Symfony, many projects like eZ Platform are preparing the move to 3.x. Because of the nature of the upgrade, it's not going to require a big bang rewrite for apps. This makes Symfony a great platform for developing business critical applications on, the continuity and commitment of the core team enables predictable updates.
This is not to say that the Symfony project should stay stagnant and not change. As mentioned above there have been new features and subtle changes like dropping Assetic, a 3rd party PHP asset management tool, from the standard distribution. Asset management is now universally done with JavaScript based tools, so this was an unnecessary component for new projects to have in included by default.
Full stack backend frameworks like Symfony, Ruby on Rails and Django have lost some of their appeal with increased capabilities of client side applications. This does not make them obsolete, but it's good to acknowledge that the role Symfony 4 will be somewhat different from what the role of Symfony 2 was when it was released.
The next major version of Symfony is already scheduled for November 2017, so there are breaking changes in sight. With the track record I believe the transition will be predictable. It may sound boring but predictable is good, since I can keep on learning new things without having to purge the knowledge and experience I've already got.