
 
development project. This is a common learning 
activity, used in software engineering discipline, to 
give students hands-on experience and exposure to 
the real-life software development projects. It could 
be used as a part of formative or summative 
assessment. This teacher would also like to simulate 
a real-life software development experience in a 
team, so students are required to engage in 
collaborative software development activities.  
This particular learning design involves the 
following activities. First of all, students are given a 
real-life software engineering problem and to solve 
it students are required to design and implement a 
software solution (system). Students are divided into 
teams and each team is required to collaborate and 
come up with its own solution for the given 
problem. To facilitate their collaboration, within 
each team students assign different roles to different 
members.  
Obviously, the main challenge of this project is 
design and development of a particular solution. In 
order to complete it, students need to engage in 
collaborative software development. Furthermore, 
after all teams have completed their projects, the 
teacher is interested in implementing the reflection 
phase. This requires each team to reflect upon their 
learning, rather than software development 
experience. Note that reflection-in-action is a very 
powerful learning activity, especially in the field of 
design. This particular activity is very useful for 
students to help them to become the so-called 
“reflective practitioners” (Schon, 1983; Schon, 
1987) as required by their future profession. 
This paper will focus on educational technology 
used to support the process of collaborative software 
development that is at the core of the previously 
described learning design. This process cannot be 
effectively supported by the existing educational 
technologies as they provide very simple tools (such 
as forums, chat tools, electronic whiteboards) to 
support individual tasks. Rather than simple tools, to 
support the intended learning activity, we need to 
provide a complex collaborative structure as 
described in the next section
. 
3 SUPPORTING COMPLEX 
COLLABORATIVE 
STRUCTURES  
We see collaboration as a group activity of a large 
number of participants (i.e. a community), designed 
to achieve a particular purpose or goal. A 
collaboration structure refers to an IT-enabled 
solution that supports collaboration. Furthermore, 
we define a complex collaboration structure as 
consisting of a combination of several tools for 
collaboration and communication being used 
simultaneously. 
The existing collaborative tools have reached 
their limits when dealing with large-scale 
collaboration structures, especially where several 
media are used at the same time by a community (or 
communities) of people. CSCW (Computer 
Supported Cooperative Work) and groupware 
platforms are supposed to support these types of 
collaboration but they suffer from complexity, high 
costs and rigidity (i.e. they do not adapt easily to 
different types of environments). 
Some companies propose commercial products 
that group several tools together to support such 
complex structures. Examples include BSCW 
SourceForge, Lotus Notes (see corresponding online 
references). However, they do not cover all facets of 
collaboration. In addition, they are proprietary 
systems, not so easy to deploy, and require solid 
programming skills. Recently, there have been some 
efforts at providing flexible and open collaboration 
platforms (e.g. ZOPE (see online reference).  
This paper introduces LibreSource that has been 
specifically designed to support large-scale 
collaboration structures that are customizable to a 
wide range of needs and easy to use by non-
specialist users. In this context, we use LibreSource 
as a platform designed to support collaborative 
software development process as required by the 
intended learning activity. Compared to the existing 
tools in the same category (such as G-Forge and 
Savannah (see online references), LibreSource offers 
a high level of integration.  
To facilitate understanding, a LibreSource server 
behaves similarly to an ordinary file system. Thus, a 
LibreSource server is a tree of instantiated 
components. A component can be a forum, a project 
or a bug tracker. As in the file system, each 
component of the LibreSource Tree declares its own 
security policy. However, unlike file systems, each 
component can generate events that could be used 
for the awareness and triggering purposes. 
Data can be propagated from one server to 
another by using the synchronization component 
called  So6. More precisely, So6 is a generic file 
synchronizer (Molli et. al, 2003). It can be classified 
as a configuration management tool that allows 
synchronization with more than one repository. This 
is a very important feature that allows 
implementation of synchronization networks. In 
turn, these networks allow representation of 
dataflow processes.  
So6 component can be easily applied to enable 
implementation of the classical software process that 
SUPPORTING COMPLEX COLLABORATIVE LEARNING ACTIVITIES – THE LIBRESOURCE  APPROACH
61