The sites synchronization tool umuync is the result of a Final Degree Project at Faculty of Computer Sciences (University of Murcia).
Synchronization of sites into Sakai
Juan Arcadio Martínez Cárceles
Ginés García Mateos
Juan José Meroño Sánchez
September 2011
Final project report (in Spanish)
This project is a development project based on free software on Sakai e-learning platform.
Sakai is a Learning Management System (LMS), a system designed to facilitate works related to teaching and learning.
The project has been done on Sakai CLE (Collaboration and Learning Environment). Nowadays, Sakai CLE is used for different purposes: learning management, research projects, collaborative projects, or as an ePortfolio, in which students can publish their work, teachers have more flexibility to guide students, and organizations can assess their student’s learning process. In particular we have used the 2.7.1 version of Sakai CLE.
There are other Sakai products, Sakai OAE (Open Academic Environment) and Sakai hybrid (Sakai hybrid integrates a portion of Sakai CLE into Sakai OAE), but these products are not in an stable version yet, on the 1st of September 2011, the latest version of Sakai OAE is 1 RC6, acronym RC means release candidate, and it is not an stable release.
In Sakai, information is available from sites, all pages that are visited on the platform are sites. Sites can have different purposes, for example we could have course sites or collaborative sites.
Each site have a set of tools, the most common tools that can be found within an LMS platform are: resources, announcements, assignments, chats, forums, wiki, exams and grade books.
In Sakai, each tool defines a set of permissions, those permissions allow users to have access to certain information or perform some actions.
A key concept in Sakai is the term realm. For this project we are especially interested in the realms that are connected to a site. When a user access a site, the user has a role, roles are defined in the realm. The relationship between one user and one role within one site can be direct or through a provider. Each role has an associated set of permissions that grants certain privileges to users.
When you create a site in Sakai, the system creates the realm associated with that site. That new realm is created by coping from the specific realm template depending on the site’s type. There is a realm template for each type of site. Therefore, each site has its own realm and it is independent from others.
When adding a new tool to Sakai you might need to set a new permission, also, if the administrator has to modify a set of permissions for an specific role in a concrete type of site then, the admin would need to modify the template for that type of site, so that new sites created copy the right set of permissions. Those changes made to the realm template will not affect all sites that were created before introducing these new changes to the template.
The possible solutions that a Sakai administrator has to change the realms of a set of existing sites are:
When institutions carry out new deployments of Sakai, it is very common to have to tweak the set of permissions a lot until they get the configuration they want. Other similar situation is when adding a new tool within Sakai platform. If you just add a new tool, then none of the sites created before the new permissions are set, in the right realm template, will have the permissions needed to use this tool.
Sakai platform currently lacks a management tool that is able to modify permissions or tools en masse, there are some solutions to satisfy those needs but they are not good enough. Therefore, the main goal of this project will be to develop a tool to fill this gap.
In the project we have used the following open source technologies:
As a first approach we developed a Quartz job. Among the Sakai management tools we can find a Java job scheduler based on Quartz. A Quartz job is like a schedule made with cron, the Unix command, also the temporal expressions are identical.
With Spring Framework, we can use an adapter from the Sakai code that allows us to schedule and execute the job in Java, which consists of a synchronization tasks list.
This first development provided us a utility that covers the lack identified in the management of Sakai sites, but it causes one inconvenience, the jobs defined in Quartz are static. When a Sakai administrator wants to sync sites, he/she probably wants to change only the sites of a particular type; from the Sakai user interface, the Quartz tool does not allow jobs to be parameterized. Therefore, there is no possibility to configure job properties from the Sakai user interface. To make changes in sync tasks, we should edit an XML file and place it in the Apache Tomcat server and then restart it. Restarting is necessary because the properties are set “on boot”, when initializing the Spring context.
In the Quartz job that syncs sites, it is not easy to change the job configuration, so the next goal was to modify it including a web interface which allows us to setup synchronization jobs easily. For this purpose, it is necessary to store the information related to all tasks in database, so it is not necessary to reboot the server to adopt the changes; now synchronization jobs can be modified at any time. From this new tool it will be possible to run a synchronization task and the Quartz job is modified. When the job is triggered, it synchronizes all tasks stored in the database that are available at the moment. The tool includes one permission so that it is only accessible by administrators. The tool also includes unit tests to verify a proper operation of the tool. Finally I wrote some help pages that explain how to use this tool; this pages are integrated within the Sakai help tool.
This tool has been developed according to the classic structure of a Sakai tool. Sakai code from version 2.7 is divided into three parts: Kernel, Sakai (core) and Indie. Our tool has been developed similar to core tools from Sakai; this tool has a dependency with some components that we have included within the Kernel. In version 2.7, it appeared the new Indie structure, which makes the tool independent from the core of Sakai. In subsequent versions the developers of Sakai have been moving some tools to the new structure. Moreover, our tool was also connected to the University of Murcia database so we removed this link to make our tool independent and now it can be used by any institution using Sakai.
Our next goal was to adapt the tool to the Indie structure. The advantages of having an independent tool are that it can be easily installed by others. To install the tool developed, people only have to include a small module in Sakai and deploy it into the server, this module will download the compiled code of our tool, for this reason it is not necessary to compile all our code. Also, they can download the code, compile it, and use the module mentioned to deploy it on the server. Both, the code and the compiled version will be stored into Sakai’s official repository, under an available space for the University of Murcia so that it can be downloaded by anyone.
Another advantage of making this tool independent is that it will be easier to handle when migrating a new Sakai version. To deploy the tool in another version of Sakai you just have to modify some variables in our project; these variables indicate the versions of the components we use from Sakai.
For the future maintenance of the project, the development will be done in the main branch of subversion (trunk) and by using merge operations we could move the changes to the branch of this project. We have used an Apache Maven plug-in to manage releases of new versions. This plug-in accesses subversion repository, adds tags, and modifies all files with the versions of the project development.
Related to the future maintenance of the tool, we have also included two profiles that allow us to compile for the version of Sakai you are using. One profile is for 2.7.1 version and one for 2.8.0 version. Probably, in September 2011, versions 2.7.2 and 2.8.1 will appear; we could easily create a new profile for each version. A migration to a new version of Sakai will not involve any modification of code in our tool.
To conclude this project, I have created a web page hosted on aulavirtual.um.es, the Sakai platform implanted at University of Murcia. I have made public the webcontent that is hosted in my workspace. This page explains how to install the tool, how the tool works and how to set up; I have contacted with the Sakai webmaster to move this page to confluence (the Sakai wiki) and to send an announcement to the community to notify the existence of this new tool.