# Open-source Software#

## Ways to contribute#

One of the first things that come to mind contributing to a project is to add code or fix bugs or any other way that involves changing code. While improvements are a center element to advance a project, there are other ways to get involved without needing to know much about programming, or the project code structure itself:

1. Report bugs

3. Help others using the project

4. Start on issues marked as ‘good first issue’

5. Attend a meeting for the project (virtual or in-person)

## Open source How-To guides#

Here are some community/open-source resources for learning more about open-source software, tools and tricks for [collaborative] development, and open science in general.

• The Turing Way

• Keywords: GitHub; tutorials; guides; reproducible; collaborative; data science; contribute; development; open-source; git

• “The Turing Way is an open source community-driven guide to reproducible, ethical, inclusive and collaborative data science.”

• “Our goal is to provide all the information that data scientists in academia, industry, government and the third sector need at the start of their projects to ensure that they are easy to reproduce and reuse at the end.”

• GitHub Open Source Guides

• Keywords: guides; tutorials; development

## Elements of an open source project#

Below, a few elements to get started. This sample is not even scratching the surface for the breadth and depth of options and are meant to kick things off:

Let people know what your project is about. This can also include on how to setup your project for development.

2. Contributions guide

Give some instructions on how people can get involved with your project. GitHub healthy contributions guide

3. Tests

Software testing adds a quality check to your project and ensures that future changes to the code do not break existing functionality.

Packages/Documentation:

4. Documentation

New users or interested people to your project benefit from a well documented project and how to use it.

Platforms/Libraries:

5. Code Conventions

At some stage of your project, you might want to establish some conventions for coding style, so you have consistency across the library.

References/Services:

The legal aspect for your project. Good source to figure out the right license: https://tldrlegal.com/

For people to be able to install your package from the command line via pip or conda

Platforms:

## Software development environments#

Outside a Jupyter environment, you can also manage your package or code using these development environments or sometimes also referred to as IDE’s (Integrated Development Environments)

Some choices:

## Git Learning Resources#

• Learn git interactively!

• Keywords: git; interactive

• A great hands on tutorial for playing with git on a “virtual” repository. Practice here before applying to your actual software!