On this page
Are you interested in contributing to the Sakai project as part of Google Summer of Code 2012?
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 applied as a mentor organization again this year; please check the GSoC 2012 site for program schedule dates.
- Sakai's profile page and participant application form on Melange (GSoC's administration site)
- Our GSoC projects blog and Google group
- last year's ideas page, Melange homepage and Google Code site
- GSoC FAQs and timeline, also on Melange
- GSoC-related posts on Google's Open Source Blog
- Our application template
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.
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 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
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
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'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.
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. OAuth integration [OAE - server]
As Sakai OAE gets more client UI implementations, it becomes more important to support standard and secure protocols to be able to trust the caller to the server. While we currently have some HMAC implementations in place, it would be good to have an OAuth producer implementation for our authentication handlers.
Another part of this project would be to create a client implementation of our internal proxy service to allow OAE to act as an OAuth consumer for external services. See KERN-807.
2. Annotations for servlets to document inputs, outputs [OAE - server]
Most of the Sakai OAE servlets use some annotations to describe the functionality, inputs and outputs of the servlet. While this suffices, the annotations aren't updated regularly and run a high probability of falling behind the actual functionality. We would like to explore how annotations can be used in the code (instead of as a header) much like is done with JAX-RS. These annotations would 1) serve as a means for another service to publish the capabilities of the servlet and possibly 2) add some nice-to-have functionality like request parameter injection.
3. Generate PDF and thumbnail preview of Sakai Documents [OAE - server]
Sakai OAE generates thumbnail previews of content stored in the system but does not currently have a way to generate a thumbnail of our own content format; the Sakai Document. This project will dig into how to a) generate a PDF of a Sakai Document for on-demand delivery and b) generate a thumbnail preview of the Sakai Document.
4. Extending a generic Learning Analytics tool [CLE - server]
The LOI wishes to extend the tool so that it can track events in Sakai CLE (such as social activity of the student, number of assignments completed, average grade etc) and then donate back the improvements to the community.
The tool uses the Open Source web analytics tool PIWIK (similar to Google Analytics) to collect page events. It also uses the BasicLTI protocol to make it appear as a tool inside the Learning Management System. The first release of the tool will only work with Blackboard.
The scope of the work is:
- Design the Sakai specific View in the tool and actualizing the design into JSP.
- Make suggestions about the meaning of the data collected and add the new rules to the tool.
- Support the role out of a small scale pilot at the LOI.
LOI (http://loi.nl/) - Pilot, meaning of data, design of view
UvA (http://www.uva.nl) - Technical questions related to the tool
5. Bulk file uploading widget for Resources [CLE - server/UI]
Sakai CLE is in need of a bulk file uploading facility. This may take the form of a multi file uploader widget for when users upload files into the Resources tool. This would incorporate drag and drop from a user's desktop, progress bars when uploading files, the potential for full folder upload (grand and drop a folder, everything gets uploaded in the proper folder structure), and possibly zip/unzip facilities. Essentially, anything to make working with multiple files and folders easier. This would ideally replace the WebDAV functionality in the Sakai CLE
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.
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.