-
Notifications
You must be signed in to change notification settings - Fork 54
Description
pomdp-py has been useful to many since it was released two years ago. It is encouraging to receive emails from users of different backgrounds. I believe there is value and beauty in keep improving this library for what it is and making POMDP-related research more accessible to more people programmatically. This is the basis of pomdp-py.
I will keep maintaining this library, but I have also graduated from my PhD and am moving on to the next chapter. Therefore, I am calling for contributors who are willing to take part in improving & maintaining this library. Below, I provide some guidelines for how you could contribute. In the end, I include my own todo-list -- open for anybody. Feel free to contact me at kzheng10@cs.brown.edu if you have any thoughts or comments.
How to Contribute
There are multiple ways you could contribute:
-
Open an issue. If you identify a problem or have questions, feel free to open an issue about it.
-
Fork & make a pull request.
-
Existing tests under pomdp-py/tests should pass. Run
python test_all.py
before making your pull request. -
If you make breaking changes, please write your own tests under the same directory and overwrite previous tests (and justify why).
-
Communicate effectively what you have done, how it works, and how should people use it. Effective communication is not limited to text writing.
-
-
Blog. If you have used pomdp-py, it would be useful to others if you blog about the process of your use and your thoughts. Share your link with me - thanks!
Coding
- Follow Google Python style guide. In particular:
- Use 4 spaces instead of tabs.
- Use Google style docstrings (examples)
Documentation
- We use Sphinx, which uses RST (reStructuredText).
- The documentation source code is in pomdp-py/docs/_sphinx_src.
- The generated website is in pomdp-py/docs/html.
Read about how to build the docs on this documentation page.
Git and Github
- Follow Github's Best Practices for Projects. In particular:
- Break down large issues into smaller issues
- Communicate
- Make use of the description and README
- Have a single source of truth
Caveats
- Building a Cython-Python project for PyPI release is tricky. Make sure both Cython (.pyx, .pxd) and Python (.py) source files are included in the PyPI source package.
- Writing documentation for a Cython-Python combined project is tricky.
TODO List
Your contribution could be about, but not limited to, the following TODO items in my notes. The ordering is somewhat random; they are each assigned to a potential future release.
-
Add a tutorial for writing tabular domains; Add crying-baby example; Add the tabular models into pomdp-py/utils/templates.py
-
Add a tutorial for using the functions in value_functions.py.
-
Add DESPOT support. It is best to integrate with the official DESPOT repository.
-
Add
OctreeDistribution
(octree belief; ref) as one of the distribution reps in pomdp_py. -
Finish solving the light-dark domain; Existing B-LQR planning implementation does not work.
-
Add support for multi-agent POMDPs.
- Issues requesting Dec-POMDP Can this solve Dec MDPs? #19, Is it possible to do multiagent in pomdp-py? #14
-
Add examples and solvers / planners for continuous POMDPs.
-
Benchmark comparison against David Silver's C++ codebase on RockSample. The codebase could be found in this repo: https://github.com/kyr-pol/pomcp