I've volunteered to redesign a non-profit's website and just by doing a simple view source I discovered that they're currently using a WYSIWYG (I think it's Dreamweaver.) The code it outputs looks like a mess and I'd like to clean it up for them. My only concern is that once I hand it off to them and they're on their own they won't know how to maintain a hand-built site. What would you guys do in this situation? Is there some software solution that would allow non-developers to maintain a site? Wordpress comes to mind but the site really isn't a blog.
Seriously? Use WordPress.
Hang on, let me say that again. Use WordPress.
WordPress is great blogging software, but it is also quite feasible to use it as a CMS in its own right.
It comes bundled with the Tinymce editor, so even the WYSIWYG editor produces standards compliant code.
There are of course a whole bunch of CMS solutions out there, but WP is totally intuitive and easy to use.
It is also totally configurable and there is a plugin for just about anything you need.
If you're not convinced, then maybe a more lightweight solution such as Perch might suit.
In this case it is your duty to wean them off of this and to hand-build their website. Your client will need educating in the failings of this method, especially in the merits of correct coding and supporting web standards and browsers (incl. legacy browsers).
You're right to ignore WordPress, because the site isn't a blog and WordPress is a blogging tool. A lot of people use it like a CMS, but it's a very poor CMS and having dealt with a lot of clients that have been ditched by their previous designers/devs on WordPress they will be in for a world of confusion.
If I were you I'd use [Concrete5 if you're limited to PHP and a Linux server. If you get to choose the hosting I'd probably go for [url=http://umbraco.com/]Umbraco](http://concrete5.org/) and host it on a Windows box. I've chosen the two of these because they are by far the most user-friendly solutions I've used. Concrete5 is a good CMS that users find easy to work with and Umbraco is fantastic for developers and is really clean.
One other option you could take if you don't require a lot of the power of a CMS is to build the site yourself from a framework. I'm currently doing a fair bit of personal work in Django and as a developer I love it. Python is a great language to use, you get total freedom on how you want things to work, the framework makes building features for the site super easy and most importantly you can build the Django admin interface anywhere you want to give the users somewhere to change their site.
Could you qualify that a little?
What makes WP a very poor CMS?
I'm not looking to start a flame war, but I have only had positive experience in using it both as a blogging platform and a CMS in its own right.
I've also found it intuitive, both for developers and clients: "Dashboard -> Pages -> Edit" is about as simple as it gets.
If it falls down short in some way, I would be interested to find out how, as I am always open to refining my opinion / learning new technologies.
I'd not heard about Concrete5, so I will check that out now.
@Pullo: There are a number of reasons why I would highly recommend that developers ignore WordPress for anything other than being a blog.
First of all, I will say that it has a lot going for it. It has a great community backing it, and despite the code base it is a well-polished blogging script.
However, it was simply not designed to be a full-scale CMS. This can be seen clearly by looking at the code behind WordPress. There is a lot of poor PHP code out there, and WordPress certainly falls into that category. I believe that code shouldn't be thrown away as scripts like WordPress have several thousand man-hours of bug fixing and development attached to it, and to throw that away would be stupid. However, in turning a blog script into a CMS script and NOW into an application framework it has become both extremely bloated and not fit for purpose.
I've used plenty of CMS's over the past five years, and I've found the best sign of a good CMS to be how it handles caching out of the box. Install Concrete5, Umbraco, Sitecore, Drupal or any other CMS and it'll chug along fairly nicely under fair load. Unless you've set up the WP Super Cache plugin you'll find that even under minimal load WordPress is going to drain the CPU cycles from your server, and even then it's not a great caching solution. The fact that the most popular CMS in the world will happily query a live database for EVERY bit of content is insane.
WordPress works fine on a Linux server, but try running a moderately powerful WordPress blog on a Windows server and see how IIS likes it. A simple Google search for "wordpress digg effect" or "wordpress slashdot effect" will show thousands of dead blogs and websites, simply because a CMS couldn't do what every other CMS does first by design.
Secondly, WordPress is a haven for a entry-level and non-developers, and as such many people you find touting WordPress can't do anything past install plugins to get features to work on a client website. I've known people that I considered credible developers crumble the second a WordPress plugin threw an error on their client site. Hell, a client from one of my previous companies was left without a site because a form plugin died and took their site with it. In the time it took for the developer to Google and pester the WordPress community for help we had the client back up and running on Umbraco. It goes to show that plugins may seem like a good idea in theory, but it leads to an uneasy culture of non-developers patching together websites with other peoples code, and not being able to write code to fix issues themselves. Ask your average WP developer what other CMS's they've used and more often than not it'll be either nothing or "LOL drupal sux".
Finally, there is a huge myth floating around regarding WordPress's ease of use. I've yet to see a single formal study to suggest that it is more usable than any other CMS. In fact, given that WordPress is still ultimately a blog I find that clients are often confused about the structure of their site in WordPress, where they can modify settings for their site and the whole post/page difference. It's almost 2013! Even the lumbersome Drupal is dragging itself into being more usable for both developers and users. You say that WordPress's workflow is easy, but that doesn't mean that every other CMS under the sun isn't that easy. Hell, I use a ten year old enterprise CMS called Sitecore and that's as simple as click the content item and edit.
I could carry on for hours, perhaps even days. The point I am trying to make is that WordPress is not a CMS by design, and that the first rule of development is to use the correct tool for the job. Building a site in WordPress is like writing a book on post-it notes. You could do it with minimal fuss, but soon you'll want to do something like number the pages or switch page orders, and you'll wish more than anything you used paper.
Thanks for the detailed response ULTiMATE,
I suppose I'm coming from rather the opposite direction.
The first CMS I used was called Imperia and my experience with it was horrible!
We have a rather bizarre setup at work. I work at a uni and the main WWW servers (where all of the departmental websites are hosted) do not support PHP.
This means that if you want any kind of CMS solution you have to use a pre-configured, painfully inflexible Imperia instance.
I made several websites using this CMS and hated it more and more with each one.
When I started out making websites for clients, I tried using Joomla.
I read up on it and followed a few online tutorials, but found the learning curve to be quite steep (not overly difficult, but I had to learn a ton of stuff to get anything done). I also didn't get on with modules and components and found the whole system difficult to work with.
To be fair to Joomla, this was some time ago (it has probably improved considerably since) and I was already prejudiced through my experience with Imperia.
I then swore off CMSes for a while and built everything by hand. This was fun
It wasn't until a while back that everyone on SitePoint was going WP crazy that I had a look at what all the fuss was about.
I installed WP and had a basic site up and running within a very short period of time.
I loved it!
I started using it for client websites and they loved it, too!
For a small business site, it is (at least at first glance) ideal as a CMS.
So, that is where I was at until recently, but I guess I started (unknowingly) recognizing some of the points you made above.
For example, I noticed that a lot of my WP installs were sluggish, so I installed the Total Cache plugin.
I also started playing around with 'the loop' and noticed that WP queries the database for almost any bit of content it needs.
I never really thought about the cause or the implications of these things.
Anyway, this is all getting a bit off topic, so I'll stop here.
I've got a new project starting in January. I'll check out some of the other CMSes you suggest and see if one of those fits the bill better that WP.
It's also worth checking out ExpressionEngine. When I first toyed with CMSes I was totally bewildered until I came to this one, and it's amazingly clean and flexible. Your HTML and CSS remain separate from the CMS, so you have total control, and you can place bits of updateable content anywhere and everywhere with incredible ease. It's all the better now that there is a free version again for non-commercial use.
I can also recommend ExpressionEngine. I use it for my own sites.
I don't know how complex the site in question is, so it may or may not be overkill to use ExpressionEngine.
There are other solutions out there, however. Perch, for example, is very good and a much lighter CMS. It's a commercial application but well worth the small price tag. Same goes for Statamic.
If you want your clients to apply clean markup and not use a WYSIWYG editor, which is the default content editing tool for almost all CMSes, then you could add something like Markdown or Textile. Most CMSes have a third-party add-on for these.
This is actually rather eye opening. After plenty of (great) blogging experience with WP I was about to recommend it for CMS to a few people as well.. But you are correct. It is not meant to be used that way.
Wordpress has been open for hackers even with the latest updates. I think Wordpress should be used for blogging and any content that needs categorization with registration. Everything else could be done in much simpler manner.