Thanks for wanting to contribute!!! There are many ways you can add value to this project
To get in touch with the contributors, either
- open a github discussion or
- join the Tidal Discord Channel and go to the #strudel channel
- Find related discussions on the tidal club forum
If you have any questions about strudel, make sure you've glanced through the docs to find out if it answers your question. If not, use one of the Communication Channels above!
Don't be afraid to ask! Your question might be of great value for other people too.
No matter if you've used the Strudel REPL or if you are using the strudel packages, we are happy to hear some feedback. Use one of the Communication Channels listed above and drop us a line or two!
If you made some music with strudel, you can give back some love and share what you've done! Your creation could also be part of the random selection in the REPL if you want. Use one of the Communication Channels listed above.
If you find some weak spots in the docs, you can edit each file directly on github via the "Edit this page" link located in the right sidebar.
If you want a specific feature that is not part of strudel yet, feel free to use one of the communication channels above. Maybe you even want to help with the implementation of that feature!
If you've found a bug, or some behaviour that does not seem right, you are welcome to file an issue. Please check that it has not been reported before.
To fix a bug that has been reported,
- check that nobody else is already fixing it and respond to the issue to let people know you're on it
- fork the repository
- make sure you've setup the project (see below)
- hopefully fix the bug
- make sure the tests pass
- send a pull request
There are still many tests that have not been written yet! Reading and writing tests is a great opportunity to get familiar with the codebase.
You can find the tests in each package in the test
folder. To run all tests, run npm test
from the root folder.
To get the project up and running for development, make sure you have installed:
- git
- node, preferably v16
then, do the following:
git clone https://github.com/tidalcycles/strudel.git && cd strudel
npm i # install at root to symlink packages
npx lerna bootstrap # install all dependencies in packages
cd repl && npm i # install repl dependencies
npm run start # start repl
Those commands might look slightly different for your OS. Please report any problems you've had with the setup instructions!
To make sure the code changes only where it should, we are using prettier to unify the code style. If you use VSCode, you can
- install the prettier extension
- open command palette and run "Format Document With..."
- Choose "Configure Default Formatter..."
- Select prettier
The project is split into multiple packages with independent versioning.
When you run npm i
on the root folder, npm workspaces will symlink all packages
in the node_modules
folder. This will allow any js file to import @strudel.cycles/<package-name>
to get the local version,
which allows developing multiple packages at the same time
To publish all packages that have been changed since the last release, run:
npm login
npx lerna publish
To add a new package, you have to publish it manually the first time, using:
cd packages/<package-name> && npm publish --access public
Remember to have fun, and that this project is driven by the passion of volunteers!