Hacker News new | past | comments | ask | show | jobs | submit login

To paraphrase Churchill, Wordpress is the worst CMS -- except for all the others.

I'd love to find an open-source CMS (preferably in Python or Ruby) with clean, secure, elegant code and a well-organized framework that comes with a friendly admin and active, responsive development community like Wordpress, but so far I've got nothing.

(If anyone has any suggestions, please do feel free to share them!)




Mezzanine is quite nice: http://mezzanine.jupo.org/

It's Python (a Django app). BSD license. It has many advantages over Wordpress that I won't get into here, but all this is offset by one massive disadvantage: It rests on the Django framework.

Django is a nice framework for web development but it takes at least a few months to learn for someone starting from scratch. The installation process for Mezzanine requires some Django knowledge.

Installing Wordpress on the other hand requires zero PHP knowledge. A reasonably intelligent person can teach themselves Wordpress basics in days (the basics of self-hosted Wordpress, selecting a theme, selecting key plug-ins, etc.). No PHP required.

With Wordpress, it's not too difficult to select a provider (i.e. Bluehost) and have Wordpress automatically installed within minutes using Simple Script. If Mezzanine could be automatically installed like this, I think it would quickly become a popular and much more maintainable alternative.


> Installing Wordpress on the other hand requires zero PHP knowledge.

I don't disagree with your intent - it's critical to have a quickstart option for people who aren't primary developers - but there's a downside to this: a comically high percentage of exploited sites are Wordpress because it's not trivial to secure or stay updated.

That's a much harder problem to solve since you really need an automatic updater but the odds of something requiring human attention during an upgrade are high.


Your statement is patently false in two spots: One, WordPress is not a "comically high percentage" of exploited sites (presumably vs other CMS'?) - I challenge you to prove that (besides the problem of defining 'comically' for these purposes).

Two, WordPress is trivial to update, both for the core software, as well as for plugins. It's literally a two-click process to update with a constant reminder in the UI that updates are available.

I've built and manage dozens of WordPress sites at all levels, and in the few encounters I've had with compromised sites, 100% of the time it is because the end user has been willfully lazy about clicking the update button in the software.

Security is about people.


Mezzanine contains a fabric installation that can take a vanilla ubuntu install, and have a production server up and running with Postgres, memcached, et al, in a single command:

http://mezzanine.jupo.org/docs/deployment.html#fabric

I believe this is actually easier than deploying Wordpress to production.


Very cool - I didn't know about this. However, this still presupposes you have a local Python/Django/Mezzanine installation. Simple for a Django web developer, probably not too bad for a non-Django web developer - but it's a bit much to expect a non Developer to set up Python, Django, and Mezzanine on their local system.

On the other hand, I see a way to make this simple for a non developer. Set up a virtual machine with everything all set up. Then all the end user would have to do is download VMware or virtualbox. Then download the VM image with Ubuntu/Django/Mezzanine/Fabric. And then you'd be approaching the same level of simplicity of getting started with self-hosted Wordpress.


Nice Stephen, was hoping to see you in this conversation.

I think this all comes down to really the fact that 2$ hosts have php installed by default and probably don't have shell.


Some cloud providers have auto-installers, its all paid though.


Can you name 1 or more cloud providers that have auto installers for Mezzanine? I'm not aware of any. Here's a post from 4 months ago comparing installing Mezzanine on a number of PaaS providers. None seemed anywhere close to as simple as installing Wordpress on Bluehost:

http://appsembler.com/blog/paas-bakeoff-comparing-stackato-o...

Read the comments and you'll find out that Mezzanine isn't yet compatible with Django 1.5, causing headaches for those trying to install it for the first time.


> Read the comments and you'll find out that Mezzanine isn't yet compatible with Django 1.5, causing headaches for those trying to install it for the first time.

Django 1.5 came out less than a month ago. Given the size of Mezzanine, it's not surprising that it hasn't been upgraded immediately.

I'm not sure why this would effect the install process, either: any host that can handle Django apps is likely to have both 1.4 and 1.5 available at the very least.


Mezzanine lead developer here.

We'd been tracking Django 1.5 changes during the release candidates and were mostly compatibile with it up until its release. When it was released, a few issues cropped up - those were resolved within a day or two, so there was a brief period where it was incompatible with 1.5, but that's no longer true.

So it was incompatible with 1.5 for less than 48 hours. Latest version works fine against 1.5, enjoy :-)


