The Elgg engine
The Elgg platform is divided into two parts: a core engine and plugins that extend that engine. The engine contains the basic building blocks needed for a social website. It also provides the framework for developers to create new social tools through plugins. Here is a quick overview of what the Elgg engine does for your site.
User management
The Elgg engine handles basic user account creation and management. Registration, logging in, password resets, and e-mail address changes are all handled for you by the engine. Elgg also supports external authentication so that sites can integrate user accounts with other services. For example, there are plugins available that use this capability to enable users to log in with their credentials from Facebook or Twitter.
Privacy controls
Users want to control who has access to their data and the Elgg engine does this through a granular permission system. Every piece of content in Elgg has an access level assigned to it. It could be a blog post, a video, or an individual profile element. The engine gives users tremendous flexibility in who can see their data through simple privacy controls and custom access lists.
Theming
The engine has all the hooks so that you can do anything from tweaking the default theme to writing a completely new one. You have control over every line of HTML, every layout, every CSS statement. Chapter 9, Theming Elgg describes how to theme Elgg.
Commenting
It is no fun to share your latest vacation photos without people commenting on them. Elgg has a built-in commenting system that can be applied to any content in the system, whether blogs, bookmarks, or videos. This is great for plugin authors because they do not have to write any code to handle comments. It is also good for you as the commenting system looks and works the same way throughout the site.
Tagging
A feature common to social sites is tagging. Tags are keywords attached to content. When you click on a tag, it shows you all the content that shares that keyword. Elgg has a common interface for tagging content—whether blog posts, files, or a user's profile. The engine also makes it easy to create tag clouds.
Widgets
Widgets are draggable, customizable components that are often found on web portals such as iGoogle or My Yahoo!. Many of the plugins that are distributed with Elgg have their own widgets that can be placed on a user's profile page. The widgets display members' latest blog posts, who they are friends with, or what groups they have joined. Most social media sites provide bits of JavaScript that can be used to create new widgets within Elgg. For example, there is a widget that displays a user's latest tweets from Twitter.
Internationalization
Your users may not all speak the same language and you might want your site to support their native languages. The Elgg engine can load different language files based on user preference. By default, Elgg's engine and the bundled plugins come with English language files. People in the Elgg community have created translations for languages ranging from German to Chinese to Basque.
Feeds
A challenge for any social site is how to keep people coming back. E-mail notification is one popular technique that Elgg supports. Another option is providing RSS feeds so that users can monitor activity on your site. The Elgg engine can turn almost any page into a RSS feed. Do you want site-wide activity? There is a feed for that. How about the latest posts in a group forum? There is a feed for that. Looking to stay updated on the newest comments on a blog post? There is a feed for that, too. Just look for the orange feed icon at the top of the sidebar menu or in your web browser's location bar.
Web services
A majority of Twitter's traffic comes from desktop and mobile clients. How does this work? Twitter provides a web services API so developers can write applications such as TweetDeck, which interfaces with Twitter. The applications can pull the latest tweets out of Twitter and can post new tweets for the user. Elgg has a framework for building web services APIs much like those of Twitter or Flickr. Think of all the possibilities: desktop clients for notifications, mobile clients for sharing photos, mashups that use your site's data.