As part of our requirements, we’re supposed to submit an Evaluation Form of sorts, responding to a series of prompts in relation to the project we’ve just completed. Here goes:

Please list all team members with bios and describe their contribution to the project.

Please see the Team Bios page.

Please list what features your team was able to complete and the total time spent. Please break down approximately how much time your team spent on:

Check out the Master Outline for a list of what we were shooting for. Anything that’s not crossed off didn’t get done.

I (Beau) started planning/research on Saturday (Feb 21), after finding out about the competition the night before :). The first few days were spent researching plugins/options and deciding exactly what would go into this whole thing and how to approach it. From there, Noel and Andrew were brought in to tie it all together during the last few days. Adding up the times below, we spent 90.5 hours of “countable” time on the project.

  • General configuration
    • This was time consuming in the beginning, but the majority of it is all handled by the custom installer now. I had some difficulties trying to get everything installed using svn:externals and different config directories etc, plus a lot of the plugins needed tweaking because they were never intended to run on WPMU. All told, around 15 hours of configuring and tweaking things was spent getting the core system operational. This included 2 hours of Barry Abrahamson’s time, who we got some help from to configure our specific install structure. Now that I know exactly how it needs to be done, this could be replicated in about an hour!
  • Look and feel
    • Matt did an initial pass at the theme in about 1.5 hours and then Noel took over. He worked on and off with the theme for 3 days while we were throwing in additional features and functionality. Total time spent on the theme (after Matt finished) was around 35 hours.
  • Each feature individually
    • Most plugins were researched in the first few days, which meant that the time spent actually developing functionality was reduced to tweaking those plugins or fixing them to work on WPMU, plus some custom plugins where we couldn’t find something that suited the requirements. I spent a chunk of time (14 hours) fixing plugins and making them WPMU compatible or be able to be run from our customized directory structure.
    • Once the complete configuration was figured out, I spent quite a while working on the custom installer and blog activation scripts because I felt it would make the system much more accessible to other users hoping to install their own version. I think total time on the installer was actually around 13 hours.
    • Different plugins took different amounts of tweaking or fixing (mostly for WPMU compatibility). Some time was wasted trying to get one audio player plugin working which we eventually scrapped and replaced in about 10 minutes.
    • Andrew did some great work on the admin integration of bbPress/WPMU and adding WYSIWYG editing to the bbPress posting form (which doesn’t come standard). His total time on that and tweaking some other elements was around 12 hours.

Please list all modules, add‐ons and extensions used.

  • WordPress MU (WPMU — main site)
    • AdRotate – banner management
    • Audio Player – inline Flash audio player
    • Author Listing – provides code for listing all authors
    • bbPress Integration – provides roles/cookie authentication with bbPress
    • Breadcrumb NavXT – dynamic breadcrumbs in the template
    • Cimy User Extra Fields – flexible system for adding arbitrary fields to user profiles
    • Custom KSES – allow extra codes to be posted in blogs/pages without filtering them
    • EG Attachments – list out files attached to pages/posts
    • Events Category – turns one category into an events system, allowing you to add location/time information
    • Interlinks – turns [[wiki style]] links into links automatically
    • WPMU List All Blogs – code to list blogs on a WPMU installation
    • MM Forms – allows you to create arbitrary forms and have their contents submitted into a DB backend and be emailed to a user
    • privatePlus – Posts marked as “Private” become viewable by any authenticated user (rather than “your current level or higher”)
    • Sidebar Login – provides a widget that can be placed in any sidebar/widget zone to let users log in (or show relevant links if already authenticated)
    • WPMU Site Wide Posts – code to list all recent posts from all blogs on a WPMU install
    • Sociable – add links at the end of each post/page to help people share that content
    • Subscribe to Comments – optionally subscribe to any comments posted on a post/page of interest
    • Viper’s Video Quicktags – easily insert content from popular video sites into pages/posts by just pasting their URL
    • WordPress Wiki – show revision history of a post/page in a listing underneath (and allow easy copare/revert)
    • WP Email Login – allow you to log in using the email address registered to your account (rather than username)
    • WP Polls – create arbitrary polls and attach them to a widebar (via widget), post or page to gather feedback about a question
    • WP PostRatings – adss a 5 star rating system to posts/pages
    • WPMU Enable bbPress Capabilities – additional integration between bbPress and WPMU
  • bbPress (forums/discussions)
    • bb Attachments – allows users to upload files on forum posts
    • bb Ratings – allows users to rate forum topics using a 5-star rating system
    • bbPress Polls – add an arbitrary poll to a topic
    • Subscribe to Topic – opt in to receive updates when someone replies in a topic of interest

How many lines of custom PHP were written for this project? How many lines of Javascript?

Not counting modifications to plugins (we had to modify/tweak some of them because they were developed to work for WordPress, not WPMU):

  • PHP
    • Custom installer: 581
    • New blog auto-config: 143
    • Custom plugins/global code: 125
    • WPMU theme files: 835
    • bbPress theme files: 124
    • TOTAL: 1,808
  • JavaScript: Only a couple here and there – maybe 10
  • CSS: 1,100

Please indicate how administrative features can be accessed and list a username/password for each permission level available.

I’ve sent George an email account details. All administrative functions are available by logging in using the login form in the sidebar of the homepage.

