While TeSS was originally developed to serve as the training portal for ELIXIR, it endeavours to be a generic training platform that can be easily customized and re-used in other communities.
TeSS' code and documentation are freely available under a permissive BSD 3-Clause open license. This means that you may use them outside of ELIXIR, imposing minimal restrictions on their use and distribution. However, even if you create your own version/fork of TeSS, please consider contributing your changes back to the main TeSS codebase.
If you are interested in TeSS or contributing to it, you may also want to join the TeSS Club an open biweekly meeting to discuss the direction of TeSS development.
If you plan on making a change to TeSS' code or documentation, it's a good idea to open an issue, or comment on an existing issue to explain and discuss why. This makes the TeSS contributors and members of the community aware of what activities are taking place, and lets them offer insight and advice.
By contributing, you agree that we may redistribute your work under our licence. In exchange, we will address your issues or assess your change proposals as promptly as we can, and help you become a member of our community.
When contributing to TeSS you are expected to follow the Code of Conduct. Basically, this means that we are dedicated to providing a safe, inclusive and harassment-free environment for all.
If you decide to contribute to TeSS you will need a GitHub account and must be signed in as all contributions are managed by GitHub. But that does not mean that you have to be a software developer to make helpful and meaningful contributions. You can contribute to TeSS in various ways, including:
The following sections explain the these in more detail.
If you notice a problem or a bug in TeSS, have an idea on something, or would like to see a new functionallity in TeSS, please submit a bug report or make a feature suggestion by creating a new issue on TeSS issues page.
Before opening a new issue, check the list of opened issues first to see if there is already an existing report on the same subject. If so, consider adding your thoughts as a comment on the existing issue instead of starting a new one.
We encourage contributors to comment and vote on any issues, discussions or pull requests that you feel are important - this is an opportunity to explain your point of view and discuss why certain changes are needed.
Voting is done by commenting "+1" or "-1" or leaving a reaction (👍 for +1, 👎 for -1) on the original issue or pull request. Community votes are non-binding, but help gauge opinion when prioritizing work.
Contributions to TeSS code are done on a separate fork that you can create in your GitHub account from the TeSS repository landing page. Within your fork, you should create a separate feature branch to contain your changes. After you are done, you then create a pull request to bring your proposed changes back from your feature branch into the main TeSS codebase. A summary of instructions to do so are given below.
Create a fork of TeSS on Github check out your copy, and create an upstream
remote to make it easier to pull in changes from the main TeSS code.
git clone https://github.com/<your account>/TeSS.git
cd TeSS
git remote add upstream https://github.com/ElixirTeSS/TeSS.git
Further information on how to create and work with a forked repository can be found here.
Decide which branch to base your feature branch off. This will probably be master
unless you are contributing a bug fix to a release of TeSS, in which case use, e.g. branch tess-1.2
.
Make sure your fork is up-to-date with upstream TeSS.
git checkout master
git pull upstream master
git checkout -b my-feature-branch
In order to run and test your code, you will need to be able to run TeSS locally. Follow our installation guide to set up your local instance of TeSS.
TeSS tries to follow the Ruby Style Guide. We also make use of rubocop, a Ruby static code analyzer and formatter that automatically checks and can enforce conformance to the Ruby Style Guide.
Your IDE may have rubocop integration. If if does not, you can run it manually form command line as:
rubocop lib/my_code_that_i_wrote.rb
or to automatically apply fixes:
rubocop -a lib/my_code_that_i_wrote.rb
Ensure your code is completely covered by test cases. Read through some existing tests to get an idea of how your code could be tested.
TeSS has an extensive test suite and aims to have as close to 100% test coverage as possible. Run the existing TeSS test suite to check your change has not broken any existing code as:
bundle exec rails test
You can also see the test coverage % after the tests finish - make sure it has not decreased from before adding your code.
Make sure your commits contain meaningful and related changes, and a commit message describing the change.
If you fix something unrelated to the rest of your changes, e.g. you found a typo somewhere, try and do it in a separate commit.
If your commit is related to an issue, tag the issue using in the commit message - e.g. use #123
to tag the issue number 123.
You can always rebase any rough commits later on to make them easier to follow.
Make sure that your feature branch is pushed to your fork of TeSS on GitHub and from it select your feature branch. Click the 'Pull Request' button and fill out the form. Make sure to include:
If your contribution is a work-in-progress, flag the pull request as being a "Draft".
Your pull request should trigger a build that can be monitored on our actions page. The core TeSS development team will also be notified, and a member of the team will review your Pull Request in a timely manner.
Check in from time to time, or wait for notifications of any reviewer comments or build failures.
If you need to make additional code changes (in response to review comments, for example), just push them to your original branch on your fork and GitHub will update the open pull request automatically.
TeSS has various levels of documentation that can be contributed to:
Small changes can be made directly in GitHub. Simply open the relevant file, click the pencil icon to edit, make your change, and click the "Proprose changes" button - GitHub will automatically create a fork, a feature branch and a pull request for you.
Thank you very much for using or considering contributing to TeSS.