Skip to content

Contributing

Benjamin J. Buchfink edited this page Jun 12, 2026 · 6 revisions

DIAMOND is an active community project, and you are invited to contribute to it. You may fork it on GitHub, develop changes and improvements, and submit a pull request. I stand ready to review and merge any sensible pull requests.

For substantial changes, I would recommend you to seek discussion with me in advance so I can give you feedback about what makes sense in my book. Drop me an email or live chat on Discord.

Do not fork this project off into your own personal version of DIAMOND and try to promote it as an alternative. Feed back your changes into the mainline and let the community benefit from them immediately. Most biologists are not in the business of constantly trying new tools that claim to be better than something else. Great software is built as a community effort, not by fracturing it into god-knows-how-many forks that all claim to be better than all the others. Use my knowledge and let us build something great together.

There is a unit test suite that you can run by ctest -C Release. That will give you reasonable confidence that you did not break anything with your changes. However, these do not cover all features let alone possible code paths. The space of possible different parameter combinations and things that can happen during runtime is astronomical, and no tests can cover all of it. You are free to add new tests for anything that is missing. Also a good reason to seek my advice about what makes sense.

About the memory safety concept of Rust, that is relevant for many systems, but not so much for bioinformatics tools. DIAMOND is just fine in C++. You can trust me on this, I'm a veteran with decades of experience, not a self-appointed expert who can prompt an AI. Do not rewrite something into a new language just because it is cool and fashionable, and find a more worthwhile endeavour than reinventing the wheel.

Building good software is a continuous process, not a one time thing. DIAMOND is not a static entity that you can just clone and copy, but under constant motion. I actively develop this project myself, so make sure to regularly merge against the current master. Also one more reason not to change the language, as that will let copies diverge until everybody is maximally confused about which one to use.

I will give due recognition to anybody who contributes to this work, including authorship on future publications.

Benjamin J. Buchfink, creator and developer of DIAMOND

Clone this wiki locally