The Buddy Google gadget is a networking application that enables students to find others with similar academic interests and communicate with them.
This gadget was the most ambitious produced and from the outset it was clear that the required functionality could not be produced entirely within a gadget and that a back end system would be required to provide core features.
The gadget consists of two core elements:
- The gadget code and assets
- The Buddy website.
The gadget provides students with some of the core functionality of the Buddy website from within their iGoogle page. Key features of the gadget are:
- Send a new message to a buddy
- View unread messages
- Alerts to invitations that need responding to
- View all messages
- View buddies
- View your profile
- View a buddy’s profile.
The website provides the same functionality as the gadget but also allows for:
- Managing buddies
- Managing messages
- Updating profile
- Finding a buddy.
In general terms functions that update or delete data are accessed from the website as this provides an extra level of security over the gadget.
The website has been developed using SilverStripe; SilverStripe is an open source PHP framework and content management system. The functionality required by the buddy system has been added to SilverStripe using its plugin architecture. Developments for the buddy system include:
- Buddy module – provides profile, buddy managing and searching for buddy
- Buddy messaging module – provides one-to-one messaging with a buddy
- SNAPP module – allows connection from Gadgets to SilverStripe web services.
SilverStripe was chosen for the development platform for the system as it provides a lot of features in its core that would have been cost prohibitive to develop from scratch. SilverStripe also has a strong developer community that have produced a number of plugin modules that are used in the buddy system.
The buddy module provides the system with all of the functionality around finding and managing buddy relationships with other users.
To be found as a buddy a student must fill in their profile; this contains a number of fields that identify their study interests and in what areas they can provide assistance to others. Their profile also sets up the user avatar and contains a number of system preferences relating to privacy.
To search for a buddy the student fills in a form indentifying the key attributes they are looking for in a buddy. These would be their study interests and whether they are seeking help in a particular area. On searching the system matches these criteria against the students in the system and returns a list of matches.
Once the student has found a list of other users that match their criteria they can then select invite them to be a buddy by sending them an invitation. If the invitation is accepted then the two students become buddies and can message each other.
The buddy module also provides the students with the ability to manage their list of buddies.
The buddy messaging module is a customisation of the open source Postale messaging system for SilverStripe. The messaging system allows students to communicate with a buddy in a one-to-one conversation. Because all communication is handled by the buddy system the contact details of the students are never revealed.
The Postal module was updated so that students can only message users that are in their buddy list. SilverStripe does have extensive extension capabilities that make it simple to override and customise php classes. Unfortunately, the level of change required to the Postale module was too great to practically use these methods so direct customisation to the code was undertaken. To manage future maintenance these changes have been implemented as a forked branch of the original github project. This should make the merging of any updates from the original code to our customised version straight-forward.
The SNAPP module enables gadgets to connect to SilverStripe systems. This module code re-uses some of the libraries developed for DOULS for the Moodle gadget connection plugin. This module enables gadgets to connect to SilverStripe web services provided by the open source web services module. The SNAPP module extends this feature, providing custom authentication based on OAuth signing of the request by the gadget.
The gadget is sectioned into a number of tabs – these are created using the YUI3 library.
Design for the gadget was created by Paul Hillery, whilst the buddy website was styled using OU-ICE – a standardised branded CSS layout for OU websites.
Firstly, this development was extremely ambitious in scope. Initial coding is now complete but there is a need for a small amount of further development, especially around guidance and support.
It certainly wouldn’t have been possible to produce the level of functionality delivered without the power and flexibility of both the SilverStripe framework and, within the gadget, the YUI3 library. The use of some open source developments to aid in delivering functionality also dramatically reduced development time.
Source code for the gadget and for the SilverStripe modules used to deliver the buddy website is available from the DOULS github area.