Capstone Projects Aimed at Contributing to Consolidated Open Source Projects: a Practical Experience Juanan Pereira Escuela de Ingeniería de Bilbao, UPV/EHU Calle Rafael Moreno Pitxitxi, 2-3 juanan.pereira@ehu.eus 0000-0002-7935-3612 Abstract—Due to time constraints (one term or quarterly Also noteworthy is the learning obtained by collaborating subjects) software projects used in university classes of Software in a distributed software development, seen as a collaborative Engineering are usually limited to small developments, with few process, carried out among a group of developers distributed people involved and without any previous code base to build throughout the world. This allows students to be trained in upon, that is, without taking into account important aspects like communication skills that they must put into practice to software maintenance or software evolution. Open source interact with the OSS community. software (OSS) is currently being considered as a way of involving students in the realities of professional software All these benefits have made teachers promote the use of development, confronting them with a constantly evolving code OSS in the classroom. In Spain, it is worth highlighting the base, maintenance, portability problems (compatibility with Free Software University Contest [4], a national initiative in multiple operating systems), localization and programming which, since 2006, students from Spanish universities have styles. It is also remarkable the amount of learning obtained by participated in developing free systems. collaborating in a distributed software development, carried out among a group of developers from different parts of the world. However, instructors warn of potential problems. One of This in turn, allows students to be trained in communication the drawbacks is that there are not yet enough integration skills to be able to interact with the OSS community. The experiences [2], which makes it difficult to develop the entire problem is that, again, it is difficult to integrate this OSS software engineering syllabus based on OSS. Another initial project-based learning into a quarterly course. This work pitfall is selecting the appropriate OSS project to contribute to advocates a more feasible scenario, proposing that students that [5]. have to develop their capstone projects build them by contributing to consolidated OSS applications. In this context, a Problems related to the size of the task (contributing to an practical experience developed with 3 capstone students is OSS project) versus the duration of the course (quarterly) and shown, detailing the benefits obtained, both from the point of the students' prior knowledge are also cited [6]. It is difficult view of the students and the project itself. A series of to fit all the pieces. recommendations are also presented, provided by the students With the aim of exploring new ways of supporting the and the teacher involved, so that any interested teacher can replicate the experience with a higher guarantee of success. teaching of software engineering based on contributions to OSS projects, as well as looking for an alternative to its use in Keywords: Open Source, OSS, FLOSS, Software Engineering, class (where time restrictions and prior knowledge condition Capstone Projects its use), this work documents a practical framed within three Capstone Projects (FDP, Final Degree Projects) where three I. INTRODUCTION students contributed features to a single OSS project. In Software Engineering university classes, Free Libre and The rest of this work has been divided into four parts. The Open Source Software (FLOSS) or similarly Open Source following section details the context in which the FDPs were Software (OSS) is being considered as a way to immerse developed and how the project on which the contributions students in the realities of software development [1]–[3]. This were made was selected. Section three details the benefits effort is relevant to address the lack of commitment that can obtained by the students and the project in this. In the fourth arise when students do not perceive the real usefulness of the section, a compendium of recommendations is made for those subjects of the study program. To combat this lack of who are interested in repeating the experience and in the last motivation, teachers are seeking to integrate course section the overall conclusions are reflected. assignments and syllabi within the development of an OSS project. II. CONTEXT AND PROJECT SELECTION The benefits are manifold. Reading the project Every year at the Bilbao School of Engineering, 4th grade documentation and exploring its source code enables students students in Computer Engineering must develop their Final to learn about programming style, feature design, and other Degree Project (FDP). Many times the project consists of good development practices. Working on OSS projects also implementing some type of application, usually from scratch. allows them to have practical experience in issues related to Something that does not match what they will find in the labor code maintenance and evolution, portability, localization and market [7]–[9]. internationalization. Students must strive to ensure that their There are usually very good jobs but the vast majority end contributions are compatible with the current project design, up in the drawers of the library or online repository. maintaining its evolution rules. Copyright © 2020 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). One way to motivate students to develop their knowledge occasions the code that the students contribute works of software engineering is to involve them in the development correctly but the main developers find elements for and maintenance of consolidated open source software improvement and suggest refactorings to make the code more projects [10], [11]. In the 2019/2020 academic year this author readable, maintainable and reusable (non-functional decided to test that option with three final degree projects and requirements that in many cases go unnoticed by the students document the experience in this article. during the grade) The idea was to convince three brilliant students so that their FDP was aimed at improving an open source application used internationally. The first problem is choosing a good project. We can talk at length about what constitutes a good OSS project to use in the area of software engineering education [2], [6]. In the case at hand, the project had to meet several requirements: be a live project (have commits - code contributions - distributed throughout the year), be developed in Java (the language that students master during the career), not be a trivial project (the one used as the basis of the TFG contains almost 800 Java classes and 95000 lines of code) and, if possible, be a project known to the students. GanttProject (https://github.com/bardsoftware/ganttproject) has all these characteristics and it has also been used as a tool in previous subjects for Gantt chart designing. Three students, O., A., and U. had been hard at work selecting and fixing bugs from the GanttProject bug list. Working to improve a free software application has brought us multiple benefits, both for the students and for the project itself. The next section details this list of benefits. Fig. 1. The quality control of the consolidated open source projects includes a review of the code of the contributions. For the students, A. Benefits for the student this was the first time that an external developer reviewed their 1) Learn how to work with the Github Flow contributions in detail.. The first thing they have learned is to work with the GitHub 3) Automatic tests Flow workflow (https://guides.github.com/introduction/flow/), a lightweight, GanttProject includes an automated tests section (see Fig. 3) branch-based workflow that helps manage input from code of as part of the continuous integration process for distributed teams and workgroups. Specifically, they studied contributions. Students should understand how tests work how to create a fork, how to keep it updated with the original and learn how to use them on their own code before version (upstream, see Fig. 1), how to create branches and submitting their contribution as a PullRequest. how to generate Pull Requests. They had never implemented this workflow before (the most used among open source projects). Fig. 1. Learning how to create Pull Requests, Issues or keeping the branches of a fork updated with the main repository are just some Fig. 2. The tests include the verification of functionalities on of the tasks that they learn in these FDPs. different platforms (Windows, macOS, Linux), something that is not always worked on in academic environments. 2) Defend and discuss ideas 4) Communicate with external developers Students learn to cope with the review of their code by external programmers (see Fig. 2) each time they propose a Communicating in English and proposing corrections or contribution in the form of Pull Request. This type of designs for new functionalities in the platform's support informal code review, known as modern code review[12], forum has been another novel task for the students involved simplifies the formal review process, complementing it with (see Fig. 4). automation and bug detection tools and allowing the lead developers of the project to analyze contributions (Pull Requests) as soon as they these are proposed. On many the possibility of public verification). All links correspond to the repository https://github.com/bardsoftware.  /commits?author=Anaitz98 (8 commits) (3 accepted PRs)  /commits?author=oihanealbizuri (7 commits) (3 PRs, 2 accepted and 1 rejected)  /commits?author=urtzipu  /commits?author=upuente001 (4 commits) (3 PR, 2 accepted and 1 rejected) In Table 1 we can see the complete list of Pull Requests sent. III. TEACHER RECOMMENDATIONS After the experience, we gather below some reflections and suggestions that may be of help to anyone who wants to replicate the same process of development of FDPs based on improvement of FLOSS applications: Fig. 3. Before solving a problem or beginning an implementation,  The teacher must involve himself / herself in the students should comment on their intentions in the forum. project before his / her students. They have to dive into the code, trying to understand the basic B. Benefits for the project architecture. Fix an issue, create a PR themself and Finally, GanttProject itself, as an open source project, has meet the main developers. That will help smooth out also benefited from the following gains. the entry to new programmers. Example: https://github.com/bardsoftware/ganttproject/commi 1) Get reusable documentation ts?author=juananpe  It is advisable to help students to analyze the list of One of the students' goals was to create documentation that project issues to locate a small collection of will really serve the future. Specifically, it was aimed so that “feasible” errors, in the sense that they can be other developers (future students) can begin to contribute corrected in 3 months (approximately the duration of with a smoother learning curve than these three pioneers. the FDP). The author selected a couple of issues for each student, but they were asked to further analyze Among this documentation are the classic UML diagrams the whole list and create a set of 4 or 5 each. The goal (class, sequence, communication ...) but also especially was that after discussing them in a group, they aimed useful diagrams that mix the graphical interface with the Java to implement at least 3 of them. And they succeeded. classes that implement the. An example can be seen in Figure  The selected issues must be ordered by difficulty: 5. easy, medium, difficult. Some projects have easy issues labeled with labels such as beginner-friendly, easyfix, beginner, easy, difficulty / low, etc. It is recommended that students initially get involved with an easy-to-solve issue, such as eliminating dead code and generating a PR with that patch, so that they learn the basic rudiments of GitHub Workflow and the workflow of the OSS project in particular.  If possible, the first time, students should be guided with an outline of the solution of any of the issues to be corrected. A sketch of the solution design would suffice. It involves a lot of work for the teacher, but it should be seen as an investment that can be reused in the future and as a measure to ward off possible fears from the students. Fig. 4. This type of diagram with screenshots of the application labeled with the name of the main classes that implement some of  Create a group on Telegram - or another instant the components can be of great help for new contributors. messaging tool - with the students who joined the initiative. They will help each other, a sense of The diagrams have been collaboratively generated between community will be created and students will feel the 3 students who have formed the initiative. supported [13]. 2) New features or bug fixes IV. STUDENT RECOMMENDATIONS These are the commits in the master branch of each of the At the end of the projects, the three FDP students students (which in turn serve to polish their curriculum with completed a survey asking for recommendations for future students. Specifically, students were asked to answer these contribute to (GanttProject). Each student had to complete the questions: development or fixing of three issues and follow the usual workflow in order to integrate their contributions into the  What aspect(s) of the project have you found most complex(s)? master branch of the project. The benefits are multiple, both for students (learning to understand and locate features of a  What recommendations would you give to next project with hundreds or thousands of classes, passing code year's students who want to carry out their FDP quality controls, defending design ideas in work groups, improving GanttProject or another free software working with a distributed version control system,. ..) as for project? the chosen OSS project itself (get reusable documentation,  With what aspect of the project have you noticed get fixes or new functionalities). the most learning? Specific recommendations have been proposed, both by the teacher and the students involved, so that anyone interested A. More complex aspects of the project can replicate the process. “The most complex of all, in my opinion, has been finding Among the most complex aspects of the project (which the exact point where the error was located or the place where coincides with the most valued factor in student learning) is the improvement should be developed” the understanding of foreign code structures and locating “Initially, prepare the development environment, thus those parts of the code that affect the error to be corrected or being able to compile the application. ” functionality to be implemented. It is therefore important to focus on the study of foreign code (not your own) in subjects “- Understanding of the project structure (and code) of the degree in computer science, something in which the - 'Break' the fear barrier and take the initiative to study of open source software can be of great help. Analyzing collaborate on a real project ” how to achieve this integration between the study of open source applications and the teaching plan of a subject (such B. Recommendations for students of future courses as the Software Engineering subject) is precisely one of the  “Perhaps choosing another OSS software that does not lines of future work. The teaching objectives and have so many classes and allows you to get a more competences to be obtained in the subject must be linked with general picture of the project, since there are many possible exercises, tasks and interactions related to the project aspects of GanttProject that I still do not know despite to which they will contribute, taking into account the time having worked on it. ” limitations inherent to a four-month course or the different  “Understand from the beginning the structure of the degree of initial knowledge exhibited by the students. application with which you are going to work, prepare TABLE I. CONTRIBUTIONS TO the development environment well and carry out well- HTTPS://GITHUB.COM/BARDSOFTWARE/GANTTPROJECT planned work, without leaving everything for last. ” Student Issue URL  “I think it would be a good idea to start with a task that /commit/2 is something like a current code analysis, in which each a92442aa student does research on the project by generating or oihanealbiz Sort resources by name e078d001 expanding parts of a previously provided class uri f7c40392 5b2a1a1af diagram. ” a2aaf5 C. Aspects of the project that provided the greatest /commit/7 d1cbe3fbe opportunities to learn oihanealbiz affcf322c Refactor  “As I have progressed in development, I have uri d082c4a2 98f6895ec realized that understanding other people's code and dd84 locating parts of the code has become easier and Option to change cost oihanealbiz /issues/16 easier for me, and I have done it in less time. ” uri display format #1659 (not 59  “The use of tools such as Git and sdkman - a tool to merged yet) /commit/9 easily manage different versions of the Java 09af9063 Development Kit and Gradle-, as well as the use of 29323adcf upuente001 Tck1665keyboardshortcuts the debugger to see the application processes and 4e5e767c thus understand the function of various methods and d0c36bba 5b8809 classes in a large project.” /commit/d  “To read the project structure, management with git 7cac4250 and versions and to use different data structures upuente001 Remove unused code ca77d4df7 from those studied in class.” 28b183ca 660a90fb 3ab49e V. CONCLUSIONS Tkt 1610 change logo /ganttproj A practical experience has been analyzed with three students upuente001 without restart (not merged ect/pull/1 who have focused their final degree projects in software yet) 723 /commit/7 engineering towards the development of improvements to a 48a9cea5 consolidated OSS project. In this first approach, it has been Anaitz98 coderefactor 7282fc37 the teacher who has helped to choose the target project to 2f36c61d Student Issue URL [5] K. Toth, “Experiences with open source software engineering tools,” d270b98b IEEE software, vol. 23, no. 6, pp. 44–52, 2006, doi: 10/b6rx2s. ee34650 [6] T. M. Smith, R. McCartney, S. S. Gokhale, and L. C. Kaczmarczyk, /commit/2 “Selecting Open Source Software Projects to Teach Software bee42e34 Engineering,” in Proceedings of the 45th ACM Technical Symposium 347c279f on Computer Science Education, New York, NY, USA, 2014, pp. Anaitz98 ExportCSVtestsolving 397–402, doi: 10/gf4m2r. 89b24e0b de2d571f [7] H. J. C. Ellis, G. W. Hislop, and M. Purcell, “Project selection for 91d9b18 student involvement in humanitarian FOSS,” in 2013 26th /commit/f International Conference on Software Engineering Education and a9f3df2f8 Training (CSEE T), May 2013, pp. 359–361, doi: 10/gf4m3f. tkt1667rememberLastImport 45d4c53e [8] H. Ellis, R. A. Morelli, and G. Hislop, “Support for educating Anaitz98 Folder 2285dff0c software engineers through humanitarian open source projects,” in 27e90d83 2008 21st IEEE-CS conference on software engineering education bf3b5 and training workshop, 2008, pp. 1–4, doi: 10/c8xwdd. [9] C. Chavez, A. Terceiro, P. Meirelles, C. Santos Jr, and F. Kon, “Free/libre/open source software development in software engineering education: Opportunities and experiences,” Fórum de Educaçao em Engenharia de Software (CBSoft’11-SBES-FEES), REFERENCES 2011. [1] D. M. Nascimento et al., “Using Open Source Projects in software [10] R. Marmorstein, “Open source contribution as an effective software engineering education: A systematic mapping study,” in 2013 IEEE engineering class project,” in Proceedings of the 16th annual joint Frontiers in Education Conference (FIE), 2013, pp. 1837–1843, doi: conference on Innovation and technology in computer science 10/gf8h86. education, 2011, pp. 268–272. [2] G. H. L. Pinto, F. Figueira Filho, I. Steinmacher, and M. A. Gerosa, [11] M. Müller, C. Schindler, and W. Slany, “Engaging students in open “Training software engineers using open-source software: the source: Establishing foss development at a university,” 2019, doi: professors’ perspective,” in 2017 IEEE 30th Conference on Software 10/ghchgq. Engineering Education and Training (CSEE&T), 2017, pp. 117–121, [12] P. Rigby, B. Cleary, F. Painchaud, M.-A. Storey, and D. German, doi: 10/gf4m2v. “Contemporary peer review in action: Lessons from open source [3] A. Sarma, M. A. Gerosa, I. Steinmacher, and R. Leano, “Training the development,” IEEE software, vol. 29, no. 6, pp. 56–61, 2012, doi: future workforce through task Curation in an OSS ecosystem,” in 10/ghcmww. Proceedings of the 2016 24th ACM SIGSOFT International [13] J. Pereira, “Motivating users to online participation. A practice-based Symposium on Foundations of Software Engineering, 2016, pp. 932– comparison between moodle forums and telegram groups,” The 935, doi: 10/gf8h89. International journal of engineering education, vol. 35, no. 1, pp. [4] P. Neira Ayuso and M. Palomo Duarte, “Innovación educativa con 409–416, 2019. software libre,” Actas de la VI Jornadas Internacionales de Innovación Universitaria (JIIU 2009). Villaviciosa de Odón (Universidad Europea de Madrid), 2009.