WordPress is not a web application framework

I just watched Matt Mullenweg's interview at Le Web 2012. For the second time I heard him say that the focus for WordPress over the next four years will be turning WordPress into a web application framework. In my opinion, WordPress as a web application framework, makes zero sense. WordPress in it's current state sucks as a Web Application framework, and it should. It wasn't designed to be a web application framework, it's a blogging platform that can work well as a CMS. I think shifting focus from these two primary functions (blogging and managing content) into building web applications will hurt WordPress.

WordPress will lose focus on what its users want

WordPress is a blogging platform that can work well as a CMS. It currently doesn't do either of those two things that well. WordPress is feature heavy, the admin is bloated and confusing, and the software is slow. Don't get me wrong. I'm not bashing WordPress or saying it's terrible software. I'm simply stating the facts, WordPress is great but it has much room for improvement. Automattic should focus on what WordPress already does, and do it a hell of a lot better. That means being smarter about what gets loaded and when, simplifying the admin, cleaning up the current code, improving the documentation, and trimming the fat.

WordPress will never compete with CodeIgniter or Ruby on Rails

CodeIgniter and RoR are the two best web application frameworks I've used. They are designed for one thing and thing only, make awesome web applications quickly and efficiently. Because they only focus on one thing, they do that one thing very well. Great web application frameworks share common features such as MVC architecture, REST, and migration support. None of which are supported by WordPress. We could start talking about "what if" WordPress supported this or that, but that is not the point. The point is WordPress will become a molotov cocktail of code. Break the glass and the whole thing will burst into flames. Even if WordPress tried they could never catch up to Rails or CI. Those two projects are way too far ahead at this point. Why can't WordPress be happy doing what it already does and focus on doing it better?

There is no shame in being a great blogging platform

When I hear Matt Mullenweg talk about WordPress as a Web Application Platform I can't help but feel that in some way he believes that being a great blogging platform isn't enough or is somehow inferior. Blogging is a large part of the web and great blogging software will be needed for a long time. Why doesn't Automattic just focus on building great blogging software? The more they lose focus on blogging the more room they leave for another company or open source project to come up and replace them.

What do you think? Is WordPress heading in the right direction with the goal of being a Web Application framework, or should they focus on being a blogging platform and CMS?


