tempest I'm building a framework called Tempest, take a look or read the roadmap.

PHP 8.4 at least

When I open sourced tempest/highlight, people asked me why PHP 8.3 was the minimum required version. I tend to be pretty strict in only supporting the latest PHP versions, and I'm gonna do it again for Tempest itself: I've published the framework's roadmap yesterday, and made it clear that Tempest will require PHP 8.4 at the minimum.

I'm anticipating some questions about that decision, so I wanted to write down my thoughts. I've got three reasons for setting such a strict version requirement.

# 1. The longer we wait, the bigger the break

Whether you're building a framework, a package, or work on any kind of open source code: you'll never be in the same unique position again as right when you're starting out. You have a clean slate, you can do whether you want without worrying about anyone being affected by it.

With PHP 8.4 coming, PHP will change pretty significantly, especially with property hooks. If I ever want to include property hooks in Tempest, the best time is now, because introducing them into already established interfaces is a huge breaking change. Honestly, I'm dreading the moment where I have to go through all of Tempest's interfaces, and refactor probably half of the methods there to property hooks. Nevertheless, it's better to do it now, and to do the work myself, rather than postponing it another year or two, and impacting everyone.

There won't ever be a moment as good as now to embrace PHP 8.4, it will only get more difficult the longer we wait.

# 2. Pushing the community

I've made this argument before: open source PHP maintainers have a collective responsibility to push the community forward. Upgrades aren't as scary as they used to be, and we're missing out on performance improvements, security fixes, and new syntax, all because of the fear of upgrades.

In my opinion, staying up to date with modern PHP versions is part of the job. Everyone should charge their clients for it, and do the work.

# 3. A natural filter

My last reason might seem counterintuitive at first: I'm pushing PHP 8.4 for Tempest (and 8.3 when tempest/highlight was released) to deliberately slow the adoption rate. Don't I want these projects to be successful? Sure. But I'm also limited on time. Imagine tagging the first Tempest release with 8.3 or even 8.2 support; there would probably be a lot more people trying it out, and there likely would be a much bigger inflow of bug reports. That in itself isn't bad, but I reckon a lot of people would play around with it for five minutes, run into edge cases, and then throw it away.

I'm limiting the initial audience to a smaller group, a group that — in general — makes more effort to upgrade PHP sooner and doesn't necessarily expect everything to work flawlessly in v1.


So yeah, those are my reasons. You might not agree with them, in which case I'd love to hear your thoughts! Send me an email or join the Tempest Discord!