Open Source

SDS 192: Introduction to Data Science

Professor Lindsay Poirier

For Today

  • Introduction Open Source
  • Practice with remote repository
  • Design a README with project groups

Open Source vs. Free Software

  • Free software refers to software that doesn’t cost you anything to use
  • Open source software refers to software whose source code has been shared publicly so that others can re-use and/or remix it

Why might someone choose to make software open source?

Licensing

  • Licenses identify the conditions under which other individuals may re-use or remix source code
  • Without specifying a license, code published on Github.com is copyrighted.
  • Copyleft: an alternative to copyright laws that indicates that code must remain free and open
  • There are many existing licenses; resources like this can be helpful.

License Considerations

  • Can I use, modify, or redistribute this content? Can I do any of this for commercial purposes?
  • Can I modify the license when I redistribute the original? Do I have to include the full text of the original license when I redistribute it?
  • Am I required to distribute a copy of the original content when I distribute the content?
  • Do I need to disclose where my source code came from?
  • Do I need to describe changes I made to the source code when I redistribute it?

Documentation

  • README files are files that outline what others need to know about a project.
  • Good README files often include:
    • A project description
    • Project contributors
    • A roadmap/overview of the repo’s organization
    • An explanation of how others can install/configure the code
    • An overview of how to contribute to the project
    • Information on how to ask questions or request changes to the code
  • Here is a great resource for README templates

Issues

  • Support project planning by allowing you to create a wishlist of project changes
  • Space for reporting bugs, requesting features, or asking questions
  • Issues have labels like “good first issue” to track good issues to start contributing to.
  • An example of a robust issue queue is here.

Contributing Guides

  • Guides for contributing to open source projects are often outlined in a contributing.md file.
  • May include a code of conduct, requirements for project set-up, a development workflow, how to submit your changes, and how to style your code

Forking an Open Source Project

  • Code licensed with a copyleft license and made available on github.com can be forked.
  • Forking involves copying a project’s source code so that you can use it as the basis for your own project.
  • It is possible to make edits and request that the original creators of the code merge those changes into their project.