Thanks for piping in - unfortunately I'm too late to edit my 1.5 comment.

Can you describe the easiest way for non-developers to get started with Mezzanine? Is there a way to do it that doesn't involve installing Python, Django, virtualenv, Mezzanine, other apps, etc.?


Ross Laird wrote an absolutely beautiful Mezzanine tutorial geared towards new developers:

http://rosslaird.com/blog/first-steps-with-mezzanine/

That's part one, there are several on his site.


I agree, Ross's tutorial is brilliant. Unfortunately it stops right before deployment. For a new developer, or someone who is tech savvy, but not a programmer - deployment can be a maze. I installed Mezzanine on a VPS, something I'm sure is fairly common - so the localhost wasn't available - so that complicated things a bit. Got mod_wsgi working with apache, but not with Mezzanine. Anyway, not to turn this into a support query or anything - but I think deployment is tricky. Ross ended up shooting over some code snippets and I was very grateful for them, but would love to see deployment covered in the same way he did the other parts of the tutorial if there are any takers.


I discovered Concrete5 ( http://concrete5.org ) a few years ago after building many Wordpress sites (large and small), and totally fell in love with it. It's not perfect, but it's much better than any other CMS out there for end-users, designers, and developers:

* Editing UI is on the front-end -- users just go to the page they want to edit and click on things to edit them, which is much more intuitive than a back-end dashboard

* Content on pages is a collection of "blocks", so each portion of content on the page can be edited separately (as opposed to one WYSIWYG editor for the whole page). I've even built a free addon that lets designers compose their own custom block interfaces ( http://concrete5.org/marketplace/addons/designer-content ), so if you have a "employee bio block" (for example), you can have an image chooser, a textbox for a headline, a wysiwyg editor for the description, and a page chooser for a link instead of requiring the user to fidget with alignments, floats, and custom styles in TinyMCE/FCKEditor.

* Create themes from your existing design / markup -- the CMS flows around your design as opposed to you having to construct your design around the requirements of the CMS (this is much more of a problem with Drupal than Wordpress, but still gets annoying in WP for non-blog-like designs).

* Underlying architecture is fairly sane -- definitely has some idiosyncracies, but nothing like Wordpress (or Drupal or Joomla). There's a simple MVC pattern going on so you separate your model / controller / view code, and the underlying system has a decent "API" for working with pages, content, users, files, etc. Also, if you have very customized functionality, you can just create a separate page in your site and tell the system to not do anything... that you will handle everything yourself on that particular page or area of your site.

The only downside is that it's not as popular as wordpress so the documentation is lacking and there are not as many free plugins and tutorials available (but hopefully this will continue to change as time goes on).

But it has made building CMS-based websites so much more fun for me. Hit me up ( concrete@jordanlev.com ) if you want to discuss further or have any questions.


I liked Concrete5 when I was playing around with it. I was very excited by its potential; especially looking at projects where maybe WP was overkill.

Where the bottom fell out was in two areas:

1. Paid plugins

I cannot rationally tell my clients 'this software might have a few cases where it is easier than WP to use and manage; but you'll be spending several hundred dollars replicating free functionality available on WP'.

Its a non-starter.

2. The software still looks kind of 'hokey' compared to WordPress

WordPress has lots of issues and there are a ton of other great alternatives. But, its like Facebook vs. all other social networks -- you go where the people are because it makes everything better.


1. Yes, there is a lot more of everything available for wordpress (free and paid plugins/themes). I think this is what a lot of the comments here are saying about why Wordpress is so prevalent... not because it's good necessarily, but because it just has so much stuff available for it.

FWIW, I build custom-designed sites for my clients, and I deliver complete sites that don't require any additional functionality. I don't even bother telling clients how to install new plugins, so for my situation this is a moot point.

When I do pay for plugins, it's because the functionality it provides would take me much more time to build myself (so if my rate is $100-150/hr., paying $30 or $50 or even $200 for something that would take me 4-8 hours of work is a complete no-brainer).

2. Not sure what you mean by "hokey"... the front-end is entirely designed by the person building the site, and the back-end uses Twitter Bootstrap (as of version 5.5 which was released last year). But to each their own :)


