Upload
daniel-nuest
View
325
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Experiences in using GitHub for collaborative software development in project seminars using and creating open source software. Authors: Daniel Nüst ([email protected], 52°North Initiative for Geospatial Open Source Software GmbH) Thomas Bartoschek ([email protected], 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.
Citation preview
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?