Spaces:
Sleeping
Sleeping
# ● | |
**Open Interpreter is large, open-source initiative to build a standard interface between language models and computers.** | |
There are many ways to contribute, from helping others on [Github](https://github.com/KillianLucas/open-interpreter/issues) or [Discord](https://discord.gg/6p3fD6rBVm), writing documentation, or improving code. | |
We depend on contributors like you. Let's build this. | |
## What should I work on? | |
First, please familiarize yourself with our [project scope](https://github.com/KillianLucas/open-interpreter/blob/main/docs/ROADMAP.md#whats-in-our-scope). Then, pick up a task from our [roadmap](https://github.com/KillianLucas/open-interpreter/blob/main/docs/ROADMAP.md) or work on solving an [issue](https://github.com/KillianLucas/open-interpreter/issues). | |
If you encounter a bug or have a feature in mind, don't hesitate to [open a new issue](https://github.com/KillianLucas/open-interpreter/issues/new/choose). | |
## Philosophy | |
This is a minimalist, **tightly scoped** project that places a premium on simplicity. We're skeptical of new extensions, integrations, and extra features. We would rather not extend the system if it adds nonessential complexity. | |
# Contribution Guidelines | |
1. Before taking on significant code changes, please discuss your ideas on [Discord](https://discord.gg/6p3fD6rBVm) to ensure they align with our vision. We want to keep the codebase simple and unintimidating for new users. | |
2. Fork the repository and create a new branch for your work. | |
3. Follow the [Running Your Local Fork](https://github.com/KillianLucas/open-interpreter/blob/main/docs/CONTRIBUTING.md#running-your-local-fork) guide below. | |
4. Make changes with clear code comments explaining your approach. Try to follow existing conventions in the code. | |
5. Follow the [Code Formatting and Linting](https://github.com/KillianLucas/open-interpreter/blob/main/docs/CONTRIBUTING.md#code-formatting-and-linting) guide below. | |
6. Open a PR into `main` linking any related issues. Provide detailed context on your changes. | |
We will review PRs when possible and work with you to integrate your contribution. Please be patient as reviews take time. Once approved, your code will be merged. | |
## Running Your Local Fork | |
**Note: for anyone testing the new `--local`, `--os`, and `--local --os` modes: When you run `poetry install` you aren't installing the optional dependencies and it'll throw errors. To test `--local` mode, run `poetry install -E local`. To test `--os` mode, run `poetry install -E os`. To test `--local --os` mode, run `poetry install -E local -E os`. You can edit the system messages for these modes in `interpreter/terminal_interface/profiles/defaults`.** | |
Once you've forked the code and created a new branch for your work, you can run the fork in CLI mode by following these steps: | |
1. CD into the project folder by running `cd open-interpreter`. | |
2. Install `poetry` [according to their documentation](https://python-poetry.org/docs/#installing-with-pipx), which will create a virtual environment for development + handle dependencies. | |
3. Install dependencies by running `poetry install`. | |
4. Run the program with `poetry run interpreter`. Run tests with `poetry run pytest -s -x`. | |
**Note**: This project uses [`black`](https://black.readthedocs.io/en/stable/index.html) and [`isort`](https://pypi.org/project/isort/) via a [`pre-commit`](https://pre-commit.com/) hook to ensure consistent code style. If you need to bypass it for some reason, you can `git commit` with the `--no-verify` flag. | |
### Installing New Dependencies | |
If you wish to install new dependencies into the project, please use `poetry add package-name`. | |
### Installing Developer Dependencies | |
If you need to install dependencies specific to development, like testing tools, formatting tools, etc. please use `poetry add package-name --group dev`. | |
### Known Issues | |
For some, `poetry install` might hang on some dependencies. As a first step, try to run the following command in your terminal: | |
`export PYTHON_KEYRING_BACKEND=keyring.backends.fail.Keyring` | |
Then run `poetry install` again. If this doesn't work, please join our [Discord community](https://discord.gg/6p3fD6rBVm) for help. | |
## Code Formatting and Linting | |
Our project uses `black` for code formatting and `isort` for import sorting. To ensure consistency across contributions, please adhere to the following guidelines: | |
1. **Install Pre-commit Hooks**: | |
If you want to automatically format your code every time you make a commit, install the pre-commit hooks. | |
```bash | |
pip install pre-commit | |
pre-commit install | |
``` | |
After installing, the hooks will automatically check and format your code every time you commit. | |
2. **Manual Formatting**: | |
If you choose not to use the pre-commit hooks, you can manually format your code using: | |
```bash | |
black . | |
isort . | |
``` | |
# Licensing | |
Contributions to Open Interpreter would be under the MIT license before version 0.2.0, or under AGPL for subsequent contributions. | |
# Questions? | |
Join our [Discord community](https://discord.gg/6p3fD6rBVm) and post in the #General channel to connect with contributors. We're happy to guide you through your first open source contribution to this project! | |
**Thank you for your dedication and understanding as we continue refining our processes. As we explore this extraordinary new technology, we sincerely appreciate your involvement.** | |