|
|
@@ -2,14 +2,6 @@
|
|
|
|
|
|
Thanks for your interest in contributing to OpenHands! We welcome and appreciate contributions.
|
|
|
|
|
|
-## How Can I Contribute?
|
|
|
-
|
|
|
-There are many ways that you can contribute:
|
|
|
-
|
|
|
-1. **Download and use** OpenHands, and send [issues](https://github.com/All-Hands-AI/OpenHands/issues) when you encounter something that isn't working or a feature that you'd like to see.
|
|
|
-2. **Send feedback** after each session by [clicking the thumbs-up thumbs-down buttons](https://docs.all-hands.dev/modules/usage/feedback), so we can see where things are working and failing, and also build an open dataset for training code agents.
|
|
|
-3. **Improve the Codebase** by sending PRs (see details below). In particular, we have some [good first issues](https://github.com/All-Hands-AI/OpenHands/labels/good%20first%20issue) that may be ones to start on.
|
|
|
-
|
|
|
## Understanding OpenHands's CodeBase
|
|
|
|
|
|
To understand the codebase, please refer to the README in each module:
|
|
|
@@ -19,79 +11,61 @@ To understand the codebase, please refer to the README in each module:
|
|
|
- [agenthub](./openhands/agenthub/README.md)
|
|
|
- [server](./openhands/server/README.md)
|
|
|
|
|
|
+## Setting up your development environment
|
|
|
|
|
|
-When you write code, it is also good to write tests. Please navigate to the `tests` folder to see existing test suites.
|
|
|
-At the moment, we have two kinds of tests: `unit` and `integration`. Please refer to the README for each test suite. These tests also run on GitHub's continuous integration to ensure quality of the project.
|
|
|
-
|
|
|
-## Sending Pull Requests to OpenHands
|
|
|
-
|
|
|
-### 1. Fork the Official Repository
|
|
|
-Fork the [OpenHands repository](https://github.com/All-Hands-AI/OpenHands) into your own account.
|
|
|
-Clone your own forked repository into your local environment:
|
|
|
-
|
|
|
-```shell
|
|
|
-git clone git@github.com:<YOUR-USERNAME>/OpenHands.git
|
|
|
-```
|
|
|
-
|
|
|
-### 2. Configure Git
|
|
|
-
|
|
|
-Set the official repository as your [upstream](https://www.atlassian.com/git/tutorials/git-forks-and-upstreams) to synchronize with the latest update in the official repository.
|
|
|
-Add the original repository as upstream:
|
|
|
-
|
|
|
-```shell
|
|
|
-cd OpenHands
|
|
|
-git remote add upstream git@github.com:All-Hands-AI/OpenHands.git
|
|
|
-```
|
|
|
+We have a separate doc [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) that tells you how to set up a development workflow.
|
|
|
|
|
|
-Verify that the remote is set:
|
|
|
+## How can I contribute?
|
|
|
|
|
|
-```shell
|
|
|
-git remote -v
|
|
|
-```
|
|
|
+There are many ways that you can contribute:
|
|
|
|
|
|
-You should see both `origin` and `upstream` in the output.
|
|
|
+1. **Download and use** OpenHands, and send [issues](https://github.com/All-Hands-AI/OpenHands/issues) when you encounter something that isn't working or a feature that you'd like to see.
|
|
|
+2. **Send feedback** after each session by [clicking the thumbs-up thumbs-down buttons](https://docs.all-hands.dev/modules/usage/feedback), so we can see where things are working and failing, and also build an open dataset for training code agents.
|
|
|
+3. **Improve the Codebase** by sending PRs (see details below). In particular, we have some [good first issues](https://github.com/All-Hands-AI/OpenHands/labels/good%20first%20issue) that may be ones to start on.
|
|
|
|
|
|
-### 3. Synchronize with Official Repository
|
|
|
-Synchronize latest commit with official repository before coding:
|
|
|
+## What can I build?
|
|
|
+Here are a few ways you can help improve the codebase.
|
|
|
|
|
|
-```shell
|
|
|
-git fetch upstream
|
|
|
-git checkout main
|
|
|
-git merge upstream/main
|
|
|
-git push origin main
|
|
|
-```
|
|
|
+#### UI/UX
|
|
|
+We're always looking to improve the look and feel of the application. If you've got a small fix
|
|
|
+for something that's bugging you, feel free to open up a PR that changes the `./frontend` directory.
|
|
|
|
|
|
-### 4. Set up the Development Environment
|
|
|
+If you're looking to make a bigger change, add a new UI element, or significantly alter the style
|
|
|
+of the application, please open an issue first, or better, join the #frontend channel in our Slack
|
|
|
+to gather consensus from our design team first.
|
|
|
|
|
|
-We have a separate doc [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) that tells you how to set up a development workflow.
|
|
|
+#### Improving the agent
|
|
|
+Our main agent is the CodeAct agent. You can [see its prompts here](https://github.com/All-Hands-AI/OpenHands/tree/main/openhands/agenthub/codeact_agent)
|
|
|
|
|
|
-### 5. Write Code and Commit It
|
|
|
+Changes to these prompts, and to the underlying behavior in Python, can have a huge impact on user experience.
|
|
|
+You can try modifying the prompts to see how they change the behavior of the agent as you use the app
|
|
|
+locally, but we will need to do an end-to-end evaluation of any changes here to ensure that the agent
|
|
|
+is getting better over time.
|
|
|
|
|
|
-Once you have done this, you can write code, test it, and commit it to a branch (replace `my_branch` with an appropriate name):
|
|
|
+We use the [SWE-bench](https://www.swebench.com/) benchmark to test our agent. You can join the #evaluation
|
|
|
+channel in Slack to learn more.
|
|
|
|
|
|
-```shell
|
|
|
-git checkout -b my_branch
|
|
|
-git add .
|
|
|
-git commit
|
|
|
-git push origin my_branch
|
|
|
-```
|
|
|
+#### Adding a new agent
|
|
|
+You may want to experiment with building new types of agents. You can add an agent to `openhands/agenthub`
|
|
|
+to help expand the capabilities of OpenHands.
|
|
|
|
|
|
-### 6. Open a Pull Request
|
|
|
+#### Adding a new runtime
|
|
|
+The agent needs a place to run code and commands. When you run OpenHands on your laptop, it uses a Docker container
|
|
|
+to do this by default. But there are other ways of creating a sandbox for the agent.
|
|
|
|
|
|
-* On GitHub, go to the page of your forked repository, and create a Pull Request:
|
|
|
- - Click on `Branches`
|
|
|
- - Click on the `...` beside your branch and click on `New pull request`
|
|
|
- - Set `base repository` to `All-Hands-AI/OpenHands`
|
|
|
- - Set `base` to `main`
|
|
|
- - Click `Create pull request`
|
|
|
+If you work for a company that provides a cloud-based runtime, you could help us add support for that runtime
|
|
|
+by implementing the [interface specified here](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/runtime.py).
|
|
|
|
|
|
-The PR should appear in [OpenHands PRs](https://github.com/All-Hands-AI/OpenHands/pulls).
|
|
|
+#### Testing
|
|
|
+When you write code, it is also good to write tests. Please navigate to the `tests` folder to see existing test suites.
|
|
|
+At the moment, we have two kinds of tests: `unit` and `integration`. Please refer to the README for each test suite. These tests also run on GitHub's continuous integration to ensure quality of the project.
|
|
|
|
|
|
-Then the OpenHands team will review your code.
|
|
|
+## Sending Pull Requests to OpenHands
|
|
|
|
|
|
-## PR Rules
|
|
|
+You'll need to fork our repository to send us a Pull Request. You can learn more
|
|
|
+about how to fork a GitHub repo and open a PR with your changes in [this article](https://medium.com/swlh/forks-and-pull-requests-how-to-contribute-to-github-repos-8843fac34ce8)
|
|
|
|
|
|
-### 1. Pull Request title
|
|
|
+### Pull Request title
|
|
|
As described [here](https://github.com/commitizen/conventional-commit-types/blob/master/index.json), a valid PR title should begin with one of the following prefixes:
|
|
|
|
|
|
- `feat`: A new feature
|
|
|
@@ -112,6 +86,9 @@ For example, a PR title could be:
|
|
|
|
|
|
You may also check out previous PRs in the [PR list](https://github.com/All-Hands-AI/OpenHands/pulls).
|
|
|
|
|
|
-### 2. Pull Request description
|
|
|
+### Pull Request description
|
|
|
- If your PR is small (such as a typo fix), you can go brief.
|
|
|
- If it contains a lot of changes, it's better to write more details.
|
|
|
+
|
|
|
+If your changes are user-facing (e.g. a new feature in the UI, a change in behavior, or a bugfix)
|
|
|
+please include a short message that we can add to our changelog.
|