These days there's a lot of buzz about "Web 2.0" and making websites more interactive, but what's really going on is a reconnection to the community nature of the internet. Collaboration, cooperation, and the information commons are all ideas that pre-dated the world wide web in the form of older internet technologies. In today's distributed computing environment, though, these technologies have really flourished. Here's a guide to eight that you should consider making use of in building a community around an information commons project of any kind, from multimedia, to hardware, to software.
The early twenty-first century has brought us some excellent tools for building more sophisticated and responsive communities around peer production projects. Few projects need to deploy more than one or two of these technologies. However, a greater consideration of the community atmosphere and electronic landscape can make a huge difference in the success of your project.
Free software has played an important part in this technical revolution. As a result, there are free software tools for every one of these categories. In many cases, in fact, the free software tools lead the market. Which particular package you use will depend on what sort of CMS, portal, or hosting you have available to you.
I can't possibly hope to be comprehensive in listing packages to provide these services, but I have tried to present a reasonable sampling of some of the most popular and/or interesting tools that I could find. For the web-based tools, I've included information on LAMP-based (Linux-Apache-MySQL-PHP) packages, Drupal (a PHP-based CMS, on which Free Software Magazine is based), Plone (a Python/Zope-based CMS, which is what I am planning to use), and a selection of others (based on C, Perl, Ruby, Java, and others). I've also listed sites that provide these features as hosted services, which gives you the option of not having to install anything on your own server.
Certain technologies—particularly synchronous or visualization tools—rely on alternate client/server technologies. For those, I've listed clients, servers, and infrastructure information (including protocols and libraries) that may be of use.
Regarding tools for installation on your own server and/or client software to be used by visitors or contributors, I have restricted this list to free-licensed open source software only. However, in the column "Services", I have relaxed this requirement: where there are widely-used, market-leading proprietary software based services, I have included them. This includes services like SecondLife and Yahoo Groups, both of which have been used extensively to promote free software or free content projects.
Private communications: email and instant messaging
The most basic communications technologies are those that provide simple one-to-one communication. Email is the traditional way to do this in the free software community, but for a given project, conversations can also happen through forum "private message" (PM) communications or, if immediacy is also desired, through instant messaging technology (and don't forget, there's always the telephone!).
Email software is ubiquitous of course. Private messaging is usually a feature of "forums" (see the next section). Synchronous "chat" systems are fundamentally different from a technical perspective, though they serve much the same purpose.
There are a few cases of chat "applets" which can run from within a browser window, which can bring chat into the web browsing experience. There are also a number of "webmail" applications that can be embedded in a website, though I didn't attempt to list these below.
|Context||Private Messaging Resources|
|LAMP||CoolSmile , see also forums|
|Plone||qi.LiveChat , MailNode , PloneFormGen , SignupSheet , (see also forums)|
|Web Services||Google Mail, Yahoo Mail, etc.|
|Clients||ChatZilla , Konversation , XChat , BitchX , other IRC ; Kopete , Pidgin , other IM|
|Servers||EIRC (Java), ircd, other IRC|
|Infrastructure||IRC , other protocols|
|Services||OFTC , freenode , EFnet , Undernet|
The next step up is a web-based "forum". These are the evolution of the "bulletin board systems" (BBSs) of the 1980s and 1990s, adapted for use on the world wide web. They are accessible for most users, even ones who might have trouble with email. More importantly, they provide a lot of moderation options which gives you more ability to keep trolls and flames and other bad conduct out of your project. Doing so will encourage more people to stay on with your project.
If you want to stay low-tech, of course, the preferred technology nowadays is the electronic mailing list. Most of the newer email list servers, however, have some form of web-based subscription system. There are also the Google and Yahoo "Groups", which have nearly the same functionality as usenet newsgroups, but are accessible via both a web interface and email.
|Low-Tech||mailing lists , newsgroups|
|LAMP||PHP BB , Phorum , FluxBB , XMB , & others|
|Drupal||Forum (core), Advanced Forum , flatforum , Forum Thread , Democracy forum , phpBBforum , Phorum integration|
|Plone||Ploneboard , SimpleForum , zForum , TIForum , Gossip , EasyForums , NunBB , PloneMailList , Listen|
|Other||JForum , Beast , others|
|Services||Google Groups , Yahoo Groups , Simple Machines Forums|
Blogs and online contents
Maintaining an up-to-date website, by directly editing static HTML is a major chore. So "content management systems" (CMS) were invented to simplify the task. One of the most popular types today is the "web log" or "blog". There are dedicated standalone blog packages, but there are also blog modules for most of the major content management systems (including Drupal and Plone).
|LAMP||Wordpress , b2evolution , LifeType , Serendipity , Nucleus CMS , FlatPress , others|
|Drupal||Blog (core), Single-User Blog , Blog List , Mini Blog , Blogroll , Blogger , DrupalMU|
|Plone||COREBlog2 , Quills , SimpleBlog , q Plone Blog , bda.blogview , PloneWorkflows , ReactiveWorkflow , Press Room , Slideshow Folder , Plumi (video)|
|Services||Wordpress , others|
Wikis and Version Control Systems
It may seem a little strange to lump wikis and version control systems together, but the truth is that they do much the same task. A wiki is a kind of lightweight version control system combined with viewing and editing directly in your browser. Wikis usually present a much shallower learning curve than do tools to manage CVS or Subversion, although there are some nice integration packages available.
A wiki is just a quick, easily marked-up web site generation system, with simple shortcuts for creating new pages as well as rendering them to HTML (and sometimes other formats as well).
Version control systems are based on a different kind of mental model: one in which the package is downloaded (or "checked out") entirely by one user who then makes changes which then must be "checked in". This is a much heavier solution than the wiki, and there are typically access limits which result in a more complicated workflow. Formal version control systems are preferred for handling program source code, though. There are a lot more version control systems available, but I've listed Subversion here because it contains a web-accessible browsing system (ViewVC and Trac provide this for some other version control systems, including CVS, which was the standard for free software for many years).
|Context||Wiki & Version Control Browsing Resources|
|LAMP||MediaWiki , TikiWiki , DokuWiki , others|
|Drupal||Drupal Wiki , interwiki , Wikitools|
|Plone||ZWiki , ZWikiFolder , Wicked , Cuic pages ; ViewVC++|
|Other||Moin Moin (python), JAMWiki (java), Instiki (ruby); ViewVC , Subversion , Trac|
|Services||Wikia , Wikibooks , others ; Sourceforge (packages), Google Code (packages), other project hosting|
Social networking software
Social networking software is primarily about getting to meet and greet individual people. Typical features include "friends" and "favorites", which provide connections to various other projects. A similar application is a "social bookmarking" system, in which the favorites are links to other websites, possibly with an excerpt (making it into a kind of news system as well).
|Context||Social Networking & Bookmarking Resources|
|Low-Tech||Link lists, Web rings|
|Drupal||Profile (core), OpenID (core), Drigg|
|Plone||Organizational Profile , My Address Book , mxm Contacts , ExpertPool , Plonelicious , Tasty Bookmarks , Content Ratings , TagCloud , PloneWorldKit|
|Services||MySpace , Facebook , LinkedIn , Ning , other networking ; Delicious , Digg , other bookmarking|
Virtual reality used to be all the rage among futurists. In practice, it provides a very literal community experience online, but may not be as efficient at some of the most important tasks. There are things that can only be done in a 3D interactive environment, though
I was really surprised at how far this technology has come. With OpenSimulator and the Second Life Viewer, there is now a complete free software virtual world system available for hosting your own virtual realities. There are also, of course more general-purpose 3D viewing and serving systems based on X3D (the successor to VRML).
Unfortunately, all of the virtual reality technologies rely on specialized clients. This is unavoidable, considering how demanding the application is on system resources (unless and until 3D features are built into common web browsers).
It occurred to me that one way to get 3D world features into a plain web browser would be to create a "virtual webcam", offering rendered stills of a "location" within the virtual world, which could be seen by viewers who lack the 3D client (or sufficient bandwidth to use it). Such a program could probably be hacked together based on the Second Life Viewer and any given content management system. However, I was not able to find a ready made implementation of this to list below, so it's probable this doesn't exist yet (if you know otherwise, please comment).
|Context||Virtual Worlds & 3D Visualization Resources|
|Low-Tech||Rendered images, scene file downloads|
|Clients||SecondLife Viewer , FreeWRL , Xj3D , Collada Loader , WorldForge , Planeshift|
|Servers||OpenSimulator †, WorldForge ‡, PlaneShift ‡|
|Infrastructure||CrystalSpace - ※ , VOS , X3D , U3D - ※ - ※ , COLLADA - ※|
|Services||Second Life , OpenSimulator grids|
† OpenSimulator is compatible with the SecondLife Viewer. Together, they now provide a complete free software virtual world system.
‡ WorldForge and PlaneShift servers are included with the client in the source code packages.
Delivering large downloads
A major problem for multimedia content, design, or software projects is how to deliver the end product. Downloads of a few megabytes are common, and some things, like entire GNU/Linux distributions or feature-length motion pictures, can be multiple gigabytes in size. Most people can't afford to pay for this kind of download service on their own server, especially when the download is offered at no cost.
Fortunately, there are plenty of service providers who will carry most kinds of content you might create for HTTP or FTP download. Additionally, there is a relatively new technology, called a "swarming" download system which combines internet file-sharing technology with conventional hosting. The most successful such technology is Bit Torrent. These swarming download systems take load off of your server, allowing much of the work to be shared among the clients requesting the download, and they are particularly useful for high-volume, large-size, and very popular downloads.
To host such content on your own site, you'll need only to provide the "torrent" file (which is a kind of index to the download), a "seed" of the original file, and a "tracker" to help coordinate the download process among clients. There are even free services providing the tracker and seed system, so that you don't have to handle them.
|Context||High-volume Download Resources|
|Low-Tech||HTTP , FTP|
|Drupal||BitTorrent , Filebrowser|
|Plone||Railroad , ARFilePreview , PublicationProduct , PloneFilesZip , PloneForge , Software project|
|Web Services||Sourceforge (packages), Google Code (packages), other project hosting ; Internet Archive (content), Jamendo (music), Flickr (images)|
|Clients||BitTorrent , other torrent , other file sharing|
|Servers||mod_bt (Apache), PHPBTTracker+ (tracker), Infrastructure|
|Services||LinuxTracker , TuxDistro , TLMP , other torrent sites|
You might not think of internet stores as "social" software, but in many ways they are. Amazon's marketplace provides a way for smaller suppliers to compete. Ideas about "collective patronage" for free-licensed works, will require both basic payment processing, and also simplification of fund-raising through collective fund-raising systems.
In a commons-oriented world, monetary trade is still very important. The conventional "store" infrastructure can be used in unconventional ways, and adding things like collective patronage and fund-raising systems can turn commercial tools into important community support systems.
One exciting upcoming initiative is Creative Commons' "CC+" protocol. This is simply a unified way for content creators to offer additional licensing for Creative Commons licensed material. Although the idea was certainly conceived to allow "Non-Commercial" licensed content to be sold for commercial use to individual customers, there is nothing in the technology that prevents a "Buy for the Commons" approach which would make it possible to move non-free content into the free commons through collective patronage. Building such a system will certainly require the use of conventional e-Commerce software, and probably also software for collecting pledges from interested people.
There are also a number of services related to both payment processing and collective funding.
|Context||e-Commerce & Funding Resources|
|LAMP||osCommerce , ZenCart , ECSCS , other shopping carts|
|Drupal||Ubercart , e-Commerce , osCommerce|
|Plone||PloneMall , Simple Cart Item , EasyShop , GetPaid with Plone , PFG Payment Field , LetsPay , FlexPortlets|
|Other||JadaSite , other carts ; CC+ , SPP , RSPP|
|Services||ZenCart Hosting , PayPal , Authorize.net , Registered Commons †, Fundable , PledgeBank|
†I've learned that Registered Commons is working on an implementation of the CC+ protocol for re-licensing works from various Creative Commons licenses for money. Another CC+ site was supposed to be operating now (Rights Agent) according to a Creative Commons press release early in 2008, but the link doesn't seem to be responding, so they may not be operational.
Building an online community
Within the free software and free culture communities, there are plenty of reasons to build community sites, so as to involve visitors. Some of these can contribute a lot to the production, sharing, and understanding of free software, designs, and art.
I've tried to assemble the resources needed here, along with some ideas of how to use them. No doubt some would disagree with this particular breakdown, and I've probably omitted some important technologies, but I think these are eight that anyone setting about to design a community site should think about in their design.
This work may be distributed under the terms of the Creative Commons Attribution-ShareAlike License, version 3.0, with attribution to "Terry Hancock, first published in Free Software Magazine". Illustrations and modifications to illustrations are under the same license and attribution, except as noted in their captions (all images in this article are CC By-SA 3.0 compatible).