# How to contribute
Cytomine is an open-source project and welcomes contributions of all kinds: code, documentation, example tasks, translations, or simply a bug report.
# Code
If you are new, start by exploring issues labelled good first issue (opens new window) in the cytomine repository.
If you are ready to dive in, whether testing, fixing a bug, or adding a feature, follow the instructions in our Contributing Guide (opens new window) to set up the Cytomine development environment.
# Documentation
This documentation website lives in the docs (opens new window) folder of the cytomine/cytomine (opens new window) repository, and is built with VuePress v1 (opens new window).
To work on it locally:
Fork and clone the repository, then follow the Contributing Guide (opens new window) to set up your branch.
Install the dependencies (requires Node (opens new window) v22.22.3+).
cd docs npm install1
2Start the development server with live reload.
npm run dev1The website will be available at http://localhost:8080 (opens new window).
Edit the relevant Markdown file(s) under
docs/src, then open a pull request following the same process as for code contributions.
TIP
You can generate a static build of the website with npm run build. The output is written to docs/src/.vuepress/dist.
# Tasks
Cytomine tasks (algorithms integrated through the App Engine) are also a great way to contribute. You can share a task you built by publishing it as its own repository, or submit it for inclusion in the documentation as a reference example.
See the example tasks page for a list of existing tasks to use as a starting point, and the Task guide to learn how a task is structured.
# Translations
The Cytomine web interface (web-ui) is translated using vue-i18n (opens new window). All translation strings are centralised in web-ui/src/locales/translations.csv (opens new window), with one column per language (currently English, French, Spanish, and Dutch).
To contribute:
- Improve an existing language: edit
translations.csvand fill in or correct the entries in the corresponding column. - Add a new language: add a new column to
translations.csvwith the language code as header, translate the existing keys, and register the new locale inweb-ui/src/lang.js(opens new window).
Running npm run translations-csv2json in the web-ui folder regenerates the per-language JSON files from the CSV (this also runs automatically as part of npm run build and npm run serve).
# Report a bug or request a feature
If you noticed a bug or would like to suggest a new feature, please open an issue (opens new window) on GitHub. Providing as much detail as possible (steps to reproduce, expected vs. actual behaviour, screenshots, environment) helps us address it faster.