12 ms·
The dire state of WordPress
- jaynate 14y agoSoftware rewrites are extremely challenging, and more often than not, fail (good example: http://www.joelonsoftware.com/articles/fog0000000069.html http://www.joelonsoftware.com/articles/fog0000000069.html). Perhaps a more measured factoring approach over time would be more appropriate?
- bradwestness 14y agoI don't understand the point of what he's proposing. Rewriting WordPress as completely as he wants and breaking all existing plugins and themes would surely just result in someone forking the existing code and maintaining a backwards-compatible version. The ecosystem is the valuable thing, and they'd be insane to throw that away. All the problems he notes are basically just a result of WordPress growing and changing over the decade it's been around, and/or direct results of having originally been written in PHP 4. Gradual refactoring, as you say, makes more sense. Otherwise you might as well just build an entirely new system from scratch.
- eamann 14y agoWordPress 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 14y agoNice. Wordpress's value is derived from its ecosystem as opposed to its technical purity.
- jiggy2011 14y agoI'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.
- hadem 14y agoIt makes me wonder if the companies behind that online game and auction site were "sold" Wordpress by a developer/designer as a way they could easily update their website. Perhaps whoever pitched Wordpress as a solution in those cases didn't have the knowledge to build a fully functional website from the ground up without Wordpress. As a fellow PHP developer, I can say I share the heart sinking feeling when I see "functions.php".
- bradwestness 14y agoA lot of it is due to the fact that it's much easier to sell an end-user on a plugin to their existing site that requires little to no server configuration than a completely separate system. Whether or not it makes sense as a WordPress add-on is not really taken into account by users, who just see it as easy to set up and manageable from the same dashboard as the rest of their site.
- aspratley 14y agoPerhaps they were comfortable with WP, perhaps they didn't want to spend time reinventing the wheel, perhaps they didn't want to have to support a massive body of code.
- booruguru 14y agoPeople 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.
- pytrin 14y agoThe 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 14y agothere's already a symfony2 bundle that has started that work i think. I don't recall the name though.
- pytrin 14y agoYou're probably talking about this - https://github.com/kayue/WordpressBundle 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.
- leeoniya 14y agoi'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.
- jsdalton 14y agoTo 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!)
- EwanToo 14y agoAnd don't forget the amazing amount of functionality that's available for free using the plugin system. It's a classic software development problem - Wordpress's complexity is both it's strength and weakness, and will probably be it's downfall one day (but not just yet)
- chc 14y agoOn the other hand, most of the free plugins are awful. Many of the paid ones are as well, in fact. Many plugins can bring your site to its knees as soon as five people look at it sideways.
- JVIDEL 14y agoAnd the templates, some are simply STUNNING it makes you wonder why pro designers charge you so much for stuff that barely holds a candle to stuff you see on WP. Then you install the template and everything goes to shit, you have to read some of the stuff support writes to users, it boils down to "we sold you a broken product and now we will give you just a hint about how to get it to almost work". Still lightyears ahead of templates on other CMSs...
- chc 14y ago> Still lightyears ahead of templates on other CMSs... Yup, but I think that's primarily because WordPress has a stranglehold on the market. Nobody will use another CMS because WordPress has all the stuff, and nobody will develop mass-market stuff for another content management system because WordPress has all the users. The network effect is strong, and displacing WordPress wouldn't be profitable enough to be worth the effort to counteract that effect. (Obviously this is a slight exaggeration — somebody uses another CMS — but I think it's pretty accurate from a bird's eye view.)
- epoxyhockey 14y agoI 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.
- runn1ng 14y agoI think it's the perfect example of "worse is better" approach. Yes, it might not be perfect, but it does well what it says it does, it's quite simple to customize and you just upload it online and you are set. Being nice internally is good. Being working with tons of available plugins is better.
- mgkimsal 14y agoI mostly agree, except it's not "simple to customize" in even a majority of cases. The 'upload and online', however, is and will continue to be the killer feature that will keep rails/python/java/etc-based CMS at a major disadvantage. Starting projects today, I prefer Grails. Starting a project which I had an intention of distributing to a wide number of users (potentially for eventual world domination), I'd use PHP. Nothing else comes close to the ease of getting the widest number of people able to upload/install.
- deleted 14y ago[deleted]
- kvnn 14y agoI 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".
- bobsy 14y agoAs 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.
- tnorthcutt 14y agoFor future reference, plural forms of words don't require apostrophes. (theme's, plugin's)
- mikeschinkel 14y agoDayum Travis, Harsh, just harsh! :)
- mgkimsal 14y agoIt'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.
- 14y ago
- corresation 14y ago"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.
- deleted 14y ago[deleted]
- kiba 14y agoAnd those products that do scratch itches and grow and evolve tend to have widely criticized code bases. Maybe. But wordpress is just plain illogical. I heard people trying to use wordpress as an ecommerce platform. WTF? Wordpress is a blogging platform first and foremost. WIkipedia keeps being an encyclopedia, linux keeps being an OS, mysql keeps being a database, firefox keeps being a browser, and so on. Wordpress? It's a blogging platform that sometime have an ecommerce plugin tacked into it.
- pknight 14y agoIf you still think of it as being a mere blogging platform, you haven't been paying attention. Woocommerce, which is just one of dozens of ecommerce solutions running WordPress has over half a million downloads. Clearly people & businesses don't adhere to your logic.
- kiba 14y agoClearly people & businesses don't adhere to your logic. And the entire post is agreeing with me.
- 14y ago
- booruguru 14y agoHere'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 14y agoMaintaining 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 14y agoExactly. 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.
- deleted 14y ago[deleted]
- vineet 14y agoFixing 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 14y agoIt'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.
- lysol 14y agoThis 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 14y ago> 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.
- pknight 14y agoUntil 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.
- WimLeers 14y agoWordPress needs more rules I'm convinced Wordpress is successful despite this. No rules implies very low barrier to entry.
- taopao 14y agoUmm, whatever, no rules implies _no safe assumptions can be made_. Getting WP plugins to play nicely with each other can be like sorting out INIT conflicts in the Mac OS 6 days.
- chc 14y agoI 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 14y agoMore 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 14y agoThat's pretty much what I was trying to convey.
- raffjones 14y agoInteresting 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.
- programminggeek 14y agoPROTIP: 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 14y agoCheap 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.
- neya 14y ago(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
- Chirael 14y agoThe 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.
- sutro 14y agohttp://www.dreamsongs.com/WorseIsBetter.html http://www.dreamsongs.com/WorseIsBetter.html
- mildweed 14y agoWordpress 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 14y agoI 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 14y agoCode 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/ 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 14y agoI 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?
- jmcmichael 14y agoI'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/) 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).
- onemorepassword 14y agoCalling a PHP-based CMS "Symphony" has the faint smell of dubious marketing.
- kemoly 14y agoI 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.
- rheide 14y agoI would pay money if someone remade Wordpress on Django (and still kept it compatible with existing plugins and themes).
- scribu 14y agoYou do realize that WordPress plugins and themes are written in PHP and Django is written in Python, right?
- ebbv 14y agoWords 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 14y agoPHP has gotten a lot better over the past few years. I would argue that PHP is making more progress than WordPress is.
- ebbv 14y agoThat'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.
- moeffju 14y agoThere 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.
- jdrenterprises 14y agoFor 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.
- mikepurvis 14y agoRather 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.
- keepkalm 14y agoThere 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.
- markman3200 14y agoI 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.
- beatpanda 14y agoSomebody 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.
- at-fates-hands 14y agoit 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 14y agoYou 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.
- mtgx 14y agoCould it be built on top of node.js so it's all Javascript?
- eamann 14y agoConsidering 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.
- bergie 14y agoMany 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/ 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.
- ErikGelderblom 14y agoTo 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 https://github.com/ErikFontanel/Wordpress-Corpse please fork and adjust it to your own likings!
- pjbrunet 14y agoMost 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.
- homosaur 14y agoI 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.
- junto 14y agoThe 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!
- ereckers 14y agoI 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.
- dave1010uk 14y agoAs 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 http://core.trac.wordpress.org/ticket/21300 * Use a Symfony style request object instead of globals http://core.trac.wordpress.org/ticket/22325 http://core.trac.wordpress.org/ticket/22325 * Use PDO for database access http://core.trac.wordpress.org/ticket/21663 http://core.trac.wordpress.org/ticket/21663 * PSR compatibility http://core.trac.wordpress.org/ticket/23357 http://core.trac.wordpress.org/ticket/23357
- pak 14y agoThe 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 14y ago> 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).
- hilko 14y agoI 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.
- lsmith77 14y agoI 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.
- ideadude 14y agoI 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.
- dabaR 14y agoRead this so you can get clued in, jshakes: http://wpengine.com/2013/03/alex-king-on-the-maturity-of-wordpress/ http://wpengine.com/2013/03/alex-king-on-the-maturity-of-wor... 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(); }
- jkenters 14y agoI'm really surprised nobody mentioned MODX Revolution here. Finally a CMS that's about creative freedom (it's even their slogan) and not about fixing the CMS to be what the client wants. It really feels great to be in control of every aspect of your site; there is not a single byte of source code I don't want there to be in my html. Without the need to override tons of default CMS generated markup! And if you need some extra functionality, there are just a few (mostly really great) "packages" to choose from instead of a few hundred badly designed and insecure "plugins" like WordPress has. Last but not least: it has the best community ever! Friendly helpful people providing real solutions. Quite a few are real experts too. Why not give it a try? http://www.modx.com http://www.modx.com
- dpk666 14y agoFor 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.
- g5604 14y agoNo 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 14y agoThere was mention of it but it's gone now for some reason.
- DowntownRob 14y agoTo 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. ;)
- photomatt 14y agoSome 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.
- dwenaus 14y agoas 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.