General conventions
- io packages
- visualization:
biojs-events
: A event system to send events to outside listener - state your license in your README
- source folder structure: use either
lib
orsrc
(the NodeJS convention is to name itlib
, but frankly it doesn’t matter)
Standards
We have defined some minimal standards that every BioJS package should comply with. If your package doesn’t fullfil those standards, it will be tagged via our io-ratings service and for now red warnings might appear. It could happen that we will take more drastic actions in the future.
1. Documentation
It is super easy to write usable documentation for your component, we don’t expect a masterpiece of modern literature, but especially the user should be able to know how to use your components ;-) You could write your documentation with
README.md
(recommended)- Github wiki
- an API documentation generating framework (e.g. docco or jsdoc)
2. Working snippets (for vis components)
3. Lack of unit tests (especially for io components)
It is super easy to write automated tests, have a look at mocha.
4. Responsiveness on github
We don’t expect you to fix an issue on the day someone opens (we are all busy people who have a day job), but if someone opens a pull request with a fix for the bug, you should respond to this within three days (72h) - after all merging something on github takes you less than 30 seconds (with opening the page).
Gold standard
The following standards are not required, but could enhance your public visibility.
Recommendation for new comers
We state possible recommendations and pointers for each item. They are aimed at new comers and you are absolutely free to choose your e.g. favorite testing framework. For those recommendations to new comers: It is not so important how fancy they are. The key focus should be how easy they are to use and understand.
Our checklist
- public CI
- tool-enforced code-consistency
- jshint
- BioJS coding style guide
- automated integration tests
- high test coverage
Example components
- msa (in CoffeeScript)
(feel free to add your component here)