Elgg at fOSSa 2011 (Lyon, FR, October 26th)
Presentation of the opensource social framework for integrators and developpers (technical side).
»
What for ?
Elgg
What is Elgg ?
Start now !
opensource social engine
PHP + MySQL
minimal requirements
How ?
it's easy !
A powerful open source social networking engine
framework - "core components to build out socially aware applications"
Server requirements
Elgg core features
Designed to build public or private websites with social functionnalities
intra/extranets,
social networks,
webservices..
Tools for builders ?
API reference
Trac (bug tracker)
Documentation wiki
SVN (core & plugins)
Some features :
sites, users, groups, objects and files management, widgets
fine-grained access rights, dashboard, profile page, notifications
tags, blogs, wikis, bookmarks, micro-blogging, activity feeds (river)
OpenSocial, FOAF, OpenId, OAuth, FOAF+SSL, RESTful API
3rd-party integrations with Twitter, Facebook, Google, Youtube, Linkedin, Google Maps (+ native geographic tools)...
Modular, extensible, overridable, developper-friendly framework
* high-level API : edit, extend, request "ElggEntities" (based on core or custom metadata),
* objects-oriented entities : sites, users, groups, objects - extensible, overridable,
* modular views system : XML, RSS, fail-safe, mobile views, etc.
* which lets extend or override almost any view, functionnality and functions of the core system ;
* great modularity and integration capabilities, and it interacts easily with webservices (both as client and server)
a delight !-)
http://elgg.org/download.php
Data model
Who uses it ?
GNU General Public License v2
also distributed under MIT license
Birthed as portfolio tool
Universities, Public & private sector Organisations, Associations, Individuals, etc.
Descartes University
FING (Fondation Internet
Nouvelle Génération)
FormaVia (Rhône-Alpes)
Auvergne University
Versailles University
L'Obtic PACA
Pl@ntNet (Inria)
University Dpt (Toulouse)
Credit : http://www.slideshare.net/mobicules/introduction-to-elgg-the-open-source-social-network-platform-presentation
Components
Custom user profile + widgets
Sites, groups, objects...
Basically any website
based on interactions
between users and content
Elgg.fr (french community)
Unisciel (Université des Sciences en Ligne)
Oxfam, Royal College of British Architects, Australian Government, British Government, Federal Canadian Government, MITRE, New Zealand Ministry of Education, State of Ohio, USA, The World Bank, UNESCO, United Nations Development Programme, Canadian Employment and Immigration Union, Tides Canada, Aerospace, NASA, The Executive Lounge, Hedgehogs.net, Hill and Knowlton, Institute of Executive Coaching, Interactive Games & Entertainment Association, Live Out There, UnltdWorld, Wiley Publishing, Harvard University Extension School, Saugus School District, Stanford University, Think Global School, University of Brighton, University of Calgary, Grid Research Centre, Universite Lille 1, University of Nebraska-Lincoln, Johns Hopkins University, Oregon State University, Great Ormond Street Hospital, University of Florida,...
Makes it easy to tie and integrate existing social components & services !
Evolved to a generic social engine
Backed by an Elgg Fondation
(founded by Curverider Ltd)
Supported by a large community
Community
is key !
International growing community > 52K members
helps non-tech people build advanced communities with minimal technical skills
various contributions : translations, themes, plugins, bug report (trac), core & plugins evolutions (SVN)
French community too !
Community plugins
Get concrete !
Entities : sites, users, groups, objects
relationships between entities
add data to entities : metadata + annotations (eg: comment, wiki version..)
Actions : user, callbacks, special actions
Events : triggered on actions (eg: system init, user login, object save, page setup, etc.)
Plugin hooks : intercept events (eg: hourly cron, first login, object update, etc.)
Views : add, extend or override core or plugins views
View types : alternative versions for display (HTML, XML, mobile version, embed widget, etc.)
Plugins : add, extend or replace core or plugins' functionnalities
mod/ [your_plugin] / [ structure ]
Internationalization (i18n)
Toys to play with
Create a blog plugin
Plugin structure overview
Theme, extend, override, and more!
Credit : tutorial slides from Mobicules Slideshare presentation
http://www.slideshare.net/mobicules/introduction-to-elgg-the-open-source-social-network-platform-presentation
Mailing list
http://groups.google.com/group/elgg-development/
3rd-party rep. & tools
http://docs.elgg.org/wiki/Development/Subversion
Path : blog/views/default/blog/editform.php
View : blog/editform
Plugin structure
OAuth
Theming
Webservice
HOW-TO...
Basic theming -> override main views
Plugin path : [ elgg_root ] /mod/ [ yourplugin ] /
plugin folder is plugin name (choose carefully !)
plugin directory structure should follow Elgg core's directory structure
Required files :
manifest.xml : plugin declaration (version, author, title, description, etc.)
start.php : "control hub of any plugin". Contains at least : register_elgg_event_handler('init', 'system', 'yourplugin_init'); and function yourplugin_init() {} declaration.
Folders :
actions/ : action files (registered through register_action...)
languages/ : contains translations (en.php, fr.php, es.php, ja.php, etc.)
views/ : views structure - usually views/default/yourplugin/ for yourplugin-specific files ; other subdirectory are whether new views, or alternate view types (foaf, json, ical, rss, xml, etc.), or are overriding existing views
Important folders (useful views) :
views/default/settings/ [ yourplugin ] /edit.php : plugin site settings (per site - admin only)
views/default/usersettings/ [ yourplugin ] /edit.php : plugin user settings (per-user, per site)
views/default/page_elements/ : header, toolbar, footer and owner_block
views/default/canvas/layouts/ : page content layouts
views/default/pageshells/ : global layout
views/default/object/ [ object_name ] : defines how an object displays
views/default/icon/object/ [ object_name ] / [ size = topbar, tiny, small... ] : icon URL
views/default/widgets/ [ widget_name ] /view.php (& edit.php) : widget (view & edit form)
view/default/river/object/ [object_name ] / [action_name].php : river entry of object action
Built-in core feature :
Avatar, Dashboard, Friends, Groups, Profile, Widgets
Optional plugins :
Blogs, Bookmarks, File repository, Message board, Private messaging, Pages, Activity, Microblogging
Core & core plugins features :
User, object, file and site management
Social graph functionality (relationships between users and other users, objects and sites)
Multiple sites (or applications) per installation (coming soon)
Easy internationalisation support
System-wide, tag-based searching across all content and users
Fine-grained access controls
Multiple views, allowing for mobile applications and embeddable widgets as well as the traditional web browser view
Plugin APIs
Powerful theming through the plugin API
RSS and FOAF for content syndication
OpenID and LDAP for user authentication
OpenSocial
An extensible RESTful API, with results in JSON, serialised PHP or XML
AJAX through jQuery and user-definable callbacks
Easy extension for use with caching systems such as memcached, for increased system performance (experimental)
Use of multiple database connections for scalability (still in development)
http://docs.elgg.org/wiki/Features
Elgg ?
Use plugin priority to ovveride other plugin's settings and behaviour
Register an existing action to ovveride a plugin's action (yes.. it works!)
Change landing page after login -> register hook and forward to your page
Change notification message -> use notification hook to filter and replace notifications
Multisite-ready : use existing multisite plugins, or build your own (see tutorials)
Select and filter entities : many dedicated functions - by entities properties (owner, container, dates, etc.), metadata, annotations, relationships, geographic area, etc.
Use river data to create custom river / activity feeds
Use pageshell and layouts viewtypes to provide RSS, Europass, FOAF, mobile views.. and so on
Override existing layouts using parameters to rebuild - e.g. - your own groups interface or profile page..
Use "context" to change layouts, behaviours and displays og specific areas (e.g. spotlight, but not only that one - very powerful combined to canvas/layouts/ ovverides)
Quick dev tips
Presentation by Facyla
Facyla, aka Florian Daniel, works as a consultant at Items International in Paris, at the interface between usages and technical issues.His geographer's cursus, completed by a master degree in ICT for town and country planning, crosses both approaches of social studies and technical insights into the information and communication technologies fields.
Passionated by simple and posh resolution of complex social issues, he is particularly sensible to systemic approaches, representations and stakeholders' strategies, with a solid expertise regarding internet tools and technologies, and the underlying stakes.
Casual yet regular web developper, he worked a few years with Mediawiki before switching to Elgg as main platform for the company's projects (mainly for a regional network of continued learning teachers - FormaVia), which led him to involve in what became Elgg's french community.
He's also a lecturer in masters degree at Toulouse-le-Mirail university, and gives occasional courses about the use of « web 2.0 » and collaborative tools.
Mini-bio
Elgg is an opensource social framework that runs on MySQL + PHP servers with minimal requirements.
It's designed to build public or private websites with social functionnalities such as : intra/extranets, social networks, and other websites that are based on interactions between users, groups and content.
Its core distribution provides many tools : members, customisable profile pages, groups, widgets, tags, blogs, bookmarks, wikis,
Elgg is caracterised by an extensible and developper-friendly framework :
it offers a high-level API that lets manipulate "ElggEntities" which acts like objects : sites, users, groups, objects, which are extensible, and overridable ;
uses an extensible views system (XML, RSS, mobile views, etc.), which lets extend or override almost any view, functionnality and functions of the core system ;
great modularity and integration capabilities, and it interacts easily with webservices (both as client and server).
Its international growing community (more than 52K members) has developped numerous quality plugins that lets non-tech people build advanced communities with minimal technical skills, but is also a delight for developpers who like to embed/intergate existing libraries and third-party services.
Abstract
http://id.facyla.net/
http://elgg.org/
Sponsored by Items International
http://www.items.fr/
Thanks !
French community roots :
hub for francophon issues
meetings & various events
members directory
plugin development
& more...
-->> we need YOU ! <<--
Items & Elgg ~ Items is the main architect or builder of following organisations : FormaVia, DATAR, l'Obtic, IESTIC, OpenDataGarage, Items,...
Items is involved in a dozen regional or national Elgg-projects (including Fing), and has released more than 10 community plugins so far.
Items supports Elgg.fr community as an active member (and as initial co-founder with Fing, Paris Descartes, Mélèze Conseil...More presentations by Florian Daniel
Présentation d'Elgg (fOSSa 2011, Lyon, 02/10/2011)
Florian Daniel on
Une présentation du framework opensource Elgg à destination d'intégrateurs et de développeurs (approche un peu technique).
Popular presentations
30 Things About Me
Brooke Ahrens on
All About Brooke Ahrens- I used this presentation as an icebreaker to introduce myself to my classes this year.
More popular prezis in Explore>