ProcessWire 3.x release and more

First off, a big thanks to Jonathan Lahijani and Benjamin Milde for taking over the last two weeks of blog posts while I was traveling. They did an awesome job. If you haven't yet read Jonathan's CMS Critic case study or Benjamin's Migrations module introduction, be sure to check them out.

Hello ProcessWire 3!

Prior to the last two blog posts, I'd indicated we would aim to release ProcessWire 3.x on the 23rd of September, and here we are. But I'm going to call this a soft launch and not get too loud about it yet because there's still more to do. I feel confident about the stability of 3.x, but it's the supporting stuff where more work needs to be done. Things like the the changelog, press release, updated roadmap, ProcessWireUpgrade module, updating the demo site(s), telling Bitnami/Softaculous/etc. to use our new repo, and plenty more.

In addition, after several days traveling (away from the computer), there were a lot of issue reports to cover when I got back. They were all minor things, but still means that 14 new commits have been made to the core devns branch. Much of my first week back has gone towards covering those things rather than focusing on supporting 3.x official release items. Nevertheless, I see no reason to delay–ProcessWire 3.x is now released in our new GitHub repository with the first version being 3.0.34!

If you are starting a new project, by all means start using ProcessWire 3.x now. If you are upgrading an existing site, go ahead and upgrade your development/staging server when you've got the time, and upgrade your live server after confirming everything works perfectly. On the other hand, if you are one of those people that is going to just upgrade an existing live site without testing it ahead of time (like me sometimes), or don't have the time to thoroughly test your live site after upgrade, then it's best to wait awhile until you've got more time to dedicate to it, just in case any upgrade issues arise. Most likely there will be minor releases for a few weeks to our stable branch, as we account for any small issues that arise as usage of 3.x increases.

New GitHub repositories

ProcessWire 3.x is released on our new GitHub repository at in the processwire repository. Here's an outline of the repositories we are maintaining in the GitHub processwire organization:

  • processwire
    This is our main code repository. It is used for hosting all of the ProcessWire code and also used for pull requests.

  • processwire-issues
    This is the repository that we are using for issue reports. This repo is separate from the code repo per GitHub's recommendation in working around their permissions model. If you need to submit an issue report related to ProcessWire, this is the place to do it.

  • processwire-requests
    This is the repository that we are using for feature requests. Since many of the issue reports that we receive are in fact feature requests, we've decided to provide a dedicated space for them. This will help us to keep things more organized. If you want to submit an feature request or have ideas/questions about pull requests, please submit them in this repository.

  • processwire-legacy (coming soon)
    This is the repository we will be using for ProcessWire 2.8. This one isn't yet in place, but will be soon.

I'm also glad to report that Francesco Schwarz (@isellsoap) and Benjamin Milde (@LostKobrakai) are helping us to administer the issues and requests repositories. One particularly cool thing that Francesco has setup is an issue report template. Now when you submit an issue report, it has a template that helps you make an issue report while ensuring your report provides all the potential information we might need in resolving it.

ProcessWire 3.x now on packagist

In addition to our new GitHub repositories, you can now find ProcessWire on packagist as well. Meaning it can now be installed via Composer. For instance, in creating a new project:

composer create-project processwire/processwire

…or pulling into an existing project:

composer require processwire/processwire

New readme and contributor information

With ProcessWire 3.x, we've opted for a much slimmer README file than in previous versions. Prior to this week, our README file covered upgrades back as far as ProcessWire 2.0 and I really doubt this is needed anymore. It was entirely too verbose, and perhaps overwhelming to someone new. Now our README file focuses more on the essentials and provides site links for more detailed information.

We've also added a new file which includes details on how to submit issue reports, feature requests and pull requests. GitHub automatically shows a link to these guidelines whenever you click to add a new issue report or pull request.

New documentation section

Consistent with the trimming of our README file mentioned above, a new documentation section has been added to the site. This section covers the following general purpose information:

Note that ProcessWire's README file included with the core is still used for information specific to the version it is distributed with. For instance, the README file contains the more specific information about upgrading from ProcessWire 2.x to 3.x.

$config improvements

There actually were a couple of small additions to 3.x this week as well. The $config API variable can now be used to set configuration properties via method calls. For instance, these are equivalent:

$config->debug = true;

That example isn't particularly useful though. Where it gets useful is when getting or setting $config properties that use arrays, of which there are many. For instance, the $config->imageSizerOptions array. Previously you had to set the entire array at once, with all possible properties and values present for it in your /site/config.php file (like in that link). If you just wanted to modify just one or two properties, you would have to retrieve a copy of the existing array, modify the array, then set it back, like this:

$options = $config->imageSizerOptions;
$options['quality'] = 70;
$options['sharpening'] = 'medium';
$config->imageSizerOptions = $options;

Now you can just do this (to modify one property):

$config->imageSizerOptions('quality', 70); 

Or if you want to modify more than one property, pass in an array:

  'quality' => 70,
  'sharpening' => 'medium'

Speaking of $config arrays, we actually did add a new one this week too: $config->fileCompilerOptions. This $config setting lets you modify several default behaviors of the ProcessWire 3.x FileCompiler, which a few people have asked for.

Hope that you all have a great weekend, and stay tuned next week as we get more official with our ProcessWire 3.x materials and supporting information. Be sure to read the ProcessWire Weekly this weekend as well.


  • Tom Smedley

    Tom Smedley

    • 7 years ago
    • 71


  • Zahari M

    Zahari M

    • 7 years ago
    • 30

    Welcome back Ryan and hope you had a great holiday and got some good rest and family time. Thanks a bunch for this really awesome release!!!

  • Francesco Schwarz

    Francesco Schwarz

    • 7 years ago
    • 20

    That’s awesome, thank you Ryan! Also nice to see that you git tag releases now! :-)


PrevIntroduction: Migrations Module


Introduction to the Migrations module and the issue it does try to solve. A small demo and a view into further developments around the module included. More 

Latest news

  • ProcessWire Weekly #490
    In the 490th issue of ProcessWire Weekly we'll check out what's new in the latest core version ProcessWire 3.0.229, introduce a brand-new third party module, and more. Read on! / 30 September 2023
  • ProcessWire 3.0.226 new main/master version
    After 8 months in development we are excited to bring you ProcessWire 3.0.226 main/master. This version has a ton of great new features, improvements and optimizations, plus more than 100 issue fixes. This post takes an in-depth look at highlights from this great new version.
    Blog / 25 August 2023
  • Subscribe to weekly ProcessWire news

I just love the easy and intuitive ProcessWire API. ProcessWire rocks!” —Jens Martsch, Web developer