I decided to fork WordPress MU

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.



Tags: , ,

7 Responses to “I decided to fork WordPress MU”

  1. John Says:

    Dude. I like it 🙂

  2. SakthiG Says:

    First of all i would like to congratulate for this brilliant attempt ,i have the same vision of developing the application for premium membership website but i am not the person who expertise with this wordpress customization and i have no techie experience in this before But i would like congratulate for this work and now i have the following questions for youFirst ,Whether you are developing the application for your private use only or Do you have any idea to release in the form of open source or free licence Second ,Can you tell me the approximate time required for this project ( Do you have any schedule)Do you expect any kind of support from fellow blogger like us,if yes then what kind of support you will expect to support this project I wish you Best of luck for your new project

  3. Ray Says:

    Interesting. Keep us apprised of your developments!

  4. Eric Says:

    Your not the first person I've heard broach this idea … but your concept sounds more promising than others I've seen. My question, though: have you started working already? How far have you gotten? Would you be open to a collaborative project?

  5. toaks Says:

    i think its a great idea – do you need some help with that. ?

  6. JoeJoomla Says:

    I think if you want a good framework to develop applications you should look at Joomla! and some of the things that are going on in the Joomla! related communities.

  7. Forking Wordpress – More OOP & Reusable Parts | The Global Stream Of Bytes Says:

    […] the idea/motivation of forking WordPress for its movements isn’t that new. I found this interesting article by Terry Martin on his blog where I also got the picture […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: