An online community for educators built with WordPress and BuddyPress
Jay Collier of The Compass LLC has been a consultant to the Maine Department of Education for the past 2 years, during which time, he proposed, built, and is continuously improving MaineLearning.net, a professional collaboration community and learning resource directory for Maine educators.
MaineLearning.net is built on WordPress and BuddyPress, using a highly-curated set of plugins and themes. In the following report, Jay outlines Maine’s use of BuddyPress as part of its continuing innovations in K-12 education.
[Updated March 13, 2013 with architecture and configuration details. As of March, 2013, the Maine Department of Education is no longer actively stewarding MaineLearning.net.]
The state of Maine has been an innovator in digital learning for over 15 years.
- The Maine School and Library Network, initiated in 1996, provides Internet access to all schools and libraries in Maine.
- The one-to-one laptop program, established by law in 2001, provides laptops to every 7th and 8th grader in the state, while school districts fund laptops for an additional 50% of high school students.
- A high-speed network backbone, bringing gigabit ethernet to rural communities, was completed in 2012. The goal was to provide inexpensive connectivity to last-mile providers: for-profit corporations, not-for-profit organizations, cooperatives, and municipalities.
- In 2012, Maine passed legislation for proficiency-based high school diplomas. Starting in 2017, rather than receiving passing grades in a standardized series of courses in order to graduate, many high school students will be able to receive a diploma by demonstrating proficiency in a variety of ways, from traditional tests to portfolios, performance, exhibitions and projects … and at their own pace. Schools will be allowed to eliminate age-based classes altogether.
- And more.
Online community of practice
To support this transition to learner-centered and proficiency-based learning, commissioner Stephen Bowen charged the Department of Education with developing an online community of practice (OCOP) “where teachers, school leaders, curriculum coordinators and others can share best practices – lesson plans, rubrics, curriculum materials and professional development opportunities.” The charge:
Build a professional learning community platform to help educators engage in conversation, share innovative ideas, discover and curate useful resources, document successful practices, and apply them in their own classrooms and schools.
Support and sustain continuity between in-person meetings and professional development opportunities. Help new constituents get up to speed and become valuable, active partners in learning communities.
Model an interdisciplinary, continuous-learning community approach that can be implemented at schools and districts across the state.
Connect teachers, administrators, parents, and taxpayers so they can discuss important educational policy issues.
So, in the summer of 2011, we developed a digital strategy, built a demonstration site in less than a month and drafted policies for user-generated content. Initial funding was earmarked in November 2011, the initiative was integrated into the Department’s strategic plan in January 2012, and the version 2.0 production site went live in February 2012. During the following months, the Department approved 21 practice groups with 250 active members.
From day one, we wanted the platform to support increasing levels of engagement, from initial observations (“lurking,” in the positive sense) all the way through to moderating and leading practice teams.
Although the OCOP would be launched quietly and was limited to Department-approved practice groups and members during 2012, from the start all group conversations were intended to be visible to the world: a virtual version of the fishbowl model of collaboration.
We wanted members to be able to receive activity notifications immediately or via daily or weekly digests. We wanted visitors to be able to follow any group by subscribing to its feed via the Blogtrottr service.
Then, after implementing the collaboration features, the next phase would be a learning resources directory, which would contain recommendations (via URL) for:
- Digital learning objects, such as content, multimedia, applications, lesson plans, and syllabi that can be used anytime, on any device, in any setting, at home and in classrooms, and through self-directed study and professional development initiatives, and
- Digital learning opportunities, including classes, courses, workshops and professional development sessions and that provide live interaction between, and among, students and teachers, learning coaches and community mentors
Whereas there already countless global resource repositories — containing both free and “premium” objects — when we began, there were no registries that organized links to resources based on Maine-specific needs and standards, and no single repository contained links to local Maine learning resources: expanded learning opportunities, service-learning projects, and community mentoring opportunities. Our Resource Directory was created to do just that.
Laying the foundations
From the start, our goal was to deliver a minimal viable product to demonstrate potential, and then to rapidly iterate while adding functions requested by our early users. Our first step was to identify the platform that could be quickly configured to support familiar kinds of online collaboration — forums, document sharing, wiki pages, blog posts, and status updates — while being able to support our vision of the ideal future platform.
So, we pulled together all of the requests we’d received from DOE staff and constituents (including features from a series of previous projects) and created a detailed list of criteria, for which we made an initial evaluation using the NGT ranking technique. (See tabs along the bottom of the spreadsheet for details.)
Since we knew we wanted to create a framework that could be easily replicated by school districts and other learning organizations and jurisdictions, and at low cost, we started with the open-source frameworks supported by our state’s IT office: Drupal and WordPress. We determined that both platforms were viable, and chose WordPress because it could be easily configured by non-technologists. The BuddyPress environment was critical to meeting our defined criteria.
Architecting with WordPress and BuddyPress
We started with minimal resources — 40% of my time, external hosting services, and about 40 hours for back-end administration and quality control for plugin code for the first 9 months. We contracted with SiteGround for cloud VPS hosting and with BuddyPress developer Boone Gorges for back-end support. Boone set up a public GitHub repository and configured our server for the Git development workflow. I installed MAMP, Gas Mask, and GitHub for Mac on my own machine for local development.
Since I am a strategist (rather than a back-end developer), I found it quite easy to implement desired features by finding and evaluating WordPress plugins, installing, activating, and testing them on my local machine, and, if acceptable, pushing them to the current development branch at GitHub, all without needing coding experience. When needed, I asked Boone to provide recommendations, check for PHP errors, and add site-specific code to meet our needs. He would then push to production.
Configuration and theming
To get started, I installed WordPress multisite (using subdirectories rather than subdomains) to provide separate “subsites” for the collaboration (BuddyPress), resources (custom types and taxonomies), support (plain-vanilla WordPress), and news and updates.
Rather than making interface tweaks to the theme code itself, I chose to create child themes that use highly regarded and well supported themes as their parents: BuddyPress Default on the main site, and the Genesis framework for all subsites.”
Then, I created customized “child” themes on top of the parent themes, where I made site-specific interface styling tweaks. This provides the best of both worlds: continuous improvements by theme developers and sustainable customizations for our own sites.
I made continuous interface tweaks via the Custom CSS plugin, which allows for quick changes to be entered through a WordPress adminstration panel. For each periodic push from development to production, I moved those changes into each theme’s style.css, so that the changes would be stored permanently in our Git repository.”
Here is how the subsites were configured:
- Site A (root): Buddypress – http://mainelearning.net/
- Site B: Resources – http://mainelearning.net/resources/
- Site C: Support – http://mainelearning.net/support/
- Site D: MaineDOE.net – http://mainedoe.net/
Using WordPress’ built-in multisite configuration and the domain mapping plugin, site A appears at the root of http://mainelearning.net, sites B and C are secondary sites (subdirectory subsites) at the same domain, and site D is a prototype site mapped to http://mainedoe.net.
Here are some of the key plugins we’re currently using with WP 3.4 and BP 1.6. Most of these are perennials that have been maintained through many core software updates, and across multiple projects. The activation status follows each plugin. (Note: emerging WP/BP best practices point toward activating BP-specific plugins only on that site. We started at a time when most of those plugins needed to be network activated, and since we’ve had few conflicts between plugins for over a year, we’ve kept that network activation for now. It works!)
- Network Plugin Auditor – This must-have plugin adds back-end columns so you can see how each plugin is activated. Important on a complex multi-site configuration. (Network activated)
- Allow Multiple Accounts – Normally, an email address can only be used for one account, but there are times when an administrator needs to create multiple accounts for testing. This plug-in allows that. (Site A)
- Custom CSS Manager – We make CSS tweaks to both production and development environments with this plug-in. Then, we move them into the styles.css file in themes during monthly updates. (Network activated)
- Gravity Forms (premium) – For MLN.net, we used Gravity Forms (and + Custom Post Types) to create complex resource submission forms, including custom post types, fields, and taxonomies. WP Types & Views has released a front-end form editor that may provide the same function. (Site B)
- Gravity Forms + Custom Post Types – See above.
- Network Privacy – Provides additional levels of privacy for each site, including administrators only, network members, etc. (Network activated)
- TurboCSV (premium) – In 2011, I tried quite a few CSV/XLS importers to facilitate the import of items into the resources directory. This one worked best at the time. (Site B)
- Types and WP-Views (now WP-Toolset, premium) – See the detailed information about this plug-in suite, below.
- User Switching – There are times when a user needs to have a change made to something they’ve posted, and they are new to the platform. With their permission, this plugin allows you to switch to their user account temporarily. (Network activated)
- WP Optimize – There are many ways to optimized database tables when they get filled with data, such as post revisions and comments. This plug-in works as well as any. It is operated from the root site. (Network activated.)
- WP Super Cache – For a service that provides custom content for each user, a file-caching plugin does not provide much benefit. However, to speed up delivery of static content in the resources directory and MaineDOE.net prototype, I used WP Super Cache. I’ve wanted to try and use W3 Total Cache, but in several prior instances, it broke a site. (Network activated)
Authoring and back-end
- Admin Menu Editor – This plugin provides a drag-and-drop interface for reordering or hiding items in the left-navigation in the back-end. (Site B)
- Broken Link Checker – I have been using this plugin for years, and it’s a life saver. Recently updated to use server resources more effectively, it cycles through all found links in a site and then sends email notices of broken links to authors and administrators. (Activated individually on each site.)
- Enable Media Replace – A simple feature that ought be in core: an authorized user can upload a new binary file to replace an existing asset without breaking URLs. (Network activated)
- Events Manager – I think I’ve tried every basic and premium event calendar plugin, including those that promise to work with BuddyPress. This is the only one that’s worked, and allowed for templating for interface customization. Haven’t used it for RSVPs or ticketing, though. (Site A)
- Page Links To – There are times when you want a URL within your site to redirect to an external URL. This is one easy way to do that by adding a meta box to your posts and pages. (Site D)
- Post Type Switcher – This plugin adds a simple dropdown in the Publish metabox that allows editors to change between post types. Useful when y0u are managing several custom post types. You may lose custom field data, however, so be careful. (Sites B and D)
- Resize at Upload – How can you not use this plug-in or one like it? Convincing authors to resize their images before upload is a challenge. This plug-in resizes images to a predetermined size (I choose 2,000 pixels on the longest side) before upload using browser scripts. Then, that medium-resolution derivative is resized to multiple sizes by WordPress. Great! (Network activated)
- TinyMCE Advanced – Out of the box, the authoring interface is good, but we needed several additions for the publishing prototype: a drop down for custom CSS styles, like pullquotes and bylines, removal of font formatting buttons, and addition of simple table editing buttons. This plug-in has been my TinyMCE customizer for years. (Network activated)
- BuddyPress – The mother ship. (Network activated, but be aware of future changes that will prefer single site activation)
- BP Group Documents – Although this plug-in is no longer supported, it has been the only light-weight option for document storage within each BuddyPress group, which posts updates to the group and site activity streams. I understand these features are soon to be included within BuddyPress docs, see below (Network activated)
- BP Group Management – With many large groups, you’ll need an administrator area allowing for the addition and deletion of group members, as well as changing their roles and e-mail subscription options. That’s what this plug-in does! I understand many of these functions will move into BuddyPress 1.7 in March or April, 2013. (Network activated)
- BuddyPress Docs – This Boone-Gorges BuddyPress component adds collaborative editing (wiki pages!) to your BP community. (Network activated)
- BuddyPress Edit Group Slug – Self-explanatory. When you just have to change a group slug. (Network activated)
- BuddyPress Group Email Subscription – Provides the ability for each member to choose how often they want to get e-mail notifications from each group. Helpful when you want immediate notifications from one group and weekly digests from another. (Network activated)
- BuddyPress Moderation – Our user-generated content policy confirmed that we would respond to any complaints about contributions that fail to meet our acceptable use guidelines. This plug-in adds flag icons with all content so members can notify administrators of unacceptable content. (Network activated)
- Invite Anyone – Allows group moderators to add existing network members to their groups, or to send an invitation via e-mail. (Network activated)
Integration with external services
- Akismet – Spam checking from Akismet (in testing)
- Learning Registry Display Widget – We have fine-tuned an existing plug-in to display other uses of an asset by checking its URL against a production node of the US DOE Learning Registry. (Site B)
Interface and navigation
- Autolink URI – Automatically turns fully-formatted URLs into links without requiring authors to manually add hyperlinks. (Network activated)
- CryptX – Automatically obfuscates e-mail address and turns them into mailto: links without requiring authors to manually add hyperlinks. (Network activated)
- External Links – This plugin adds Wikipedia-style external link icons. Helps prepare visitors for leaving our specific user-generated content environment. (Network activated)
- Hide Broken Shortcodes – Shortcodes are great! They fit the perfect spot between complex interfaces and code. A number of plugins generate them. However, when we clean up shortcode after disabling them, we sometimes miss a couple. This plug-in hides them. (Network activated)
- No Page Comment – Lets you choose a default comment status for new posts and pages. (Network activated)
- Query Multiple Taxonomies – Do you see the multiple-dropdown search widget on the resources site? That’s generated by this plug-in. WP-Views also has this function, but we haven’t migrated yet. (Network activated)
- Theme Test Drive – I use this in the development space to test alternative themes. Not used in production, but those two environments are identical (except for databases) due to our GitHub workflow process. (Network activated)
- WP Page-Navi – Is this still needed with the BuddyPress Default and Genesis themes? Possibly not, but it’s here as a legacy feature. (Network activated)
Of course, our use of these plugins is always provisional; I continue to evaluate alternatives that will meet our requirements even better. Indeed, we are already in the process of replacing some of these plugins with alternatives.
We added a number of code snippets to the functions.php files in each child theme directory. These minor customizations are documented within each file; you may view them in the GitHub repository.
- We added navigation buttons to activity stream items
- We changed the default member avatar
- We loaded common site-specific CSS styles into TinyMCE drop-down menus
- We adapted Helen Hou’s implementation of the Chosen multi-select list styling to simplify back-end metaboxes for multiple taxonomies
A note on custom content types, fields, and taxonomies
For the Learning Resources Directory, I needed to create and maintain custom post types, field groups, and taxonomies to support a rather complex data structure for metadata for our learning standards: the Maine Learning Results and Common Core State Standards.
After having tried nearly every plugin option (and combination), I settled on WP Types & Views (now called WP-Toolset), which allowed me to rapidly prototype and improve data structures. Then, I used Gravity Forms to create front-end forms to prompt educators to organize and classify their recommended resources.
This work has only just begun, but WP-Toolset has provided all the features we’ve needed; indeed it can be compared favorably with the Blocks, Views, Panes, and Panels modules and functions for Drupal. Indeed, I’ll be experimenting with WP-Toolset’s CRED feature to more easily integration between front-end forms and structured data.
The learning resource submission form deserves a little more attention here. The goal was to keep the form as simple as possible, and much more can be done. However, one nice feature in Gravity Forms is conditional fields. If you scroll down to Content Focus > Content Areas and select, say, “Mathematics.” Notice that two submenus appear, one each for practices and standards. Revealing sub-taxonomies through the Chosen multi-select interface proved to be a real success in user testing.
The online community of practice has now been fully-functional since March, 2012. Since then, the Department has approved 21 practice groups with 250 members; the more active groups have included: the Digital Learning Advisory Group, the Cross Discipline Literacy Network (and its 10 subgroups), the Maine Arts Education Leaders cohort, and the Digital Citizenship in Schools discussion group. We recently added a space for service-learning coordinators and practitioners, and maintain a list of group and membership requests.
The learning resources directory has been tested by a variety of educators, with continuous improvements based on user feedback. The Arts Education cohort is developing a peer review process for those who ask for review of their submissions. Wikipedia-style ratings will be implemented next.
Currently, program direction, platform administration, and community stewardship functions are being performed by myself (Jay Collier) and our back-end developer, Boone Gorges (core software developer for the collaboration software).
We’ve now been live for almost one year. As we approach the end of our current funding and contract cycles, the state of Maine has been working to sustain MaineLearning.net.
- The Department of Education has been planning to initiate a public communications campaign and is seeking funding to fund program leadership and community stewardship through the next level of service, including those potential enhancements listed below.
- The state’s Office of Information Technology has been developing an RFP that will seek external vendors to provide Internet hosting, software management, and back-end development to support the continuous improvement of the platform when the current funding and contracts end this spring.
With sufficient resources, we are considering many potential enhancements, including the following, all of which are possible within the current framework, given additional staffing:
Potential collaboration enhancements
- Allowing open group applications and selecting new groups based upon capacity
- Professional development support, including organic groups for sustained collaboration between webinars, seminars, and workshops
- Active management of resource vetting teams, including rubric development, and credential design (badges)
- Availability of sub-sites (blogs) for every group, upon request
Potential resource directory enhancements
- Statewide promotion for crowdsourced resource sharing
- Simplified resource submission interfaces and predefined search results
- Multiple levels of evaluation options, from thumbs up/down, to multi-question reviews, to peer review workflows
- Exchange of vetting data (paradata) via US DOE Learning Registry and other repositories
- Ingest of pre-existing learning resources, from vetted OERs to professional development objects, to community learning opportunities
Potential administrative initiatives
- Grant applications for funding from regional and national foundations
- Consulting with other jurisdictions that wish to replicate the model
- Contributing lessons learned and custom add-ons back to the open-source community
- Investigating viability of integrating ePortfolio and learning management (ScholarPress) features into the platform
Toward the future of learning
In Education Evolving (PDF) — Maine’s 2012 strategic plan for learning in Maine — Commissioner Bowen worked with educators around the state to define the challenges and opportunities of 21st-century education.
To build on the great work being done in Maine’s schools today, and to move from a century-old model of schooling to a more effective, learner-centered approach in the process, will require a steady focus on a handful of core priorities organized around meeting the individual learning needs of all students …
Such a move won’t take place through the imposition of heavy-handed mandates or one-size-fits-all approaches from Augusta, but by building on the innovative work being done in schools across Maine already and by employing strategies to increase collaboration and sharing of best practices….
As Harvard’s Tony Wagner argues in his book The Global Achievement Gap, teaching has been and continues to be a largely solitary practice providing few opportunities for collaboration and sharing of best practices…
With the advent of the Internet, the sharing of new ideas and new approaches to teaching can be far more readily facilitated. Instructional materials, research on best practices, and even videos of effective instructional methods can be shared instantly across the state and around the world.
Collaborative, learner-centered education is at the heart of Maine’s strategy for transforming learning communities for this new era and MaineLearning.net supports that strategy.
Watch an introduction to Innovations in Maine Learning, including the MaineLearning.net online community of practice and digital resources directory:
This case study was supported by the Maine Department of Education. An earlier version was partially funded by the British Columbia Educational Resources Acquisition Consortium.