![](bg3.png)
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