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 tests directory

  • 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 metawards module only - it does not cover metawards.utils or any plugins that are in metawards.iterators, metawards.extractors, metawards.mixers or metawards.movers (although, the core plugin interface API will not change). We will endeavour to retain backwards compatibility outside of the core metawards module, but cannot guarantee it.

  • The core metawards module 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.