This is the first in a series of articles that Arck’s crew will create on a semi-regular basis. Our intention is to share our experiences customizing the popular open-source platform Elgg, both in terms of UI, functionality and integration.
We begin with Profile Manager. Profile Manager by ColdTrick is arguably one of the most useful and most used GPL plugins for Elgg. Versatile, user-friendly and well engineered, this plugin provides a unique profile management framework, which is much needed by many Elgg-powered sites.
Shortly after the release of Arck’s Roles framework, it was clear to all that there is a necessity to ‘marry’ these two independent frameworks. The goals was to make Profile Manager aware of existing user roles, so that site administrators could manage and create role-specific profile types with corresponding categories and profile fields.
At its present state the bridge plugin creates a seamless synchronisation of roles and profile types. Changes in profile types trigger a change in user’s role, and vice versa. While the roles framework, mainly concentrates on permissions of logged in users, the bridge allows to control what information is rendered based on the profile owner.
With some minor extensions this allows an novice administrator to greatly improve the registration experience, where specific sets of fields can be required for various roles. For example you wouldn’t want to request ‘Years of teaching experience’ from a user registering as a student, and you wouldn’t want to ask Professors for their ‘Current year of Bachelor’s studies’.
Arck’s “roles” and role-enabled “profile manager” plugins are GPL’d and available for download on our Elgg community profile, here:
Our development squad is now +1 with the addition of Ismayil. We tracked Ismayil down after implementing his excellent hypeAlive plugin on one of our recent projects. Although he’s only been working with elgg for 8 months, he’s already recognized as a solid contributor to the community. You can view his community work here: http://community.elgg.org/pg/profile/ihayredinov.
We’re thrilled to announce the launch of Cubview 2.0, based on feedback received from faculty and students during Cubview 1.0′s first academic year in production. The new Cubview makes it easier than ever for students and faculty find out what’s going on at school and stay current. A dramatically streamlined user profile shows the activity they need to know and expect right away. Upcoming assignments are always in the upper right and filtered by context, showing either all assignments across classes, or assignments for a specific class if the student or teacher is viewing that classes group page.
All menu items are located in a persistent, context-sensitive, left hand side navigation. Folks can check their news feed, groups, files and messages all from one menu. Groups use the same left-hand navigation, making it easier to get around.
Sports teams and followers also get all of the info they need. View upcoming games, track scores and get highlights all from the team’s new streamlined page.
Overview
As the popularity of Elgg grows, we’re getting more and more questions regarding the optimal hosting environment for large networks. We’ve created this post in response to that. It contains a growing, consolidated list of suggested hosting and hardware requirements for running large (5k+ user) Elgg installations. It’s based on community contributed best practices, Elgg’s documentation and Arck’s experience with the platform over the past two years. It’s intended to be used as a point of reference and makes no claim of being all-inclusive. If you have a suggestion or edit, please include it in a comment and we’ll review it for inclusion in the next version.
Many thanks to the Elgg community for all of the input contributed across Elgg forums and mailing lists.
OS / Software Requirements
Dedicated LAMP (Linux, Apache, MySQL 5+, PHP 5.2+) based server
Apache mod_rewrite module and multibyte string support
HDD: 1-2TB+ / SSD (Disk space can be estimated by multiplying the amount of space you wish to allocate to each user by the total number of users. This could range between 10MB and 100MB depending on your requirements.)
Optimizations
MySQL
Convert the following MySQL tables to the InnoDB engine: elggannotation, elggentities, elggentity_relationships, elggmetadata, elggmetastrings, elggusers_sessions.
Leave all remaining tables as MyISAM for FULLTEXT searching
Raise the InnoDB buffer size to utilize roughly 50% of your total RAM.
Add OPTIMIZE queries to a nightly cron for all Elgg tables
PHP
Increase the total amount of memory allocated to PHP from 8MB in PHP’s configuration file. We recommend at least 16MB.
Change the maximum uploaded file size in PHP’s configuration to at least 2MB.
Scripts
Minify all JS and CSS
Serve JS and CSS from separate sub-domains (i.e. css.yourhost.com and js.yourhost.com)
Plugin Execution Order
Plugins are loaded in the order they appear on the plugin administration page. The theme plugin should be loaded near the bottom of the list, as it applies styles to other plugins.
Load Testing
The hu_skawa_genusers Elgg plugin can be used to simulate any number of concurrent users on an Elgg site. We recommend volume testing using this plugin in combination with http_load, or any other load testing tool.
Load Balancing
For large Elgg sites, it is critical to isolate the database(s) from the web server. In a load-balanced configuration (see typical example below) the web servers are horizontally scalable. The load balancing technology could be an appliance from a known vendor like Cisco, Big IP, etc or simply a Linux host implementing the Linux-HA project.
At the database layer the simplest solution is an active passive approach with enough hardware horsepower to handle the expected query load. Load and volume testing is required in order to determine that is needed in your own environment. Additionally, a true active/active database cluster could be implemented at a higher cost using a commercial clustering solution from MySQL.
We’re ecstatic to announce the start of our very first pro bono project: a global social Intranet for our favorite non-profit organization, The Homeless World Cup. We’ll be using the popular open-source social platform, Elgg, to create a hybrid content management system/social network that will be used to connect the organization’s 70 global partners. The network will enable central communication and allow the organization to share best practices, files, photos and other media to help develop internal projects across the globe.
For those who are unfamiliar with the event, The Homeless World Cup is an annual, international football tournament, uniting teams of people who are homeless and excluded to take a once in a lifetime opportunity to represent their country and change their lives forever. It has triggered and supports grass roots football projects in over 70 nations working with over 30,000 homeless and excluded people throughout the year.