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)
Jan 15, 2015
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)
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
2
Why use Open Source?
Save money
This is not about
using Open Source
in education!
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, …)
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 developmentStudents learn project mgmt/lifecycle
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”.
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
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
7
BASICS ON GIT AND GITHUB
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.
≠
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
9
GitHub PlatformFree (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
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
10
GitHub for Educationhttps://education.github.com/
Stop emailing code, never loose your work, stay organized, build a portfolio
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
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
12
HOW DO WE DO IT?
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
13
GitHub Collaboration Modelhttp://video.esri.com/watch/3223/social-coding-and-the-future-of-open-source
Fork & Pull
Pull requests– Discussion– Transparency
https://help.github.com/articles/using-pull-requests
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
14
Fork & Pull
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
15
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
16
Grading with GitHubChallenge: 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)
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 thesame way
https://github.com/Geosoft2/geosoft2-2014-fundamentals
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
18
ExperiencesStudents…… 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.
Also excellent
students!
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.
Teachers
must learn!
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.
Reflect and
improve!
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
21
Experiences (cont.)https://github.com/enviroCar/ & https://envirocar.orgPrototype developed in project seminar – new OS project for tracking cars
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!
Teaching Software Development w/ GitHub @ FOSS4G-E, Bremen, 2014
23
Next, and GoalsCollaborate with youShare experiences > “open innovation” for teaching
Guidelines for Teaching Open Software Development in Projects
Who will join a
mailing list…
today?