A. Villarrubia and H. Kim, "Building a community system to teach collaborative software development," 2015 10th International Conference on Computer Science & Education (ICCSE), Cambridge, 2015, pp. 829-833.

in #git6 years ago

A. Villarrubia and H. Kim, "Building a community system to teach collaborative software development," 2015 10th International Conference on Computer Science & Education (ICCSE), Cambridge, 2015, pp. 829-833.
doi: 10.1109/ICCSE.2015.7250360https://www.researchgate.net/publication/301282591_Building_a_Community_System_to_Teach_Collaborative_Software_Development
"Abstract—This paper reports an Open Source Software (OSS)
community for Computer Science students to support
collaborative software development activities. We built an inhouse
version control system using only OSS products, which
allows students to easily collaborate on development projects,
while simultaneously allowing instructors to easily track
students' activities. As our system provides a controlled
educational environment, students can experience various aspects
of software development by playing different roles. In addition,
the community’s code repository works as a knowledge base for
student projects, and thus students can reuse the code and
artifacts as examples or basic frameworks for their development.
Index Terms— Open source software, Git, GitLab,
collaborative software development, version control system.
I. INTRODUCTION
As Open Source Software (OSS) becomes widely used in
private and public sectors, efforts to utilize OSS in Computer
Science (CS) education have been expanded from simple use
of OSS tools in CS courses to student participation in realworld
OSS projects. Besides the use of OSS and OSS projects
in classrooms, other studies have focused on unique aspects of
the OSS process and participants, such as social processes,
interrelationships, organizational contexts of OSS, etc.
Findings from such previous efforts help better understand the
nature of the OSS process and participants' activities. They also
indicate that various OSS development activities can provide
effective learning opportunities to CS students.
This paper reports our effort to adopt an OSS community
model to educate CS students in software engineering,
specifically collaborative software development. We built a
client-server system to support students' software development
and team activities. Students can learn from real-world code
examples and team dynamics by participating in OSS projects
that are hosted at the community system.
Section 2 of this paper reviews related studies on OSS in
CS education, and section 3 presents the community model and
system specification. Section 4 discusses educational features
of the community, followed by a conclusion.
II. USE OF OSS IN CS EDUCATION
A stream of efforts to adopt OSS in CS education is to use
OSS tools to teach traditional or online CS courses, such as
programming, data structures, algorithms, and software
engineering [2, 8, 9]. Although they simply used OSS tools to
teach the subjects, they demonstrated that the use of OSS in
classrooms resulted in positive impacts.
Because OSS development activities provide unique
opportunities to students in developing software in a real-world
environment, several studies brought OSS projects to the
classroom [3, 4, 10, 12]. The study in [4] proposed a model to
identify appropriate real-world OSS projects for students, and
the study in [12] presented a method to measure student's
contribution toward OSS projects in terms of testing activities.
Furthermore, the study in [3] developed an evaluation model
for students' collaborative software development. The study in
[10] compared use of proprietary and open source software in
CS education and pointed out that community aspects of OSS
development can provide an active learning environment,
which allows collaborative learning, intuitive learning, role
playing, etc.
An effort reported in [13] identified students' benefits from
adopting OSS and OSS community structures in teaching
software engineering. They proposed an education model, but
it was not implemented due to limitations identified in their
educational environment. The limitations were related to
human factors, resistance to curriculum changes, and student
abilities. Despite those identified limitations, a continuous
effort has been made to utilize OSS projects in CS education as
reported in [1]. As indicated in the report, the major obstacle to
bring students into real-world OSS projects is caused by the
complexity of the OSS projects. However, by participating in
the real-world OSS projects, students can learn how to work as
a team including how to communicate online with team
members and users, how to use collaborative software
development tools, how to design solutions based on existing
code, etc. This paper reports our effort to establish a teaching
environment for such OSS benefits while minimizing the
identified limitations.
978-1-4799-6600-4/15/$31.00 ©2015 IEEE
The 10th International Conference on
Computer Science & Education (ICCSE 2015)
July 22-24, 2015. Fitzwilliam College, Cambridge University, UK
829
FrP9.12
III. THE STUDENT-CENTERED OPEN SOURCE SOFTWARE
(SOSS) COMMUNITY STRUCTURE
We adopted an OSS community structure to build a
learning environment as presented in Fig. 1. The community
system was designed and built for mainly CS students so that
they can benefits from using OSS and participating in OSS
projects under a controlled learning environment.
The SOSS community consists of registered users (CS
participants or other participants in the university), a code
repository including seed code, OSS projects hosted by the
users, and software and hardware components. The code
repository provides seed code along with documentation so
that the student users can freely use the seed code in
developing their own software.
The community also provides a hardware and software
infrastructure so that the users can host their own projects and
use software tools that are essential for collaborative software
development. As a result, the SOSS community provides a
downsized, controlled version of the real-world OSS project
hosting services, such as SourceForge or GitHub.
A. Building the Community System
In building the SOSS community system, we utilized only
OSS products so that the community model can be easily
ported to other educational settings. Version control systems
are essential in collaborative and distributed software
development, and thus we investigated available version
control systems, including Subversion, Mercurial, and Git.
We decided to use Git because it offers significant benefits
for student users. For example, Git supports a full history of
code changes, and thus the user can easily pull previous
versions of the code. It also provides a branch mechanism so
that the user can develop and test different scenarios on the
code. In addition, its repository-to-repository interaction allows
the user to share entire branches between repositories.
Fig. 1. Components of the SOSS community.
According to the 2014 Eclipse Community Survey [11], Git
was noted as 33.3% of respondents' primary source code
management tool, compared to Subversion's 30.7%. Git is also
the default version control system for large open source
repository websites such as GitHub.
We adopted GitLab for the community's Git server because
it provides the basic repository functionality as well as supports
strong user control, wiki functionality for on-site
documentation, and issue tracking. Figure 2 shows the
community's client-server configuration, and Fig. 3 shows the
server architecture.
The community users can access their project repositories
by using Git client or EGit, which is supported by Eclipse.
EGit works with JGit (the Java implementation of Git). The
users can access GitLab's frontend through any web browser as
well. As seen in Fig. 3, GitLab's functionality is backed by a
PostgreSQL database. The system is hosted on an Nginx web
server, and this in turn runs on an Ubuntu 14.04 host machine.
Currently, the server is running on a generic desktop with a
quad-core processor and 4GB RAM.
B. Enhancing the Community System
In order to better support our students, the following
enhancements were made on the SOSS system:
• Authentication through Google OAuth.
• Visibility of project repositories
• Announcements and news group
As our institutional email system is supported by Gmail, we
decided to utilize Google OAuth 2.0 for user authentication and
authorization. We implemented the Google OAuth
authorization protocol along with the restriction that the
domain must match one of the institution's email domains. This
also allowed us to create user accounts automatically.
By default, GitLab offers three visibility levels on the
project repositories. Private is available only to users explicitly
given access, Internal is visible to any users who are logged in,
and Public is free to clone by anyone.
Fig. 2. The SOSS system configuration.
830
FrP9.12
Fig. 3. The SOSS server architecture.
We disabled the Public level in order to keep student
repositories private from public access. This is necessary to
protect the code and project artifacts and to provide a
controlled teaching environment.
The native broadcast mechanism offered by GitLab was
enhanced to better support communications between
instructors and students within the community. An
Announcement feature was implemented, which directs the
user to the Announcements page upon login to the community.
Admin users can post announcements from their admin control
panel, optionally specifying a class. The announcement then
appears on all users’ front page, along with who posted it and
when, and filters available to sort by class.
IV. UTILIZING THE SOSS COMMUNITY IN CS COURSES
The SOSS Community system was first introduced during
Fall 2014 semester in the Department of Computer Science at
Jackson State University. Our team developed and brought a
series of tutorials along with hands-on exercises on Git to the
undergraduate and graduate Software Engineering courses and
graduate Open Source Software Development course.
These courses require students to conduct team projects for
software development as part of course activities, and the Git
and GitLab system was introduced as a supplemental tool for
their software development. The students were directed to host
their projects at the community server and use various features
of the system. Findings from this experience are as follows:
• The community system provides a controlled, realworld
environment for collaborative software
development. Students can learn and experience
various development activities under a private setting.
• Student feedback indicates that they realized and
appreciated usefulness and effectiveness of the version
control tools, but it took time for them to learn and get
used to the system. Thus, it would be better to
introduce those tools to lower-level CS courses (e.g.,
programming courses) so that students can utilize the
system throughout their study.
• The Git and GitLab system can also be used as a
supplemental tool for individual software development
because it provides a strong mechanism for tracking
code changes and branches. Students can easily
recover their code from mistakes and test different
paths on the code.
• The GitLab provides a framework for students'
performance evaluation. As students' development
activities (pushes, pulls, commits, etc.) are logged on
the system, instructors can collect such data and use
them to evaluate student's contribution to team project.
Figure 4 shows a project's dashboard where team
members' activities appear.
• The system builds and maintains a knowledge base of
students' development projects. As the project code
and artifacts are accumulated at the central location,
students can refer and use those in their study and
software development. Thus, the community system
acts as a virtual classroom, and students learn by
examples and from peers.
We also found that the SOSS community system helps
overcome the challenges to adopting OSS projects in CS
education. As previously indicated, the size and complexity of
real-world OSS projects hinders student participation in the
OSS projects. The downsized, controlled SOSS system helps
reduce such issues.
At the same time, our system does not require changes to
the curriculum. It rather provides supplemental tools to any
courses that require programming and teamwork. As indicated
in [13], there might be resistance to curriculum changes, and
this supplemental aspect of the system can reduce the
resistance.
Based on the findings, we plan to introduce our system to
lower-level CS courses so that students would be exposed to
the environment earlier in their CS study. The community
aspect of the SOSS system offers various opportunities to play
different roles in developing software. For example, a student
can be an end user, bug reporter, developer, or project leader.
A single student may take different roles in different projects
according to his/her interests and knowledge level. Therefore,
CS students at any level can work on software development
and participate in the community.
In summary, the SOSS community system can support
teaching of collaborative software development, including
requirement engineering, analysis and understanding of
existing code, software solutions design, people and project
management, configuration management, version control,
teamwork, and communications. We expect to develop an
evaluation method to measure student's performance in
collaborative work by utilizing activity data from the SOSS
system.
831
FrP9.12
Fig. 4. Student activities on project dashboard.
V. CONCLUSION
This paper reports our effort to adopt and utilize an OSS
community structure and OSS products in CS education,
specifically collaborative software development. We built a
client-server system by using Git and GitLab to support
students' activities within the community.
The community system provides various opportunities in
software development for CS students at any level, and thus we
expect to naturally teach them collaborative development. In
addition, the system works as a knowledge base and repository
for student projects so that the accumulated code and project
artifacts can be analyzed and reused in student projects.
Moreover, data from the system can be further utilized in
developing an evaluation method for student performance in a
collaborative environment.
Moving forward, we will identify methods to utilize this
system in other CS courses in addition to the Software
Engineering courses. We also expect usable OSS products
from this community. Such available products can better
motivate CS students and attract them to the community as
well as bring positive impacts to the department.
ACKNOWLEDGMENT
This work has been supported through the National Science
Foundation grant (HRD-1348565) on the SOSS (Studentcentered
Open Source Software) Community. The views and
conclusions contained in this document are those of the authors
and should not be interpreted as necessarily representing the
official policies, either expressed or implied, of the funding
agency.
REFERENCES
[1] Bryan Behrenshausen, "Professors embed students directly into
open source communities",
http://opensource.com/education/14/8/challenges-to-opensource-
computer-science-education, 2014.
[2] D. Carrington and S. Kim, "Teaching software design with open
source software", In Proc. of the 33rd ASEE/IEEE Frontiers in
Education Conference, 2003, pp.9-14.
[3] R. Charles and Y. Tao, "Evaluating student participation in open
source software development with an annotation model", In
Proc. of the 4th IASTED International Conference on
Knowledge Sharing and Collaborative Engineering, 532-063,

[4] H. Ellis, M. Purcell, and G. Hislop, "An approach for evaluating
FOSS projects for student participation", In Proc. of the 43rd
ACM Technical Symposium on Computer Science Education,
2012, pp.415-420.
[5] Git, http://git-scm.com.
[6] GitLab, https://about.gitlab.com.
[7] Google Developers, “Using OAuth2.0 to access Google APIs”,
https://developers.google.com/accounts/docs/OAuth2.
[8] S. Lakhan and K. Jhunjhunwala, "Open source software in
education", Educause Quarterly, vol. 31, no. 2, 2008, pp.32-40.
[9] D. Lipsa and R. Laramee, "Open source software in computer
science and IT higher education: a case study", International
Journal of Advanced Computer Science and Applications, vol.
2, no. 1, 2011, pp.43-54.
[10] Antoine Melki, "Proprietary versus open source software in
support of learning in computer science", In Proc. of the 2014
Federated Conference on Computer Science and Information
Systems, 2014, pp.111-115.
[11] Ian Skerret, "Eclipse community survey 2014 results",
https://ianskerrett.wordpress.com/2014/06/23/eclipsecommunity-
survey-2014-results/, 2014.
832
FrP9.12
[12] S. Sowe, I. Stamelos, and L. Angelis, "An empirical approach
to evaluate students participation in free/open source software
projects", In Proc. of IADIS International Conference on
Cognition and Exploratory Learning in Digital Age, 2006,
pp.304-308.
[13] L. Vu, T. Tan, and P. Maneerat, "Incorporating open-source
software development into computer science and software
engineering education at university level", In Proc. of the 2nd
Australian Undergraduate Students’ Computing Conference,
2004, pp.149-164.
833
FrP9.12"
https://ieeexplore.ieee.org/document/7250360/
git.JPG

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 64136.70
ETH 3128.20
USDT 1.00
SBD 3.94