Causallib welcomes community contributions to this repository.
This file provides the guidelines to contribute to this project.
We welcome a wide range of contributions:
- estimation models
- preprocessors
- plots
- improvements to the overall design
- causal analysis examples using causallib in Jupyter Notebooks
- documentation
- bug reports
- bug fixes
- and more
Causallib follows the Github contribution workflow:
forking the repository, cloning it, branching out a feature branch, developing,
opening a pull request back to the causallib upstream once you are done,
and performing an iterative review process.
If your changes require a lot of work, it is better to first make sure they are
aligned with the plans for the package.
Therefore, it is recommended that you first open an issue describing
what changes you think should be made and why.
After a discussion with the core maintainers, we will decide whether the suggestion
is welcomed or not.
If so, you are encouraged to link you pull request to its corresponding issue.
Contribution of new code is best when accompanied by corresponding testing code.
Unittests should be located in the causallib/tests/
directory and run with pytest
.
New bug fixes should, too, be ideally coupled with tests replicating the bug, ensuring it will not repeat in the future.
New code should also be well documented.
Causallib uses Google docstring format,
and docstrings should include input and output typing
(if not specified in the code).
If there are relevant academic papers on which the contribution is based upon,
please cite it and link to it in the docstring.
The ultimate goal is to enhance the readability of the code. Causallib does not currently adhere to any strict style guideline. It follows the general guidance of PEP8 specifications, but encourages contributors to diverge from it if they see fit.
Whenever in doubt - follow the Black code style guide.
The contrib
module is designated to more state-of-the-art methods that are not
yet well-established but nonetheless may benefit the community.
Ideally, models should still adhere to the causallib's API
(namely, IndividualOutcomeEstimator
, PopulationOutcomeEstimator
, WeightEstimator
).
This module has its own requirements file and tests.
The Causallib developer team works for IBM. To accept contributions outside of IBM, we need a signed Contributor License Agreement (CLA) from you before code contributions can be reviewed and merged. By signing a contributor license agreement (CLA), you're basically just attesting to the fact that you are the author of the contribution and that you're freely contributing it under the terms of the Apache-2.0 license.
When you contribute to the Causallib project with a new pull request, a bot will evaluate whether you have signed the CLA. If required, the bot will comment on the pull request, including a link to accept the agreement. You can review the individual CLA document as a PDF.
Note:
If your contribution is part of your employment or your contribution is the property of your employer, then you will likely need to sign a corporate CLA too and email it to us at ehudk@ibm.com.
Ehud Karavani
Yishai Shimoni
Michael Danziger
Lior Ness
Itay Manes
Yoav Kan-Tor
Chirag Nagpal
Tal Kozlovski
Liran Szlak
Onkar Bhardwaj
Dennis Wei