Its quite possible there have been some improvements on the back end since I tried it last. I'll have to give it another shake.


I too have moved from Wordpress to Concrete5 and was a huge fan. I appreciated the flexibility of the system, combined with the free availability. However, a few things have started to bother me about it:

* The CMS interface is very powerful, which can be a good thing in some cases, but for most sites I make it is more of a liability than an advantage. Users can easily format the headline red because they think it deserves more importance, they can add new layouts everywhere adding columns to pages etc. For pages that are carefully designed, this provides a lot of room for screwing up the site, both accidentally and on purpose.

* Due to the power of interface, it becomes a lot more complex than it should be. While this may not be a problem for advanced users, for small sites (small business, club, individual person etc) the person editing the site is often not too skilled and every new menu is a new opportunity to get lost and to click the wrong option. If I click a block, there are about seven options and only half of them should ever be used by the editor. Custom options for a site are hidden in a page properties menu somewhere and there are so many options that should never be touched on the way to get there.

* I have been disappointed by the lack of commitment to excellence and best practices by the Concrete5 team. There are so many parts of the system that are made to “just work” instead of being based on modern best practices. Half of the blocks produce HTML that you don’t want to have in a modern HTML5 based site. I know that you (jordanlev) have been working on some improved blocks, so kudos for that! Also, this is more of a general impression and I haven’t been using C5 for about a year, so things might have changed.

* Creating custom blocks comes with quite some complexity, so you either have to invest the time to create them or try to work with an existing block and work around their limitations. Try having a table on a page that can be edited by the user with the possibility to add a class to some rows so they can be highlighted with CSS.

* I’ve had a lot of performance issues, where a site would take ~10s to load the first page.

I would still use Concrete5 for projects where I know that a lot of flexibility without my intervention is needed and there are skilled people who will be able to edit the site without screwing everything up or when minimal costs are needed.

For all other (small) projects, I have started using Perch, which isn’t open source, but an absolute joy to use. It’s reasonably priced, gives you real control over the code and makes it possible to have a nice, well-documented interface for the editor where they can easily edit everything within the boundaries that are defined by the design. Where a custom block in Concrete5 needs several PHP files, an XML database schema etc you just create a HTML template file with some template tags in Perch and you have full control over the order, labels and help texts in the CMS back-end.

It took me a while to get my head around the concepts and see which problem should be solved which way in Perch, but now I finally have a CMS where I have full control over the code and can make the edit interface as easy to use as possible, with minimal effort on my part.

I realize that this sounds a bit like a sales pitch, but I have no affiliation with the developers. Of course, there’s a risk associated with using a closed-source product by a small company, but Perch has been around for a while and the development continues to be very active with a very responsive team.


And don't forget the amazing amount of functionality that's available for free using the plugin system.

It's a classic software development problem - Wordpress's complexity is both it's strength and weakness, and will probably be it's downfall one day (but not just yet)


On the other hand, most of the free plugins are awful. Many of the paid ones are as well, in fact. Many plugins can bring your site to its knees as soon as five people look at it sideways.


And the templates, some are simply STUNNING it makes you wonder why pro designers charge you so much for stuff that barely holds a candle to stuff you see on WP.

Then you install the template and everything goes to shit, you have to read some of the stuff support writes to users, it boils down to "we sold you a broken product and now we will give you just a hint about how to get it to almost work".

Still lightyears ahead of templates on other CMSs...


> Still lightyears ahead of templates on other CMSs...

Yup, but I think that's primarily because WordPress has a stranglehold on the market. Nobody will use another CMS because WordPress has all the stuff, and nobody will develop mass-market stuff for another content management system because WordPress has all the users. The network effect is strong, and displacing WordPress wouldn't be profitable enough to be worth the effort to counteract that effect.

