GSoC2008Proposal

From MWWiki

Jump to: navigation, search

Back to GSoC 2008

Initial Proposal

Project Details


As outlined in the abstract, I would like to implement a module for Joomla! which incorporates Google's OpenSocial API into a Joomla!-powered website, enabling synchronization of articles, users, and permissions between the website and an OpenSocial application that can be added by users.

A Joomla! website and OpenSocial group would be linked. All information and actions taken on the group and website would be pushed back and forth between the two. Physically speaking, the website would be responsible for storing all the required information for it to run, but this information would be pushed out to Google following any changes (new articles, comments, users, changes in user permissions, discussions, etc), and the reverse would hold true as well. To ease the bandwidth consumption, some basic operations can probably be conducted by leveraging Joomla!'s RSS feeds (reading from OpenSocial), but the details of this can be ascertained as the project progresses.

While the default Joomla! ACL can adequately handle the OpenSocial group user hierarchy, it is possible that websites will have manipulated this hierarchy to suit their own needs. For this reason, in addition to the USERS placeholder group, another group will be added on the same level (in parallel to USERS) called SOCIAL. Various permissions levels will be added to this group, under which users in the OpenSocial sites will be assigned. Users who join the OpenSocial group will have their Joomla IDs created directly under one of these categories; Joomla! users who join the OpenSocial group will simply have their user IDs aliased to the second group. In the latter case, there is the problem of data duplication (as the main ID will reside somewhere in the USERS group, and the alias in the SOCIAL group), but with proper testing and maintenance, problems should be mitigated.

Using the best practices I have been taught, development cycles will consist of regular builds and releases, along with constant and rigorous testing done in parallel to any new functionality. Code and functionality will be added in increments, provided each new increment is scalable, robust, and more than adequate. Testing will consist of unit tests with JUnit within the Eclipse environment, as well as live testing both from MySpace/Orkut accounts, as well as a development implementation of OpenSocial to test specific components of the integration. A file repository of some sort will be used to synchronize versioning and double as a backup, and constant feedback will be requested from the Joomla mentor(s) to ensure that the project is proceeding as planned.

Development Tools


  • Eclipse IDE - This will provide the necessary environment for PHP and JavaScript development and investigation through Joomla, as well as a built-in connection with the Apache testing server and MySQL database.
  • File Repository - If resources permit, access a Joomla-supervised Subversion or CVS repository to provide file synchronization and backup. Otherwise, procure a public repository to accomplish this end.
  • Joomla CMS - This will be installed on a local server for testing purposes. Georgia Tech has an immense network of machines; multiple clients of various platform types will be able to access the server simultaneously to more effectively simulate the production environment.
  • Orkut/MySpace - I would leverage accounts on both these services to create groups to test the functionality of live OpenSocial websites, as well as a barebones development implementation of OpenSocial to test specific functionality.


Deliverables


  • Self-contained module that can be activated or deactivated from the Joomla administrator section to provide interactivity with OpenSocial

Timeline


Preparation (Pre-May 26): Establish contact with the Joomla! mentor, dive into further documentation regarding the specifics of communication between Joomla! and OpenSocial; in particular, authentication, data passing, and data caching. Also set up development environment and versioning repository. Establish user accounts on MySpace and Orkut, as well as a barebones development implementation of OpenSocial, as testing environments for the integration project.

Week 1 (May 26 - May 31): Build the self-contained (but empty) Joomla! module which will hold the OpenSocial integration. Ensure that it can be activated and deactivated successfully. Also begin adding the new group to the Joomla! ACL.

Week 2 (June 1 - June 7): Finish revamping the Joomla! ACL. Begin implementing cross-site XML communication. Investigate OAuth implementation with OpenSocial over AJAX. When a user joins an OpenSocial group, ensure that the proper actions are taken on the Joomla! end - either a new user ID is created in the subgroup of SOCIAL (if the ID didn't already exist on the website), or an alias to the existing user ID is created.

Week 3 (June 8 - June 14): Continue expanding the XML communication; investigate users registering on the Joomla! site and, if they have an OpenSocial user profile, possibly check and see if that profile exists on an OpenSocial site?

Week 4 (June 15 - June 21): Allow message passing by way of articles from the OpenSocial site to Joomla!. Ensure that messages can be posted in the group, and that they show up on the website. Summaries could possibly be done by way of RSS readers, but details will have to be done through AJAX.

Week 5 (June 22 - June 28): Continue implementing communication protocol. Ensure that anything posted on the site also shows up on the OpenSocial group. Comments should also be passed back and forth.

Week 6 (June 29 - August 5): Ensure that articles, comments, and users can be deleted in either environment and that these changes are reflected in the other.

Week 7 (August 6 - August 11): Test the implementation by way of MySpace, Orkut, and the development site. Tie up any loose ends in the code, the communication protocol, or in the ACL.

Week 8 (August 11 - August 18): Clean up documentation, close out any lingering bugs.