By using JabRef as training object in exercises and labs, students can level-up their coding and project management skills. When taking part in JabRef development, one will learn modern Java coding practices, how code reviews work and how to properly address reviewing feedback.
No need to think about software engineering excersies any more: JabRef has them.
No need to provision infra structure
High-quality student educuation due to real-world tooling and real-world code base
Sustainability of student works: No more thrown-away solved excercises: They now are incorparted in a real-world product
Visibility of your research groups
Choose tasks from one of the following boards. Write a comment on each issue so that it can be reserved for your course.
Candidates for university projects: https://github.com/JabRef/jabref/projects/9
This board categorizes in small, medium, and large features
Feature Board: https://github.com/JabRef/jabref/projects/7
This is a general feature board. Recommended, if the board above is empty or you did not find something suitable
Bug Board: https://github.com/JabRef/jabref/projects/5
This is an excellent board to find issues training the maintenance knowledge which is essential for industry work
General "good first issues". The JabRef team tags issues as good first issues to indicate open tasks offering a good start into the JabRef code. These issues are more a list of random bugs and features. For a more structured comparison of the opened tasks, we recommend the project boards listed above.
Be aware that the difficulty of bugs and feature vary. A task should be chosen with care. The JabRef team can help here: The majority of the team has experiences in teaching
Schedule tasks with students
Code reviews by JabRef maintainers
Students address feedback and learn more about good coding practices by incoporating feedback
Students update their pull request
Pull request is merged
For a near-to-perfect preparation and effect of the course, we ask you to get in touch with us four weeks in advance. Then, the JabRef team can a) learn about the starting skill level of the students, b) the aimed skill level at the end of the course, c) the amount of time the students are given to learn about and contribute to JabRef, d) check the feature board for appropriate tasks (and fill it as needed), e) recommend appropriate features.
It is also possible to just direct students to our Contribution Guide. The learning effect may be lower as the time of the students has to be spent to a) learn about JabRef and b) select an appropriate issue.
Since a huge fraction of software costs is spend on software maintenance, adding new features also educates in that aspect: perfective maintenance1 is trained. When fixing bugs, corrective maintenance2 is trained.
There is no special process for student contributions. We want to discuss it nevertheless to increase awareness of the time required from starting the contribution until the inclusion in a release of JabRef.
In short, the contribution is reviewed by two JabRef developers. Typically, they have constructive feedback on their contribution. This means, that the contributors get comments on their contribution enabling them to level-up their coding skill. Incorporating improvements takes time, too. The benefit is two-fold: a) contributors improve their coding skills and b) JabRef's code quality improves. All in all, we ask to respect the aims of the JabRef team and to reserve time to incorporate the reviewer's comments.
GitHub describes that in their page Understanding the GitHub flow:
Newcomers contributing in the context of a university teaching experience are invited to follow the process described above. In case the capacity of the instructing university allows, we propose a three-step approach. First, the contributors prepare their contribution as usual. Then, they submit the pull request to a separate repository. There, the instructor reviews the pull request and provides feedback. This happens in a loop until the instructor shows the green light. Then, the pull request can be submitted to the main JabRef repository. This will help to reduce the load on the JabRef team and improve the quality of the initial pull request.
In case your course is missing, feel free to add it.
Course: Open Source Software Development
Summary: In this course, students will be introduced to the processes and tools specific to Open Source Software development, and they will analyze existing projects to understand the architecture and processes of these projects. Besides, students will attempt to contribute source code to a large existing Open Source Software project.
Summary: Students experience the process of getting involved in an Open Source project by engaging with a real project. Their goal is to make a "substantial" contribution to a project.
Course offered in 2018
Course 10915-01: Software Engineering
Lecture Materials: https://github.com/unibas-marcelluethi/software-engineering
Successfully run Q3 2019.
Excercise touching JabRef:
Course "Softwarepraktikum" as part of the BSc Informatik
Summary: A group of three students experienced the full software engineering process within one semester. They worked part-time for the project.
Successfully run in 2012
Summary: A group of nine students experienced the full software engineering process within one year. They worked part-time for the project.
Successfully run in 2015/2016
Course "Programming and Software Development" as part of the BSc Software Engineering
Summary: One exercise to contribute a minor fix or feature to JabRef. Goal: learn contribution to an open-source project using git and GitHub.
Successfully run in 2018
Summary: Groups of students from three to five persons experienced the whole software engineering process within a week: From the requirements specification to the final pull request.
Successfully run in 2020
Course Open Source Software
Summary: Students are requested to contribute to an Open Source project to learn about the maintenance and evolution of software projects. This project is the predecessor of NAU's CS499.
Course offered from 2013 to 2016 with different names
JabRef tries to achieve high code quality. This ultimately leads to improved software engineering knowledge of contributors. After contributing for JabRef, both coding and general software engineering skills will have increased. Our development strategy provides more details.
We recommend to start early and constantly, since students working earlier and more often produce projects that are more correct and completed earlier at the same overall invested time 1.
Be aware that JabRef is run by volunteers. This implies that the development team cannot ensure to provide feedback on code within hours.
Be aware that from the first pull request to the final acceptance the typical time needed is two weeks.
Be aware that JabRef tries to achieve high code quality. This leads to code reviews requiring actions from the contributors. This also applies for code of students. Read on at our Development Strategy for more details.
1: @ayaankazerouni: Developing Procrastination Feedback for Student Software Developers 2: Lientz B., Swanson E., 1980: Software Maintenance Management. Addison Wesley, Reading, MA.