(Obviously this is a slight exaggeration — somebody uses another CMS — but I think it's pretty accurate from a bird's eye view.)


I think the best way would be to come up with a way to port those templates to other CMS that doesn't involves rewriting the whole thing, or perhaps a wrapper?


WP templates are so coupled to WP itself, I truly don't think it's worth it.


and now we will give you just a hint about how to get it to almost work

Whenever I've come across situations like this, I assume it's them fishing for consulting hours.


Then you install the template, and realize the only reason it looks so good is because they have pretty top notch photos and pages filled with content.


I've found plugins to be extremely hit-and-miss, though.

I was helping a photographer friend who bought a commercial theme, which broke admin-side Javascript when he did the 3.4 -> 3.5.1 update. We still haven't figured out exactly what happened, but it just reinforced for me again that a) Wordpress hasn't adequately documented which APIs are stable and not, b) Authors, even of paid add-ons, don't keep their stuff up to date.


The theme replaced jQuery bundled with WordPress with some external version (eg. Google hosted or otherwise) and did it so on both the admin and front end. That's usually the cause of those sort of issues. 3.4 -> 3.5 brought up a lot of JS compatibility.

Look in the theme's directory for `wp_deregister_script` and see if anything was deregistered and re-registered (`wp_register_script`).

> Wordpress hasn't adequately documented which APIs are stable and not

If it's it in a major release, it's stable. When you buy any piece of software you're relying on its author knowing "the right thing to do (tm)". The author of the commercial theme thought it was okay to replace some bit of core javascript and din't bother to check on it. Or they didn't bother to be specific about it -- only do custom JS stuff on their theme's options page or on the front end. It's easy to do that, but you have to know how to do it (it's not documented in the Codex).


You could take a look at FeinCMS for Django. But seriously with Rails or Django - especially Django due to the admin site - a bespoke CMS is a fairly trivial endeavour. My initial CMS took a couple of days and it's been easy to extend it for every site that's come along since.

It's a hell of a lot easier for end users than Wordpress and as it's bespoke for every client, they never get clobbered with chunks of the admin that bear only a loose relationship to their own content.


I'm just catching up with this thread but the reasons that jshakes states in his blog post is some of the reason why we started hacking away on http://getbarley.com/ We'd love to open source it (API is built on CodeIgniter) when its ready.

My .2 about the current state of CMSes is that it is time for a bit of a disruption. WordPress codebase is directly tied to a lot of very big publications being able to do business daily and I don't see it being rewritten from scratch any time soon. Unless, of course, a sub-project is created. That being said, there is a lot of room for new ideas, new approaches, and new CMSes to capture at least _some_ of what WordPress currently powers. Another reason why we started hacking away at Barley... we think it is time for something brand new that is MVC from a codebase and specifically built for HTML5 / Mobile from the front-end. We hope we're right.


I built a site using ProcessWire[1] a while back, it was a joy to use. Really clean modern php cms.

[1] http://processwire.com/


ProcessWire isn't just the best PHP CMS out there right now; I'd argue it's the best thing to happen to the CMS landscape in the last few years.

There are more powerful CMSes out there, to be sure, but the crazy thing is just how completely unprecedented PW's power is for its ease of use. It's easy like WordPress, yet it's scalable to enterprise sites with deep content taxonomies.

And it's elegant. Ironic for something built in PHP, I know, but working with its simple building blocks of templates and fields and its jQuery-like content selectors comes with a feeling of "why didn't someone do this a long time ago?"


Avoid Joomla and Drupal.


I maintain a number of sites that use PmWiki [1] as a CMS. The community's small (though active), it's in PHP, and the editing isn't WYSIWYG, but the reason I ended up with it in the first place is how well the framework is organised and how easily add-ons can be packaged and included to add to or even replace core functionality. Templates are also completely separate from the PHP.

One feature of PmWiki that I've yet to come across in any other CMS are PageLists, which allow you fetch semi-structured data and other content from the rest of the site and displaying it using a custom template.

