Skip to content

How to contribute¤

Contributions are welcome and very much appreciated!

Code contributions¤

We accept code contributions through pull requests. In short, this is how that works.

  1. Fork the repository and clone the fork.
  2. Create an environment with uv and build the solver — it is compiled into the package, so an install from source needs a staged IPOPT tree, and invoke setup takes care of the whole sequence (see Installation for the details, and for the Docker route):

    uv venv --python 3.12
    source .venv/Scripts/activate   # .venv/bin/activate on macOS and Linux
    uv pip install invoke compas_invocations2
    invoke setup
    

    Only working on the documentation or on Python code? uv pip install -r requirements.txt is enough for invoke docs and invoke lint — no solver build needed.

  3. Make sure all tests pass:

    invoke test
    
  4. Start making your changes to the main branch (or branch off of it).

  5. Make sure all tests still pass:

    invoke test
    
  6. Commit your changes and push your branch to GitHub.

  7. Create a pull request through the GitHub website.

During development, use pyinvoke tasks on the command line to ease recurring operations:

  • invoke clean: Clean all generated artifacts.
  • invoke check: Run various code and documentation style checks.
  • invoke docs: Build the documentation.
  • invoke docs: Serve the documentation at localhost:8000 with live reload.
  • invoke test: Run all tests and checks in one swift command.
  • invoke: Show available tasks.

Bug reports¤

When reporting a bug please include:

  • Operating system name and version.
  • Any details about your local setup that might be helpful in troubleshooting.
  • Detailed steps to reproduce the bug.

Feature requests and feedback¤

The best way to send feedback is to file an issue on GitHub. If you are proposing a feature:

  • Explain in detail how it would work.
  • Keep the scope as narrow as possible, to make it easier to implement.