
The dire state of WordPress - jshakes
http://jshakespeare.com/the-dire-state-of-wordpress
======
jsdalton
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!)

~~~
FilterJoe
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.

~~~
stephen_mcd
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.

~~~
FilterJoe
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.

------
epoxyhockey
I might be in the minority on HN, but I think that WordPress is doing fine
just as it is. Whereas my gag reflex kicks in at the mention of a Drupal
contract, WordPress is still pleasant-ish to work with. It's simple enough
that I can get my own custom work done without having to spend a ton of time
fighting the core system. Though, YMMV depending on the nature of the custom
application, I'm sure.

~~~
kvnn
I agree that WordPress is fine just as it is.

I love that everything custom must go into wp-content. I love that any custom
theme functions are supposed to go in functions.php. This keeps things easy to
isolate and debug. Its an extreme whose opposite is Drupal, where some obscure
functionality can be popping off in one of hundreds of .module or .tpl files.

Its pretty much summed up by "my gag reflex kicks in at the mention of a
Drupal contract, WordPress is still pleasant-ish to work with".

~~~
chc
I think "more pleasant to work with than Drupal" is the new "better than a
kick in the teeth."

------
bobsy
As far as I can tell WordPress is stuck. Its success is largely down to the
number of theme's and plugins it currently has. You can build pretty much any
basic functionality by just installing the plugin's for it.

A rewrite would probably benefit the performance and abilities of Wordpress
but it would be at the cost of ALL the themes and plugins. The platform would
start again from scratch. I don't follow Wordpress too closely but I haven't
heard of any one talking about - or having the energy for - such a rewrite.

Would Automattic even allow such a rewrite to go through? It would be a
horrible transition for Wordpress.com.

As for alternatives... There are a number of good CMS with a well designed,
easy to use admin panel. They aren't popular though, plugins are scarce and
support is uncertain. This often makes Wordpress the best choice by default.
Which is kinda sad.

~~~
mgkimsal
It's massively entrenched because of the network effect of the themes and
plugins, no doubt. What will overtake wordpress as a blog/cms platform is
something that can allow for a large number of the popular themes and plugins
to be dropped in (or converted silently). It probably won't happen, but think
of Lotus/Excel, for example (or WordPerfect/Word) - both Lotus and WordPerfect
were dominant for a long time. People converted when their data/functionality
was easily imported in to MSOffice. It's not a perfect comparison, but I
suspect this will be what is needed to get people to migrate from Wordpress.

Even that will be an uphill battle, given how many wordpress installs are one-
click installs from control panels, somewhat customized to the specifics of
that control panel's paths/security/etc.

~~~
chc
But the thing is, many of the major flaws of WordPress are baked into its
theme and plugin formats. Much like with Excel, you'll need to match it quirk-
for-quirk to interoperate with it. And what's the point of simply
reimplementing WordPress?

~~~
mgkimsal
I think you could probably get away with shooting for something like 70-80%
functionality via a wrapper layer around your new APIs. Even Excel and Word
aren't 100% compatible between their own versions, and WP is going through a
transition period where many older plugins don't work either.

The goal would not be to reimplement all of wordpress, but implement a
compatibility layer suitable to emulating enough of the basics to allow some
migrations and encourage people to try out something new.

There's dozens of CMS and blogging engines out there, but no one has attempted
a WP-emulation layer (as far as I can tell). Although, given it's PHP nature,
and direct grabbing of $_GET and $_POST and such, it may simply not be
possible at all.

------
mildweed
Wordpress is making big steps in the right direction.

* Their wild pile of oddly-named functions are being deprecated and moved into well-designed classes.

* Better templating options are being promoted.

* Yes, the global $wp_query leaves some to be desired, but at its core, wpdb's WP_Query is a decently powerful database abstraction, and if used right can perform well at scale.

No, the hooks aren't going away, nor is the URL-to-template mapping. But those
are the parts that make it so flexible and easy to work with. MVC is a
controller dictatorship, WP's code is a democracy.

~~~
wonderyak
I think curation and code review should really be an important part of the
theme and plugin repositories.

Perhaps they need 'approved' and 'Open' directories for the repositories?

There used to be this issue with people having issues distributing plugins;
now with github, that is much much easier.

There is just so much bad code floating around, people not following best
practices and loading JS libraries that core includes, conflicts with other
plugins, etc. Its a mess.

~~~
eamann
Code review _is_ a part of the theme repository, if you're talking about
themes hosted on WordPress.org. Themes hosted elsewhere (ThemeForest, GitHub,
etc) have no such oversight.

Themes hosted on WordPress.org (the official repository) have to pass through
the Theme Review Team, which does enforce certain guidelines and standards:
<http://make.wordpress.org/themes/guidelines/>

There's also a large group of people moving to add similar oversight for the
official plugin repository; but when you have a repository with 24,000+
separate projects, managing a code review for each one - and for changes to
each one - is a huge undertaking.

~~~
wonderyak
I had heard there was a Code review for the theme repository, my feeling (pure
speculation) is that the review process is there to weed out truly bad coding
or malware but there was no strict edicts on style or 'the _right_ way to do
things'.

I understand enforcing methods and whatnot is probably not in the best
interest of Automattic, WordPress.org nor the community; if it is feasible at
all. I'd just like to see some kind of curation based on 'the _right_ way to
do things', if anything just so I know when I'm doing things the right way.

The Codex and general documentation has become a bit muddled with new APIs and
conflicting philosophies between developers. What used to be WordPress'
greatest asset (its documentation) is starting to falter behind a bit. It's
been hard for me since ~3.2 to figure out where I should be changing my
boilerplates as WP updates.

I follow TRAC, I keep as updated as I can on future changes and point releases
but without solid documentation sometimes I feel like I don't know if I'm
doing things the way they were intended.

Savvy?

------
jiggy2011
I'm yet to inherit a PHP project that does not contain a file called
"functions.php" and it always makes my heart sink when I see it.

What I don't get is the demand for all kinds of stuff to be built on top of
wordpress that doesn't really have much to do with content management or
blogging. For example online games, CRM systems, auction sites etc.

Seems a bit like asking for a CMS system that has been implemented as a
minecraft mod.

~~~
booruguru
People treat WordPress like a Swiss Army Knife because they can. Why build an
online directory or CRM or auction site from scratch when you can just use
WordPress? It can be a bit sloppy, code-wise, but it works and you can get the
job done a lot faster than it would take to do it from scratch.

