It's an horrible peace of software, with horrible PHP code 4.x style, a db schema only a beginner could have come up with and an ecosystem with a lot of trash(not even talking about the admin which is hideous ). Yet it's a blazing success in the CMS space, because of 3 things that are insanely overlooked by other CMS developers :
- Ease of installation
- It runs on a minimal PHP/Apache/Mysql setup (cheap hosting)
- It has a great backward compatibly, unlike other solutions that break everything with each major version.
If one compares with Drupal for instance, I mean with Drupal, a designer can go really really far without writing a single line of PHP code, aside from a few tags for templates(but it's really light). You have views, CCK and a lot of handy stuff.
On the other hand, one cannot customize Wordpress without writing more than a few php tags or downloading a plugin that will mess up with the original db schema. And good luck customizing the admin(easily done with Drupal).
I get that Wordpress is more of a "platform" businesses can build products upon, but who would really want to build on that shitty core,with that db schema? one can say i'm negative and unfair in my criticism, but I think my arguments are valid.
It's true however that while Wordpress gets a lot of heat from PHP devs, there is no effort from the PHP community to build something like Wordpress with a better codebase, and a better db schema. So Wordpress still has a reason to exist.
Reminds me of Javascript : dismissed as an horrible toy by smart people, fits an niche, becomes popular and ubiquitous , smart people now have to work on these deployed codebases....
Next, you mention:
> Yet it's a blazing success in the CMS space, because of 3 things that are insanely overlooked by other CMS developers : - Ease of installation - It runs on a minimal PHP/Apache/Mysql setup (cheap hosting) - It has a great backward compatibly, unlike other solutions that break everything with each major version.
The actual, true and documented reason that WordPress has become a blazing success in the CMS space is the ease of use of the backend administration console. This comes from developer and client feedback in poll after poll of WordPress users and developers.
Regarding:
> If one compares with Drupal for instance, I mean with Drupal, a designer can go really really far without writing a single line of PHP code, aside from a few tags for templates(but it's really light). You have views, CCK and a lot of handy stuff.
I've heard Drupal developers themselves actually look to WordPress's method of having the option of handling these things in code/configuration as a net positive. It's trackable and portable.
--
I've got to ask. If a builder of websites was looking for something that wasn't horrible and built by smart people, which one would that be?
I hope he doesn't reply NodeJS/Express/Ghost cos the corporate site and blog of Strongloop (main nodejs core contributors and express mantainers) is built with wordpress... And with django and rails core devs we could have another surprise... Who knows...
xD
Looking for one CMS or platform that can fit every kind of website seems strange to me. It'd be sort of like recommending a TV-DVD-DVR combo unit to both your mother who just wants to watch some TV, and to your developer friend who wants a high-performance gaming display.
I've worked primarily with Drupal for the past 8 years. But the clients tend to have very complex needs, including multiple roles and workflows applied to varying content types.
If a client were to come to me and want a blog or a simple brochure site that will be edited by no more than a couple marketing staff, I will tell them Wordpress might be a better option.
As far as WordPress-contenders go, I think OctoberCMS looks very promising. It's dynamic like WordPress, but it natively supports a Git/SVN workflow, so there's less "behind the scenes magic" going on.
If you've never experienced anything else, of course what you have is always the best.
Secondly, I agree with the OP. In fact I am fairly sure most of HN does because we look at something like Apple where the clear winner is the one who took the time to build the best technology and product together. And yet when we look at poor technology still achieving market dominance we realise something is off kilter - the market signals are not working correctly.
It does matter that the underside of the stone is painted too.
You've answered your own question :-D
When you say WordPress is horrible, what you mean is that it's horrible in terms of various things that matter to you -- things like a clean database schema and freedom from legacy code. But what's most important to you is not necessarily what's most important to everyone else, and it turns out that for lots of people ease of use and simple installation on cheap commodity hosting are much more important than what things look like under the hood.
We as developers tend to forget this a lot -- we look at popular products that are technically funky and think "how on earth can that be popular?" But the answer is usually just a reminder that we're not really representative of the market for software in general; we care about things that nobody else does, and are willing to put up with pain points nobody else would.
I must disagree with these statements. Although it is not the most elegant one I've seen, using the word "horrible" is simply out of place. Have you ever built some sites with it? Do you realize that WordPress is developed in open source with many talented people working on it every day? The DB schema is actually quite flexible, being able to accommodate various kinds of data without many modifications. Apart from that, you can write your own beautiful code according to the newest PHP standards if you want in your WordPress-powered projects. No-one is forcing you to use old versions of PHP.
As far as the success of WP is concerned, I think the reasons for it are very similar to why PHP is successful:
- A huge community with plenty of plugins and themes.
- Supported on basically any hosting service.
- Being free with free updates.
- Refined administration panel with many subtle features like auto-saving posts to Local Storage, which can save your article in case of an accident.
and much more...
I'm not saying that WordPress doesn't have its own issues, however, ignorantly stating that it is "an horrible peace of software" is simply outrageous.
You really can't. Wordpress actively prevents you from writing beautiful, modern code. When writing themes, every template has to be in the root directory of the theme, creating an awful mess. All of wordpress has global variables and/or state in functions that is simply inescapable, making it impossible to write unit tests. Dependency injection is completely out of the question.
If you want to modify some behaviour and someone hasn't thought of putting in a filter for the exact thing you want to modify, it's not a matter of extending a class and overriding a method. Because wordpress is littered with huge god functions with global state, you basically have to copy/paste hundreds of lines of code and make sure that you keep that up-to-date with core updates yourself to prevent future bugs.
Several times I've gone into plugin development thinking "this must be possible without making too much of a mess", thinking I can separate out the unit-testable bits and write a thin WP wrapping layer that deals with the global state. Every time I've been disappointed.
It's not about PHP versions alone. It's that Wordpress was designed in and for PHP 4, and was never modernized. That's an inescapable fact, regardless of which PHP version your server runs.
So Drupal, like Oracle, is a consultant's dream. Your clients will have to keep coming back to you because the system is so damn complicated to do really basic things.
After 7 years of full-time Drupal, I'm pretty convinced that it's intended to be a wealth extraction tool first and a CMS tool second.
"You can build a website with no code! Impress and sell your boss on it in a day! Get far enough down the road to not be able to back out and then spend the next several years of your life trying to hire insanely expensive developers to write all the code you need to write to make your moderately complex functionality needs actually come to life."
The tags you need to know to create a basic theme are pretty straightforward, and the market you can reach by learning them is massive: Wordpress is said to power 23% of all websites. If you're a designer who knows HTML and CSS, the learning curve for those templates might be a little bit steeper than for other CMS products, but the number of potential buyers for your theme is dramatically larger.
>It's an horrible peace of software, with horrible PHP code 4.x style, a db schema only a beginner could have come up with
I've been tasked with making Wordpress do things it never should have done, so in service of that I've read a good chunk of the source and I totally agree with this, some of the code is truly abominable.
On the other hand, of everything I've built that has been handed over to clients for content management, Wordpress-backed sites are the clear winners in terms of how much support is required after delivery.
Smart use of custom post types and custom fields, however hideous the code behind them may be, saves time in development, allows you to build an admin that makes sense to non-technical folks, and helps prevent you from re-inventing the wheel for each and every project. It also means that a pretty huge set of developers will be able to pick up your work later on.
If I had to, I would choose Wordpress over Drupal every day.
You can literally setup a decent working website in a day with WP. Want to create pages in WYSIWYG ? Done. Want to manage users ? Done. Wnat to add your social icons ? Oh, there is a plugin for that which is rated by 1000s of other clients. Want to sell stuff ? Np. Add the famous "woocommerce" plugin and you are on your way.
Ok, I made it sound simpler than it can be for users but as developers, it is absolute pleasure when I can setup a client in hours using wordpress and they are on their way.
You can find a theme for $45 that will cost $30K to develop from scratch.
You'll find a few plugins that will do exactly what you want that will cost $50k to develop in-house.
WordPress is great because you have things that will cost you $xx,xxx to develop and they are already available for you at a minuscule cost.
You can get themes for $40-60 that give your site the look of something that would take tens of thousands to develop from scratch.
Why would I want to learn an obscure theming language when I can do my theming in one of the best documented, most used languages for web-development?
Wordpress is a hackers dream. You can open the database and understand what is going on, you can make you site do anything because themes are in php, so even if you don't understand how to write a plugin, you can still hack together the functionality you desire.
The alternatives have been "build-your-own" frameworks with hundreds of libraries but nothing out of the box. When I bring this up, I typically get "but everyone's security needs are different". With WP powering 20%+ of the web right now, that's clearly not true. The dominance of a few oauth systems tied to walled-gardens proves that false even moreso; you, mr senior-enterprise-developer might have extremely-specific use cases (CAS tied to legacy Novell supporting IE5, maybe), but the majority of starter apps need self-registration, email, password, maybe cell token or Facebook registration to get started.
Instead, every single person trying to use almost any major PHP framework has to roll their own security from scratch, which is precisely what we also tell people not to do. I can't tell you how many bizarre hand-rolled security systems I've seen over the years in various PHP frameworks. But hey, they all came bundled with top-of-the-line URL routers and templating libraries...
If you ever see one, in any language, please let me know!
Take the Jetpack plugin for example. It is a super-great plugin with many features that are good and low on memory in the system.
If you take a look at the Jetpack code you'll see some improvements over there.
It will take time to rewrite the whole wordpress code without breaking chances, but for now I can't praise the WP community enough, and Automattic too, for such easy to use product.
The whole wp.com integration (with automatic upgrades and so on) also makes everything much better.
BTW you can also customize wordpress with no code, but you'll have to use a theme for that (Thesis is a great example, if you want to try it).
Also, yes, Drupal might be better from a code perspect, but I always got the feeling that the whole experience was not as good as wordpress.
HN is a developer-community, so I understand here it's just ok to think about how good the code is, but I don't think we should ignore the whole experience, because in the end that's what pays off. Wordpress created a seamless experience from installation to use. Yes, it might be a bit old-style, but it works so beautifully you just enjoy it. Whenever I got a look at Drupal/Joomla administrations I always feel a bit lost, maybe it's just me, but I believe that is the key difference (together with simplicity and plugins) of the wordpress adoption.
That's not true. Several ex-WordPress developers started the Habari Project to build a modern and clean PHP CMS: http://habariproject.org/en/
It reads like sour grapes, and what's worse is that it has nothing to do with the story itself. I thought the HN mods were actively trying to fix things like this:
I'd say this is one of the main reasons. WordPress has made continued steady progress which is really quite remarkable to maintain.
Drupal on the other hand looks for /sites/$DOMAIN/settings.php, and there's nothing domain-specific in that file (except $base_url, which is optional). Orders of magnitude easier to deal with.
define('WP_HOME', 'http://example.com'); define('WP_SITEURL', 'http://example.com');
wp seach-replace 'old domain' 'new domain'
DoneA few times I had to help out friends customize something I was horrified at the overall level of code quality. It looks as if a B-level programmer started it and C-level programmers helped... And I think this is the crux of it. A-level programmers in general are not interested in such frameworks because they know how to use less friendly ones (and thus don't work on WP & co.) while C-level programmers need such a solution and are willing to help... to the best of their ability of course.
That said, they made WP very convenient to use (great admin console, easy installation, no major headaches... well, apart from vulnerabilities ;). Other projects should learn from that. Who cares about great foundation if UX sucks? (Typo3 anyone?)
EDIT: replaced "C programmers" with "C-level programmers". I am not talking about those who use programming language C. :)
A lot of people, obviously. You said it yourself.
Many of us have read opinion articles from 30 years ago about how much Unix sucks, or Windows sucks. But they became widespread for a number of reasons -- which led to app developers wanting to develop for that ecosystem. Same here. Wordpress is GPL and runs on almost all hosting providers. The economic incentives to develop commercial and non-commercial themes and plugins for that ecosystem are obvious.
Of course, they never figure out how to edit the site, because the WYSIWYG editor is anything but, and even the text editor "enhances" the html you type in inexplicably. They don't know the difference between a post and a page (or a blog for that matter). So they give up, and wind up hiring you to add content too.
Which is great (yay, money!), but now you have to actually work with this monstrosity and you wind up wishing you had used something like middleman or sinatra like a proper gentleman. But deep down you know that would have been a bad idea as well, because they'd call you in three years to fix the outdated mess that became of your beautiful site after years of neglect. And you'll do it despite not wanting to because they won't be able to find someone else who knows how and that will make you feel guilty.
Meanwhile, WordPress just chugs on, smug in it's mediocrity.
It's really a ghastly creation, if you ask me.
That hasn't been my experience with tens of sites and tons of clients I've known. Simple, non IT people, can edit the sites and change content VERY easily.
Oh, and of course MILLIONS of people edit their own posts for their blogs in the hosted wordpress.com, with the exact same editor.
So, I call BS.
I'm genuinely asking here :)
The latest victims are the small CMS vendors who have been selling proprietary CMS solutions to public school districts for the past 15 years, charging far too much money (your U.S. taxpayer dollars!) for barely functional CMS's. The FCC voted recently to prohibit spending federal money on these solutions, a practice that basically created the market, so now every school district in the U.S. (14,000+) are looking around for cheaper and better solutions. A large percentage of them are migrating to WordPress.
http://www.edweek.org/ew/articles/2014/08/01/37erate.h33.htm...
E-Rate is a major funding source for school Internet connections and is ran by the FCC. The sidebar on that article says:
"Phases out support for some non-broadband services, such as voice services; and eliminates support for others, such as email, Web-hosting, paging, and components of telephone service such as text-messaging and directory assistance."
I'm guessing it relates to that "web-hosting" bit.
And most schools I know are migrating to Drupal.
The exception is the higher education market (colleges and universities), who are choosing Drupal over WordPress.
From Magnus Jepson's blog: http://jepson.no/we-are-joining-automattic/
> We had talks with potential partners, including VC firms and competing companies. This led us to Automattic, who had previously shown great interest in the popularity of WooCommerce. CEO Matt Mullenweg, who is also the co-founder of WordPress, had built his company in the same distributed manner as WooThemes with a team of over 300. This was our dream partner!
Here's a question: do you have any idea of what the first initial changes might be for developer/firms and how we work with WooCommerce/WooThemes/WooMatic?
Usually when a company merges like this, there's a period just after acquisition where both companies still operate independently while the higher-ups try to figure out the integration plan. That doesn't mean titles/roles won't change, but the same day as the announcement? It'd be business as usual at both companies.
As for WooThemes - will we start seeing proper documentation [1] when products are released? I've been bit in the past by something being released by WooThemes, and documentation taking another half year up to year to follow.
[1] http://www.omerkorner.com/2014/09/wheres-api-reference-wooco...
Without a doubt we're also going to have many more resources joining Automattic and their talented group.
Do you have any area (like better documentation, which you wrote about) where you have a clear vision about the future? Can you tell us about that? I think that will be more useful.
And they're trending up: http://trends.builtwith.com/shop/WooCommerce
It's low hanging fruit, not a lot of effort for decent return.
Yes, it's for professionals. Hobbyists can always use some Haskell web framework.
However, coincidentally WooThemes offers a theme that advertises itself with something along the lines of "no sliders, no fonts, no bloat" - forgot the name, but it's a good move.
> here we find ourselves powering over 24% of online stores with our flagship product, WooCommerce
That seems pretty impressive and means they're definitely a top player.
That seems like basic information I'd expect to see.
Free ecommerce framework + lots of paid sub-plugins for years to come.
This will pay for itself.