9 ms·
I'm fascinated by Wordpress success. 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
by aikah 11y ago
I'm fascinated by Wordpress success.
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....
- usaphp 11y agoI think number one reason of its success are themes and plugins.
- aikah 11y agoOf course, but it is in my opinion a consequence of the stable plugin/theme api wordpress has (point 3)
- pknight 11y agoThe number one reason is because it is FOSS, easy to install, easy to use and easy to extend. The thriving themes and plugins ecosystem is the result of the platform becoming popular because of the aforementioned. If it wasn't FOSS WordPress wouldn't be where it is today.
- atonse 11y agoDrupal has that added "benefit" of not being the least bit intuitive to use in any way shape or form unless your brain is wired a certain way. I've experienced this, and have met at least a dozen people of varied skills who feel the same. 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.
- Jgrubb 11y ago> So Drupal, like Oracle, is a consultant's dream. 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."
- smacktoward 11y ago> 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 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.
- bwb 11y agoPerfectly said, nobody cares what is under the hood 99% of the time, its about if it works for their needs and "just works". And, WP kicks ass as flexibility in creating and maintaining an advanced and powerful website.
- codegeek 11y agoI am working a lot with wordpress lately and let me tell you, it blows my mind too when I see so many clients/businesses using it even though as developers, we see "shitty core with that db schema" as you called it. But then if you continue to think about it, the reason wordpress is so successful is not just because of the ease of installation etc, it is because of the eco-system it has created. I have looked at a few closed source CMS's and in fact been thinking of building my own from scratch, but I keep going back to WP for CMS. It just works and so many clients are already using it or at least "heard" of it. 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.
- deleted 11y ago[deleted]
- tacone 11y agoQuite frankly, Drupal 7 is a complete nightmare. It's so heavy it has to cache aggressively for even the basic DB operations, and you'll get Mb's of cache in exchange of nothing. The DB schema is so structured that even exporting a table content is extremely difficult to do in plain SQL. You often find PHP code stored in the DB, so taking over a former contractor is pretty hard. The code style is as old school as Wordpress, and so on. If I had to, I would choose Wordpress over Drupal every day.
- Domenic_S 11y agoIf you "often" find PHP code in the DB, you're taking over for some godawful contractors. The PHP filter is rarely used and is even being deprecated from D8.
- lightlyused 11y agoFirst thing I remove from D7.
- Domenic_S 11y agoHere's something crazy to me about WP - it stores the site's domain in the database. This makes it incredibly obnoxious to set up a local environment of a live site (or automated CI environments with arbitrary subdomains). I had to hack together a bash script to fire UPDATEs to the db to modify these values. 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.
- MichaelTieso 11y agoYou can change the sites domain within `wp-config.php` too. See http://codex.wordpress.org/Editing_wp-config.php#WordPress_address_.28URL.29 http://codex.wordpress.org/Editing_wp-config.php#WordPress_a...
- Domenic_S 11y agoI have never had good luck with that. Some generated URLs still use the DB value and so forth. Perhaps it's an indictment of plugin developers vs WP core. I still cannot think of a good reason for that value to be in the DB at all.
- MichaelTieso 11y agoI won't go into detail on that here but know that there's a very good reason for it. Plugin and theme developers should be using for example `esc_url( home_url( '/' ) );` when requiring the URL of the site.
- Domenic_S 11y agoOk, as someone who's battled with this... feature... of WP I am super curious as to the very good reason for storing the domain in the DB. Why couldn't links be relative (no need to know the domain), or set only as a sitewide variable in wp-config.php? edit: and just discovered the 'guid' column on the posts table is hardcoded as the URL of the post -- the domain you're on at the time you create the content + the post ID. Seems like a nightmare for content staging on a non-prod environment.
- csomar 11y agoGentrification. 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.
- mgkimsal 11y agoBut it must have been great at something else first, because that wasn't the case years ago - it was obviously better at something else some years ago.
- mdesq 11y agoThe ease of installation, upgrades, and enhancement (plugin installation) was what made it really stand out. It wasn't always as mature as it is now, but it was always a little bit ahead.
- patrickk 11y agoThis is a HUGE factor. You can deploy a website customised to your needs, with almost any look and style imaginable (look at the top rated themes on themeforest for example), without a graphic designer or web developer. I do consulting work installing and setting up Wordpress websites, and I and my clients love it for this reason. 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.
- hvs 11y agoDrupal is just as horrible as WP with the added bonus of being complicated. Which is why I choose WP over Drupal (when I have to make that choice).
- damoncali 11y agoIt also works because customers have heard of it and believe that they can edit the sites themselves (in spite of your warnings), so it's much easier to sell. "We'll just put you on WordPress!". Done. 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.
- konsptheory 11y agoIs Ghost or Jekyll anyway better in terms of tech and other business factors? I'm genuinely asking here :)
- damoncali 11y agoNo idea about Ghost. I found Jekyll to be too limited for client work - but it's been a good 18 months since I used it.
- blacksmith_tb 11y agoI have handed the CMS keys for Ghost to non-technical people with good results. There's no doubt that it's more limited (especially in terms of plugin ecosystem) than WP, but that lack feels liberating. No need to agonize over which contact form plugin is the right one to go with, etc. And Ghost is certainly snappy [0]. [0]: http://blog.appdynamics.com/nodejs/an-example-of-how-node-js-is-faster-than-php/ http://blog.appdynamics.com/nodejs/an-example-of-how-node-js...
- 11y ago
- ereckers 11y agoFirst, I should mention that I'm glad to see this dismissive and negative comment voted to the top. I was starting to worry that HN was losing its edge. 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?
- wmeredith 11y agoI was about to point this out exactly. I used to do client training for a small web dev shop on everything from Google Adwords and/or Analytics to Joomla and Drupal. WordPress' admin was head and shoulders above the rest in terms of ease of use. I've always thought that was the keystone of its success.
- jwdunne 11y agoFor some of the websites I have had to maintain in Joomla, it would be much more efficient for the company if I converted to Wordpress and the writers use that. Wordpress is easy to use. With plugins, such as advanced custom fields, you can do even more. I've impressed many clients with how easy to use the "website's CMS" in turn around times they have never experienced before. The code is shocking. The plugin architecture is, well, not really designed at all. Theme design the same. It's just impossible to match it with the number of extensions, the ease of use and my development speed as a result.
- macNchz 11y ago>one cannot customize Wordpress without writing more than a few php tags 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.
- lamosty 11y ago> 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 [...] 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.
- MichaelTieso 11y agoI wish this comment was voted higher. There's a lot of misinformation in this thread.
- annnnd 11y agoThe fact that this is not shows that not many people (here) agree. :) I personally have no opinion on DB schema because I never looked that deep, but last time I had to deal with WP its codebase was just horrible. And don't get me started on plugins' code quality, it goes to entire other level of "horrible". The project might have a lot of talented contributors, but they seem to be overshadowed by everyone else. They might have fixed it from the last time I looked of course (though I doubt it, judging by never ending stream of vulnerabilities).
- raziel2p 11y ago> Apart from that, you can write your own beautiful code according to the newest PHP standards if you want in your WordPress-powered projects. 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.
- wmeredith 11y agoThis is an awesome comment. It's like a mechanic saying Chevy's are a nightmare under the hood. The percentage of people buying cars that give a fuck is rapidly approaching zero because they never even see it.
- mdesq 11y agoExactly. It's a free car that a ton of people drive and lots of auto shops work on but that German mechanics think is an embarrassment.
- mtbcoder 11y agoExpanding on your analogy, the issue is when you need to start using your free car to safely haul lots of freight across the country in a timely manner, over multiple routes all while providing sound, reliable fleet maintenance with a team of mechanics. Some auto shops will tell you that duct-taping your freight to the roof of your car is just fine, others will tell you that you cannot run a reliable network with this system.
- lightlyused 11y agoThen you have the massive recall because using it could kill you.
- icc97 11y ago> It has a great backward compatibly, unlike other solutions that break everything with each major version. I'd say this is one of the main reasons. WordPress has made continued steady progress which is really quite remarkable to maintain.
- deleted 11y ago[deleted]
- EGreg 11y agoI 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? 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.
- mgkimsal 11y agoIf more PHP "frameworks" had come with a standard registration/login/password reset system, and a semblance of an administration system that could be customized, Wordpress likely would not have achieved such dominance in the period it did. The PHPNuke family almost had it, but focused too much on copying slashdot vs being a bit more open-ended or content-focused. 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...
- pbowyer 11y agoI completely agree, but the "serious" developers who create the frameworks don't seem to see it this way. I had exactly this discussion with the Symfony community when Symfony2 was released, but got no traction or support for a RAD-framework on top of the Symfony 'framework'. If you ever see one, in any language, please let me know!
- wodenokoto 11y agoI think you missed the benefit where the theming is done in php. 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.
- morgante 11y ago> 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. That's not true. Several ex-WordPress developers started the Habari Project to build a modern and clean PHP CMS: http://habariproject.org/en/ http://habariproject.org/en/
- bwb 11y agoWP has a huge and massive ecosystem, it is it's own economy. Someone might write something better from a code perspective, but it is going nowhere unless it can gain the critical mass WP did.
- morgante 11y agoOh, I'm well aware of why the WP hegemony continues. Just wanted to point out that it's not through lack of alternatives.
- torbit 11y agoWordPress has out of the box experience that clients can wrap their heads around. Drupal requires you to mix modules to basically create your own "plugins" which means more time and a higher price for a client. Wordpress just hits the spot.
- annnnd 11y agoAbsolutely agree with the sentiment. A 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. :)
- andrea_sdl 11y agoI believe that, even though some of the code is so old, Automattic is doing a great job moving the game forward. 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.
- georgestephanis 11y agoPlease don't recommend Thesis to folks. :\ Genesis or X are better more modern options.
- andrea_sdl 11y agoThe more the better :) I just used thesis as an example mostly because I tried it and used it. No experience with Genesis/X that's why.
- nhangen 11y agoI am not a fan of this acquisition, but I'm really disappointed that this is the most upvoted reply on this story. 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: http://blog.ycombinator.com/new-hacker-news-guideline http://blog.ycombinator.com/new-hacker-news-guideline