Difference between revisions of "General Technologies, Protocols, and Practices for Fab Lab Websites"

From Fab Lab Wiki - by NMÍ Kvikan
Jump to: navigation, search
(Pingbacks / Trackbacks)
(No difference)

Revision as of 22:37, 7 March 2011

The Idea

Each Fab Lab that wishes to participate in the worldwide fab lab network will run its own website, and will post content in accordance with their own method of internal governance. The global fab lab network will aggregate content from participating Fab Labs using standard protocols (RSS), provide feedback back (PingBack / TrackBack), and provide searching capabilities for content produced by Fab Labs.

In addition to providing a formal channel for sharing information, the goal of this effort is to create a feeling of community that spans the diversity provided by the Fab Labs around the world.

Types of Content

  • Project Writeups & Learned
  • Technical HOWTOs
  • Photos and writeups of events, outreach, gatherings, etc.
  • More as needed

Not all content produced by a particular Fab Lab needs to be shared with the global network. For instance internal committee meetings and changes to the open-session hours are important to post on particular Fab Lab's website, but wouldn't be of interest to a worldwide audience. Lessons learned from particular projects would be of interest to a worldwide audience.

Existing resources, such as Thingyverse, are already providing repositories of project files. Source code repository systems, such as Mercurial, and services like SourceForge already provide ways for teams of programmers/engineers to work together on complex projects. Unless Fab Lab specific challenges emerge with respect to version control and source management, we should use these existing tools and focus our efforts on issues that are specific to the needs of Fab Labs.

Content Management Systems

While a web content management system (CMS) isn't strictly required to participate in the global Fab Lab network, they are very useful. Most CMSs are designed to solve the problem of coordinating dozens of contributors with varying levels of web-publishing knowledge, and also make it easy/automatic to generate RSS feeds and other standard protocols used for sharing content between websites.

Fab Labs have reported good experiences with the following CMSs:

Home grown CMSs (and static sites) should be feasible, as well, but a well-known CMS backed by an active community of developers and users will likely provide more capabilities with less effort in the long run.

RSS Feeds & Aggregation

RSS Feeds (Really Simple Syndication) are the backbone of content sharing throughout the worldwide fab lab network. RSS feeds can be provided by many CMSs, with very little administrative or setup overhead, and can easily be customized to meet the individualized needs of a side quite easily.

Individual Fab Labs provide RSS feeds (using whatever CMSs or tools they prefer) that can be polled periodically by aggregators and by individual users who prefer to be notified about new web content.

Not all content that a Fab Lab may wish to put on their website is suitable for worldwide publication. For instance, fab labs on the other side of the world probably aren't interested in local committee meetings and changes to open hours. I recommend using your CMSs tagging feature to create an RSS feed of items that are suitable for global publication. For instance, with Drupal, the Taxonomy module will allow site users to tag content, and Drupal will automatically create an RSS feed consisting of all of the tagged items. I provide the URL of this RSS feed to the fab lab network's aggregator.

RSS feeds can also be used to syndicate content to social networking sites such as Facebook. In particular, Facebook provides an application called RSS Graffiti which can monitor an RSS feed and post to the wall of a Facebook user or Facebook organization. This is a good way to make sure that everybody who is interested in a particular Fab Lab receives notices about meetings and other items of local interest.

Pingbacks / Trackbacks

FIXME: Test TrackBack Module and/or Pingback Module and report findings

Searching the Fab Lab Network

FIXME: This is one of the aspects of the worldwide fab lab network that hasn't been hashed out yet.

Luke: My idea is that, once the aggregator is in production, Fab Lab websites that wish to participate will add an extra search-box that searches the aggregated content. Roughly the equivalent of using Google search with the term "site:http://sandbox.fabfolk.com/drupal/" prepended to the search that the user enters.

FIXME: Would anyone else like to chime in?

Content Moderation

Content moderation should be tailored to the needs of a particular Fab Lab

