# Introduction

### We're happy to see you here!

First off, we're  happy to see you here. RESPECT is an open source project and we welcome contributions that make it better for teachers, students, and the wider user community. 

### Why we have these guidelines and procedures.

These guidelines help us communicate and organise all contributors including the developers, translators, managers, bug reporters, and more as efficiently as possible.

### Contributions we welcome:

There are many ways you might be able to contribute to RESPECT! This is an open source project and we welcome contributions. Yes, coding is one way, but there are many other ways:

* Feature suggestions
* Writing code (pull request)
* New RESPECT compatible apps
* Feature suggestions
* Translation/localization
* Bug reports
* Tutorials and blog posts

# Ground Rules
* Follow the [code of conduct](https://github.com/UstadMobile/Respect/tree/main?tab=coc-ov-file) e.g. be respectful.
* Ensure that code that goes into main or is proposed to be merged into main meets the [coding guidelines](https://github.com/UstadMobile/Respect/blob/main/CODING_GUIDELINES.md).
* Create issues for any major changes and enhancements that you wish to make. Discuss things transparently and get community feedback.
* Ensure that changes are in the best interest of as many of our users and potential users as possible.
* Be welcoming to newcomers and encourage new contributors from all backgrounds
* DO remind others of applicable standards, engineer practices, best practices, documentation, etc. DO NOT insult or demean users (e.g. no RTFM type responses).
* Core admins (those who have write access to the main branch) must be qualified to review code as per the architecture and have a long history of contributions that adhere to the [coding guidelines](https://github.com/UstadMobile/Respect/blob/main/CODING_GUIDELINES.md).

# Your First Contribution
Unsure where to start? You could:

* Look at the issues pending issues
* File an issue for a bug or feature request you think is important
* Post a message on the community slack channel

If you're new to pull requests for open-source projects check out [Github's Beginner’s guide to GitHub: Creating a pull request](https://github.blog/developer-skills/github/beginners-guide-to-github-creating-a-pull-request/)

# Feature suggestions

* Create a new [issue](https://github.com/UstadMobile/Respect/issues) and select the Feature Request template.
* Submit and participate in discussion. Depending on the priority, justification, and available resources, the core team may, or may not, decide to take up development of the issue directly.

# Code contributions (pull requests)

* If it's a significant feature/change proposed (eg more than a few lines) then create a new [issue](https://github.com/UstadMobile/Respect/issues) and select the Feature Request template. In the issue description mention that you are interested in contributing directly. Then engage in open/transparent discussion on the issue
* Once a consensus is reached go ahead and create your own fork of the code. Do your changes on the fork.
* Ensure that your code meets the [coding guidelines](https://github.com/UstadMobile/Respect/blob/main/CODING_GUIDELINES.md).
* Create a pull request for your feature
* The pull request is reviewed by a core maintainer. Once the pull request meets the guidelines and is deemed to be in the best interest of the project the core maintainer will merge it. 

# How to report a bug

We appreciate bug reports (really)! An issue well explained is well on its way to being solved.

If you find a security vulnerability, do NOT open an issue. Email mike@ustadmobile.com instead.

* Create a new [issue](https://github.com/UstadMobile/Respect/issues) and select the Bug Report template.
* Answer the questions in the template and submit.
* Engage in conversation / clarification as needed.

# How add a new RESPECT compatible app

* Follow the [Integration Guide](https://github.com/UstadMobile/RESPECT-Consumer-App-Integration-Guide) to make your EdTech app work with RESPECT.
* Test it directly: you don't need to wait for permission from anyone. Login to RESPECT as a school admin, go to apps, then add app and enter the app manifest URL as per the Integration Guide.
* Schools can use your app on RESPECT. RESPECT's architecture is built around digital sovereignty and privacy: no party can block an app. Any app developer can publish a compatible app and any school admin can add an app to their school using the manifest URL as above.
* If an app meets the [Google Play Family policy](https://play.google.com/console/about/programs/families/) e.g. it does not contain material widely considered as unacceptable for children then it can be added to the RESPECT default catalog of apps available for admins to add to their school. Create an [issue](https://github.com/UstadMobile/Respect/) and select the _Request to add compatible app to default catalog_ template.

# Translation/localization

RESPECT Compatible apps and lessons can be offered in any language, even when that language is not directly supported in the RESPECT app. If you want to add a new language to RESPECT:

* Create a new [issue](https://github.com/UstadMobile/Respect/issues) and select the add new language template.
* Include a link to any other software translation you have done before in the issue
* You'll be provided with a link to Weblate (an online translation platform) where you can add translations.

# Tutorials and blog posts

Community contributions and posts that help others are very much welcome. You're of course free to do that on any channel or space you want, and it'd be great if you share a link with us on the [discussions board](https://github.com/UstadMobile/Respect/discussions).

# Community

We're social people. You can discuss with the core team and other community members through:

* Slack: Join our [Community Slack Space](https://join.slack.com/t/respectdevelopers/shared_invite/zt-3t8dpyxxs-0nSsFsLGau5MjVZQzrlvqA)
* [Github Discussions](https://github.com/UstadMobile/Respect/discussions) on this repository.

> Credit: This CONTRIBUTING.md was dervied from [contributing-template](https://github.com/nayafia/contributing-template).

