Wordpress is a great product. I have been using WP for well over 5 years now since the 1+ days. As of today, the current release is 2.9.1 and I’m impressed with the growth of the community and the maturation of the product. Furthermore, I think Wordpress MU is an excellent framework for developing applications on. So why am I forking it?

WPMU ForkedWell, Wordpress is becoming too specialized in the blogging community.  With the upcoming release of 3.0, I see Wordpress more and more as a polished consumer-grade blogging app, rather than a framework for the development community.

Although I think the WP stack is great, I see it becoming bloated and is moving away from a candidate for application development, or Wordpress as a CMS. And now that Wordpress 3.0 is merging with Wordpress MU, I have some serious reservations about developing apps on it.

Why Wordpress?

Well, I have used Wordpress to create some pretty killer apps, although you probably haven’t seen them. They are tucked away behind some businesses as part of an ERP system. Or, they’re still on my development server as part of a local search framework.

In fact, I developed the whole Partsfinder local social search network using Wordpress MU. And, Semantic Press is using a suite of WPMU plug-ins that help turn Wordpress MU into a real powerful data-centric CMS for vertical markets. I’m in love with the Wordpress stack, but I think it needs to be cleaned, streamlined or stripped down to a core framework for application development.

Additionally, according to Matt Mullenweg, nearly half of all Wordpress users are using WP for business use.

Wordpress for Business?

Exactly.  I’m a some-time blogger, but more of a developer of great ideas (or so I think). I see the main value proposition for installing Wordpress is to build a business, not just publishing information.  And, today there are lot’s of other services that can help you create a blog, (ie, Tumblr.com & Posterous.com).

What I want is a framework for rapidly creating the infrastructure for data-centric, service oriented applications based around managing users.  I want a way to publish Web service APIs and provide access to the data or information that I have available to users.   I’m essentially talking about ways to vend data and Web services as part of a content management system.  Think Foursquare, Twitter, Gowalla, OpenTable, etc.   What if you can deploy Wordpress to build these types of services??

Well… you can.  So having said that, I’m looking to fork Wordpress MU into an application framework, rather than continue on into the development of Wordpress 3.0, and helping others publish information.

I’m starting with 2.6.5, the release just before 2.7 “Coltrane” and I’m focusing on providing some VERY specific changes that will help build a better application framework. 

Why 2.6.5? From what I’ve analyzed in the core files, this version appears to offer a good balance of security and core features that help make it attractive as a content publishing framework (image handling, post versioning, xml-rpc, etc).  And it’s the final release just prior to Automattic’s decision to place a heavy focus on blogger related features, including a revamped Admin API.

I think 2.6.5 may be a great candidate for forking.  I’m not positive yet, but pretty sure after analyzing the Trac changes that have occurred between 2.6.5 and 2.7.  But, I know there are several great things to add.  Fortunately, I can pick through the Trac changes to add specific features or performance enhancing updates.

Wait!  What about Lyceum?

Well, I’ve looked at Lyceum and frankly, I love it.  But, it isn’t capable of database sharding, which is what I am using to handle large amounts of data.  Lyceum uses a normalized schema vs. a sharded schema from WPMU.  Plus, Lyceum is based on v2.0.x branch of MU, which presents various security concerns that have already been addressed in 2.6.5.

Have you heard of BackPress?

Yep, but as far as I can tell it’s not in development and isn’t on the roadmap for the time being.  Backpress could be a great product for Automattic to stimulate app developers and become a central piece to the Web’s service-oriented infrastructure, aka WebSquared.

Not only could products like Wordpress or BuddyPress come out of it, but products like TalkPress or any “Press”.  Essentially, Automattic has an opportunity to approach nearly any vertical market and offer an agnostic framework for developing a “Press” within the vertical space (ie, AgentPress, MediPress, AutoPress, etc).

Great idea, but not on the agenda for Automattic.  They are focusing on Wordpress as a consumer product, which leverages the open source community to help build brand equity and a large GPL code base, which is a brilliant strategy.

But, I’m more interested in building the Semantic “Press” and targeting niche markets that are most susceptible for disruption.  Ben Franklin should be proud. :-)   What we need is a better app framework.

So, what do envision as a fork of WPMU?

  1. First of all, I’d love to see Wordpress as a model/view/controller (MVC) framework.
  2. Second, I’d like to see MAJOR performance enhancements that can speed up calls.
  3. Third, it needs security changes, using what I call “WP Clean State” (see below)
  4. Fourth, it needs user roles & capabilities and a way to handle profiles.
  5. Fifth, I want it to help build web service APIs.  Provide a way to publish and vend data-centric APIs to users.  If I build mobile apps, help me make my website publish data to a customized mobile app.

That’s it! (for now)

So, here are a few attributes that will be included in my version of Wordpress MU…

  • NEW: Profile Registry
    • Custom user forms based on role / action / context
    • User Profiles display customized content (manufacturers are not consumers)
  • NEW: Application (API) Registry
    • Web service configuration
    • Data Publisher
    • Authentication
    • Subscription Management
  • Admin Manager
    • Customizable admin panels: control placement and availability based on roles/capabilities
    • Customizable menu (you control which tabs are available to users and/or roles)
    • Widget / Dashboard  settings
  • Subscription Manager
    • Manage application / Plug-in subscription rights
    • Merchant gateway support (PayPal, Google Checkout, Authorize.net)
  • Performance Upgrades:
    • Bypass the stack for fast API calls
    • Script loader: JS minifier and GZIP.  < 100ms.
  • Core Conversion to “Clean State” (alters the WordPress codebase to reflect a secure application environment)
    • Removes references to “wp-“, cookies, session data, filenames, etc.
    • New term: “Apps”, similar to Themes (form vs function), but follow a Model-View-Controller approach
    • Blogs become sites.  Each site has its own directory.
    • Each site has it’s own content directory: “sites.dir”
    • Each site has it’s own theme directory
  • Users
    • Each user has his own content directory: users.dir
    • Each user has his own theme directory
    • Native Roles & Capabilities: Full management.  Add, rename, delete, etc.
  • NEW Application Themes: New ontology for Applications. Similar to themes, Apps will have different rights (ie, subscription access).
  • Stack Performance Upgrades: Focus on high performance calls.

This is just a quick snapshot into my current setup based on my rote memory.  I think it’s time for Wordpress to branch out into application development.  I’m going to FORK Wordpress MU.

Thoughts??