Contributing
Thank you for your interest in contributing to Liminoid π A good first step is saying hello in the chatroom. A good second step is figuring out how you might want to contribute!
Ways to Contribute
Contributing doesn't mean having to write codeβ’ and it is often the other (less tangible) contributions that really make a project successful (and fun):
Regardless of how you want to get involved, please note that this community follows and enforces an inclusive Code of Conduct. By participating you agree to abide by its terms.
Spread the word
The easiest way to contribute is by spreading the word! This could be sharing a project you built with Liminoid, telling a friend who might be interested, or chiming in on social media @liminoid_io π€
Help others
The most impactful way to contribute is by helping others. You could write a tutorial or guide on how to use Liminoid, improve the documentation, or answer questions on Stack Overflow.
Find bugs
If you find a bug or have a suggestion on how to make Liminoid better, first check the issues of the relevant sub-project on Github. If there isn't an existing outstanding issue, feel free to inquire in the chatroom or create a new issue.
Committers' Guide
If you would like to help develop Liminoid, a good starting place is to familiarize yourself with the sub-projects to figure out how/where you might want to contribute. Looking at any of the existing issues in any of the repositories can provide more bite-sized tasks and writing more tests is a gentle way to familiarize yourself with the code. Before working on fixing a bug, developing a new feature, or writing code, ask if anyone is already working on something similar in the chatroom to find potential collaborators and to prevent duplicating work.
Setting up your environment
Each repository may have slighty different development dependencies (listed in package.json
) but generally any pacakge that is:
- bundled uses ES6 modules and Rollup
- transpiled uses Babel with the latest ES6 class syntax enabled.
- formatted uses Pretttier for styling and ESLint for linting (loosely following Airbnb's guide)
- documented uses MDX (and Markdown) for integrating components into the docs.
The colophon is also a good reference of the libraries and pacakges that Liminoid uses.
Example
Below is an example of how to get started contributing to the Javascript REPL (and interface to WebAssembly/Pyodide).
$ git clone https://github.com/[my-fork]/liminoid-js.git$ cd liminoid-js
Install the devDependencies
$ yarn install
Write some code
$ vsc . # open pwd with VS Code (or your editor of choice)
Run the automated tests
$ yarn test
Format the contribution
$ yarn lint
Send it back
$ git add [changed files]$ git status # check what you are committing$ git commit -m "Describe the feature/bug addressed"
We generally follow the Github flow and the fork and pull model.
Versioning
TLDR; from https://semver.org/:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
Long(er) read: https://nodesource.com/blog/semver-a-primer/