Free software tools for designing productive community sites

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.

Community-building tools

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 and private messaging systems provide basic one-on-one communication. Most free software projects just use email, but web-based forum "private message" (PM) messages can be just as effective in a project (Photo credit: Daria Radota Rasmussen/CC-By 2.0)

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
Low-Tech email
LAMP CoolSmile , see also forums
Drupal Forummail
Plone qi.LiveChat , MailNode , PloneFormGen , SignupSheet , (see also forums)
Other webmail packages
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

Forums

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.

Forums and discussion groups provide room for support, education, and consensus (Photo credit: Pingu1963@Flickr/CC-By 2.0)
Context Forum Resources
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).

Web-logging or "Blogging" software and content management systems can provide everything from an open diary on the web to a full-fledged news service, depending on particular package details (Photo credits: Wee Keat Chin/CC-By 2.0, David Lisbona/CC-By 2.0)
Context Blog Resources
Low-Tech static HTML
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)
Other Typo (Ruby)
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.

Wikis and version control systems both maintain code bases for the project. Wikis are lightweight and can be easily modified by almost anyone willing. Version control systems take some time to learn, but are usually more powerful in the sorts of version tracking they can do (Photo credits: Kevin Quinn/CC-By 2.0, Ralph Bijker/CC-By 2.0, Lars Plougmann/CC-By-SA 2.0, Ellie Van Houtte/CC-By 2.0)

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
Low-Tech static HTML
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).

Social networking software provides many of the benefits you would otherwise get from in-person meetings, in terms of finding people with similar talents or beliefs (Photo credits: xt0ph3r@Flickr/CC-By-SA 2.0, Paolo Màrgari/CC-By-SA 2.0)
Context Social Networking & Bookmarking Resources
Low-Tech Link lists, Web rings
LAMP Elgg
Drupal Profile (core), OpenID (core), Drigg
Plone Organizational Profile , My Address Book , mxm Contacts , ExpertPool , Plonelicious , Tasty Bookmarks , Content Ratings , TagCloud , PloneWorldKit
Other
Services MySpace , Facebook , LinkedIn , Ning , other networking ; Delicious , Digg , other bookmarking
Infrastructure OpenSocial

Virtual Reality

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

Virtual reality environments, like the one pictured above from Second Life, provide a very literal mapping of real world communities (Photo credit: Vanessa Tan/CC-By 2.0)

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.

Moving large files such as software packages, music, and even entire CD or DVD disk images can be quite a chore. The newer BitTorrent protocol has become quite popular for this kind of task, because it shifts the load from the server to the clients, and it adds additional error correction, eliminating the risk of corrupted downloads (Photo credit: FaceMePLS@Flickr/CC-By 2.0)

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
LAMP
Drupal BitTorrent , Filebrowser
Plone Railroad , ARFilePreview , PublicationProduct , PloneFilesZip , PloneForge , Software project
Other
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

e-Commerce

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.

Money transactions are part of most communities in real life, and the ability to include this in online communities opens up many possibilities (Photo credits: The Consumerist/CC-By 2.0, Tinou Bao/CC-By 2.0)

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
Low-Tech
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.

Licensing Notice

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).

License

Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice is preserved.