Building Community Web Sites

If you're a well-seasoned Net surfer, you've undoubtedly noticed that the number of "community" Web sites run by individuals, small companies, and other organizations has increased dramatically over the last few years. These sites serve as places for folks with common interests to meet, discuss ideas, share information, and collaborate in many interesting ways.

If you’re a well-seasoned Net surfer, you’ve undoubtedly noticed that the number of “community” Web sites run by individuals, small companies, and other organizations has increased dramatically over the last few years. These sites serve as places for folks with common interests to meet, discuss ideas, share information, and collaborate in many interesting ways.

This might seem to be a natural progression for online communities, but their evolution is filled with twists and turns. Let’s take a look back and examine how we got where we are now.

In the Beginning…

Before the Web, Internet communities were born and grew up in the various Usenet newsgroups. As they matured, they developed lists of Frequently Asked Questions (FAQs), codes of behavior (“netiquette”), and even their own local celebrities. As Usenet became more popular, better news clients were developed, making it easier to keep track of discussion threads in di-verse groups. Usenet flourished.

But this idyllic period didn’t last long. The situation quickly began to deteriorate as automated spammers flooded the newsgroups with sales pitches, pyramid schemes, adult advertisements, and so on. About the same time, the Internet boom began, and thousands of “newbies” arrived in Usenet with no clue about the culture they had wandered into. Longtime Usenet participants eventually gave up and formed mailing lists.

These lists were quieter and less susceptible to spam. However, mailing lists left something to be desired. For one thing, they are push-based — you get all the messages regardless of how many you want to read. Usenet news groups are a pull system. You could read Usenet groups when you wanted to, so that your mailbox did not fill up with unread messages.

Another major drawback to mailing lists was that there were no central registries to help find lists of interest. Word of mouth was often the only way. And, of course, there was always someone on the list who set up an automatic “I’m out of the office” message that was sent out to the entire mailing list any time a new message was posted. That never happened with Usenet.

However, even with all their flaws, mailing lists were often better than dealing with the wasteland that Usenet had become. Automated mailing list management software was common, and many of the early Internet Service Providers even offered mailing list services to their users.

In the Meantime

Then came the Web. Folks began using Web sites to supplement their mailing lists, most often by putting the mailing list FAQ on it. Then, rather than sending the FAQ out monthly (which could be a large message that had to be delivered to a large number of recipients), the list owner would send out a URL pointing to the online FAQ.

Web-based mailing list archives (and the software to create them) started appearing as well. There were also forms for subscribing, unsubscribing, and changing your e-mail address. This was a big improvement over having to do this by e-mail.

However, a few brave souls sensed that there was even more potential locked away in the interactivity that the Web provided, so they tried to do more with their sites. Some added polls, biographical information of their more famous list members, and even summaries of recent discussions.

What was truly missing, though, was a fast and easy way to build dynamic Web sites. There were hardly any tools, and those that did exist were often clunky and difficult to work with. Even adding search capabilities to Web sites was a major chore.

But what does all of this have to do with LAMP? A lot, actually.

Enter LAMP

The core LAMP components provided the building blocks that solved problems many of us didn’t even know existed. Scripting languages like Perl, PHP, and Python made it easy to program Web sites. Apache was an easily configurable, fast, reliable Web server with a modular plug-in system; mSQL (and then MySQL) provided a small, fast database that made it easy to store and retrieve data; and Linux, of course, was the ideal hosting platform for all these tools.

And best of all, this stuff was free!

In a very short time, an online community of developers had built and grown the tools that could be used to easily produce dynamic Web sites. This was a revolution in the making.

Not There Yet

The LAMP components solved a major problem that had been bedeviling these early Webmasters. Although they’d been adding new features to their Web sites (like group calendars, file repositories, and so on), it hadn’t been easy. Many of them weren’t programmers, so they had to struggle with learning to program Web sites in their spare time. They did it because they wanted to enhance their sites, but they didn’t like it. It felt too much like work.

With the emergence of LAMP, the more skilled and seasoned programmers among them started doing what came naturally to them. They began building reusable components for online communities. Once they had produced a critical mass, some then started to think about the bigger picture: structuring all these components into a framework of “core” modules that all community sites would need, and sets of optional modules or plug-ins that could be added and customized.

Others continue to produce new components. They’re using PHP, Perl, and Python to take advantage of these languages’ biggest strengths — rapid prototyping and integration. The future looks very bright indeed.

Going Mainstream

If you want to experience for yourself what the state of the art in online communities looks like (as well as find potentially useful and interesting information), browse over to sites like Slashdot (http://slashdot.org), NewsForge (http://newsforge.com), ArsTechnica (http://arstechnica.com), Kuro5hin (http://kuro5hin.org), and Use Perl (http://use.perl.org). They all provide news headlines and stories, threaded discussion forums, daily headline mailings, moderation and rating systems, content management, and more.

The code which powers these sites is virtually all based on LAMP and is all free. Many of them (such as Slash, the system upon which Slashdot and Use Perl are based) have gained quite a following and are full-fledged open source projects. People are building their own sites using these collaborative systems and, true to the open source spirit, many of them are contributing changes and bug fixes to the projects.

These collaborative systems have changed the perception of open source development. Open Source is no longer just about writing spam filters, kernel device drivers, or new GUI apps for Gnome and KDE. In fact, these collaborative systems are wonderful examples of just how Open Source should work. Many of these projects routinely borrow each other’s ideas and engage in well-intentioned competition. It’s evolution in action.

It’s also likely that these online communities, along with the kind of communication and collaboration that occurs in them, are examples of the next generation of applications. LAMP will probably be the platform upon which many of these collaboration tools and Web services will be built.

Where We’re Headed

After taking this look back, we can now better understand why certain features are offered by the various collaborative systems. Hopefully, you’re now inspired to use one of them in your job, hobby, club, or just as a new toy to tinker with.

In the next few months, we’ll look at these technologies in greater detail. We’ll examine what features are offered and see how to set them up and integrate them with your existing systems (such as e-mail, databases, directory servers, etc.) In the meantime, have fun exploring what’s out there.

Popular Projects

There are many different platforms or “engines” available for building community Web sites. They’re all built on LAMP components, usually Perl or PHP for the scripting and MySQL for the back-end database. Here are some of the most widely used.

  • http://www.phpnuke.org PHP-Nuke is one of the most popular PHP-based systems. It has support for plug-ins, themes, and runs on a a variety of operating systems.

  • http://www.postnuke.com PostNuke is a highly modified fork of the PHP-Nuke project. PostNuke’s goal is to become a full-blown content management system (CMS) with support for themes, plug-ins, and a revamped architecture.

  • http://scoop.kuro5hin.org The Scoop engine was originally built to run Kuro5hin but is now used by a number of other sites. Unlike many systems, there is commercial support available.

  • http://slashcode.com SlashCode (or simply Slash) is the engine that powers the popular Slashdot, as well as use.perl.org and numerous other sites. Slash is written in Perl and has quite a bit of documentation (in the form of a recently released O’Reilly book).

Jeremy Zawodny uses open source tools in Yahoo! Finance by day and is writing a MySQL book for O’Reilly & Associates by night. You can reach him at jeremy@zawdony.com.

Comments are closed.