BuddyPress is a collection of social networking components that are heavily dependent on the theme of your WordPress.org powered site. In order to view a member’s profile, a list of user groups, an activity stream, your friends, the active WordPress theme needs to have the proper templates to output those things. If the templates don’t exist, the page won’t display. Pretty simple, right?

Wrong.

There are two fundamental problems with this approach:

  1. Bolting BuddyPress into an existing theme is really difficult. It’s a rabbit hole of modifications just to get things usable, and another hole to make it actually look pretty and cohesive with the existing theme’s styling and layout.
  2. When the BuddyPress development team wants to update the Default Theme, we do so at the risk of breaking backwards compatibility with existing themes that expect for it to work a specific way.
    1. Third-party BuddyPress plugin authors feel this pain even more-so, as they’re dependent on parent themes, child themes, and their own functionality all aligning correctly.

The first problem is the most common, and also the most frustrating to most new users. “I already have the site I want, but I want this feature that BuddyPress can provide. How do I make them work together?” The answer to this question isn’t simple, and it’s a huge detriment to the new experience of setting up BuddyPress to have to lurk around the HTML and template files, and butcher your pretty theme to make things fit.

The second problem is more common to developers and designers, and also prevents the BuddyPress development team from exploring any amazing new ideas with the project at its core. When we want to build something new, or improve an existing feature that’s falling a bit behind the times, existing templates can’t evolve to match the functionality because it’s going to potentially break existing installations.

There’s a solution, and we think it’s pretty awesome.

In an undetermined future version of BuddyPress, we’re going to start bundling template parts along with features. These template parts are intended to be the canonical set of skeletal styling that BuddyPress provides out of the box. It has the benefit of being a turn-key installation for everyone, and allows us to push out updates more quickly and evolve the platform without worrying about how themes that are outside of our control might break. These templates will work with *any* existing standard WordPress theme without any modifications.

Sounds neat, eh?

Surprise! bbPress already works this way, and it’s not far off for BuddyPress to inherit this new functionality, too. The purpose of this particular post and announcement is really two-fold:

  1. We know that this is an issue for our users, and we don’t like being stuck in this rut either.
  2. We want to get the word out early about the change so anyone that needs to adapt has ample time to do so.

What does this really mean for me?

Very little, actually. 🙂 If you’re using a derivative or a child theme of “bp-default” it will continue to work as it always has. If you’d rather check out what the bundled and white labeled styling looks like, you’ll be able to switch back and forth between the two seamlessly. The Default BuddyPress theme has had a good run, and we’re going to continue to include it and support it for the foreseeable future. What we want to do is shift our dependency from a theme we’re afraid to change, towards a set of templates that we love to improve.

We’ve created a forum topic specifically for this discussion about how theme compatibility will work, and to answer any questions and talk more about its future.