We welcome all helpful contributions to improving the quality of MetaWards. Ways you can help include;
Finding and fixing documentation bugs and typos
Creating more tests and adding them to the pytest library in the
Taking on some of the tasks in the Snag list.
Porting and testing MetaWards on different computers
Writing new features
We accept pull requests to the devel branch and are happy to discuss ideas via GitHub issues on the repo.
When contributing, please keep in mind our code of conduct.
Before contributing we encourage everyone to complete the tutorial, as this gives a good grounding in how the model works and how the code is laid out. If you have any problems running the tutorial then please raise and issue.
Contributing new code
We welcome developers who want to join us to help reduce bugs and add new functionality. Please bear in mind the following;
We use semantic versioning and take care not to cause breaking changes in the public API. The public API consists of the core
metawardsmodule only - it does not cover
metawards.utilsor any plugins that are in
metawards.movers(although, the core plugin interface API will not change). We will endeavour to retain backwards compatibility outside of the core
metawardsmodule, but cannot guarantee it.
metawardsmodule and data structures are now quite fixed, and we endeavour not to make large or breaking changes. This means that new functionality should ideally be added via one of the pluging interfaces, e.g. iterators, extractors, mixers and movers. If you can’t fit your code into a plugin then please raise an issue to discuss your idea with the core developers, so that a way forward can be found. We really appreciate your help, and want to make sure that your ideas can be included in the most compatible way in the code.
We’ve added features to
metawards that we hope
will make it easier to develop new code. This includes tools to make
simplify profiling and “printf” debugging, and full pytest integration.
Please feel free to
raise an issue if there
is something else you think would help make development easier.
Finally, we have a very detailed developer guide that we hope will help you get up to speed with development. We strive to be a helpful, friendly and welcoming community, so if you have any questions or anything is not clear then please get in touch with us by raising an issue.