A few notes on specific functionality (we’re going to produce some screencasts to help demonstrate how things work):

  • To post an Event, all you need to do is log into the main blog, click the “New Post” shortcut (top-right) and then check the box on the right to put this post in the “Events” category. A new details area will appear under the post content area where you can enter location and time details.
  • To post News on the homepage, just create a New Post on the main blog and assign it to the News category.
  • If you’d like to enable wiki-style editing on a page, just scroll down to the bottom of the Page edit screen and enable the “WordPress Wiki” feature. This will add a list of post revisions to the public web interface for authenticated users.
  • Create a custom form by going to Settings > MM Forms. This is also where you can go to view previous submissions of all forms and manage how they appear. Once you’ve created a form, you can insert it into any Page or Post using either the shortcode provided, or via the Post screen’s toolbar button.
  • Create a new Poll using the “Polls” admin menu, and then add it to a post using the button in the toolbar. You can view all previous votes and the current results under that menu as well.
  • Site Admins have access to manage the banners which are displayed on the site, including viewing CTR, impressions etc via the AdRotate menu.
  • The “Forum Admin” link actually takes you over to the bbPress admin system so you can moderate discussions from there. If you’re logged in as a Editor or Admin, you’ll also get some moderation tools which appear when you browse the forums.
  • Top-level “Pages” are listed as the main navigation across the top of the site. If you create other Pages, nested beneath them, they’ll appear in a menu on the right of that page when viewed on the public site.

Please describe the approach your project team took. Please share any anecdotes, IRC transcripts, video blogs, twitter feed excerpts, etc. that help tell the story of your team’s project.

We decided to use WordPress MU to power the core of the project, and then bbPress (with integrated login/cookies) to power the discussions/forum sections. Using WPMU means that the site can power an effectively unlimited number of “sub-sites”, all using the same system. Each sub-site created will be centered around a blog, but may also create as many pages of supporting content as they like (which optionally may be configured “wiki-style”), post their own polls and create their own forms for contact forms, applications, gathering feedback, etc. Within this model, a new sub-site can be created to give an individual user a blog (and everything that comes with it), or to create a new space for a group project. All users created within the system are members of the main blog/site, and may also be members of any number of other sub-sites (projects, their own personal sub-site, or another shared personal sub-site).

As a Site Administrator, you have full control over everything, on all sub-sites. When a new sub-site is created, a user is allocated as the Administrator of that site. They may assign Admin rights to other users as well if they like. There are also “Editors” who may handle most “content-related” functions involved in managing a site, plus “Subscribers” who are only allowed to post comments, discussions etc (not modify most blog/page content).

Most of our conversations took place over Skype IM, so we’re posting some excerpts from those transcripts on the main blog of this site. We also had a Subversion repository to manage code revisions, and a complete commit log is available from there as well. The live site is an active working copy of the SVN repo to allow us to make tweaks there and manage that easily.

For your entertainment, I took some photos with PhotoBooth throughout the last week, as well as a few screenshots. Here they are:

See the Screencasts page for some video walkthroughs of the functionality available in this system!

What feature was the easiest/fastest to implement?

Using all of the plugins that we did meant that there was a lot of cruft introduced into the menu system (most plugins come with their own menu items etc). We very quickly wrote a custom plugin that filters the WPMU menu system right before it gets loaded into the admin screen to remove a lot of these items and clean things up. It’s a nice touch that just makes the admin UI a lot easier to user for “normal users” (as opposed to the Site Admins, who still get to see everything).

What feature was the hardest/most time consuming to implement?

Getting integration of cookies/sign-on between bbPress and WPMU took quite a bit of time, mostly because documentation for doing it with WPMU (as opposed to WP) is a little light and out of date. We’re using an alpha version of bbPress, so there aren’t too many people who are integrating it on production sites and producing documentation for it just yet. Combining that with the specific installation method that we chose (svn:externals for both projects) ended up burning quite a bit of time that was really unrelated to the actual development of the project requirements.

Once that was all figured out, the custom installer streamlined it and made it a breeze, so that no one else will have to deal with it 🙂

What feature surprised you (e.g. took substantially less or substantially more time than expected)?

We wanted to set up the project “properly”, so that meant having WPMU and bbPress loaded into the project as svn:externals, without modifying any files within those projects. They can both be configured with their content directories (themes and plugins) loaded from somewhere outside of themselves. We opted for this as a “best in class” demonstration of how you can/should install WPMU and bbPress. This turned into a bit of a battle, since that configuration doesn’t officially support the sub-directory mode of WPMU (it’s easier to do it using sub-domains). Eventually (with an hour or 2 of help from Barry Abrahamson, the Sys Admin for WordPress.com) we got it figured out and running smoothly.

What feature are you most proud of?

Personally (since I wrote it!), I’m quite proud of the custom installer and the blog activation scripts. Rather than an extensive list of instructions, the installer means that users can install the bulk of this system in a matter of minutes and be up and running. Cookie integration with bbPress can be fiddly, so having the installer take care of that is another big bonus.

When new blogs are created within the system, they automatically select the custom theme and then load all the plugins we’ve integrated and configure themselves with settings which are appropriate for the environment they’re running under. The installer actually needs some tweaking to set everything up, because we changed some things after it was “finished”, but it’s most of the way there.

I also think the bbPress/WPMU integration is pretty slick visually, and the admin is even styled to blend in with WPMU relatively seamlessly.

Brownie Points! What we’re giving back to the community

Working on a project like this gives us a chance to give a lot back to the WordPress and bbPress communities. Here are some of the things we’re hoping to be able to give back in the near future:

  • WPMU compatibility for a lot of plugins
  • Bug fixes and minor feature improvements for a few plugins
  • The custom installer, modified to be more generic
  • Improved plugins for bbPress/WPMU integration
  • Tutorial/guidelines on best practices for writing plugins that are WP and WPMU compatible
  • Plugin for auto-configuring new blogs on a WPMU intallation
  • Plugin to make bbPress admin look like WP/MU

— Beau