preparing for student participation in hfoss projects – foss tools and techniques darci burdge –...
TRANSCRIPT
Preparing for Student Participation in HFOSS Projects –
FOSS Tools and TechniquesDarci Burdge – [email protected] Postner – [email protected]
Heidi J. C. Ellis - [email protected] W. Hislop – [email protected]
Michelle Purcell - Drexel
Stoney Jackson – WNE
Sean Goggins – University of Missouri
1. Set Up
Foss2serve.orgTeachingOpenSource.org
http://titanpad.com/ccsce2013
2
2. Overview of FOSS and HFOSS
3
4
Free Software Definition
• Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software.
• Four freedoms– To run the program, for any purpose– To study the program works, and change it– To redistribute copies– To distribute copies of your modified versions
5
Legal Mechanisms
• How do you implement FOSS within the legal system?– FOSS is not Public Domain
• Copyleft – Use copyright to control the material– Share the rights via license
• “making a program (or other work) free, and requiring all modified and extended versions of the program to be free as well.”
• Implementation: GNU General Public License ©
FOSS Today
What has resulted from all this noise about FOSS?
7
FOSS Today
8
FOSS Today
Many credible products; some market leaders
9
Control
• Misconception of FOSS as “Free contribution by anyone”– NOT!– This would be chaos
• Need for control creates a hierarchy– Version control enables and enforces– Committers– Contributors– Others
10
Control and Community
• “Contributor Mountain”– Client/customer
• Use in isolation
– Seeker • Connects to community for answers on using
– Collaborator• Contributes bug reports, feature requests, …
– Contributor • Moves project forward• Relied on by the community
Community
• Clients and developers as part of a spectrum– Not “us” vs. “them”
• Assumption that people can move from passive “user” to active participant– Even without technical skills
• See: “Why we won’t call you a ‘user’.”– http://www.kitware.com/blog/home/post/263
12
Community
• Openness to new participants– Especially if you approach the project reasonably
• Advancement via accomplishment– Fairly direct meritocracy
• Check and balance– Control of commit authority
• Real point of control for moving the product
– Ability to fork• Limits autocratic power
Communication
• More is generally better• Multiple channels
– Highly distributed participation• Less elaborate; more immediate• Rollback mechanisms available (e.g., in a wiki)
– Synchronous and asynchronous– Low and high bandwidth
• Explicit provision for lurkers– Replaces hallway conversations and discussion in the break
room– Allows for serendipity and learning by osmosis
What is HFOSS?
• FOSS created to provide social benefit– Disaster recovery– Medical records– Economic development– Education – And more!
• Extra potential to catch student interest!– And provide education on professional impact and
responsibility14
3. IRC Activity
15
What is IRC?
• Internet Relay Chat is an essential tool used by open source software developers.
• It allows the community to communicate 24/7 regardless of their geographic location.
• It is like Instant Messaging with a group.
16
Interacting on IRC
• ‘Talking’ is not a requirement. • You learn a great deal by ‘listening’.• It is not necessary to identify yourself or
to say hi, you can simply 'lurk'. • Feel free to ask questions – you don’t
need to ask first if you can ask a question.
17
Starting an IRC client
• ChatZilla – Firefox add-on– is a multi-platform add-on that will work on
Windows, Linux and Mac OS X
• Other options include:– Windows: HydraIRC (http://www.hydrairc.com/)– Linux: Konversation (http://konversation.kde.org/)– Mac OS X: Colloquy (http://colloquy.info/)
18
Installing ChatZilla
• To install the ChatZilla add-on– Click Tools from the main menu – Choose Add-ons– The Get Add-ons tab should be selected– Type ChatZilla in the search box found in the
upper, right corner. – Click the install button to the right of the ChatZilla
add-on. – Restart Firefox.
19
Connecting to foss2serve
• Connect to the server via the command: /server irc.freenode.net
• Join the foss2serve channel via the command: /join #foss2serve
20
Useful Commands
• /me – indicates an action message – will appear in italics in ChatZilla
• /nick – changes your nickname• /quit – disconnects from the server• /away – sets message indicating you are
not active on IRC at the moment• http://www.ircbeginner.com/ircinfo/ircc-commands.html andhttp://www.greenday.net/chat/commands.html
21
Meetbot
• Assists in running meetings and taking notes.
• Admin can:– #startmeeting– #endmeeting– #topic– #agreed
• https://wiki.debian.org/MeetBot22
Meetbot
• Everyone can use:– #info– #link– #action
• https://wiki.debian.org/MeetBot
23
IRC Activity
• Using the list of nicks in the foss2serve IRC, introduce yourself with your name, institution and if you have using HFOSS in the classroom.
• Use the #info tag when you begin to make the transcript easier to track.
24
4. Issue Tracker Activity
25
What is Bug Tracking?
"with enough eyes, all bugs are shallow." Eric Raymond (Cathedral and Bazaar)
One of the core tenets of FOSS Reporting bugs is one easy way to get
started Fixing bugs is another way to get started
in FOSS
26
What is a Bug Tracker?
• Software to keep track of bugs, issues, and enhancements
• Also form of communication in FOSS communities
• Keeps a database of bugs including time/date, reporter, nature of bug, etc.
• Keeps track of bug lifecycle from creation through resolution
27
How Bug Tracking is Used
• Logs bugs and feature requests• Provides overview of development
requests– Prioritized list of items – sort of roadmap
• Records lifecycle of requests– Including requirement, design decisions, etc.
28
Bug Tracker Activity
• http://foss2serve.org/index.php/Bug_Tracker_Activity-MouseTrap
29
5. Version Control Activity
30
Version Control - 1
31
• Bob and Alice are working on a paper together
• They both want to edit simultaneously• What should they do?
Version Control - 2
32
• Options:1. Take turns
• Means one has to wait for the other
2. Work on own version • Means they have to merge the two versions• Complicated• Lots of opportunity for error
Version Control - 3
33
• Version Control AKA Source Code Control AKA Revision Control
• Put copy of file on server• Bob and Alice get their own working copy
Version Control - 4
34
• Bob can commit changes to repository• Alice can then update local copy• But what if Bob and Alice both change
same part of document??
Version Control - 5
35
• Bob’s changes allowed to stand as he got there first
• Alice’s changes marked • Alice responsible for resolving conflict
Version Control - 6
• Alice can:– Accept Bob’s changes– Replace with own work– Combine Bob’s and own work
• Once conflict is fixed, Alice can commit
36
Version Control - 7
• Advantages– Difficult to accidentally overwrite someone else’s
changes– No arguments of which copy is the “right” copy.
• The master copy is!
– Everything committed via version control is saved• New versions are saved on top of old versions• Can go back to any version• Lets you see who worked on any
particular version
37
38
Version Control Features - 1• Backup and Restore– Files saved as they are edited– Can jump to any point in time
• Synchronization– Lets developers be current with most recent
version• Short-term undo– Can throw away local changes and go back to last
“good” version• Long-term undo– Can jump back to any previous version
39
Version Control Features - 2• Track Changes– Supports communication about motivation for
change, author, etc.– Stored in the repository, NOT the source code file
• Track Ownership– Helpful for giving credit
• Sandboxing– Can make changes in a temporary copy and
commit only when ready• Branching and merging– Major sandbox changes
MouseTrap Git Repo
• https://git.gnome.org/browse/mousetrap/
• How many branches are there?• What is the most recent branch?• What is the history of gnome3-wip?
40
Git Activity
• https://github.com/foss2serve/git-activity– Form groups of 2-3– Let us know before updating
• Walk through commit of Bug 708796 - Bonobo and ORBit deprecation/removal
41
6. Wrap Up
Want to join us??POSSE
42
Questions?• Links:
– Foss2serve – http://foss2serve.org– Teaching Open Source –
http://teachingopensource.org– http://HFOSS.org– Producing Open Source Software -
http://producingoss.com/– The Cathedral and The Bazaar
http://catb.org/~esr/writings/homesteading/– http://OpenSouce.com– http://openhatch.org
Licensed Under Creative Commons
• Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)• Users of this material are able remix, tweak, and
build upon this work even for commercial purposes, as long as they credit the contributors and license their new creations under the identical terms. All new works based on this material will carry the same license, so any derivatives will also allow commercial use.
• http://creativecommons.org/licenses/by-sa/3.0/
44
App A. Getting Started
45
Getting Started Step 1: Getting Organized - 1
• Project evaluation activities should help you identify possible HFOSS projects.
• Cursory examination for:
46
Project Wiki/Page Committers
Mailing list(s) Bug Tracking
Roadmap Source Code Control
Documentation Releases
IRC
Getting Started Step 1: Getting Organized - 2
• Think about kinds of deliverables for students.
• Find Roadmap/bug tracker and identify possible contributions. – See if you can trace the process of one or more
bug fixes or enhancements
47
Getting StartedStep 2: Lurking
• Join mailing list(s) and observe for several weeks.– Read logs for several months or year back– Who are the major community members and
what are their roles?
• Join IRC and lurk.• Identify meeting times and lurk in
meetings.– What are the areas of interest to the community?
48
Getting StartedStep 3: Introducing Yourself - 1
• Introduce yourself and your motivation for joining the group.
• Identify what you (and students) can contribute to the project.– Not details, but generalities (e.g., work on
documentation)
• Describe the student body that you’ll be introducing to the community.
49
Getting StartedStep 3: Introducing Yourself - 2
• Identify what you are looking for from the community.– Project ideas?– Contact for particular aspect (e.g., documentation)
• Remember, goal is to facilitate student entrance into the community, not “find a project”.
50
Getting StartedStep 4: Finding Things To Do – 1
• Identify a small task that you can accomplish. – Identify the committer and commit process for the
task
• Let the community know what you’re working on.
• Accomplish the task and get it committed!
51