Individual Fab Labs should consider how web content is posted on the website, and how that content is reviewed. The exact details are likely to vary a great deal depending on what makes sense for a particular group -- everybody being able to post anything may work in some situations, sending all posts through a particularly web-savvy individual might work for other situations, and a formal moderation process would make sense for other situations. The important thing is that an individual Fab Lab considers the issue and does something that makes sense for their individual needs.

Example: Champaign-Urbana Community Fab Lab's content moderation workflow

Here's how the Champaign-Urbana Community Fab Lab has chosen to moderate its content.

The core volunteers at the CUCFabLab agreed on the following points:

  • The Champaign-Urbana Community Fab Lab has education as its primary mission, and the needs of adult hobbyists/crafters as a secondary mission.
  • We want everyone, including school kids who may not have the public image of the Fab Lab in mind, to be producing content.
  • We want a responsible adult to review the content for readability and appropriateness before it's published to the world.
  • Any kind of project writeup, from a picture and a paragraph, to a full technical treatise looks good on the website.
  • Anyone who isn't comfortable using a CMS is welcome to just e-mail the web admin with any content he/she would like to have posted.

The volunteer web administrator chose the following solution:

  • Drupal CMS, since several members of the CUCFabLab and several of the Fab Labs that we talk with on a regular basis are familiar with it. The following Drupal modules are used, in addition to the usual core modules:
    • Workflow
    • Triggers
  • Anyone who's ever visited the Fab Lab can have an account on the website, and can create content.
  • The following Druap roles were defined:
    • Authenticated User: anyone and everyone who has ever visited the CUCFabLab
    • Editor: Core volunteers who can edit and organize all content on the site, and who can approve/deny users and content. They cannot alter the underlying structure of the site.
    • Administrator: The web administrator. 1-2 core volunteers with web-administration experience. Can alter the structure of the web site.
  • The Drupal Workflow module, which provides a finite state machine that is coupled with Drupal's built-in Role Based Access Control system. The following workflow states are applied to all content that users create on the website:
    • "Private Draft": The default state for any page. The user can edit the page privately as much or as little as he/she desires.
    • "Published: World - Waiting for Review": When the author moves a page in to this state, an e-mail is sent to the CUCFabLab IT Committee listserv (via the Triggers module), notifying the committee that new content is waiting for review.
    • "Published: World": The content is now viewable to any visitor to the Champaign-Urbana Community Fab Lab website, and is syndicated out to the Fab Lab Global Network and social networking sites via the relevant RSS feeds. Only a user with "Editor" or "Administrator" privilege can transition a page in to this site.

Despite the complex setup, this system is quite simple to use in practice and provides some assurance that the Champaign-Urbana Fab Lab's website always represents its educational/outreach and hobbyist/crafting missions accurately.

Integration with popular social networking sites

We've had good experiences integrating with social networking sites by the following methods:

  • ""Syndication:"" RSS feeds can be used to syndicate content to social networking sites such as Facebook. In particular, Facebook provides an application called RSS Graffiti which can monitor an RSS feed and post to the wall of a Facebook user or Facebook organization. This is a good way to make sure that everybody who is interested in a particular Fab Lab receives notices about meetings and other items of local interes
  • """Like" Buttons:"" In order to allow users to easily share links to interesting content via social networking sites, "Like" buttons are useful. For a Drupal sites, there is a module called "AddToAny" that will provide "Like" buttons for a dozens of social networking sites. Other CMSs provide similar capabilities, and most social networking sites have webpages that descrive how to add "Like" buttons to any type of website.
  • ""Authentication:"" With a strong moderation system, such as the one shown for the Champaign-Urbana Community Fab Lab, the only reason to require a user account to authenticate before creating content is to reduce the amount of spam that the moderators have to sort through. Trusting a service like Facebook to provide a credible user identity will serve this need just as well, and won't require the user to sign up for an account. The Social Authentication Module provided by the Drupal community is a tool that is available to provide this kind of integration. Not everyone uses social networking, so there is some value to providing regular Drupal accounts as well. The desirability allowing anyone with a Facebook account to post content on the website is something that each Fab Lab will have to hash out internally but, in the right situation, it could greatly streamline the content-creation process.