This course is intended to familiarize students with the concepts of Open Source software development and modern development practices. Specific areas of focus are:
- History of Open Source
- Communities and governance
- Technologies used
- Source control
- Communications tools
- Issue trackers
- Legal aspects (licensing/foundations)
Additionally, students should expect to be challenged in areas of personal development related to the business environment such as giving presentations, writing position papers and analyzing failures.
Daniel Ruggeri - druggeri primary.net
Tues/Thus 5:30pm - 6:45pm, 104 ESH
INFSYS 3898 (Undergrad)
INFSYS 6891 (Graduate)
Open Source Software ~ Karl Fogel
ISBN: 0596007590, ISBN-13: 978-0596007591
Download free at http://producingoss.com/
In full transparency, the assignments dished out as well as how they are graded is shared in this section
Homework assignments will be passed out from time to time involving reading, researching or taking some action. These assignments should be completed by the next class
Each student will be required to give a short presentation about a topic.
The reason for this requirement is two-fold:
- To ensure a certain level of mastery of the topic such that it can be explained well
- To ensure a certain level of mastery in giving a presentation
This is so each student gets experience in exercising their "marketing" muscle which is not only required in the world of business, but also the world of Open Source. While presentations will be graded on content, a significant portion of the grade will also come from organization of the content, aestetics of any materials presented as well as the ability to adhere to guiding principals for good presentations.
Communicating well is critically important in the world outside of the classroom and, similar to giving presentations, is a muscle that must be exercised regularly. Students will be tasked with writing short papers in the form of:
- Position papers in which an opinion and supporting facts (persuasive in nature) should be presented. These documents will be graded on grammar, composition and coherence to the assignment and argument since opinions vary.
- Summary documents which should be written in a form suitable for a manager to understand the landscape or overview of a concept they are not familiar with. In addition to the points earned in position papers, these documents will also be graded on accuracy of their factual contents and the simplification of complex topics.
Exactly 1 physical page
I am a manager that has worked in manufacturing all of my career but have recently moved to become the manager of a software development team.
I hear people mention "source control" and things like "commit", "branch", "tag" and such but I don't know what any of these things are.
Provide me a one-pager that explains what source control is and gives a few key terms/definitions.
At least 2 physical pages
The legal environment of business and software development is complex.
It's even harder when trying to open a code base because there are so many FOSS licenses to choose from.
What is the best Open Source license out there and why?
Use the first paragraph to make assumptions about why I want to open my code and the remainder of the document to define your choice and explain it.
The world of Open Source is driven by community so it is important that the community within our classroom is full of individuals willing to contribute to the success of the whole class. Therefore, participation during discussions and presentations as well as within code and the project will be measured over the course of the semester and will contribute to a significant portion of the grade.
Through the course of the semester, students will have opportunities to earn extra credit. Opportunities will be shared as they come along.
- Contribute fixes to this course's content
- Contribute fixes to a real Open Source project
- Attend ISPC events
- Homework 10
- Class Participation 10
- Paper: Source Control for Pointy hairs 20
- Paper: The best Open Source Licence is... 20
- Midterm 40
- Final 40
- Presentation: Topics Assigned 20
- Presentation: About My Favorite Project 20
- Total 180
This is the planned schedule of events for the course. Since topics may run longer or come up short, expect some minor alterations. It's also important to note that when you see discussion come up in the schedule, you should expect the instructor to ask questions that will verify your understanding/homework as well as to cover some of the topics in depth.
- Get to know eachother
- Cover syllabus
- Discuss presentations
- Discuss project
- Homework: Read chapter 1 of book
- Homework: Create a github.com account - email me the username
- Chapter 1 discussion - lecture notes
- Homework: Read Bruce Perens' Open Source definition essay
- Stop at "Analysis of the Open Source Definition"
- Consider starting the Version Control chapter (below)
- Consider starting the Source Control for Pointy Hairs Paper
- Discuss Open Source definition essay
- Presentation about giving presentations: Dr. Rottman
- Source Control - overview
- Who gets the commit bit?
- Communications
- Homework: Read Chapter 3 - Version Control section
- Remember the Source Control for Pointy Hairs paper
- Discuss Version Control learnings - lecture notes
- Source Control - applied
- Lab: Creating and using repositories
- Remember the Source Control for Pointy Hairs paper
- Source Control - Additional concepts - lecture notes
- Beware of "fork" term
- Branching
- Tags
- Source Control - applied
- Lab: Pull requests and patches
- Homework: Source Control for Pointy Hairs paper
- Paper 1 (Source Control for Pointy Hairs) is due
- Application environments (dev, stage, prod)
- Guest Speaker: Tom Manor, RedHat - Why I trust Open Source software in my production environment
- Source Control - applied
- Another lab to wrap up concepts
- Homework: Read Chapter 7 - Packaging "Compilation and Installation" and "Binary packages" subsections
- Building software - lecture notes
- Local builds
- Local tools
- Managing dependencies - lecture notes
- What is a dependency?
- Why use a library?
- Automated dependency management
- Lab - Show how Open Source software can be changed
- Download
- Modify
- Build
- Build systems - lecture notes
- Overview
- What are they/Why do I care?
- Declaration of build steps
- Continuous Integration (CI)
- Continuous Delivery/Deployment (CD)
- Overview
- Homework: Read Chapter 5 - Economics of Open Source and Types of Corporate Involvement
- Guest Speaker: Brian Lock, Pivotal - How we as a company make money with Open Source
- Homework: Read Chapter 3 - Bug Tracker
- Discuss bug tracking chapter learnings - lecture notes
- Issue Tracking - overview
- Bugs vs issues
- Issue Tracking - applied
- Lab: Create an issue
- Homework: Create your own issue
- If this issue is for our class, resolve it with a pull request
- If this issue is in a real project, extra points if you resolve it!
- Go around the room
- What issue did you report?
- Open time - questions/review for midterm
Mid term examination
(Mar 13 - mid semester)
- Communities and their importance - lecture notes
- Community models (part 1) - lecture notes
- Community models (part 2) - lecture notes
- Growth of open communities (non-code related)
- Wikipedia/Creative Commons
- Open Education
- Open Government
- Open Street Maps
- Licenses!!! - lecture notes
- Questions that must be asked of every license
- What are the terms, are they compatible with planned use?
- Questions that must be asked of every license
- The "big" licenses source
- MIT
- GPL 2/3
- Apache 2
- BSD
- Guest Speaker: Chris Kampmeier, Mastercard - What is Innersourcing and why we want it
- Homework: Read Chapter 3 - Mailing Lists/Message Forums
- Discuss communications tools learnings - lecture notes
- Communications tools
- Mailing lists
- IRC
- Forums
- Foundations - lecture notes
- Their role (some examples)
- US Non-for-profit types
- Paper 2 (The Best Open Source License is...) is due
- Getting involved - lecture notes
- The importance of credibility in the community
- A path to getting engaged
- User
- Contributor
- Committer
- Voter
- Homework Read Chapter 4 - Social and Political Infrastructure - Consensus-based Democracy
- Guest Speaker: Rich Bowen, Apache Software Foundation - The Apache Way
- Homework: Read Chapter 2 - Documentation
- Development best practices - lecture notes
- Documentation
- MUST have files: README, CHANGELOG, LICENSE
- Wiki, FAQ, Website
- Developer guidelines
- Translation
- Software delivery methodologies - lecture notes
- Waterfall
- AGILE
- OSS Project presentations
- What is the project?
- Aspects about it (governance, community, etc)
- Homework: Read Chapter 7 - Release Numbering and Chapter 7 - Stabilizing a Release
- Releasing software - lecture notes
- Versioning
- Release procedures
- Final exam review
- "Guest Speaker": Daniel Ruggeri, business guy - How to not suck at business
(May 6 - end of classes)
May 9 (finals)
- Held in 212 ESH
May 11 (finals)
(May 13 - semester close)
This class has been shaped through input from many folks, but a few notable attributions are deserved: