Why I choose Processwire CMS
What's a CMS?
A 'content management system' or CMS is a suite of tools for creating and populating websites. Installed in their Vanilla form, a CMS is effectovely a blank canvas on which to hang your beautifully designed web creations. They can be used for anything like the Whitehouse, Virgin.com, to healthcare sites or small personal blogs. Choosing a CMS is like taking a differing route from A to B, each CMS will probably get you to B (mostly), but the route might be easier with different systems and differing amounts of experience with them.
Another difference between CMS's is that some are run on opensource licenses and can be freely used and changed, where as others work on a fee or subscription model run by a company instead of the web community.
What I've used
Ok, so I've used several CMS's in my 7 or so years of web designing and have had a love and hate relationship with most. Let's run them down, I've used:
Why I use Processwire CMS
So I currently Processwire for all small web projects (personal/portfolio sites, small business sites), anything bigger with a larger team I would evaluate per project whether we'd be better off with a custom build using a framework such as Django, or a larger CMS such as Drupal.
As a web designer or client your going to need to stare at the admin section of your site a lot, and worse... understand it. Processwire has a couple of benefits over others here. As Processwires admin is built as a subset of pages you can change the look and feel easily, and you can create permissions easily for any number of different user types which can be used in the front of the site too. The worst offender of inflexibility in the CMS world I feel is Wordpress - anyone who's used wordpress and tried to change the admin to make it less confusing for clients or simply strip things back for different user roles probably needs a Knight-ship. Drupal, in my experience, is much better and has a lot of custom functionality that can be built into the admin to make clients lives easier.
Drupal has a HUGE community of developers working on the project and this can be a hinderance and a blessing. It's great that you can mostly find the functionality that you need by searching for modules, but too often have I found that these modules can interact and break each other, or simply don't deliver on the required functionality, turning the web designers job into a task of keeping up commonly used and WORKING modules list. Processwire on contrast, has an active community but it's module list extends to a hundred or so not thousands, with clearly marked stable/beta categories. And hell! I like the fact that if I need some functionality I can build it into my templates, or spin in out into it's own module for database manipulation as Processwires core is considerably smaller compared to Drupal.
God where do I start... Templating is the meat of what I do, dressing up pages and adding functionality to be accessed in the frontend of the site not the admin. When I first become a freelance web designer many years ago I used Frog (and then Wolf) CMS. In these CMS's the templating was done in the database accessed by the admin... (I know right?!). This was often an issue on a real basic level: if I had clicked save on a template and my internet was playing up either the connection would write half of the template to the database or nothing at all, losing all my work. Also annoyingly I could view more than one file at the same time making it difficult to compare templates.
So that was silly.
Drupal has always had an extrememely painful templating system, which I hear will be better in v8 but I haven't yet tried. Wordpress is pretty good on this front but makes you conform to it's own naming conversions to hook the templating in, which I always found a little too prescriptive. Processwire simply asks you, out of the files listed, which one you would like to use for each template. Simple, go wild.
Ok firstly, just to make it known: I HATE Wordpress and Drupal for differeing reasons.
Wordpress puts it's root url in the database making it really annoying to move sites anywhere without a lot of work, it's got a massively bloated admin with no standard implementation for repeatable fields - I don't always just need a body of content :( Wordpress needs upgrading constantly, and templating for the admin is a nightmare.
Drupal is big, it's bulky. This makes it better suited for larger 'more reliable' site building, but it has a steep learning curve to get up and running with simple sites. As pre-mentioned Drupal's templating is awful in v7 and has a very Drupal view on variables and functions. Much of what your doing in your templates in Drupal won't be straight PHP but be Drupal proscribed functionality, which is good and bad, but confusing for new comers.
I love Processwire for it's proactive community who love to help, it's open templating system, it's easier to use and extend admin, and the fact it does just enough for you let's you get back to coding/designing and not list making, fighting with broken modules, or stripping away things.
I would like to look into other CMS's soon and I've been interested in the concept of the NoDB CMS's such as Kirby and new paid for CMS's such as Ghost or Craft but have as yet not had a reason to try them. I've talked mainly about Processwire, Drupal, and Wordpress, they aren't the only CMS's out there but two of the biggest and the three that Ive had most experience with.