[1] http://www.pmwiki.org/


It's not open-source, but Wheelhouse (https://www.wheelhousecms.com/) is my answer to not being able to find a CMS I could enjoy working with.

It's Ruby on Rails based, so that power is always there when you need, but it then adds a flexible templating system for generation of content-editable fields (example here: https://www.wheelhousecms.com/blog/2011/8/flexible-templates...).


Our CMS, Forge (http://factore.ca/forge-cms) is a semi-open source (in that you're free to use it for whatever you want but we don't have a community built up for it yet) Ruby on Rails CMS that focuses on rapid application development. It's VERY opinionated (moreso than Rails) but it lets you get things done really quickly and mostly stays out of your way on the front-end. Shoot me a message if you're interested in checking it out.


I would love to have an open-source, Python based, CMS. Even better, one I could install on a GoDaddy domain, as easy as I can install Wordpress.

To me, that is the biggest reason Wordpress is the best, except for all others.


Why do you insist on using GoDaddy? This is a particularly terrible ISP which severely and artificially limits your deployment options... why should your choice of blogging software depend on it?


I don't insist on using GoDaddy. My point was, and I probably didn't state it clearly, that the reason Wordpress is so popular, is because it's easily installed. Also, the reason why it's piecemealed together.

I've been learning the webapp2 framework on Google App Engine. I took the Udacity CS course and the web development course. I have a site on GAE, I built using Python. It took me six months from start to finish and lots of trail and error. It was fun for me, but definitely not everyones cup of tea. Most people aren't going to take the time.


I might be wrong, but perhaps they mean "any generic commodity hosting company with a one-click installer", for which GoDaddy is the prime example.


You are correct. I should have stated it better.


"I would love to be able to solder things together as easily as I can hold them together with duct tape. To me, that is what makes duct tape the best."


Have a look at django-cms.org

The "automagical installation" is something that can be done, but it's up to the provider to do it. A Python website (as well as for Ruby) ain't a bunch of files served by Apache, but something more... smart.


Call me crazy, but being able to drop files into a docroot of an apache install and have them Just Work seems like a much smarter market strategy for uptake of your product than what can currently be done with either Python or Ruby.

Then again maybe you had a different idea of "smart".


Yes, it's a better marketing strategy for new developers and the extra hassle to deploy Python and Ruby sites probably does put people off.

But I'm not sure if 'good at attracting new developers' is the only criterion worth evaluating when picking a framework.


I like ExpressionEngine if what you really want is a CMS.


As someone who hasn't spent a ton of time extending any CMS but uses a lot of frameworks, I enjoyed EE too during the short amount of time I used it. Out of wordpress, drupal, and EE, EE is the one where writing plugins felt like normal programming since they hooked right into code igniter. (Not sure how things have changed in the last couple of years though.)


Still pretty much the same.


Main downside of EE that I remember is that when you add new functionality, the way it accomplishes this is by dynamically altering a table schema to add new columns. You can easily get up to hundreds of columns. That just seemed like it had to be a wrong approach to me, but I didn't investigate further.


Is ExpressionEngine better for medium to large sites? I've worked with it a bit and did not like it at all, just wondering what it's better for. Did not seem as intuitive for content creators or mom and pop site users.


I don't think EE is intuitive for Mom and Pop people. If that's your market then WP or something else will probably suit you better.

But if you're an actual business who can spend an hour training your Content Manager(s), then it's worth it, IMHO. It's a dedicated CMS and IMHO better to work on than WP.


It's annoying to configure, and the community is infinitesimal compared, but it has a stellar security record, and it's feels much more extensible.

The main thing to consider is that the community isn't like Wordpress's, which is often a pretty big deal when tussling with it.


I would settle for an alternate-universe version of Wordpress that is clean, secure, and elegant. :3

But seriously, if one is to rid the world of PHP, Wordpress is a great place to start.


To make up completely asinine quotes with no basis on reality -- Elephants like water, except on Tuesdays.

I'm not really interested, but I love being a pretend expert on anything.

(If anyone has any comments to flesh out this thread, please feel free to bump my comment!)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: