Google Summer of Code 2011 ideas list

On this page 

Overview

Are you interested in contributing to the Sakai project as part of Google Summer of Code 2011? 

Then this page is for you. 

Scroll down for an introduction to Sakai, project ideas proposed by our mentors, and tips on making your application.  Sakai has been accepted as a mentor organization again this year - but you won't be able to apply as a participant until 1900 UTC March 28th.  Other pages which you might find useful are

About Sakai

Sakai Collaboration and Learning Environment (CLE) is a powerful Learning Management System / Virtual Learning Environment (pick your preferred term), used by over 350 educational organisations and actively maintained and developed for.  Sakai Open Academic Environment (OAE) is a first-principles redesign which is currently in active development and pilots in our community.  Sakai CLE's ecosystem is very healthy and OAE is a completely new codebase, so expect the two to co-exist for some time.

Sakai CLE

The original Sakai project is very widely used every day and has over 4 million educational users.  Usually deployed for a whole institution, users create 'sites' for learning management (e.g. associated with lecture courses), research collaboration (e.g. on a particular research project or research group), project collaboration (e.g. for course designers or final-year projects) or e-Portfolios (for learners to assemble portfolios of work they can use to reflect on and evidence their skills).  Each site is a shared space for its members, and its creator chooses a suite of 'tools' to use within the site.  Users work in one tool at a time.  There are many built-in tools, e.g. file sharing, announcements, wiki, forum; and even more contrib tools, e.g. opensyllabus. 

You can learn more about Sakai CLE on the official information page.

Sakai OAE

Sakai OAE embodies a complete new design philosophy.  It aims to 'unsilo' the tools concept by simply making them content to be embedded in the site.  It also aims to complement the outward-looking experience of learners and researchers by by being more social and more 'permeable', being part of the web as well as being part of the institution.  OAE offers

  • a revamped user experience, with a focus on usability
  • a powerful and easy to use content authoring capability, including the ability to re-use content from elsewhere
  • social networking features for students and academics
  • improved teaching and learning workflows
  • increased scalability and integration
  • ease of use for software developers
  • easy to deploy, to help people try it out
  • reduced cost of ownership via low demands on institutional IT support

You can learn more about Sakai OAE: read an early proposal, or check out the official information page.

Community

Most people working on Sakai work at educational institutions using it, so in effect it is developed by universities and colleges for universities and colleges.  The community is still run on open source principles, but this is a bit different from archetypal OSS projects where people contribute in their spare time, so we sometimes make a distinction by calling it "community source" rather than "open source".  We use the Educational Community Licence 2.0 (FAQ), which is OSI certified and is a minor variant of Apache 2. The Sakai community organises itself and its work using a typical suite of OSS tools:

  • an official project site for letting everyone know what we're doing, why they should be interested and how to get involved
  • a project blog to keep everyone up to date and share what's on our minds
  • mailing lists for support and discussion (OAE kernel development uses a Google group)
  • a wiki (Confluence, also kindly contributed free by Atlassian) for plans and documentation
  • an issue tracker (JIRA, also kindly contributed free by Atlassian) for managing bugs and feature requests
  • source version control system for managing collaboratively-developed code (Subversion for Sakai CLE, git for Sakai OAE)
  • an irc channel #sakai on freenode.net

Technology

Sakai CLE

CLE is developed and a series of standard Java web applications (usually called tools) running in a Java servlet container (commonly Apache Tomcat). It uses the Spring Framework as a base for the Sakai CLE Kernel and Component Manager which manages the Sakai services and allows the Sakai tools (webapps) to communicate.

Individual tools (webapps) use a variety of technologies (e.g. Spring MVC, RSF, JSF, Velocity, etc.) but plug in to the CLE Kernel to access core services.

Sakai OAE

Sakai OAE's codebase comprises the kernel and UX layer, plus many 3rd party OSS libraries, including, most importantly, the Apache Jackrabbit reference implementation of the Java Content Repository (JCR) standard (there's an excellent blog post about this here) and the Apache Felix implementation of OSGI for modular development and deployment.  Apache Sling sits on top of Jackrabbit and provides RESTful APIs to the JCR standard, making it very straightforward for Sakai developers to do Web 2-style development.  In the UX layer jQuery is used extensively with accessibility improvements from the Fluid project

Ideas

This list is currently building, while we recruit mentors.  Each mentor gets to propose their own project ideas. 

Once you've got to grips with Sakai yourself you might find you've thought of an idea you'd love to work on.  That hasn't happened very often in the past but we love it when it does.  You'll still need a Sakai mentor though so you'll need to get on the Sakai-dev mailing list as early as possible, whip up some enthusiasm and recruit yourself a mentor.

1. Sakai CLE mobile app

Sakai has a powerful RESTful interface called EntityBroker, which has the ability to expose data in Sakai as XML and JSON. Many applications within Sakai provide EntityBroker support. This data is currently being used to power some applications and widgets, but as yet, no generic mobile web application has been developed. In addition, there is a cross platform Javascript library for developing mobile applications called PhoneGap, which allows the same code to be packaged into distributable applications across iOS, Android, Blackberry and several other mobile platforms. Using PhoneGap you also have access to all of the hardware features of the device.

This project is to develop a mobile application for Sakai, using PhoneGap, so that it runs on a variety of platforms (iOS and Android in the first instance). The application will consume the data available via EntityBroker to render its views and perform its functions. The project will involve HTML/CSS/Javascript and ajax/jQuery/json knowledge will be required. Extension of the EntityBroker services will require Java knowledge, although this part of the project may be unnecessary.

This is a Sakai 2/CLE project.

Update: It is likely this project will run as a two student team. One focused on the backend (EntityBroker), one on the frontend (the app). Will discuss on list.

Mentor

Steve Swinsburg

2. Improve Sakai CLE WebDAV support

Sakai CLE offers support for WebDAV, a set of extensions to HTTP, for editing and manipulating content in its Files and Resources tool on remote systems. Using an appropriate WebDAV client, many Sakai users directly mount a site's files and other uploaded content as a volume on their desktops or use it to make bulk file transfers. WebDAV is a heavily used feature of Sakai CLE, but the underlying code is very old.

This project is to rewrite the existing Sakai CLE WebDAV code – based on Tomcat 4 – to use a newer more maintainable WebDAV library, most likely Milton. Requirements for this project include Java knowledge and some familiarity with Tomcat and WebDAV.

Mentors

Former user (Deleted)
Former user (Deleted)

3. Sakai OAE native mobile app

Build a Sakai OAE mobile app, targeted at supporting the Students passage through learning and then onto research, integrating with the features that make mobile devices part of every day life. The app should not be a simple re-creation of the Sakai OAE user experience for Desktops but should take account of battery life, network availability, form factor, location services and orientation (accelerometer) services. It should provide information to the user that enables them to find what they should be doing, where they should be, record what they have done and relate it to where they were, building a longitudinal record, perhaps stored in the cloud, of their period at University (or in any Educational/Research establishment). The App will accept input, and that input should be tailored to the input methods available, thinking more about the hands of the user, than presenting a keyboard. It will use network feeds already provided by Sakai OAE that are already used by the Sakai OAE Desktop UI. To make the project achievable we will limit the scope to focus on integration of a students schedule with their daily life. We may integrate last years successful Sakai OAE Event Explorer GSoC project outputs into this project.

Skills required.

  • Passion for designing mobile and hand held user interfaces
  • HTML5/CSS3/JS or Android Java or Objective C depending on requirements of the UI
  • perhaps some server coding experience if additional feeds are required (either Java Servlets or Python)
  • perhaps some App Engine Experience if Cloud storage of user data is required.
Mentors

Former user (Deleted)

4. Sakai OAE Column Storage Driver

Sakai OAE user content uses a storage mechanism based on a sparse map concept representing column database type storage with a memory window onto the storage. This abstraction has allowed us to create traditional RDBMS representations of the storage system with a MySQL driver capable of doing sharded storage over with 1 write/many read DB clusters. The original column driver was based on Apache Cassandra which need some updating to keep it in sync with the latest developments, and we would also like to create a driver for another column DB (eg HBase, Raik, Mongo, CouchDB, etc or some network protocol approach, eg protocol buffer, thrift). This project will be suitable for a Java developer wanting to get low level exposure to a NoSQL/Column database. The storage system is hosted at https://github.com/ieb/sparsemapcontent, the Cassandra/Trift driver is in https://github.com/ieb/sparsemapcontent/tree/master/src/main/java/org/sakaiproject/nakamura/lite/storage/cassandra. Any new driver would need to pass unit, integration and Soak tests in this package. We would also like to see some benchmarking results to determine the performance characteristics of the driver in a cluster which might involve some use of Cloud based services.

Skills required.

  • Java server skills with a good understanding of concurrency and network latency issues.
  • Deployment and configuration for standalone and cluster deployment of the app and the target DB
  • Good analytical skills to verify operation characteristics and benchmark cluster performance.
Mentors

Former user (Deleted)

5. Integrate Luke as a Felix Web Console Plugin

Sakai OAE uses Apache Solr to index data for free-text searching. We do not currently have a way to look into this search index or manage it using any administration tools. Luke looks like a good option for adding some management to our Solr index. We currently use the Felix Web Console as our interface to administrative functionality.

The goal of this project is to get Luke working as an OSGi bundle with Nakamura and expose Luke's interface as a plugin in the Felix Web Console.

Luke
Solr's LukeRequestHandler
Felix Web Console

Mentor

Former user (Deleted)

6. Implement Social API interfaces of OpenSocial

Sakai OAE is a social environment for academics. The OpenSocial API gives us a specification to allow Sakai to exchange information between OpenSocial containers. Apache Shindig implements all the hard stuff in the solution but interfaces still need to be implemented to expose our local data.

The goal of this project is to implement the Social API interfaces as defined by the latest OpenSocial API and test using Apache Shindig. There are 7 interfaces to implement: People, Groups, Activities, AppData, Albums, MediaItems, Messages.

Apache Shindig
OpenSocial
OpenSocial's Social API

Mentor

Former user (Deleted)

0. Example project

Mentors: please enter your proposals here. Proposals should summarise what the project is about, provide some motivation for it, briefly outline important technologies and skills, and if necessary a short description of the kind of candidate you think the project would suit.  Also, a little advice on getting started can help candidates make a good application.

Mentor
Tracker URL / Discussion page
Initial Assignment (for accepted students during socialization period, plus anyone who can't wait to get started)

If you have questions or want to discuss your ideas, try #sakai on freenode.net first, then the Google group, then the project mentor directly (unless you don't have one yet), then the sakai-dev list.  We will always try our best to respond and give advice, but please be patient as sometimes we have a lot of questions to answer.