Save 37% off PRO during our Black Friday Sale! »

2017 - Opening up to Open Source

Db2ee812bdc6fd057f8f4209c08b6f63?s=47 PyBay
August 21, 2017

2017 - Opening up to Open Source


Open source communities have led to the development of a majority of useful tools and technologies. Open source software is understated because becoming involved can be daunting when a project has hundreds of active developers. In reality, open source communities are warm, welcoming, and diverse. Learn more about open source, its significance, opportunities to contribute, and how to get started.


Everyday, thousands of developers gather in teams and collaborate in open source communities to collaborate together to celebrate the principles of community-oriented development, such as open exchange, collaborative participation, rapid prototyping, transparency, and meritocracy.

By publicizing their source code on websites like GitHub, open source projects allow others to easily develop, modify, and distribute their source code, dispelling the stigma of software as a private, commercial product. Various examples of open source software include the Atom text editor, Rust programming language, Django Python-based web application framework, and Zulip group chat application.

However, individuals often hesitate to join open source communities due to several concerns; some fear ridicule for their lack of experience or invaluable contributions, and others believe that they cannot gain valuable rewards from committing their time to a non-profit project.

Instead, new contributors to open source projects discover opportunities to develop their technical, communication, and collaboration skills under the guidance of experienced mentors by collaborating with a network of like-minded individuals with various backgrounds, experience, and fields of expertise. By contributing to open source projects, individuals gain a chance to make a difference by developing software that revolutionizes the technology industry.

Learn more about open source, its significance, opportunities to contribute, and how to get started.


Cynthia Lin is a 15-year-old high school student from Torrance, California. A full-stack developer at heart, she has extensive experience developing software, web applications, automated bots, and games through various projects. As an avid supporter of open source software, Cynthia actively contributes to the Zulip open source group chat application as a core developer and the lead developer of zulipbot. She placed as a Finalist in Google Code-in 2016 for her accomplishments in open source software and has presented her experiences as a high school student in the open source community at several technology conferences.
Speaker home page



August 21, 2017


  1. Opening Up to Open Source An Introduction to Open Source

    Communities Cynthia Lin (@synicalsyntax) PyBay 2017 — 8/13/17
  2. 1. Welcome to Open Source Software A brief introduction to

    the semantics of open source software
  3. Do you use… Linux? Atom? Python? They’re all open source!

  4. “ 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”
  5. Open vs. Closed Software Open Source ◎ Distributed under licenses

    ◎ Accessible ◎ Permissive rights Closed Source ◎ Distributed under licenses ◎ Private; proprietary ◎ Strict usage limits
  6. 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: 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
  7. Why do people open source their software? Open source’s accessibility

    leads to: ◎ Increased collaboration ◎ Better maintenance and quality ◎ Lower costs ◎ Transparency ◎ Increased popularity
  8. 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
  9. 2. Anatomy of an Open Source Project Dissecting and analyzing

    the structure of a software-developing open source project
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. Structure of an Open Source Community

  18. 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
  19. 3. Beginning Your Open Source Journey How to find an

    open source project to contribute to and make your first contribution count
  20. 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 ( • Recommended: Great for New Contributors ( ◦ CodeTriage ( ◦ Up for Grabs (
  21. 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?
  22. The Ideal Project Checklist ✓ Community ❑ Helpful? ❑ Responsive?

    ❑ Friendly? ❑ Positive collaboration and discussion? ❑ Pull request reviews? ❑ CODE_OF_CONDUCT?
  23. 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!
  24. 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
  25. Conclusion Open source software: Made by everyone for everyone

  26. Thank you! Questions? Ask away! GitHub + Twitter: @synicalsyntax Website: Slides: