=Paper= {{Paper |id=Vol-2733/paper18 |storemode=property |title=Capstone Projects Aimed at Contributing to Consolidated Open Source Projects: a Practical Experience |pdfUrl=https://ceur-ws.org/Vol-2733/paper18.pdf |volume=Vol-2733 |authors=Juanan Pereira |dblpUrl=https://dblp.org/rec/conf/siie/Pereira20 }} ==Capstone Projects Aimed at Contributing to Consolidated Open Source Projects: a Practical Experience== https://ceur-ws.org/Vol-2733/paper18.pdf
       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.