September 23, 2008

Roll custom social networking sites with Elgg 1.0

Author: Mayank Sharma

Elgg is an open source application for rolling out a social network. It installs like any Web-based software, but instead of a blog or a wiki, it gives you all the components of a social networking site -- your own MySpace! It's popular with educational institutes and used by several universities across the world, in addition to powering social networks of companies such as Swatch. The new Elgg 1.0, released last month, is modular in design, making it easier for developers to build social networks around the platform.

In a blog post on the new release, Ben Werdmuller, CTO of Curverider, the company that develops Elgg, explains that the software now incorporates features central to social networking, such as granular access permissions, cross-site tagging, and emphasis on personal ownership (tracing posts and other activity back to the author), right into the core. He says that after four years in development, the Elgg developers decided to rewrite the software from scratch. "While many applications take a simple beginning and try and duct tape social networking and next-gen features over the top, we started again. And as a result, Elgg is fast, flexible, extensible, and ready to power the next evolution of social technology."

Elgg 1.0 is available in two flavors, core and complete. The core version is for developers who want to roll their own social networks and decide what features they need. "As the Elgg 1.0+ community expands," Werdmuller says, "more and more plugins will become available, and who's to say you should have a blog, or forums, or photos?"

The complete version weighs in at around 1.4MB and bundles social networking features such as user profiles, blogs, file repository, forum, social bookmarking, and a dashboard. Many of the features are bundled as plugins and included in the complete version. The company provides detailed documentation on installing Elgg and configuring plugins.

Easier to customize and import/export data

You can customize Elgg by selecting plugins, tweaking style sheets, and, soon, by modifying themes. But depending on how you want to use the social network, you'd want to customize it a lot more. To help ease the customization process, the Elgg developers have built in several APIs and methodologies that lets developers rolling out their own social networks easily modify all user-facing services.

"The major differences with the new Elgg are a simplified data model and a separation of logic from view," Werdmuller says. "Every entity in Elgg now inherits a single ElggEntity class, and any entity can have an arbitrary relationship established between them. That means a user (with an appropriate plugin) could link together a blog post, file, and a user profile, and then the system could traverse those connections in a generic way to enhance search results and provide new kinds of functionality. RDF fans will grok the importance of this immediately."

Behind the scenes, these entities have arbitrary metadata attached to them, which is searchable as tags. Entities also have access permissions associated with them. To see how all this manifests in code, take a look at the tutorial to build a simple blog in Elgg 1.0.

Elgg 1.0 also supports multiple viewtypes. A viewtype lets visitors view Elgg pages for a particular interface. For example, an Elgg-powered site can have a stardard HTML viewtype for normal browsers, and a mobile viewtype for mobile devices.

Werdmuller says that the separation of logic from view means that it's easier to provide and add new viewtypes. For example, the RSS feed in Elgg 1.0 is literally just an RSS view on the same logic as the page you want the feed for. In addition to RSS, Elgg 1.0 also supports other viewtypes, including JavaScript Object Notation (JSON), Friend of a Friend (FOAF), and Open Data Definition (OpenDD). "The JSON view allows for AJAX fun, and we've also got extensible RESTful and XML-RPC API architectures so that plugins can add this kind of functionality easily. All this means that you could easily build a J2ME front end for Elgg, for example, and never bother with the default Web interface."

OpenDD, which is developed by the same developers as Elgg, allows you to copy your data from one social network to another without losing track of your friends network. Werdmuller says that the company is working on federating networks and working with other vendors to provide true data portability. "We think that's important for the future of the Web."

Talking about data portability in a blog post, Marcus Povey, senior developer at Curverider, illustrates Elgg 1.0's data export and import features via the views and actions interfaces.

Povey says that OpenDD will allow administrators to migrate between the previous Elgg releases (now known as Elgg Classic) and the new codebase with "minimum amount of effort." But since Elgg Classic and Elgg 1.0 are two different codebases, upgrading will require an intermediary script, which Werdmuller says the company will be releasing separately, but didn't give a timeframe.

Category:

  • Internet & WWW