Google Gears integration
GSOC '09 Project specification, Google Summer of Code 2009
Executive Summary: This project is based on the idea of integrating Google Gears to Moodle. An offline mode will allow people with limited Internet connection to browse activities and other resources, take notes and store them locally, save assignments even if the user is not connected and then upload/synchronize when the user is online. Moreover, the plan is to create a working base/architecture and then make it easier to add offline functionality to any kind of Moodle activity.
I find this project particularly useful for communities with a slow bandwidth or where students can get online only a few times a week, download a lesson, and upload what they have worked on while offline. Other potential users would be people who travel and do not want to pay for getting online at an airport, but still continue following a course. The ability to keep learning from useful resources, even if we are not connected to the Internet, was one of my major motivations for this project. This, together with the speeding up advantage, will help Moodle's performance and usability.
Most of the "offline" integration will be done using HTML5, as this is the long term target. At each important step, a translation to Google Gears will be created to make it accessible for users whose browsers have not implemented HTML5 yet.
- Be able to switch to "Offline mode" at any point
- Be able to display the homepage, the course pages, course formats, and some modules (to be specified)
- Be able to follow most of the internal links
- Be able to reconnect and synchronize back to "Online mode"
|Application cache||A set of cached resources consisting of one or more resources, identified by URLs|
|Manifest||A list of all the URLs to be captured. It can also contain the version for the manifest file format, the version of the contents of the manifest, and an optional redirection URL.|
- Start a working flexible base/architecture for Google Gears in Moodle. Define the architecture for the web application: isolate de data layers (local and server), and the incorporation of a data switch and synchronization engine. Begin with the homepage and course page to make sure that we can handle logs and then continue with mod/resource:
- Code and edit a dynamic manifest to include the resource available offline
- Make use of the LocalServer class to store an initial sample of the Moodle application on the local server. Make sure the application starts offline.
- Submit initial code for evaluation. A student should be able to access resources offline at this point.
- Based on feedback: debug, clean code, perform more extensive tests on this base architecture.
- Add a more versatile functionality for other kinds of modules: database, choice, assignment (suggested), lesson if possible.
- Test the functionality above with a limited sample of activities. A student should be able to make changes at this point. For example:
- Download all the interface for offline visualization
- Make changes offline in a choice module
- Save changes
- Synchronize when back online and upload the choice
- Revise security holes and permissions.
- Clean code, perform final tests, and finish documentation.
- Try the functionality to work with all other kinds of activities and a full offline Moodle.
- Allow for more flexibility when going offline: caching only by week or topic if there is limited memory
- Use the WorkerPool class to download static files in the background and speed up the user experience
- Store a local copy of the database for faster performance
- Full integration and translation between HTML5 and Google Gears
- Backward compatibility with Moodle 1.9 and earlier
For more information, please visit the following links:
- Google Gears
- Tracker issue
- Main forum discussion
- About OLPC and GG-based offline-moodle
- Overview of the Google Summer of Code 2009 projects for Moodle