Firstly, thank you for considering contributing to ESEm! As a small unfunded package any contributions are welcome, small or large :-)
If you have a general question regarding installing / using / understanding ESEm then please feel free to use our Discussions page where someone will be able to help.
If you have a problem with ESEm and it isn't working as documented or is producing unexpected errors then please check in the Issues page to see if anyone else has reported a similar problem. Feel free to comment on associated issues so that we know who it's affecting.
If there isn't an appropriate existing issue, please create one and be as descriptive as possible about what you expected to happen and what actually happened. Please also include a minimal working example to demonstrate the issue and explain what you've tried to fix it.
We welcome suggestions for improvements and (even better!) pull requests implementing such improvements. We hope the code is quite readable such that extensions and improvements are easy to implement and welcome first-time pull-requests. The design page in the documentation provides a useful resource detailing the architecture and our thinking behind it. Some useful guides to making a pull-request can be found at http://makeapullrequest.com/ and http://www.firsttimersonly.com/.
We are proud to have excellent test coverage for the code base and will request that any new contributions ensure similar coverage.
While we don't have an explicit roadmap, it is intended that ESEm remains a fairly light-weight wrapper around other packages which themselves implement e.g. emulation routines. With this in mind we have broadly defined areas we would welcome contributions, and those we would consider out of scope for ESEm below.
- We're very keen to include more diverse or advanced sampling techniques
- Further wrappers for emulation/regression techniques (ideally using existing dependencies, such as Keras or scikit-learn)
- Improvements to documentation / code comments
- Other examples / notebooks
- Other data pre-processors
- Implementation of emulation techniques from scratch within ESEm
- Data reading / writing routines
We expect interactions with ESEm developers and users to be respectful and polite at all times.