Skip to main content

PHPStan development sponsored by Esteemed!

Published on

I am excited to announce my latest live stream sponsor – Esteemed! Esteemed is an AI-powered talent management and career solutions provider for digital professionals (founded by a bunch of Drupal folk and has a large Drupal talent pool network!)

In September, they reached out to inquire about my sponsored live streams and were curious about what we could work together on. Currently, I am sponsored by Palantir.net to work on drupal-rector, phpstan-drupal, and the Upgrade Status modules. These are all tools used as part of the Drupal major version upgrade process for finding compatibility issues and even automating their fixes. These tools are all based on the power of PHPStan.

What is Esteemed sponsoring work on?

My proposal to Esteemed was sponsored contribution time to work on PHPStan, specifically for detecting incompatibilities with PHP 8 code in your current PHP 7 codebase. This is something Gábor Hojtsy had tried testing in Upgrade Status over the summer with disappointing results. See the issue: Use phpstan to test PHP 8 compatibility of PHP code even on PHP 7. We discovered that there is a gap between what PHPStan currently reports and what errors may truly exist. Drupal 10 will be requiring PHP 8 when it is released in 2022. 

And they loved it! For the next eight weeks, on Thursdays at 2 PM CDT, I will be live on my Twitch channel working on PHPStan issues for detecting PHP 8 compatibility.

Success after Day One!

PHPStan is a static analysis tool for PHP. It finds bugs before your website runs a request and accidentally crashes due to a bug. It is also how we, as a Drupal community, achieved the Drupal 8 to Drupal 9 upgrade by analyzing code and detecting deprecated code usages. One thing PHPStan did not handle was deprecated internal functions – like each and create_function. This wasn't a problem. But as we move to Drupal 10 and PHP 8 with a lot of legacy codebases, it could be one. When you analyze code as PHP 8, you will get "function not defined" errors, but there are no warnings ahead of time these are even deprecated. 

I started working on supporting deprecation reporting for internal/native PHP functions over the summer but ran out of time. Thanks to the sponsorship from Esteemed, I was able to get that mostly wrapped up on our first stream!

 

The software development release cycle has been speeding up over the past few years. This improvement will make it easier to keep Drupal up to date with changes in PHP as we have new major versions released.

There is one pending PR on the BetterReflections library used, and then a few adjustments need to be made to PHPStan. I imagine this feature being tidied up on next week's live stream and then released shortly after!

Curious about Esteemed?

In addition to being a great source for jobs, they also have a strong community and network of developers. If you haven’t checked out Esteemed at a Lunch and Learn or a DrupalCamp, check them out!

You can join the community with this invite link: https://join.slack.com/t/esteemed/shared_invite/zt-aejwraa8-mFs6ZUEs6vo…

I'm available for one-on-one consulting calls – click here to book a meeting with me 🗓️