Experiences in using GitHub for collaborative software development in project seminars using and creating open source software.
Authors:
Daniel Nüst (d.nuest@52north.org, 52°North Initiative for Geospatial Open Source Software GmbH)
Thomas Bartoschek (bartoschek@uni-muenster.de, Institute for Geoinformatics Münster)
Open source software is particularly suitable for teaching and organisations like Teaching Open Source (http://teachingopensource.org) present actively advertise this. In this talk we want to present some practical benefits that open source programming and publishing software on an open online platform has for teaching project-oriented software engineering seminars at university level. In these courses students together develop a new system for a specific task in form of a group project. For project groups, we suggest to use an adjusted variant of Scrum for project management (http://en.wikipedia.org/wiki/Scrum_%28software_development%29), git as source code management system (http://git-scm.com/), and GitHub as a collaboration platform (http://github.com/, https://education.github.com/). Thanks to GitHub’s collaboration models such as “fork & pull”, each student’s work, may they be in lines of code or contributions to a discussion, can be tracked. Students fulfil different tasks in a project setting: some develop, some spend their time issuing bugs or improving documentation. But for all of them GitHub allows to quantify contributions and set concrete goals, e.g. two pull requests created, one merged, and five issues written. GitHub also offers graphical overviews of project activities. The goal is of course not to expose the student but to create a transparent environment for evaluation and grading. Teachers can even weigh in on discussions and make suggestions on the same platform as the students.
In our experience, students estimate very well their performance in comparison with their colleagues. However, using Scrum as a development model is challenging for them. We adopted the classic Scrum schedule and defined two week long sprints. Students sometimes quarrel with the role of supervising other students and delegating tasks among their peers. But in the end, the clear schedule and the focus on the iterative and communicative aspects of project management are a key to ensure success. Teachers should be ready to step in a Scrum masters and to support the product owners and must be open to adjust plans and expectations in the same way that the students have to.
We think this approach can considerably increase quality of a course from both a teaching and a learning perspective.
Open Source and GitHub for Teaching with Software Development Projects
1. Open Source and GitHub for Teaching
with Software Development Projects
FOSS4G-Europe, Bremen, July 2014
Daniel Nüst (52°North GmbH), Thomas Bartoschek (Institute for
Geinformatics, Münster)
3. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 3
Why do Open Source?
Save money
Be effective
“Egoistic collaboration” is the present and
future of software development (Google,
Amazon, Yahoo, Microsoft, …)
4. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 4
Open Source Development in Seminars
All real world software developers use open
source.
Reasons for software projects in education:
Students must learn about licenses (code,
data, documentation)
Business models!
Social & collaborative software development
Students learn project mgmt/lifecycle
5. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 5
Why bother?
The ultimate goal is to increase the quality
of software development in project
seminars so that geospatial open source
software can benefit from (a) direct
contributions, and (b) programmers that
are acquainted with the “open source way”.
6. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 6
Scrum
agile software development method –
acknowledges reality
• roles: product owner, scrum master, team
member
• sprints & stand-ups, review meetings
• backlogs
8. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 8
Git
Development is collaboration, and source code
management is the at the core, but should not
get in the way.
THE SCM of today.
≠
9. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 9
GitHub Platform
Free (10 Million repositories end of 2013, http://en.wikipedia.org/wiki/Github)
Organisation accounts
Provide material
Students can fork assignments, don’t start from
scratch
Hosting included (e.g. http://geosoft2.github.io/)
Issue tracker
10. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 10
GitHub for Education
https://education.github.com/
Stop emailing code, never loose your work, stay organized, build a portfolio
11. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 11
GitHub for Education (cont.)
Teach more effectively
Private repos, teams, ….
distribute starter code, give students feedback,
provide automated tests, collect assignments
16. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 16
Grading with GitHub
Challenge: grading group work is hard.
• GitHub allows transparency
• Distinguish numbers (lines changed) from
content
• Students estimate their contributions well
(questionnaire)
• Some quantification possible (# pull requests
created, merged, issues opened/closed), use
to facilitate engagement (not to grade)
17. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 17
Grading with GitHub (cont.)
Challenge: Different kind of work done by
students.
• Git for collaborative
writing
(docs,
reports, …)
• Value doc.
writing in the
same way
https://github.com/Geosoft2/geosoft2-2014-fundamentals
18. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 18
Experiences
Students…
… hesitate to establish hierarchies or take over
responsibility > Scrum.
… are careful about not being exposed
publicly.
… are challenged by communication
requirements of collaborative software
development.
… have to be continuously motivated to adopt
an open innovation and development process.
19. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 19
Experiences (cont.)
… hesitate to publish code. Force them.
… do learn the sense of documentation.
Teachers…
… must stay in touch with new developments
and the business world.
… must be ready to interact.
20. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 20
Experiences (cont.)
Adjust Scrum…
… using 2 Week long sprints.
… allowing virtual stand-ups, plus weekly with
whole seminar.
… flex up scrum Masters: teachers, another
group’s member.
21. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 21
Experiences (cont.)
https://github.com/enviroCar/ & https://envirocar.org
Prototype developed in project seminar – new OS project for tracking cars
22. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 22
How is this relevant for FOSS4G?
Need contributors > get them early!
Students developing as open source are more
likely to use and contribute.
Need capable developers > students,
internships, better devs in the long run, …
Need features > get them done!
23. Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014 23
Next, and Goals
Collaborate with you
Share experiences > “open innovation” for
teaching
Guidelines for Teaching Open Software
Development in Projects
Notas do Editor
Who is a prof. software developer?
Who is involved in univsersity level teaching?
Yes, it is fun, reasonable, “the right thing”, better quality, …
Work with REAL software
Process
Fork this project
Do your research
Edit the handout.md file in your folder
Create a presentatation based on your handout
Send a pull request before the submission deadline
Present at the seminar
If you see an error or want to extend information of your own or a colleagues handout...
Update your local fork
Make the changes
Send a pull request to the original author of the topic and dicuss or changes
The original author merges your changes and send a pull request to update the main repository
Works for advanced seminars of developers
Show of hands – who would be interested to join a google group?