Skip to main content
Open Source:
What It Is and How to Contribute
Dr. Jan Pearce
Contents
Index
Search Book
close
Search Results:
No results.
Prev
Up
Next
Scratch ActiveCode
Profile
Course Home
Assignments
Practice
Peer Instruction (Instructor)
Peer Instruction (Student)
Change Course
Instructor's Page
Progress Page
Edit Profile
Change Password
Log Out
\(\newcommand{\N}{\mathbb N} \newcommand{\Z}{\mathbb Z} \newcommand{\Q}{\mathbb Q} \newcommand{\R}{\mathbb R} \newcommand{\lt}{<} \newcommand{\gt}{>} \newcommand{\amp}{&} \definecolor{fillinmathshade}{gray}{0.9} \newcommand{\fillinmath}[1]{\mathchoice{\colorbox{fillinmathshade}{$\displaystyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\textstyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\scriptstyle \phantom{\,#1\,}$}}{\colorbox{fillinmathshade}{$\scriptscriptstyle\phantom{\,#1\,}$}}} \)
Front Matter
Open Source Licensing
Dedication
Acknowledgements
Preface
Forward
1
Introduction to Open Source Software (OSS)
1.1
What is Open Source Software?
1.2
Why OSS Matters
1.2.1
Source Control
1.2.2
Documentation
1.2.3
Experiencing the Software Lifecycle
1.3
About Source Code
1.3.1
What is Source Sode
1.3.2
On Decompilation
1.4
On Sharing Source Code
1.4.1
Source Code: To Share, or Not To Share?
1.4.2
The value of sharing
1.5
Climbing Contributor Mountain
1.5.1
User
1.5.2
Seeker
1.5.3
Collaborator
1.5.4
Contributor
1.6
Building your OSS Portfolio
1.6.1
Building Your OSS Portfolio
1.6.2
Supplemental Materials
2
OSS Community and Communication
2.1
The Challenges of Global Community
2.2
The Synthetic Third Culture
2.3
Qualities of an OSS Community
2.3.1
Focus
2.3.2
Maturity and History
2.3.3
Type of Openness
2.3.4
Commercial Ties
2.3.5
Subgroups
2.3.6
Skills
2.3.7
Mentoring and Training
2.4
OSS Community Communication
2.4.1
Website
2.4.2
Software Engineering Collaboration Platforms (SECP)
2.4.2.1
Repository
2.4.2.2
Issue Tracker
2.4.2.3
Merge Request
2.4.2.4
Project Board
2.4.3
Other Asynchronous Communication Tools
2.4.4
Synchronous Communications
3
OSS Development Environment
3.1
Using the Command Line
3.1.1
Terminals and Related Terms
3.1.2
Why not a GUI?
3.1.3
Accessing a Terminal Window on your Machine
3.1.4
Your Shell
3.2
Basic Shell Commands
3.2.1
Files, Directories, and Privileges
3.3
We All Need an Editor!
3.4
Virtualization
3.4.1
The What and Why of Virtualization
3.4.2
Virtual Machines
3.4.3
Containerization
4
Version Control with Git
4.1
Why Version Control?
4.1.1
Version Control Systems
4.2
Getting Started with Git
4.2.1
Types of Version Control
4.2.2
Local VCSs
4.2.3
Centralized VCSs
4.2.4
Distributed VCSs
4.2.5
A Short History of Git
4.2.6
What is Git?
4.2.6.1
Snapshots, Not Differences
4.2.6.2
Nearly Every Operation Is Local
4.2.6.3
Git Has Integrity
4.2.6.4
Git Generally Only Adds Data
4.2.6.5
The Three File States
4.2.6.6
How Git is Organized
4.2.7
The Command Line
4.2.8
Installing Git
4.2.8.1
Installing on Linux
4.2.8.2
Installing on MacOS
4.2.8.3
Installing on Windows
4.2.9
Getting Help
4.2.10
First-Time Git Setup
4.3
Git Basics
4.3.1
Getting a Git Repository
4.3.2
Recording Changes to the Repository
4.3.3
Viewing the Commit History
4.3.4
Working with Remotes
4.4
Git Branching
4.4.1
Branches in a Nutshell
4.5
"Undoing" in Git
4.5.1
Undoing Changes
4.6
GitHub - Git in the Cloud
4.6.1
Contributing to a Project
4.6.2
Maintaining a Project
5
Open Source Licensing
5.1
About Licensing
5.1.1
Important IP Terminology
5.2
Typical Open Source Licenses
5.2.1
MIT License
5.2.2
Apache License 2.0
5.2.3
GNU General Public License v3.0
5.3
Existing OSS Communities
5.3.1
Contributing to Existing Projects
5.3.2
Changing Licenses
5.4
No License
5.4.1
In the Absence of a License
5.4.2
For potential users
6
Documentation
6.1
Documentation Matters!
6.1.1
The Purpose of Documentation
6.1.2
Effective Documentation
6.2
Documentation as Involvement
6.2.1
How Documentation Suffers
6.2.2
Getting Involved Through Documentation
6.3
Build Documentation
6.3.1
What is Building, Exactly?
6.3.2
Living With Complexity
6.4
Issue and Bug Documentation
6.4.1
Issues and Bugs, Oh My!
6.4.2
Issue and Bug Trackers
6.4.3
What is an Issue Tracker, Exactly?
6.4.4
Sorting through the Issues
6.4.5
The Anatomy of a Good Bug Report
6.4.6
Bug Triage
7
Contribution: A Quick-Start Guide
7.1
Quick Start
7.2
Friendly Communities
7.2.1
Firefox
7.2.2
CHAOSS
7.2.3
PreTeXt Authoring Software
7.2.4
Runestone Academy
Appendices
A
Git Cheat Sheet
A.1
Git Cheat Sheet
A.1.1
Getting started with a project
A.1.2
Current state
A.1.3
Git branching
A.1.4
Git stash
A.1.5
Git Restoring/Reverting
B
Shell Command Cheat Sheet
B.1
Bash Shell Cheat Sheet
C
Symbols Index
Text Index
Colophon
Colophon
Colophon
This book was authored in PreTeXt.