Slide 1

Slide 1 text

Opening Up to Open Source An Introduction to Open Source Communities Cynthia Lin (@synicalsyntax) PyBay 2017 — 8/13/17

Slide 2

Slide 2 text

1. Welcome to Open Source Software A brief introduction to the semantics of open source software

Slide 3

Slide 3 text

Do you use… Linux? Atom? Python? They’re all open source!

Slide 4

Slide 4 text

“ Open Source software is software that can be freely accessed, used, changed, and shared (in modified or unmodified form) by anyone. — Open Source Initiative, “Frequently Asked Questions”

Slide 5

Slide 5 text

Open vs. Closed Software Open Source ◎ Distributed under licenses ◎ Accessible ◎ Permissive rights Closed Source ◎ Distributed under licenses ◎ Private; proprietary ◎ Strict usage limits

Slide 6

Slide 6 text

Open Source Licenses MIT License (permissive) ◎ Permissions: ○ Commercial use ○ Private use ○ Modification ○ Distribution ◎ Copy of license must be included ◎ No warranty provided ◎ No liability claimed More details: opensource.org/licenses/category choosealicense.com/licenses/ GNU GPLv3 (copyleft) ◎ Permissions: ○ Commercial use ○ Patent use ○ Private use ○ Modification ○ Distribution ◎ Copy of license must be included ◎ Must use same license ◎ Disclose source and modifications ◎ No warranty provided ◎ No liability claimed

Slide 7

Slide 7 text

Why do people open source their software? Open source’s accessibility leads to: ◎ Increased collaboration ◎ Better maintenance and quality ◎ Lower costs ◎ Transparency ◎ Increased popularity

Slide 8

Slide 8 text

Why do people contribute to open source software? ◎ Improve coding/design/writing/etc. skills ◎ Learn best practices in software development from experienced mentors ◎ Capitalize on leadership and networking opportunities ◎ Give back to the community

Slide 9

Slide 9 text

2. Anatomy of an Open Source Project Dissecting and analyzing the structure of a software-developing open source project

Slide 10

Slide 10 text

The Head: The Project Codebase ◎ Definition: where all of the source code of the project is located ◎ Typically stored in a repository of a distributed version control system (e.g. Git, Subversion, Mercurial) ◎ Accessible through hosting services like GitHub, GitLab, Bitbucket, and Gogs

Slide 11

Slide 11 text

Components of a Codebase: Issue Tracker ◎ AKA bug tracker ◎ Serve as discussion forums for issues related to the codebase ◎ Where bug reports and feature requests are submitted ◎ Closed issues are archived for future reference

Slide 12

Slide 12 text

Components of a Codebase: Pull Requests ◎ A way to submit contributions to a codebase ◎ Fellow contributors can review changes and offer feedback ◎ Project maintainers merge contributions once approved

Slide 13

Slide 13 text

Components of a Codebase: Project Milestones ◎ Used to track project progress ◎ Mark important points in the timeline of a project (e.g. when a major issue has been resolved) ◎ Improve project management

Slide 14

Slide 14 text

Components of a Codebase: Documentation ◎ README ○ Introduces new users to the project ○ Describes project purpose and vision ◎ CONTRIBUTING ○ Describes desired contributions to the project ○ Explains how contributions should be made ◎ CODE_OF_CONDUCT ○ Sets rules for behavior of community members ○ Helps creates warm, positive environement ◎ Miscellaneous ○ Developer-oriented tutorials and guides ○ Governance policies

Slide 15

Slide 15 text

Maintaining Codebase Quality ◎ Continuous integration ○ Travis CI ○ Jenkins CI ○ Circle CI ◎ Code coverage ○ Codecov ○ Coveralls ◎ Quality assurance ◎ Testing ○ Unit testing ○ Integration testing ○ Functional testing ○ Acceptance testing

Slide 16

Slide 16 text

The Heart: The Project Community ◎ Definition: The users and developers of open source software ◎ Use synchronous chat clients to communicate and collaborate (e.g. Slack, IRC, Gitter) ◎ May also use mailing lists or discussion forums to discuss

Slide 17

Slide 17 text

Structure of an Open Source Community

Slide 18

Slide 18 text

Other Roles in an Open Source Community ◎ Event planners: Plan and organize events, meetups, and code sprints ◎ Managers: Respond to questions and user feedback ◎ Designers: Improve the user interface and experience of the product ◎ Writers: Write user-facing docs and tutorials, product demonstrations, maintaining a newsletter ◎ Translators: Localize the product to other languages ◎ Promoters: Advertise the project to increase its popularity

Slide 19

Slide 19 text

3. Beginning Your Open Source Journey How to find an open source project to contribute to and make your first contribution count

Slide 20

Slide 20 text

Finding Your First Open Source Community ◎ Consider contributing to: ○ Projects developing software you use regularly ○ Projects with a focus you’re interested in ◎ Resources: ○ GitHub Explore (github.com/explore) ● Recommended: Great for New Contributors (github.com/showcases/great-for-new-contributors) ○ CodeTriage (codetriage.com) ○ Up for Grabs (up-for-grabs.net)

Slide 21

Slide 21 text

The Ideal Project Checklist ✓ License ❑ Available? ❑ Meets open source definition? ✓ Activity ❑ Latest commit? ❑ Amount of contributors? ❑ Rate of commits? ❑ Age of project? ✓ Documentation ❑ Developer docs? ❑ CONTRIBUTING? ✓ Issues ❑ Amount of open issues? ❑ Responsiveness to issues? ❑ Issues recently resolved? ✓ Pull Requests ❑ Amount of open pull requests? ❑ Responsiveness to pull requests? ❑ Pull requests recently merged?

Slide 22

Slide 22 text

The Ideal Project Checklist ✓ Community ❑ Helpful? ❑ Responsive? ❑ Friendly? ❑ Positive collaboration and discussion? ❑ Pull request reviews? ❑ CODE_OF_CONDUCT?

Slide 23

Slide 23 text

Making Your First Contribution ✓ Issue tracker ❑ Find a problem that you want to solve ❑ Propose an improvement ❑ Claim/open an issue ✓ Pull request ❑ Submit a quick fix ❑ Discuss with community on necessary changes to resolve issue ✓ Pull request (cont.) ❑ Fork repository ❑ Create branch for changes ❑ Document proposed changes in pull request description ❑ Make sure tests pass ❑ Wait for a review ❑ Make additional changes if requested ✓ Merged! First contribution complete!

Slide 24

Slide 24 text

Tips and Tricks to Contributing ◎ Give context when asking for help ◎ Do your research ◎ Ask questions ◎ “Patience is a virtue” ◎ Do the “dirty work” ◎ Treat everyone with respect ◎ Be humble, but bold ◎ Communicate effectively

Slide 25

Slide 25 text

Conclusion Open source software: Made by everyone for everyone

Slide 26

Slide 26 text

Thank you! Questions? Ask away! GitHub + Twitter: @synicalsyntax Website: synicalsyntax.me Slides: goo.gl/gziQGD