Skip to content
shunyaos edited this page Mar 5, 2020 · 3 revisions

Welcome to the shunyainterfaces wiki!

The Goal of this wiki is to provide documentation for Contributors Contributing to Shunya Interfaces.

TOC

First, thank you for contributing to Shunya Interfaces!

The goal of this document is to provide everything you need to start contributing to Shunya Interfaces.

  • Assumptions
  • Workflow
    • Git Branches
    • Git Commits
      • Signing-off
    • Github Pull Requests Title Single Concern Reviews & Approvals Merge Style
    • CI
  • Development
    • Setup
    • The Basics
      • Directory Structure
      • Makefile
      • Code Style
      • Documentation
    • Dependencies
    • Testing

Check out our Contributer chart below to see where you can contribute.

What do you like to do Options for Contributions Link to Work-flow
Do you like organizing? Link to duplicate issues and suggest new issue labels to keep things organized How To
Do you like to test out new features? Test Sensors and actuators How To
Do you like to create/make projects? Make cool projects using the library How To
Do you like to code? Add more Sensors/Actuators to the library How To
Find an open issue to tackle How To
Do you like helping others code? Review code on other people’s submissions How To
Do you like planning events? Organize workshops or meetups about the project How To
Do you like to design? Restructure layouts (Website, Docs etc..) to improve the project’s usability How To
Conduct user research to reorganize and refine the project’s navigation or Documentation How To
Do you like to write? Write and improve the project’s documentation How To
Curate a folder of examples showing how the project is used How To
Do you like helping people? Answer questions about the project on e.g. Stack Overflow How To

Above table shows the development Entities, their stages and where you can contribute.

  • Each Entity (Feature or Sensors/Actuator) has 8 stages which goes from Request to Tutorial.
  • Each Entity gets a new Issue.
  • Each Issue gets tagged with the ongoing stage Tag.
  • You can come in at any stage and help contribute to the project.

Assumptions

Workflow

Flow --> Identify Strategize Execute1 Execute2 Execute3 Execute4 Execute5 Execute6
Contributers can --> Request Assign Priority (maintainer only) Write Code Review Code Test Bugs Document Blog/Tutorial
Add a new Feature
Add support to Sensor/Actuator

Git Branches

Shunya Interfaces follows the following branching structure. While submitting a pull request please make sure you follow these branching structure.

  • master branch is always stable and will contain all the releases for the project.
  • develop branch contains latest commits that will merge to master at release time.
  • feature-* branches will contain commits for a new feature and will merge to develop.
  • release-* branches will contain commits for a new released will merge to master.
  • fix-* branches will contain commits for bug fixes to be merged to develop.

Git Commits

  • Please ensure your commits are small and focused on one single change.
  • Please make sure that all your commit messages describe your changes. This helps reviewers review your changes easily.

Signing-off

Your commits must include a signature. i.e All your commits must contain

Signed-off-by: Joe Smith <joe.smith@email.com>

It is very simple in git, just add the flag -s when you commit.

git commit -sm 'My commit message'

Github Pull Requests

Once the changes are ready, please submit it using pull requests.

Development

Setup

  1. Install Shunya OS

Directory Structure

  • docs - Documentation website for Shunya Interfaces
  • include/ - Header files for the Shunya Interfaces
  • src/ - Source files for Shunya Interfaces

CMake

Shunya Interfaces uses CMake for compiling the library. The library can be compiled using these commands.

# Clone the project, Skip this step if you have cloned the project already.
git clone https://github.com/shunyaos/shunyainterfaces.git
cd shunyainterfaces
# Create a build directory
mkdir build
cd build 
# Configure 
cmake ../
# Build 
make 
# Install Shunya Interfaces
sudo make install 

Code Style

Shunya Interfaces follows one coding style, all the files are mandatory to follow the coding styles.

Documentation

  • Please ensure that each new feature or a sensor getting added into the library Contains documentation for the feature.

Testing

For testing Shunya Interfaces, Please check this label.

Pre-requisites for Testing

Since Shunya Interfaces works on hardware, you would atleast need an

  1. Embedded board (RPI recommended)
  2. SD card
  3. Sensors (only if testing sensors) maybe required.

Steps for Testing

  1. Install Shunya OS on your board. Link here.
  2. Code Sensors
  3. Connect, Compile and Run.
  4. Check if the output is as expected.
  5. If the output is not as expected then file a bug in issues

For Suggestions and Improvements to the Workflow.

All your suggestions and feedback regarding the project are welcome and valuable to us. Please open up an Issue.

Credits

  • To opensource.guide for the contributing table - Checkout link
  • To @nvie for the git branching model that the project uses - Checkout link
Clone this wiki locally