Building a Community System to Teach Collaborative Software ...

19 downloads 239 Views 443KB Size Report
artifacts as examples or basic frameworks for their development. Index Terms— Open source ... collaborative software development, version control system.
The 10th International Conference on Computer Science & Education (ICCSE 2015) July 22-24, 2015. Fitzwilliam College, Cambridge University, UK

FrP9.12

Building a Community System to Teach Collaborative Software Development Andrew Villarrubia and Hyunju Kim* Department of Computer Science Jackson State University Jackson, MS, 39217 USA [email protected]; [email protected] * Corresponding author 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.

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.

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.

978-1-4799-6600-4/15/$31.00 ©2015 IEEE

829

FrP9.12

III. THE STUDENT-CENTERED OPEN SOURCE SOFTWARE (SOSS) COMMUNITY STRUCTURE

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.

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.

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. 1. Components of the SOSS community.

Fig. 2. The SOSS system configuration.

830

FrP9.12

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.

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.,

831

FrP9.12

Fig. 4. Student activities on project dashboard.

V. CONCLUSION

REFERENCES

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.

[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, 2006. [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.

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.

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

Suggest Documents