Fundamentals of Open Source Development Leslie Hawthorn, Outreach Manager Jeff Sheltren, Operations Manager August 16, 2011 OSU Picture © Greg Keene
Introduction
What is Open Source? Software that can be freely downloaded, used, modified and redistributed. Generally: Licensed under an OSI- approved license
Who Uses Open Source
● TiVo ● HD televisions ● MeeGo ● Android ● Mozilla
Who Uses Open Source ● In-flight entertainment ● Delta ● Continental ● United ● Virgin America
Internet – Powered by Open Source ● Apache web server: 58,623,115 servers 57.57% of active servers surveyed ● Of the top million busiest sites: Over 74% run on open source
Step One: Choosing a Project ● “Scratch your own itch” ● Codes of Conduct ● Ubuntu's is widely referenced and remixed – Be considerate, be respectful, be collaborative ● Unwritten “Codes of Conduct” ● Does this project share your values?
Understanding Project Values “We welcome people of any gender identity or expression, race, ethnicity, size, nationality, sexual orientation, ability level, neurotype, religion, culture, subculture, and political opinion. We welcome activists, artists, bloggers, crafters, dilettantes, musicians, photographers, readers, writers, ordinary people, extraordinary people, and everyone in between. We welcome people who want to change the world, people who want to keep in touch with friends, people who want to make great art, and people who just need a break after work. We welcome fans, geeks, nerds, and pixel-stained technopeasant wretches. We welcome Internet beginners who aren't sure what any of those terms refer to.”
Spend Some Time on the Project Website ● Start with the “About” Page ● Find (or Ask For) Newbie Documentation
Developer Documentation ● Review Style/Coding Guidelines ● Understand the project's workflow for submitting problem reports and fixes ● Mailing list vs. bug tracker
What's a Patch? ● A code snippet to update a part of a larger piece of software ● Typically created using the 'diff' tool, or equivalent tool from within a revision control system
Mailing Lists Are Critical ● Browse the archives ● You can't read everything – search! ● Determine the key players ● Asking Questions ● Write a useful subject line ● Show you've done your research ● Wait for an answer
What is Top Posting? I really want a pink and yellow pony!! >> What kind of pony would you like?
Basic Netiquette ● Choose a Reasonable “Handle” ● Don't Use Text Speak ● Be Formal in Your First Few Posts
Revision Control (a.k.a. source control, version control) ● Most code is stored in a revision control system ● Linux uses git, other popular options are Subversion, Bazaar & Mercurial ● Understand revisions, branches
Learn to Love IRC IRC = Internet Relay Chat ● Read Channel Topic ● Observe Traffic ● Don't Ask to Ask ● Wait for an Answer ● Lurking ++
Ways to Get Involved ● File Bugs ● Write Effective Bug Reports ● What you were doing ● What you thought should happen ● What happened instead ● Software & hardware specs
Ways to Get Involved ● Check the Issue Tracker for “Easy” or “Beginner” Bugs ● Submit a Patch
Ways to Get Involved ● Triage Bugs ● Answer Questions in IRC ● Point People in the Right Direction
Ways to Get Involved ● Offer to Document Information You Get ● Press Releases and Newsletters ● Testimonials & Developer / User Interviews
Ways to Get Involved ● Join or Start a Local User Group ● Offer to Staff a Booth or Table ● Volunteer to Help at the Next FOSS Conference
Ways to Get Involved ● Create Training Materials: How To's, Tutorials ● Bonus Points for Video or In Person Training ● Give a Talk about Your Project Anyone who can share knowledge well is a teacher.
Ways to Get Involved ● Improve FOSS ● Get Valuable Employment Experience ● Learn from an Experienced Mentor ● Become Part of a Vibrant Global Community ● Get Paid
Recap ● Getting Started Means Being a Good Citizen ● Jump in Where You Can Do Well ● Know You Will Make Mistakes ● Have Fun!
Thank You! Leslie Hawthorn, Outreach Manager Jeff Sheltren, Operations Manager @sheltren
Resources ● Producing Open Source Software: – This guide for starting a FOSS project provides a good overview for newbies, too. ● Guide to GSoC Mentoring: – Documentation for Google Summer of Code Mentors that will also be of general use to folks looking to add new contributors. ● Student Guide to GsoC: – Docs for GsoC students that will also be of general use for learning how to contribute to FOSS projects
Resources (cont'd.) ● Mentoring in Open Source Communities: What Works, What Doesn't – Excellent article interviewing several FOSS developers on their mentoring methodologies. ● How to Ask Questions the Smart Way – The often cited guide to asking questions effectively in the FOSS world. Not always gentle in tone – your mileage may vary.
Even More Resources ● The Free Software Definition – The document for understanding the concept of software being free as in uncensored speech rather than no cost ● The Cathedral and the Bazaar ● – Seminal piece on the early history and fundamental concepts of the Free Software movement
The Last Resources Page ● The Open Source Definition – Document used by the Open Source Initiative to determine whether or not a particular license can be considered Open Source. Useful for understanding the differences between Free Software and Open Source. ● Please suggest additional resources!