NOTE: If you recently commented on this post and it's not showing up, it is because I recently switched my comments to Disqus. The old comments take 24 hours to be imported.

  • Dave Bonds

    Good and thoughtful post Justin. I saw the same interview and was intrigued by the possibilities it presents.

    Sure, CI or ROR is a better PHP framework for building web applications with low overhead, but you have to build your own UI for managing the content within the app/website, increasing development time and barrier to entry on both the dev and client side. I think this is where a lot of the overhead in WordPress comes from by loading all possible functions/scripts/etc, and including legacy fallbacks for compatibility with a wide range of users. On the plus side, it’s already built, as are the tutorials, plugins, etc., to make it accessible to that wide range of users, which is an asset currently beyond the reach of those frameworks.

    I certainly agree that what WP does can be done a hell of a lot better just by rethinking the entire UI (some of which we’re seeing with the new media uploader), getting rid of bloat, and to stop worrying about legacy users at some point.

    Blogging started WordPress and still continues to power it’s success, so I don’t think Matt is discounting it’s abilities as a blogging platform. Instead, I think he sees what people are using their blogs/websites for and there is a fundamental shift in the usage – because now, more can be done easier than ever, and the content is no longer just blog-type content.

    WordPress is increasingly being used as a CMS, so it obviously does that efficiently enough for developers, and – we’d like to think – for the user/admin in control of managing the content.

    If the “web application” is centered around content and the consumption of that content, as in Matt’s example in the video, I think using WordPress to manage and display that content makes sense. Think about a recipe web app you build where the client can easily manage the recipes and customers/visitors can easily view them in a structured format. Or even just a simple web app with the simple task of searching and displaying real estate listings in a certain area…

    Obviously it would depend on the nature of the web app and the complexity, but I think, as shown by Matt’s examples, it is already being used as web app platform and that can only help the WordPress community improve and address some of these issues over the years.

    With that said, and your comparison to a molotov cocktail, I think going in this direction too much further would cause a need for a forked version (or allow an install option): one for just blogging (beginners) and one for developers to build on (advanced).

    • Justin Tallant

      The fact that WordPress is already built, has tutorials, and has plugins is not an asset beyond the reach of Rails or CI. Rails doesn’t come with a blog built in, and thank goodness it does not, else everyone would have to delete a bunch of code before creating an application. But there are “gems”, (the ruby version of a plugin) that can turn a rails app into a blog by simply including the gem in your gemfile (one line of code). Refinery CMS is an excellent back end for a blog built on Rails. It’s easier to customize than WordPress and has some incredibly convenient generators, translation support, etc.

      It’s also well known that WordPress has poor documentation. Rails and CodeIgniter have the two best documentation sources that I’ve ever used.

      So when it comes to currently existing code, plugins, and tutorials, I believe WordPress loses on all 3 accounts.

      In the video Matt provided a very niche example of WordPress being used as a Web App back end. I would estimate that less than a fraction of a percent of WordPress users are using WordPress in that fashion, and those that are could have done a better job using a Web App Framework. They used WordPress simply because they already knew WordPress and didn’t want to take the time to learn a tool that was built just for that job.

      So why focus the next four years on a fraction of a percent of your users? It would make much more sense to focus those next four years on refining the existing software.

      • asecondwill

        I can’t believe how much grief you have gotten for this post dude. Anybody that has done actual application dev with an MVC framework, and made things with WP knows the difference. Both are great at what they do. They are not the same thing.

        I cut up my strawberries with my cereal spoon every morning. It doesn’t make it a knife. WP is php, you can mod it to do all sorts of stuff. Doesn’t make it an application development framework.

        Use the right tool for the job. Learn more than 1 tool so you have 99% of what you get the opportunity to do covered in a good way or know enough to recommend somebody else if it’s outside your scope.

    • asecondwill

      …But you have to build your own UI for managing the content within the app/website, increasing development time and barrier to entry on both the dev and client side..

      Rails has options that make doing the equivalent of custom post types just as easy & fast. With a better structure than WP to build from: http://activeadmin.info/

  • http://developdaly.com Patrick Daly

    Like Dave already said, WordPress is more than a PHP framework — it is the application.

    Because a huge chunk of WordPress is sets of APIs it actually lends itself toward customization really well which is essentially what those frameworks you referred to are. What WordPress lacks is the ability to really write the dashboard from scratch the same way you can with themes and plugins. If that were doable, I think it would address your concerns. And I think it wouldn’t take too much to make that happen eventually.

    • Justin Tallant

      Code Igniter and Rails are nothing like WordPress. They have a specific function, building web apps. You use Rails or CI to build something like WordPress, Twitter, Github, Living Social. Can you imagine using WordPress to build Github?

      I’m not saying WordPress can’t gear itself toward building web apps. It could, but it would not make sense, and it would not be an ideal framework. You said it yourself “WordPress is the application”. I don’t want a blog application built into the Rails core any more than I want a web application framework built into WordPress. WordPress makes perfect sense for a blog or small business website where a client needs to manage content without touching code. I’m saying they need to focus on doing those two things better, blogging and managing content.

      At the end of they day you have to choose what you want to be. Do you want to be an application or an application framework? In my opinion combining the two means you get two mediocre and overly complex usages instead of one excellent and focused usage. WordPress is a mess of code in its current state. Trying to make it a web application framework means it gets a lot messier. They should focus on cleaning up the current code, using a Loader Class like CI does, and improving the user experience in the dashboard by simplifying it.

  • http://twitter.com/becooling Ben Cooling

    Interesting thoughts… I tend to agree, I think the bloat can be traced with it’s attempt to serve both the self-hosting (wordpress.org) and hosted (wordpress.com) communities. The WordPress hierarchy appears to be is acting like they have content creation and management all wrapped up (which they don’t) and need to move onto more ambitious goals… In my humble opinion (looking further into the future) this leaves WordPress vulnerable and raises the possibility of other, better performing platforms to emerge…

  • Pingback: The Invasion of the Lightweights

  • http://www.facebook.com/michaelbastos Michael Bastos

    I have a background in C++ and Java development which most would consider hardcore, it’s not assembly but it’s hard. I spent years developing in Perl and advise companies on OOD php development. My day job is in Ruby and Rails as well as Perl and I’m in the process of learning Closure and Scala. Yet I choose to attend and speak at WordCamps and do most of my hobby stuff in WordPress but why? Because regardless of how you feel about the platform or its ease of use, if you take a really good look at the core application, it’s damn good code period. Forget the great community, forget the endless streams of people excited to teach you something new every time, the base code when you take it apart is amazing and to think they’ve been able to get it to work flawlessly on millions of servers with a ridiculous myriad of configurations. Good code is good code regardless of where it’s coming from our how it was produced or what language it was written in. I’m sick and tired of one trick pony developers who only know maybe one language or platform putting down a system they maybe had some bad history with because they didn’t know what they were doing at first just because it’s not the platform they spent years trying to learn and master. WordPress is following all the rules I expect from a frame work and then some and they have yet to role out story driven BDD yet. It will only get better from here.

    • jtallant

      Thanks for telling us all how many languages you know. This post wasn’t about putting anything down. I pointed out certain flaws I see in WordPress but no where did I say WordPress sucks or anything of that nature. Everything has flaws. Regardless of who is right in the end, pointing out the flaws and debating on the direction the software is heading, is a good thing and will only help improve it. The only put down I see here is in your comment.

    • http://www.brightball.com/ Barry Jones

      Hi. I’ve developed in WordPress, Joomla, CakePHP, Laravel, Code Igniter, Groovy on Grails, Ruby on Rails, Python, Perl, Java, and .NET MVC4 over my 15 year professional career.

      WordPress is not an application framework.

      There is 1 basic reason and it comes down to the core of application frameworks vs plugin based architectures like WordPress.

      - Application frameworks put a strong emphasis on conventions and DRY architecture as well as team collaboration via database management through things like migrations, etc. It’s not built for development teams.
      - Plugin based architectures specifically revolve around complete code encapsulation leading to the exact OPPOSITE of DRY.
      - Plugins are complicated because if you need to modify their behavior in any way, you break the upgrade path of that plugin unless the plugin has specifically coded in hooks. One of the reasons that Ruby and Rails is so popular is that if you use any of the 60,000 or so gem packages and you need to modify it you can monkey patch it to modify what the gem’s code does, exactly where you need it to, without ever actually touching the gem’s code so it’s still easily updated.

      You would be better of rebuilding WordPress on a framework than the other way around. Expression Engine is built on Code Igniter and is an excellent CMS built on a decent framework if you really want a framework based CMS.

      Port WordPress to Laravel if you really want to go that route.

  • Pingback: David Bisset – My Take On WordPress and Application Frameworks

  • http://twitter.com/tweetsfromchris Christopher Cochran

    Justin,
    I agree with some of your post, but I don’t think WordPress will ever try to compete with rails or other simliar frameworks. However, the web is changing, and has changed already so much from when WordPress was first released. The way the web is heading, I believe WordPress will need to adapt some features that other web application frameworks have; for example a REST API. You can see Automattic already heading in this direction with WordPress.com and allowing use of the REST API on a self hosted blog via jetpack.

    With the various number of devices that support the web, and multiple ways of input, the way we access content is changing. For example, think Google Goggles: A traditional site won’t be beneficial, but it’s content will be. WordPress is just adapting to where the web is heading.

    I don’t see WordPress as a blogging software, basic CMS, or a web application framework, and have used WordPress for all those reasons, but I see WordPress as a content creation center and they will adapt to the way we use and interact with content to stay relevant with the time. WordPress is the content king, and in order to be relevant as a Content Management System, it will need to be able to easily support whatever we want to display that content it holds on, and how we want to.

    • jtallant

      Good points Chris. I do agree that some features should be adapted, especially REST.

  • http://www.wordimpressed.com Devin Walker

    WordPress can be anything you want it to be IMO… (shortest comment yet)

  • http://rachelbaker.me Rachel Baker

    Justin,

    Listening to Matt mention moving WordPress toward an application framework during the “State of the Word” at WordCamp SanFrancisco made me think of this blog post by Andy Sernovitz: There is no AND in Brand (http://www.damniwish.com/there-is-no-and-in-brand/) .

    I love WordPress, it is the best blogging platform and a very user-friendly content management system. Personally, I would rather see WordPress focus on being the best in those two areas – rather than add a third focus.

    P.S. When it comes to building applications, I prefer to stick with true application frameworks such as Code Igniter (and more recently Laravel), Sinatra, etc.

    • jtallant

      Thanks for commenting Rachel. The article you linked to is right on point with what I was getting at in this post.

  • Pingback: Where I fit in | Ryan Rampersad

  • Glenton Samuels

    I’ve used WordPress to build web applications and some of my friends have used it as a CMS and backend to run native applications on iOS and Android devices.

    To call WordPress a blogging platform in 2013 is short sighted, it’s been a long time since it’s been just a blogging tool.

    Web applications will become more dominant in the future and Matt is just thinking ahead, making it more like a web application doesn’t mean it will abandon it’s blogging roots, it can do both.

    Web applications for the most part is a front end aesthetic experience for the end user which a seasoned PHP programing could do with WordPress and a few plugins.

    Not to mention just how vast WordPress is compared to other, as of right now WordPress is 17.6% off all websites and continues to increase every year. This is not counting WordPress.com, that won’t go away over night.

    Just my 2 cents.

    • jtallant

      Recognizing that WordPress is trying to be too many things at once is not short sighted. A CMS and a Web App Framework are two very different things. Try to do both and you will do neither well.

      WordPress doesn’t have 17.6% of all websites. It has (according to Automattic) around 16-17% of the top million sites. Being the most popular isn’t the same thing as being the best ( Microsoft vs Apple ).

      A seasoned PHP programmer would prefer a true framework for making web apps, not WordPress.

      • http://twitter.com/jason_coleman Jason Coleman

        Why are you arguing 16-17% vs 17.6%? WP use is trending up. If it’s not 18% now, it will there or higher next year.

        I’m pretty sure if you include more than the top million websites, you’d see a larger share of WP use.

        I’d still like to hear WHY a seasoned PHP programmer would prefer a framework over WordPress besides it being obvious or feeling right.

        • jtallant

          I already addressed that in my post. If you still don’t see the benefit, you would have to go and use one. Give yourself a challenge. Try and build you own blog with Laravel. Start simple, have a goal of creating new posts and pages. Have an input field for the title and content in the “admin” but don’t even worry about authentication when starting. Then display the posts on the “front end”. http://laravel.com/

  • Pingback: Tunnel Vision and WordPress as an Application Framework

  • http://twitter.com/jason_coleman Jason Coleman

    WordPress is heading in the right direction. Matt’s goal is to have WordPress used for EVERY “website” on the Internet. Our Internet use is moving away from sites to apps, and allowing more apps to be created more easily with WordPress is a good move.

    It’s not just a good business move for those of us with interests in having WordPress used more often. There is something fundamental about WordPress that makes it popular and useful for people wanting to setup sites quickly with the flexibility to extend those sites later.

    When you say “it’s a blogging platform that can work well as a CMS”, you are understating WordPress as a CMS. It’s the most popular CMS platform in use*. There must be some reason for that, no?

    * http://w3techs.com/technologies/overview/content_management/all

    This wasn’t always the case. Matt and the WP community made CMS functionality a priority and CMS use went from a fraction of a % to the 50%+ market share it has now.

    This is why people may say you are short sited to think that WP can’t take over framework market share just because they are behind right now. We remember when people said the same thing about WP as a CMS… or hell WP as a blogging platform.

    You can already think of WordPress as an application framework with some very successful apps running on top of it: WordPress blogs, CMS, ecommerce sites, membership sites, forums. It already works well for building custom apps and can be improved on in that area without being detrimental to the existing blog and CMS functionality.

    The secret sauce of WordPress is not the UI or blogging feature set… it’s the plugin architecture, platform stability, and community.

    MVC, REST, and database migration support are not requirements for building apps. MVC is a useful way to organize things, but not the only way. The theme/plugin paradigm works great for separating design concerns from programming concerns. I am a little bit removed from using other frameworks, but I know that I can easily build RESTful APIs and migrate databases with WordPress.

    The way that WordPress really shines as an application framework is if you think in a “Lean Startup” kind of way. With WordPress you can start with a minimum viable product and incrementally develop it into a full blown application using the same platform the whole way. Something like:

    1. Simple one pager built in WordPress, using an existing theme, to announce the concept of your app.
    2. Add a blog to discuss development, etc.
    3. Use Paid Memberships Pro and free levels to get people to sign up for the beta release (gathering emails).
    4. Use plugins to integrate with MailChimp to start emailing the mailing list.
    5. Combine existing plugins and simple content to develop a wireframe or proof of concept.
    6. Create a custom plugin to house your beta app classes, logic, and customizations.
    7. Create a custom theme for your branding.
    8. Use Paid Memberships Pro (see a pattern here? ;) to accept paying customers.
    9. Re-factor your plugin/app for a version 1 release.
    10. Use plugins for forums, social integration, analytics, caching, SEO, third party integrations.
    11. Scale your system at the server level. Rewrite individual bottle necks in lower level PHP when it helps.
    12. Rinse and repeat for version 2.

    The beauty is that all along the way your app always has the same user base and underlying infrastructure. Your gathered emails become users then become paying customers. You can quickly add and test new features. You can use the same WordPress developers throughout the entire process and if you business pivots at steps 2-6, you didn’t waste time or money building a full blown app.

    I’m excited to continue this discussion over the next couple years. :) Pointing out how WordPress lacks as a framework is important to improving its functionality and use that way. What may look like insurmountable shortcomings to you are just challenges to be overcome by me.

    I think your prediction that WordPress can’t “catch up” feature-wise and your fears that “WordPress will become a Molotov cocktail of code” as we try to build out WordPress as a framework are wrong. The WordPress core team has shown their ability to push updates that pretty successfully juggle new features with reverse compatibility and clean code.

    There are advantages to having a platform built with applications in mind from the get go. There are also advantages to having a platform that is scrappy, accessible, and practical.

    • jtallant

      “When you say “it’s a blogging platform that can work well as a CMS”, you are understating WordPress as a CMS. It’s the most popular CMS platform in use*. There must be some reason for that, no?”

      Most popular != best ( Microsoft vs Apple)

      People who say I am short **sighted** when I say WordPress can’t take over the app framework market share have no clue what the hell they are talking about. You said it yourself, you’ve never used a true framework. If you had, your opinion might carry a little weight, but you haven’t. If you understood what a true web application framework was, you probably wouldn’t have made your comment at all.

      “The secret sauce of WordPress is not the UI or blogging feature set… it’s the plugin architecture, platform stability, and community.”

      WordPress is a mess of code as is. If you can’t see that, then you don’t know a mess when you see one.

      “I think your prediction that WordPress can’t “catch up” feature-wise and your fears that “WordPress will become a Molotov cocktail of code” as we try to build out WordPress as a framework are wrong. The WordPress core team has shown their ability to push updates that pretty successfully juggle new features with reverse compatibility and clean code.”

      Clean code? Really?

      • http://twitter.com/jason_coleman Jason Coleman

        Mac is *obviously* better than Windows. Other frameworks are *obviously* better than WordPress. Other CMS’s are *obviously* better than WordPress. WordPress code is *obviously* a mess.

        I wish I could learn more about WHY you believe those things.

        For sure, if people believe that WordPress code stinks, it isn’t a good blog or CMS, and has no chance to compete as a framework, we should all give up and move on to different things.

        However, I think the WordPress code is solid, it’s a great blog and CMS, and is already competing strongly as an application framework. Hopefully you can read my original comment and get a little bit of the reasoning why I think those things.

        • jtallant

          Why do I think WordPress is a mess? Lack of OOP (using way too many globals). They load the whole thing, not bothering to have a loader class. They just assume you want everything. There are a lot of classes in there that don’t need loaded by default. When you want to use them they should be loaded with some loader class.

          Example: You want to use WP_Http

          // load the WP_Http class if it’s not already loaded
          WP_Loader::load_library(‘WP_Http’);

          Another reason the core code is a mess is because they don’t use REST. If they did it would improve organization and reduce the amount of code.

          http://ben.balter.com/2012/12/15/why-wordpress-next-version-should-just-give-it-a-rest-already/

      • javiertroya

        Wow this is from a year ago… But man you can’t accept critics! Codeigniter, Symfony, & Phalcon been there done that. Works perfect? Yes it does. Work alone? You’re never gonna finish.

        WordPress and work allone? Finish in one week whatever you want to do.

        WordPress can work as a Framework when you know how to use it and it’s great! With custom post types, taxonomies and user management is the best way to start an app.

        Codeigniter is good,fast and reliable but when you work alone your productivity goes way down.

        Symfony works perfectly fine but the learning curve. Man that just sucks!

        Phalcon PHP, the last framework I used is, by far, the best framework I ever gonna need I tried Lavarel but didn’t like it that much.

        So in conclusion of my opinion, WordPress is going right If you’re gonna work alone or with one designer. You can build perfect webapps with one or two skills. Other frameworks are the best way to work in teams, never alone because that way you’re gonna have lots of troubles debbuging and cleaning your code in order to take advantage of it. At least of course you’ve got your libraries ready-to-use, but that only helps a little.

  • Pingback: WordPress as an Application Framework | Stranger Studios Web Design

  • Pingback: Development Platforms to Watch | Bastos.ME

  • http://twitter.com/vajrasar Vajrasar ♉

    The points you stated are quite straight and true. Yes, WP is awesome, but it should work towards being [and retaining] No.1 position in blogging and CMS stuff and delivering best to people who use it and praise it.

  • http://twitter.com/anderly Adam Anderly

    Let’s face it, WordPress is popular. And for a couple of reasons:
    1. It’s dead simple to get started
    2. It’s easily extensible (plugins)

    I don’t disagree that WP was not originally intended to become an App Framework, but it also wasn’t originally intended to become a CMS and now it is.

    But really, the basics of an application framework are already there (Membership/Security, Routing, Front-end (themes), Back-end (wp-admin), etc.)

    I think what Matt is trying to do is actually an exercise in decomposition in that the WordPress Core could, itself, become more modular. So, if you’re not building a “blog” you leave those modules out. If you only need an admin interface (i.e. a simple app for CRUD over tables), maybe you can leave the front-end theme-based UI module out.

    The plugin-based model is why WordPress is so popular, but it really needs to become more of a package manager like RubyGems so that you can easily express dependencies on other plugins down to the specific version. You also need a dev-time easy way to install plugins from the command-line without having to go through the UI.

    The areas where I see it needs to improve if it wants to compete with Rails, CodeIgniter and the like is more convention-over-configuration (Piklist is a plugin that is essentially trying to do this already), DRY and a cleaner, more MVC-based approach to working with data, UI (i.e. no more spaghetti php). I think that coupled with some testability could make it a pretty compelling framework for web apps.

    Thoughts?

  • king

    wordpress can be an extrodinary CMS or a blogging platform, but can’t be a web application framework

  • http://nativeimaging.com/ Native Imaging

    Cant agree with this article more. WP, great for blogging, but totally not at as CMS. Looking into migration to a Python or Ruby on Rails CMS soon as possible. Maybe Django, or Typo3 Neos.

  • Miles Fonda

    You said that you were just stating the facts, but almost every “fact” you stated was extremely subjective. “It currently doesn’t do either of those two things that well”, ”
    “the admin is bloated and confusing”…um, these have no quantity. There are little to no quantifiable statements in this post. What does not doing a blog “that well” even mean to you? Millions of webmasters around the world think that that WordPress functions extremely well as a CMS and a blogging platform, and some see potential for these tools to be used to create web apps. Makes sense to me.

    • http://nativeimaging.com/ Native Imaging

      Correction, WordPress is an ok blogging platform. Truth is, only 2% of clients are able to actually use the blog without calling for questions. Granted low education is a rampid problem in America, WordPress should have a much cleaner format for composing posts. Have you ever tried to use the WordPress App? Complete Fail.

  • estevan

    I have to ask, if you consider WP’s admin to be “confusing”, what are you comparing it to? I would love to see these easier administration areas. Unfortunately the only other system I’ve used is Drupal and I think we can all agree that _that_ is a truly messy admin.

    Regarding WP being a blogging platform and your comment, “doesn’t do [blogging] that well”, again what are you comparing it to? I may be out of the loop and I’m sincerely curious to see what you consider to be a better blogging platform.

    Additionally, I do think Mullenweg may be right about focusing on web applications in the future. Blogging is in a sense _one_ application but clearly users are gaining experience and knowledge in addition to different needs. Just as there are many successful theme developers for WP you could see a series of great web application developers for WP. Blogging is no longer as relevant now that some novelty has passed.