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
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 github.com/processwire in the processwire repository. Here's an outline of the repositories we are maintaining in the GitHub processwire organization:
This is our main code repository. It is used for hosting all of the ProcessWire code and also used for pull requests.
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.
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 processwire.com site links for more detailed information.
We've also added a new CONTRIBUTING.md 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:
- Installation of ProcessWire
- Upgrading between versions of ProcessWire
- Troubleshooting installation and upgrade issues
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.
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; $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):
Or if you want to modify more than one property, pass in an array:
$config->imageSizerOptions([ '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.