Consider an online business directory. You could just build one from scratch
or use some script designed for that purpose but WP simply offers more
flexibility. If you decide you want a Google Map displayed in each listing,
just download the relevant plugin. If you want to add oEmbed functionality
(for, let's say, embedded videos), it's already built-in. If you want to do
advance taxonomy queries use the Taxonomy Drill-Down plugin, etc.

Yes, it's all held together with chewing gum, but it works.

~~~
bluedino
I suggested our company site be re-done using Joomla. The original site was on
an ancient platform that we don't work with anymore and we kept an entire
server around for it.

We spun up a cloud server with Joomla on it for production use, and a local VM
for testing. We had a template created for a couple hundred bucks from some
ideas our designers came up with (they can't code, so...) from an Eastern-
European on a freelancing site.

Then we just let our marketing guy (also can't code) and some interns loose
putting up content. It took a few weeks of their spare time and we had a great
looking, functional website.

Since then, the marketing guy has installed a hundred different 'Joomla
plugins of the week' and brought the site down a bunch of times, trying to
make it into a blog, newsletter, signup sheet, web store...

~~~
ewitch
Ugh I have been there with Joomla... my marketing guy thought he was creating
Yahoo! for the 21st century but in reality he was breaking the site every 3
hours and then calling me for help.

------
Chirael
The main benefit to Wordpress is its built-in content editing system that's
mostly accessible to end users. So you can build a site for someone and then
show them how to use the nice admin interface and page editor, and let them
manage the content themselves after you're gone, rather than having to be
involved for every little page change afterward.

And of course as others have mentioned, the plugins are pretty great too. A
client can ask you if you can do X (e.g., tie into their Twitter) and BAM,
install a plugin, done, you look like a hero. Compare that to having to
write/install/test something similar.

------
pytrin
The main problem perpetuating Wordpress' design woes is its plugin ecosystem
and how it depends on Wordpress' internals. A massive hook system, scopeless
globals passed around like nobody's business and overall reliance on how
"things work" right now - if you change any of that, you break most of the
plugins (the code for which looks even worse than Wordpress itself).

An idea I always have in the back of my queue is to write an adapter over the
hook system and various state variables plugins expect to have, and bridge it
(the plug-in system) to something like the Zend Framework or Symphony. The
amount of work involved prevents it from becoming more than a pipe dream.

EDIT: Added clarification for the adapter purpose

~~~
johnny22
there's already a symfony2 bundle that has started that work i think. I don't
recall the name though.

~~~
pytrin
You're probably talking about this -
<https://github.com/kayue/WordpressBundle>

Not what I was talking about - this allows you to run wordpress on a symfony
site and share user state (pretty trivial).

I'm talking about an adapter that allows you to run Wordpress plug-ins -
without Wordpress. Basically allowing you to write a normal blog system while
leveraging the huge community and functionality of WP plugins.

------
lysol
This article is good but misses a minor point: Wordpress was never intended to
be MVC, the developers had probably never even heard of MVC when it was first
developed. Wordpress is a bastard.

I've thought about how terrible actually hacking on Wordpress actually is, and
truth be told, the horribleness is so entrenched that any kind of form or
community effort to improve it would introduce incompatibilities with the
ecology that are insurmountable. Wordpress is stuck.

~~~
wwweston
> Wordpress was never intended to be MVC, the developers had probably never
> even heard of MVC

Not only _the_ developers, maybe even _most_ developers outside of certain
communities. I'd been exposed to the concepts, but I'd never worked on an
"MVC" site until about 3-4 months after the first release of WordPress, and
I'd been doing for over five years at that point.

> I've thought about how terrible actually hacking on Wordpress actually is

Hacking core is pretty bad. Heck, even _reading_ core to try and understand
what's going on under the hood can be a challenge.

But writing themes and plugins is not that bad -- indeed, if it was, I suspect
you would find a far smaller mass of them. It's not MVC, and particularly if
you're used to that organization of a web app, it's disorienting, but the APIs
are reasonably organized, well-specified, and let even n00bs get things done.

------
jaynate
Software rewrites are extremely challenging, and more often than not, fail
(good example: <http://www.joelonsoftware.com/articles/fog0000000069.html>).
Perhaps a more measured factoring approach over time would be more
appropriate?

~~~
eamann
WordPress is already going through a measured factoring approach.

Themes were ported over from a mishmash of procedural calls into the WP_Theme
object in version 3.4. Posts (and pages, custom post types, etc) were ported
over from an associative array and various procedural calls into the WP_Post
object in 3.5.

But WordPress does - and likely always will - work to retain backwards
compatibility so that existing themes and plugins won't choke after a core
update. So even when newer APIs and refactored objects exist, its up to
individual developers to 1) learn about them and 2) start using them.

~~~
jaynate
Nice. Wordpress's value is derived from its ecosystem as opposed to its
technical purity.

------
bergie
Many of the complaints here are common to all major web CMSs, which is what
drove me to write about "Decoupling Content Management" two years ago:
<http://bergie.iki.fi/blog/decoupling_content_management/>

Since then, there have been common infrastructure components like Create.js,
PHPCR, and Symfony2 that have been widely accepted by many of the projects.
Through that, the state of Content Management is now steadily improving.

Sadly, WordPress has so far stayed outside of this development.

------
lsmith77
I think the first step would be that the Wordpress core developers start to
mingle with the PHP community. I simply have not met a single Wordpress core
developer at any PHP conference and I tend to go to 6-10 a year in various
countries around the world.

I have also not seen any Wordpress core dev participate on an php-src
internals discussion let alone something like the Framework Interoperability
Group that outs out the PSRs.

Note I guess it might actually be that I did come across a Wordpress core dev,
but maybe they just didnt identify them as such.

But without communication the chances of collaboration are low and without
collaboration imho its going to be hard for Wordpress to identify and assess
the potential for new directions.

That being said, Wordpress is king of the hill and it at least right now there
is no indication of this changing. So changing might just have a ton of risks
with maybe little chance of success. Then again I guess AOL once thought quite
similar about their position.

------
programminggeek
PROTIP: If you want to get rid of wordpress, make something that will run on
cheap hosting with one click installs, and be easy enough that a non-technical
user can setup their own site with it.

~~~
andybak
Cheap hosting gets better and one-click installs get smarter.

Dreamhost and Webfaction have a Django one-click installer. There's no reason
why other shared hosts can't do the same.

------
pknight
Until the ecosystem shows any signs of slowing down, posts harping about the
codebase of WordPress will lack conviction. There is an army of developers who
don't particularly like the inner workings of WordPress. But WordPress is
thriving and has a booming commercial & free theme and plugin market. A
glorious rewrite in whatever ideological direction you want to take it is more
likely to damage its success. If a better codebase is so important, another
CMS should eventually gain more ground. In which case, it's more productive to
talk about why another CMS is so good, rather than lament about WP.

Having said that, the codebase is likely to become more javascript centric,
which might make things even more complex. It will be interesting to see it
evolve. I just don't think calling WordPress 'dire' accurate. Nor is it in
need of rewrite just for the sake of writing more beautiful code. Does it have
to adapt and evolve? Of course.

------
ebbv
Words are wind and WordPress is not gonna be "fixed" any more than PHP itself
will.

If you want something different/better, start it yourself and evangelize it.
If it really is better and you do a good job hopefully it will eventually win
out.

~~~
chc
PHP has gotten a lot better over the past few years. I would argue that PHP is
making more progress than WordPress is.

~~~
ebbv
That's probably fair but PHP is never gonna be totally sane. There will always
be weird quirks that are just ingrained in the language. Every language, every
application has weird shit because it's all made by people who are just
bundles of weird shit.

The problem is when someone else's weird shit is incompatible with your weird
shit.

------
junto
The beauty of WordPress is its ubiquity. I jump on my hosting account, click
on the 1-click install and bingo. Click upgrade WP and boom - upgraded. Choose
one of thousands of free themes and yipee-ki-yay!

The multitude of themes and plugins and the fact that I really have no need to
get my hands sticky in PHP unless I really have some desperate need to fiddle
with a pot of goo, is really what makes WordPress number one.

It might not be great under the covers, but the lipstick on this pig just
seems to be enough to keep me happy!

------
vineet
Fixing WordPress's code problems don't really need to break plugin
compatibility. They can rewrite the core, have new features requiring doing
things the new way, and have small adapters to maintain the backward
compatibility.

But yes, this refactoring is going to cost and there is unfortunately not many
people for whom it is a worthwhile expense. If Automattic is able to think
about 10 years in the future, it might make sense for them to start investing
in such a clean up.

~~~
pknight
It's a very tough act to balance, because too many changes will prompt
criticism that all kinds of things are breaking on a new update. You can't
please both ways, so things move pretty gradually.

Having said that each new version has improvements. The direction I think is
more dictated towards where the web is going. Each new release increases the
amount of javascript, even backbone has made its way into core. There will
also soon be better support for other DBs.

------
ideadude
I agree with the conclusion that WordPress developers could use more "rules"
when developing.

But there's really nothing keeping you from defining your own rules and
working within the WordPress system. It's not MVC, but you can get something
as good by keeping frontend-related code/templates in a theme and backend-
related code/modules inside of plugins.

The problem is that 3rd party plugins you use might not use your rules. So the
code you are getting for free (or cheaply) isn't coded how you would have
liked. Code it from scratch or re-factor it to suit your needs. If you were
using another framework, you probably would have had to code that
functionality yourself anyway.

While I'm at it some more pet peeve's RE some common complaints:

* Everything is in functions.php. Cool, so setup YOUR functions.php like this: require_once("includes/config.php"); require_once("includes/settings.php"); require_once("includes/helpers.php"); require_once("classes/class.myclass.php");

Problem solved.

* The posts table doesn't support my data structure. Awesome, just add your own table and add a class wrapper to push/pull data. Add methods to search or whatever you need. Sure this may be slightly easier with other frameworks because they do a bit of that for you. But if you've done this once before, you just copy and paste the code and change the object names, etc.

Maybe I'm wasn't disciplined enough when I used PHP frameworks in the past,
but with all of the structure and rules, I found myself wasting as much time
working around those constraints in special situations as I was saving using
their module scaffolding/etc.

------
neya
(Again) I agree with this article 100%. Wordpress is so messed up right now.
It's codebase is clunky and it has a lot of redundant code (variables
especially) out there.

I want you to:

Install Wordpress version 'X', develop themes and plugins for it and do an
update after say, 6 months or after a year or so and tell me it doesn't break
anything or show weird behavior. (Some versions show CPU spikes even for
simple post aggregations)

Some examples of redundant code:

Try creating pagination for a page and you'll notice they use two variables
$page and $paged for the same functionality and this has zero documentation,
you need to spend hours and hours trying to find out if it was you or if the
core of wordpress is so bad. Wordpress has become bloated because they want to
maintain backwards compatibility with previous versions, which I think is a
bad idea for NOW. They could easily launch a new version removing the support
for old versions, just like JQuery did.

Don't get me wrong - Wordpress is the best blogging solution right now you'll
ever find, that's so polished and so forth. But it's the worst CMS you can
build on top off for your projects (been there!).

Right now, the best solution for me would be:

    
    
        rails generate scaffold Post name:string title:string content:text

------
pak
The author states the problem himself: Wordpress is a blogging platform that
people are trying to turn into a full blown CMS.

Stop trying to do that. If you want a "real" CMS with serious content types
and a more thought-out plugin system, go use Drupal (if you have to use PHP
and not much time to code). If you have more bones for coding, start with
Symfony like your colleagues, or Django, or RoR.

If you have even the faintest inkling that a site will mutate from a blog to
something more serious, don't start with Wordpress. If your fundamental data
types from day one until infinity are not pages or posts, do not start with
Wordpress. You cannot make it into something it's not, even though it's
getting so popular that enough people will be tempted to do so.

The reason Wordpress is still so popular is that blogging and basic website
creation are still getting more popular, and Wordpress is still a great way to
accomplish either of those things since it will be used _exactly as intended_.
I don't anticipate these common needs will shift too much in the near future,
and the LAMP stack is just too stable and well-supported to go anywhere, so
Wordpress is gonna be around for a long time.

> _It is like trying to teach a language that doesn’t have an alphabet_

Chinese doesn't have an alphabet. It's used by many people and it's possible
to teach to those who use alphabetic languages.

That doesn't mean everybody should learn it, or that it's a model for how a
_de novo_ language should be designed today. Use it for what it's good for:
talking with Chinese people.

In general, I'd just be more careful with cultural analogies like that.

~~~
pknight
> The author states the problem himself: Wordpress is a blogging platform that
> people are trying to turn into a full blown CMS.

Trying and succeeding.

Pressbooks, book publishing engine on top of WordPress (selfhosted &
Saasversion)

Woocommerce ecommerce with 600k+ downloads (selfhosted & Saas version)

WP e-Commerce, 2 million+ downloads

BuddyPress, equips WP with social network features 1.4+million downloads

P2 Theme, quick community messaging almost 350k downloads

Collabpress, project and task management solution 36k downloads

bbPress, complete forum package, half a million downloads.

S2Member, Wishlist, DAP, MagicMembers, WP Member are among many other
membership site solutions, >1 million downloads

Pods, Toolset and other solutions that extend its CMS capabilities, easily
200k+ downloads.

EditFlow, adds professional editorial workflow experience, 50k+ downloads

Fundify, Ignition Deck, crowdfunding solutions on WordPress.

And look in the wild, sites running WordPress: Real estate sites, agencies,
hotel sites (there's a WP saas for that now too), restaurant sites (Happy
tables), auction sites, market place sites, portfolio sites, photo gallery
sites, governmental sites, membership sites, marketing sites equipped with
landing pages etc, news sites, online magazines, Event sites and more.

Just a blogging tool, I see. Do continue to look away as it is only going to
get worse (in your eyes).

------
pjbrunet
Most people using WordPress are not developers. So naming conventions that
might make sense to you don't apply to the average user.

It's called "wp-content" because that's where all personal, custom stuff goes
--all your photos, plugins, etc. (Not including your MySQL data.) When you
upgrade WordPress (which wasn't always automatic) your "content" is left
untouched--because you want your own stuff apart from the rest of the
application. The other directories, more or less, are owned by the core
developers and Automattic.

Since 2004 when I started blogging, I've watched WordPress add so many bells
and whistles. It's the opposite of what made it appealing in the first place,
an elegant "poem" of an application. Now with so many developers working on
it, it tries to be all things to all people.

What's interesting to me, to see websites outgrow WordPress. Sometimes your
content expands such that WordPress can't deal with it. WordPress is a one-
size-fits-all solution and that's ultimately limiting. At that point you can
contact someone like me to create a custom application from scratch that just
does what you want--not 1000 extra things you don't want, yet preserving your
URLs for SEO, etc.

------
booruguru
Here's a suggestion,

If we can't get WordPress to change, why not fork it and build a "developer"
friendly version while maintaining compatibility with subsequent iterations of
WordPress?

Frankly, I find the people who run the WP development community to be
insufferable (Matt included). If you've ever read their discussions for code
changes, it just makes you want to pull your hair out. Their pedantic in
fighting rivals Wikipedia.

~~~
pekk
Maintaining complete compatibility with WordPress, including any future
changes, while trying to clean up design problems (how is this actually
possible without breaking anything?) would be a full-time unpaid job from hell
and who would actually thank you for it?

~~~
johnward
Exactly. Everyone that says "fork it" also say "maintain plugin/theme
compatibility". That compatibility is part of the problem. The best solution
is something that is easy to install and administer for non-dev users. To get
something with the extensibility of wordpress will probably take a very long
time. For now we just have to deal with what wordpress is.

------
dave1010uk
As others have mentioned, forking WordPress won't help. Writing abstraction
layers might help a little (I've done that myself a few times) but instead, if
you use WordPress, I'd encourage you to get involved with improving it
directly. It's a slow process (especially as WordPress still supports PHP 5.2)
but there is progress.

If you know PHP then there's loads of issues you could get involved with to
help move it forward. Here's just 4 that could do with some attention:

* PSR-0 autoloader <http://core.trac.wordpress.org/ticket/21300>

* Use a Symfony style request object instead of globals <http://core.trac.wordpress.org/ticket/22325>

* Use PDO for database access <http://core.trac.wordpress.org/ticket/21663>

* PSR compatibility <http://core.trac.wordpress.org/ticket/23357>

------
jmcmichael
I've used Symphony CMS (getsymphony.com) to build several websites, one of
them quite large. I love it. It's the first CMS I've used that isn't a total
mess architecturally. At it's core it provides a highly customizable interface
for maintaining a database of content, XML data sources that pull from that
database (or external XML sources), and XSL templates that are combined with
the XML to produce the HTML pages of the site.

It's totally open source, and development is carried out on github (which
includes _all_ its extensions (<http://symphonyextensions.com/)>). The
developer forums on the main website are active and many of the core
developers answer questions rapidly. I can't recommend it enough.

Its downsides are 1) XSLT (some people can't stand it) 2) No polished off-the-
shelf templates, you'll have to roll your own (but it's easy enough to get
something up with Bootstrap and tweak it for your purposes).

~~~
kemoly
I wondered if Symphony was going to show up here! I'm also a fan. I've built
small websites with it for over a year.

As to XSLT: I find it close enough to HTML to feel that I'm straight up
writing the front-end, but with a lot more efficiency.

------
homosaur
I could not agree with this more. As I've developed larger and larger sites
the more I've become frustrated with how hacky and garbage even "solid" WP
code is. For crap's sake, if you use child themes you have to make functions
with no return values. You have no choice.

Is a rewrite the answer? I dunno, but I sure as heck moved the WP sites to WP
Engine rather than risk our servers' health on trying to deal with security
and performance.

I still think it's hard to beat when dealing with a lot of content. There's at
least a hundred ways to enumerate all the ways the admin sucks, but it is
pretty functional compared to say, Joomla, which we migrated from. Joomla is a
black box with no particular logic where I have to reach for horrific third
party bullcrap to accomplish even the most basic tasks. If you have experience
with Joomla, imagine managing 5000 pages with it.

------
beatpanda
Somebody writes this article every few years, and whenever it's published, a
greater percentage of the Internet runs on WordPress than at the time the last
article of its type was published.

WordPress is pragmatic, and that has paid off for the project. I think more
projects should follow their example.

------
raffjones
Interesting article. I actually do like developing for WordPress, but agree
with you on many points. I'm just in the middle of having to write extra code
to create a table in the database to hold some additional meta data for a
custom taxonomy (sigh). Like many developers (I suppose), I've just built a
small set of tools that allow me to get round some of the major issues, and
starting with a decent theme (I'm quite a fan of Roots) can allow some pretty
solid web development. It's never going to be quite as good as a ground-up
build, but finding the hours to push into user interface development is hard -
the settings and admin screen APIs in WordPress aren't bad.

------
photomatt
Some really excellent comments in this discussion. While there is some
predictable reactions (my way is right! your way is wrong!) I'm impressed by
the number of people who've taken a more nuanced view of how and why platforms
get adopted by developers and regular folks.

One thing I'd encourage people to think about in terms of how we take
WordPress to the next level isn't just _that_ we have a ton of plugins and
themes that people love, but how we got them in the first place. That network
effect wasn't always there, it developed over time, and was caused by
something.

------
ereckers
I do a lot of work in both Magento and WordPress and Magento has often been
cited as a way of "doing it right" being built on Zend and all. If that's
doing it right, I'm happy with doing it wrong.

WordPress is a great way of getting going fast. Probably a lot of guys come
upon the thing just about the time a product is ready to be sunset or needs to
be introduced to a team. Anything at that point is due a rewrite. I would
imagine this experience alone is the cause of much consternation and whatever
the product/website would have been built on would be the whipping boy.

------
dpk666
For all the people mentioning Joomla, are you talking about 1.0, 1.5, 1.6-1.7,
2.5, 3.0? The framework, the CMS, or both? These are all radically different
products, which is symptomatic of the challenges that project has had. I'm
curious to know who thinks it's gotten better, or worse, and why -- or if
everyone's just recalling the 1.0-1.5 era when Joomla had more adoption than
anything else like it.

------
moeffju
There is always Habari, the newer, modular “microkernel”, modern PHP based,
Apache-licensed CMS/blogging platform. Since it’s PHP, it features the same
easy deployability. But it has stagnated in the last years and only recently
has development taken up speed again. If you’re interested in hacking on
something like that, drop by irc.freenode.net #habari or mail to habari-
dev@googlegroups.com.

------
ErikGelderblom
To ease out some of the pains James writes about, I created a bare Wordpress
repo that is designed to separate content, media and wordpress' own files so
it works better with git, git submodules and deployment with ie. capistrano.

<https://github.com/ErikFontanel/Wordpress-Corpse>

please fork and adjust it to your own likings!

------
DowntownRob
To rewrite WordPress successfully (so it doesn't break everything all at once)
would take a hybrid approach, making hundreds of rewrites of smaller chunks
over time, maintaining compatibility while improving the code, allowing theme
and plugin authors to support new implementations as they are offered,
deprecating old ones over time.

Which is exactly what's already happening. ;)

------
mikepurvis
Rather than tackling a rewrite of Wordpress itself, what about a set of
conventions and practices for add-ons and themes, a clearly defined set of API
functions, and an automated validator to enforce at least some of it.

Even if the validator was just a grep for function calls outside of a
whitelist, that would be an excellent starting point.

------
g5604
No mention of modx yet?

More a framework than an CMS really, the best thing about it is you can build
how you want to i.e everything is incredibly flexible. For clients you can
easily create a super simple interface for editing.

~~~
jaygilmore
There was mention of it but it's gone now for some reason.

------
markman3200
I was wondering if I would see Umbraco (www.umbraco.com) here - I just used it
for a project and walked away very impressed. And the client loved it. Version
6 is moving to MVC.

------
at-fates-hands
it seems to me WP has tried to be everything to everybody and the cracks are
finally starting to show.

I've never been a huge fan of WP for several reasons. One is the horror of
trying to crowbar one of their themes into what I want it to look like. The
second is the ungodly amount of bloat the have on their themes and templates.

Just give me something stripped down and lightweight that I can build on. Too
many of these frameworks are just constantly in your way when you need to do
something.

~~~
wonderyak
You don't have to use anyone else's themes. You can create your own; and its
almost as easy as making a regular static site.

There is never a need to 'crowbar' anything when you can create the entire
look and feel from scratch.

------
jdrenterprises
For the average person, Wordpress is VERY easy to install, and moderately easy
to use.

For geeks and people who understand technology and programming, I suppose
Wordpress wouldn't cut it.

------
keepkalm
There is nothing stopping you from forking your own version of WordPress. It
is GPL and as long as your derivative work is also GPL you should be fine.

------
leeoniya
i've had to hack additional functionality into some third-party wordpress
plugins for clients. it is a nightmare compared to my own PSR-0/Composer
projects. it's just an incredibly twisted kludge of code stuffed with globals
and craziness. most unpleasant experience ever.

sadly, wordpress's massive plugin ecosystem of poorly written spaghetti is the
very thing that will prevent it from being rewritten.

------
WimLeers

      WordPress needs more rules
    

I'm convinced Wordpress is successful _despite_ this.

 _No rules_ implies _very low barrier to entry_.

~~~
chc
I think you mean it's successful _because_ of its lack of rules, and I
disagree. WordPress's low barrier to entry stems from a combination of PHP's
ubiquity and a positive feedback loop of popularity. More rules wouldn't hurt
either of these factors.

~~~
johnward
More like PHP's ubiquity which leads to easy installs for non-developers. The
reason wordpress is so successful doesn't revolve around the devs. It's
because your everyday blogger can setup a blog in 20 minutes. The dev focus
comes from having so many users.

~~~
chc
That's pretty much what I was trying to convey.

------
dabaR
Read this so you can get clued in, jshakes: [http://wpengine.com/2013/03/alex-
king-on-the-maturity-of-wor...](http://wpengine.com/2013/03/alex-king-on-the-
maturity-of-wordpress/)

See some of the real world issues, not programmer-level gripes you bring up.
Which BTW show your lack of creativity in solving problems through thinking
outside of the box.

I'll give you an example:

If you don't like get_permalink(), make yourself a get_the_permalink() {
return get_permalink(); }

------
rheide
I would pay money if someone remade Wordpress on Django (and still kept it
compatible with existing plugins and themes).

~~~
scribu
You do realize that WordPress plugins and themes are written in PHP and Django
is written in Python, right?

------
sutro
<http://www.dreamsongs.com/WorseIsBetter.html>

------
dwenaus
as a wordpress developer using it as a framework I love this like "WordPress
isn’t a platform suited to anyone except those unlucky enough to have somehow
become WordPress developers."

I'd love to see his vision of a code-cleanup happen to WordPress.

------
mtgx
Could it be built on top of node.js so it's all Javascript?

~~~
eamann
Considering Node can talk to MySQL - yes. Well, yes BUT.

The "but" comes in when you talk about existing themes and plugins - some are
much larger applications, and all are built in PHP. So to migrate, you'd need
to reimplement both WordPress itself _and_ various themes and plugins in Node.

Not to mention that you'd need to build traction with developers to keep
supporting it. Not every PHP master is also a JS master, so finding buy-in
from the existing community will be hard.

Also, remember that PHP comes standard on most shared hosting environments -
which is where WordPress is most often installed. Node, however, does not. So
once you have developers on board, you have to get hosts on board to help set
up the application.

------
hilko
I would argue, as others have done, that the author is correct in his points,
but a rewrite would throw away the main advantages of using Wordpress over
alternatives.

There are tons of successful initiatives to create a 'better' CMS. But they
suffer from a lack of ready-made modules and a lack of developers 'fluent' in
these systems.

In the end, it's about the right tool for the job, and unfortunately Wordpress
is often the right tool despite all its issues. If we are caught in the
Wordpress ecosystem, then perhaps the best thing to do is to 1) contribute to
making it (slightly) less bad, and 2) create best practices for theme and
module development, improve documentation, etc.

Why anyone would want to do that is beyond me though, but I deeply respect
those who do so, instead of writing their own shiny and clean solution.

As for me, I started with Wordpress, no clue what I was doing, and very basic
knowledge of programming. Wordpress worked, and I made a living.

Then I 'upgraded' to Drupal, and loved its flexibility and powerful modules,
worked out my own 'admin interface' and happily used this base system for many
complex sites. I made a slightly better living.

Then I got into Rails development. I learned about 'environments', TDD, MVC,
and so on, and soon realized that Drupal has many, many drawbacks.

(And, as an aside, to configure and maintain these Drupal sites and the
interaction of its powerful modules requires a skill and mindset that is about
equal to writing (basic) Rails sites or using other frameworks. Except that in
Drupal, instead of version-controlled code, you have one giant database and
you click click click forever instead of writing a few lines of code.)

Now, I'm doing (in the eyes of many front-enders) weird shit like learning
Clojure and Node.js to see what I can do with it, playing with a bunch of
different frameworks and CMS offerings, and trying out these new-fangled
front-end-heavy buzzwords like Angular, Backbone and Ember.

And yet, if a client has little money, or if I need something quick, I often
still opt for Wordpress. It hits the sweet spot. If a client has more money
later, well, then I could look into using a framework and rolling out
something myself. Drupal, despite it's deceptive initial attractiveness, is
almost never a good solution.

I use Wordpress mostly for the client. In the same way that I've inherited
Wordpress sites after a developer disappeared, or if a designer couldn't
figure it out, I assume others might inherit my projects. If the client has
little budget, I really don't want them to be forced to hire expensive Drupal
developers, or 'proper' developers who can figure out 'obscure CMS <x>'.

But generally I try to stay away from those clients, if I can help it.

------
corresation
"I’m not going to list all the things that make WP at odds with best
practises, but here are the brass tacks"

There is a strange paradox that an infatuation with best practices seldom
yields a successful product...because it seldom yields a product at all. And
those products that do scratch itches and grow and evolve tend to have widely
criticized code bases.

Wikipedia, Wordpress, Firefox, mySQL, Linux...there isn't a successful major
open source product that doesn't have legions of code purists telling everyone
why they're in dire condition and _if only..._.

Not trying to be cynical, but it is odd how often these sorts of posts appear,
always under the pretense that something must be done now or everything is
going to fail.

~~~
MostAwesomeDude
These things are not all alike.

Fx has had many man-hours put into it, attempting to reduce their technical
debt and improve the efficiency of maintenance work. They know what's still
wrong in the browser, and they're working on it, but progress is slow. There's
a reason that Mozilla's working on Rust, and it's not just for S&G.

MySQL is so bad that when MariaDB happened, several long-standing
architectural issues were cleaned up. Maria's got a lot of improvements that
were made in response to MySQL's community not making those improvements.

Linux... I don't understand why you put Linux on this list. The only people
complaining about Linux architecture are:

* Tanenbaum followers who believe that microkernels will save us all

* Binary driver authors who want Linux to be more amenable to their evil schemes

* C++ weenies who are offended by Linux's refusal to adopt C++ as other kernels have done

* C hackers who don't like the brace style of Linux

All of these groups have axes to grind; they're not approaching things from
some position of "this code is not performant enough" or "if only more things
were supported."

WP and Wordpress picked the wrong implementation language. It happens.
Migrating them off of PHP is non-trivial. We already know all of this. It's
not that we think everything is going to fail; it's more that we have seen
Wordpress get hacked so many times over the years and we're sick and tired of
it.

Edit: Attempt to salvage list formatting.

~~~
mtts
> WP and Wordpress picked the wrong implementation language.

No they didn't. PHP makes sure you can deploy them just about everywhere for
very cheap and without really knowing what you're doing.

