Contribute to SEAPATH

Contribute to SEAPATH

First off, thanks for taking the time to contribute!

The following is a set of guidelines for contributing to the SEAPATH project. These are mostly guidelines, sometimes rules. Use your best judgment, and feel free to propose changes to this document.

Code of Conduct

This project applies the LF Energy Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project's Technical Steering Committee SEAPATH-TSC@lists.lfenergy.org.

How to contribute

There are many ways to contribute:

Getting involved in the technical meetings

  • By participating in the TSC meeting passively and/or actively so that you can provide technical advice, understand what the project priorities are, and identify contributions you could make. You can know when the next TSC meeting take place and eventually subscribe to the mailing list here.

Developing

  • Develop new features

  • Correct bugs

  • All contributions are valuables (ex : typos or rephrasing)

  • See the contributions guidelines below

Promoting the project

Reporting problems

  • Find bugs and open GitHub issues

  • Provide feedback on already opened pull requests

  • New features or improvements/corrections to the project directly on GitHub

Improving the documentation

  • Write new wiki pages or improve the existing ones. Anyone can modify this wiki. You will need a Linux Foundation ID (created at https://identity.linuxfoundation.org/ ) to contribute. In the upper right of this page, select Log In to contribute.

  • Ask questions on the mailing list or on the Slack channel when documentation is not clear or non-existent

  • Add confluence comments on wiki pages

  • Write troubleshooting guides about the problem you encountered

Integrating new hardware and software

  • Test SEAPATH on the hardware you have

  • Integrate your software on SEAPATH (vIED)

  • Share new tools around SEAPATH ecosystem (ex: IEC 61850 management tools)

Code contribution guidelines (GitHub)

The code of the project is available here

License and Developer Certificate of Origin

By contributing to the SEAPATH project, you accept and agree to the following terms and conditions for your present and future contributions submitted to SEAPATH.

All contributions to this project are licensed under the license stipulated at the corresponding sub-repository. Except where otherwise explicitly indicated, SEAPATH is an open source project licensed under the Apache License, version 2.0.

The project requires the use of the Developer Certificate of Origin (DCO). The DCO is a legally binding statement asserting that you have the right to submit your contribution and to license it under the project's applicable license.

Contributors sign-off that they adhere to the term of the DCO by adding a Signed-off-by line to commit messages. The DCO sign-off must be attached to every contribution made by every contributor.

Here is an example Signed-off-by line, that indicates the contributor accepts the DCO:

This is my commit message. Signed-off-by: Name Surname <name.surname@entity.com>

You can write it manually but Git even has a -s command line option to append this automatically to your commit message:

$ git commit -s -m 'This is my commit message'

Note that checks will be performed during the integration in order to require that commits in a Pull Request contain valid Signed-off-by lines.

Style guides

  • Follow the code style of the project, including indentation

Git workflow guidelines

  • Create a personal fork of the project on GitHub

  • Clone the fork on your local machine

  • Make sure to pull upstream changes into your local repository

  • Implement/fix your feature, comment your code if needed

  • Make sure to split your commit

  • Squash intermediary commits (fixes, WIP, …) with git's interactive rebase

  • Each commit should only add one feature

  • Use two separate commits when adding a package and enabling it

  • Make sure that your commit message is consistent with the git history

  • Prefix the commit title by the area touch  ex: images/seapath-host-common.inc: add STONITH plugins

  • Separate subject from body with a blank line

  • Limit the subject line to 50 characters

  • Use the imperative mood in the subject line

  • Wrap the body at 72 characters

  • Use the body to explain what and why vs. how

  • Sign off your commit

  • Push your branch to your fork on GitHub

  • From your fork open a pull request

More details can be found there.

Testing

  • Run tests on the hardware you want to install the distribution and ensure that no regression are seen (ex: cukinia)

  • Provide the hardware specification

  • Write or adapt tests as needed

  • When appicable a cukinia test must be provided for each new functionality

Documentation

  • Add or change the documentation as needed.

English language convention

The convention for all the project's documents, including code documentation, website, is to write American English. A list of spelling differences between British and American English is available here.