Skip to content

Open Source

Introduction

What is Open Source Software

  • Code that is published publicly
  • Created and maintained by a collaborative virtual community
  • Anybody is allowed to use, modify and contribute back

Key Element

  • Use: Anyone can run the software for any purpose
  • View: Anyone can view the source code and understand the code
  • Modify: Enhancements, bug fixes and solutions can come from anywhere
  • Share: Collaboration between groups and individuals

Basic Terminology

  • Community: A group of people who work together to create and maintain a project
  • Contributor: A person who contributes to a project
  • Committers: Folks who review and approve changes to a code base
  • Code of conduct: A set of rules for a project
  • Contributing guidelines: Describe how to contribute and collaborate
  • Upstream: Forms the foundation or the source
  • Downstream: Programmer's working stream

The Open Source Way

  • Transparency
  • Collaboration
  • Deliver early and often
  • Inclusion
  • Community

Why Open Source Software matters

Benifits to Individuals

  • Learning in the open
  • Access to mentors
  • Building eminence
  • Hybrid is the new cloud
  • More job options

Benifits to Enterprises

  • Speed of innovation
  • Potential Cost Savings
  • Avoid vendor lock-in
  • Interact directly with users
  • Become aware of project roadmaps
  • Keep pace with competitors
  • Increase software security and reliability
  • Enhance business agility and time to market
  • Influence direction of technological development

Contributing

Choose an open source project

  • github.com/topics/<topic>
  • github.com/explore
  • up-for-grabs.net
  • goodfirstissue.com
  • codetriage.com

Before contribute

Understand how a project works

  • README
  • First file to be created
  • Most visible in the project's repository
  • Introduces and explains the project
  • States what the project is about
  • Contribution guidelines(CONTRIBUTING.md)
  • Explain how to contribute
  • Provide templates for bugs and feature requests
  • Describe how to submit pull requests
  • List work needed by maintainers
  • Code of conduct
  • Rules and expected behavior
  • Enforcement
  • Positive, healthy and respected feedback
  • License
  • Open Source licenses(LICENSES)

Ways to Contribute

  • Code
  • Report/fix bugs
  • Add new features
  • Update existing features
  • Write tests
  • Review code
  • Documentation
  • Writing and updating
  • Fixing typos, grammar mistakes and formatting errors
  • Creating examples and tutorials
  • Translating documentation
  • Advocate
  • Write a blog post
  • Share on social media
  • Give talks or workshops
  • Community
  • Answer questions on forums and mailing lists
  • Help moderate the discussion boards or conversation channels
  • Organize workshops or meetups about the project
  • Organize project conferences

Start Contributing

  • Finding issues
  • github.com/<username>/<repo>/issues
  • Regular meetings
  • Discuss matters in the community
  • Share new ideas and discussions
  • Connect with one another
  • Jupyter, Kubeflows and other tools
  • Attend sprints
  • Contribution sprints, developer days, coding nghts, unconferences and other events
  • Work together to solve problems
  • Learn, collaborate and expand network
  • Code programs and contests
  • Google Summer of Code, Hacktoon, CodeChef, etc.

Best practices

  • Understand the community
  • Be observant
  • Learn the community rules
  • Adhere to the code of conduct
  • Be respectful
  • Be kind
  • Start small
  • Start with small issues like documentation
  • Build trust
  • Code contribution
  • Make sure your idea hasn't been discussed before
  • Use documentation and issues for search
  • Use project issues to start the conversation
  • Use pull requests to work on the solution
  • Read the project contribution guidelines
  • Contribute clean code
  • Communication
  • Keep all communication in the open
  • Use neutral terms
  • Keep conversation friendly
  • Use chat channels for small conversations
  • Search in exsting issues and chat channels before starting a new one
  • Code maintenance
  • Be responsible for your code
  • Maintain your code by reviewing it regularly
  • Know the license
  • Understand the license
  • Understand the license's terms
  • Understand company rules
  • Find mentors in the community

Toolbox

Open Source Tools

  • Version Control Systems
  • Git
  • Subversion
  • Bug Trackers and Task Lists
  • Jira Software
  • GIthub Issues
  • Communication Channels
  • Package Management
  • Testing and Debugging Tools

Start Project

Licensing

A license dictates how others can interact with open source projects.
A license is a legal agreement between a copyright holder and those who use their work.

  • Copyleft License resctricts the right to use, modify and share creative works without the permission of the copyright holder holder
  • General Public License (GPL)
  • Mozilla Public License 2.0 (MPL)
  • Permissive License allows the freedom to use, redistribute and modify the original code as well as derivative works
  • MIT License
  • BSD License
  • Apache License 2.0

Warning

If you do not have a license in your project, it does not automatically mean the project is open source.
On the Contrary, each contributor has a right to their portion of the work.