From 6ca3a4eefa17e18f186b5aca8906111aa044273a Mon Sep 17 00:00:00 2001 From: Jamie Chicago <87397251+jamiechicago312@users.noreply.github.com> Date: Fri, 10 Oct 2025 04:29:36 +0000 Subject: [PATCH 1/8] docs: add contributing page under developers and update docs.json for menu Migrated from All-Hands-AI/OpenHands@91ce7344488869cc947107e29ee9b8f11e9b7655 Co-authored-by: openhands --- docs.json | 222 +++++++++++++------- openhands/usage/developers/contributing.mdx | 208 ++++++++++++++++++ 2 files changed, 355 insertions(+), 75 deletions(-) create mode 100644 openhands/usage/developers/contributing.mdx diff --git a/docs.json b/docs.json index 7378ee96..2dee0608 100644 --- a/docs.json +++ b/docs.json @@ -65,52 +65,52 @@ { "group": "Advanced Configuration", "pages": [ - { - "group": "LLM Configuration", - "pages": [ - "openhands/usage/llms/llms", - { - "group": "Providers", - "pages": [ - "openhands/usage/llms/openhands-llms", - "openhands/usage/llms/azure-llms", - "openhands/usage/llms/google-llms", - "openhands/usage/llms/groq", - "openhands/usage/llms/local-llms", - "openhands/usage/llms/litellm-proxy", - "openhands/usage/llms/moonshot", - "openhands/usage/llms/openai-llms", - "openhands/usage/llms/openrouter" - ] - } - ] - }, - { - "group": "Runtime Configuration", - "pages": [ - "openhands/usage/runtimes/overview", - { - "group": "Providers", - "pages": [ - "openhands/usage/runtimes/docker", - "openhands/usage/runtimes/remote", - "openhands/usage/runtimes/local", - { - "group": "Third-Party Providers", - "pages": [ - "openhands/usage/runtimes/modal", - "openhands/usage/runtimes/daytona", - "openhands/usage/runtimes/runloop", - "openhands/usage/runtimes/e2b" - ] - } - ] - } - ] - }, - "openhands/usage/advanced/configuration-options", - "openhands/usage/advanced/custom-sandbox-guide", - "openhands/usage/advanced/search-engine-setup" + { + "group": "LLM Configuration", + "pages": [ + "openhands/usage/llms/llms", + { + "group": "Providers", + "pages": [ + "openhands/usage/llms/openhands-llms", + "openhands/usage/llms/azure-llms", + "openhands/usage/llms/google-llms", + "openhands/usage/llms/groq", + "openhands/usage/llms/local-llms", + "openhands/usage/llms/litellm-proxy", + "openhands/usage/llms/moonshot", + "openhands/usage/llms/openai-llms", + "openhands/usage/llms/openrouter" + ] + } + ] + }, + { + "group": "Runtime Configuration", + "pages": [ + "openhands/usage/runtimes/overview", + { + "group": "Providers", + "pages": [ + "openhands/usage/runtimes/docker", + "openhands/usage/runtimes/remote", + "openhands/usage/runtimes/local", + { + "group": "Third-Party Providers", + "pages": [ + "openhands/usage/runtimes/modal", + "openhands/usage/runtimes/daytona", + "openhands/usage/runtimes/runloop", + "openhands/usage/runtimes/e2b" + ] + } + ] + } + ] + }, + "openhands/usage/advanced/configuration-options", + "openhands/usage/advanced/custom-sandbox-guide", + "openhands/usage/advanced/search-engine-setup" ] } ] @@ -157,6 +157,7 @@ "group": "OpenHands Developers", "pages": [ "openhands/usage/developers/development-overview", + "openhands/usage/developers/contributing", { "group": "Architecture", "pages": [ @@ -184,8 +185,8 @@ ] }, { - "tab": "API Reference", - "openapi": "openapi/openapi.json" + "tab": "API Reference", + "openapi": "openapi/openapi.json" } ], "global": { @@ -213,8 +214,7 @@ "dark": "/logo/dark.png" }, "navbar": { - "links": [ - ], + "links": [], "primary": { "type": "github", "href": "https://github.com/All-Hands-AI/OpenHands" @@ -235,29 +235,101 @@ ] }, "redirects": [ - { "source": "/modules/:slug*", "destination": "/:slug*"}, - { "source": "/usage/:slug*", "destination": "/openhands/usage/:slug*"}, - { "source": "/openhands/usage/configuration-options", "destination": "/openhands/usage/advanced/configuration-options" }, - { "source": "/openhands/usage/how-to/custom-sandbox-guide", "destination": "/openhands/usage/advanced/custom-sandbox-guide" }, - { "source": "/openhands/usage/search-engine-setup", "destination": "/openhands/usage/advanced/search-engine-setup" }, - { "source": "/openhands/usage/prompting/repository", "destination": "/openhands/usage/customization/repository" }, - { "source": "/openhands/usage/how-to/debugging", "destination": "/openhands/usage/developers/debugging" }, - { "source": "/openhands/usage/how-to/development-overview", "destination": "/openhands/usage/developers/development-overview" }, - { "source": "/openhands/usage/how-to/evaluation-harness", "destination": "/openhands/usage/developers/evaluation-harness" }, - { "source": "/openhands/usage/how-to/websocket-connection", "destination": "/openhands/usage/developers/websocket-connection" }, - { "source": "/openhands/usage/prompting/microagents-keyword", "destination": "/openhands/usage/microagents/microagents-keyword" }, - { "source": "/openhands/usage/prompting/microagents-org", "destination": "/openhands/usage/microagents/microagents-org" }, - { "source": "/openhands/usage/prompting/microagents-overview", "destination": "/openhands/usage/microagents/microagents-overview" }, - { "source": "/openhands/usage/prompting/microagents-public", "destination": "/openhands/usage/microagents/microagents-public" }, - { "source": "/openhands/usage/prompting/microagents-repo", "destination": "/openhands/usage/microagents/microagents-repo" }, - { "source": "/openhands/usage/installation", "destination": "/openhands/usage/quick-start" }, - { "source": "/openhands/usage/how-to/cli-mode", "destination": "/openhands/usage/run-openhands/cli-mode" }, - { "source": "/openhands/usage/how-to/github-action", "destination": "/openhands/usage/run-openhands/github-action" }, - { "source": "/openhands/usage/how-to/gui-mode", "destination": "/openhands/usage/run-openhands/gui-mode" }, - { "source": "/openhands/usage/how-to/headless-mode", "destination": "/openhands/usage/run-openhands/headless-mode" }, - { "source": "/openhands/usage/local-setup", "destination": "/openhands/usage/run-openhands/local-setup" }, - { "source": "/openhands/usage/getting-started", "destination": "/openhands/usage/start-building" }, - { "source": "/openhands/usage/prompting/prompting-best-practices", "destination": "/openhands/usage/tips/prompting-best-practices" }, - { "source": "/openhands/usage/feedback", "destination": "/openhands/usage/troubleshooting/feedback" } + { + "source": "/modules/:slug*", + "destination": "/:slug*" + }, + { + "source": "/usage/:slug*", + "destination": "/openhands/usage/:slug*" + }, + { + "source": "/openhands/usage/configuration-options", + "destination": "/openhands/usage/advanced/configuration-options" + }, + { + "source": "/openhands/usage/how-to/custom-sandbox-guide", + "destination": "/openhands/usage/advanced/custom-sandbox-guide" + }, + { + "source": "/openhands/usage/search-engine-setup", + "destination": "/openhands/usage/advanced/search-engine-setup" + }, + { + "source": "/openhands/usage/prompting/repository", + "destination": "/openhands/usage/customization/repository" + }, + { + "source": "/openhands/usage/how-to/debugging", + "destination": "/openhands/usage/developers/debugging" + }, + { + "source": "/openhands/usage/how-to/development-overview", + "destination": "/openhands/usage/developers/development-overview" + }, + { + "source": "/openhands/usage/how-to/evaluation-harness", + "destination": "/openhands/usage/developers/evaluation-harness" + }, + { + "source": "/openhands/usage/how-to/websocket-connection", + "destination": "/openhands/usage/developers/websocket-connection" + }, + { + "source": "/openhands/usage/prompting/microagents-keyword", + "destination": "/openhands/usage/microagents/microagents-keyword" + }, + { + "source": "/openhands/usage/prompting/microagents-org", + "destination": "/openhands/usage/microagents/microagents-org" + }, + { + "source": "/openhands/usage/prompting/microagents-overview", + "destination": "/openhands/usage/microagents/microagents-overview" + }, + { + "source": "/openhands/usage/prompting/microagents-public", + "destination": "/openhands/usage/microagents/microagents-public" + }, + { + "source": "/openhands/usage/prompting/microagents-repo", + "destination": "/openhands/usage/microagents/microagents-repo" + }, + { + "source": "/openhands/usage/installation", + "destination": "/openhands/usage/quick-start" + }, + { + "source": "/openhands/usage/how-to/cli-mode", + "destination": "/openhands/usage/run-openhands/cli-mode" + }, + { + "source": "/openhands/usage/how-to/github-action", + "destination": "/openhands/usage/run-openhands/github-action" + }, + { + "source": "/openhands/usage/how-to/gui-mode", + "destination": "/openhands/usage/run-openhands/gui-mode" + }, + { + "source": "/openhands/usage/how-to/headless-mode", + "destination": "/openhands/usage/run-openhands/headless-mode" + }, + { + "source": "/openhands/usage/local-setup", + "destination": "/openhands/usage/run-openhands/local-setup" + }, + { + "source": "/openhands/usage/getting-started", + "destination": "/openhands/usage/start-building" + }, + { + "source": "/openhands/usage/prompting/prompting-best-practices", + "destination": "/openhands/usage/tips/prompting-best-practices" + }, + { + "source": "/openhands/usage/feedback", + "destination": "/openhands/usage/troubleshooting/feedback" + } ] -} +} \ No newline at end of file diff --git a/openhands/usage/developers/contributing.mdx b/openhands/usage/developers/contributing.mdx new file mode 100644 index 00000000..cdf86006 --- /dev/null +++ b/openhands/usage/developers/contributing.mdx @@ -0,0 +1,208 @@ +--- +title: Contributing to OpenHands +description: Join us in building the future of AI-powered software development. Learn how to contribute to OpenHands and make a meaningful impact. +--- + +# ๐Ÿ™Œ Contributing to OpenHands + +Welcome to the OpenHands community! We're building the future of AI-powered software development, and we'd love for you to be part of this journey. + +## ๐ŸŒŸ Our Vision: Free as in Freedom + +The OpenHands community is built around the belief that **AI and AI agents are going to fundamentally change the way we build software**, and if this is true, we should do everything we can to make sure that the benefits provided by such powerful technology are **accessible to everyone**. + +We believe in the power of open source to democratize access to cutting-edge AI technology. Just as the internet transformed how we share information, we envision a world where AI-powered development tools are available to every developer, regardless of their background or resources. + +If this resonates with you, we'd love to have you join us in our quest! ๐Ÿš€ + +## ๐ŸŽฏ What Can You Build? + +There are countless ways to contribute to OpenHands. Whether you're a seasoned developer, a researcher, a designer, or someone just getting started, there's a place for you in our community. + +### ๐ŸŽจ Frontend & UI/UX +Make OpenHands more beautiful and user-friendly: +- **React & TypeScript Development** - Improve the web interface +- **UI/UX Design** - Enhance user experience and accessibility +- **Mobile Responsiveness** - Make OpenHands work great on all devices +- **Component Libraries** - Build reusable UI components + +*Small fixes are always welcome! For bigger changes, join our **#eng-ui-ux** channel in [Slack](https://dub.sh/openhands) first.* + +### ๐Ÿค– Agent Development +Help make our AI agents smarter and more capable: +- **Prompt Engineering** - Improve how agents understand and respond +- **New Agent Types** - Create specialized agents for different tasks +- **Agent Evaluation** - Develop better ways to measure agent performance +- **Multi-Agent Systems** - Enable agents to work together + +*We use [SWE-bench](https://www.swebench.com/) to evaluate our agents. Join **#evaluation** in [Slack](https://dub.sh/openhands) to learn more.* + +### โš™๏ธ Backend & Infrastructure +Build the foundation that powers OpenHands: +- **Python Development** - Core functionality and APIs +- **Runtime Systems** - Docker containers and sandboxes +- **Cloud Integrations** - Support for different cloud providers +- **Performance Optimization** - Make everything faster and more efficient + +### ๐Ÿงช Testing & Quality Assurance +Help us maintain high quality: +- **Unit Testing** - Write tests for new features +- **Integration Testing** - Ensure components work together +- **Bug Hunting** - Find and report issues +- **Performance Testing** - Identify bottlenecks and optimization opportunities + +### ๐Ÿ“š Documentation & Education +Help others learn and contribute: +- **Technical Documentation** - API docs, guides, and tutorials +- **Video Tutorials** - Create learning content +- **Translation** - Make OpenHands accessible in more languages +- **Community Support** - Help other users and contributors + +### ๐Ÿ”ฌ Research & Innovation +Push the boundaries of what's possible: +- **Academic Research** - Publish papers using OpenHands +- **Benchmarking** - Develop new evaluation methods +- **Experimental Features** - Try cutting-edge AI techniques +- **Data Analysis** - Study how developers use AI tools + +## ๐Ÿš€ Getting Started + +Ready to contribute? Here's your path to making an impact: + +### 1. ๐Ÿƒโ€โ™‚๏ธ Quick Wins +Start with these easy contributions: +- **Use OpenHands** and [report issues](https://github.com/All-Hands-AI/OpenHands/issues) you encounter +- **Give feedback** using the thumbs-up/thumbs-down buttons after each session +- **Star our repository** on [GitHub](https://github.com/All-Hands-AI/OpenHands) +- **Share OpenHands** with other developers + +### 2. ๐Ÿ”ง Set Up Your Development Environment +Follow our comprehensive setup guide: +- **Requirements**: Linux/Mac/WSL, Docker, Python 3.12, Node.js 22+, Poetry 1.8+ +- **Quick setup**: `make build` to get everything ready +- **Configuration**: `make setup-config` to configure your LLM +- **Run locally**: `make run` to start the application + +*Full details in our [Development Guide](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)* + +### 3. ๐ŸŽฏ Find Your First Issue +Look for beginner-friendly opportunities: +- Browse [good first issues](https://github.com/All-Hands-AI/OpenHands/labels/good%20first%20issue) +- Check our [project boards](https://github.com/All-Hands-AI/OpenHands/projects) for organized tasks +- Ask in [Slack](https://dub.sh/openhands) what needs help + +### 4. ๐Ÿค Join the Community +Connect with other contributors: +- **[Slack Community](https://dub.sh/openhands)** - Real-time chat with developers and maintainers +- **[Discord](https://discord.gg/ESHStjSjD4)** - Alternative community platform +- **[GitHub Discussions](https://github.com/All-Hands-AI/OpenHands/discussions)** - Longer-form conversations + +## ๐Ÿ“‹ How to Contribute Code + +### Understanding the Codebase +Get familiar with our architecture: +- **[Frontend](https://github.com/All-Hands-AI/OpenHands/tree/main/frontend/README.md)** - React application +- **[Backend](https://github.com/All-Hands-AI/OpenHands/tree/main/openhands/README.md)** - Python core +- **[Agents](https://github.com/All-Hands-AI/OpenHands/tree/main/openhands/agenthub/README.md)** - AI agent implementations +- **[Runtime](https://github.com/All-Hands-AI/OpenHands/tree/main/openhands/runtime/README.md)** - Execution environments +- **[Evaluation](https://github.com/All-Hands-AI/OpenHands/tree/main/evaluation/README.md)** - Testing and benchmarks + +### Pull Request Process +We welcome all pull requests! Here's how we evaluate them: + +#### ๐Ÿƒโ€โ™‚๏ธ Small Improvements +- Quick review and approval for obvious improvements +- Make sure CI tests pass +- Include clear description of changes + +#### ๐Ÿง  Core Agent Changes +We're more careful with agent changes since they affect user experience: +- **Accuracy** - Does it make the agent better at solving problems? +- **Efficiency** - Does it improve speed or reduce resource usage? +- **Code Quality** - Is the code maintainable and well-tested? + +*Discuss major changes in [GitHub issues](https://github.com/All-Hands-AI/OpenHands/issues) or [Slack](https://dub.sh/openhands) first!* + +### Pull Request Guidelines +Follow these conventions for smooth reviews: + +**Title Format:** +- `feat: Add new agent capability` +- `fix: Resolve memory leak in runtime` +- `docs: Update installation guide` +- `style: Fix code formatting` +- `refactor: Simplify authentication logic` +- `test: Add unit tests for parser` + +**Description:** +- Explain what the PR does and why +- Link to related issues +- Include screenshots for UI changes +- Add changelog entry for user-facing changes + +## ๐Ÿค Community Guidelines + +### Our Values +- **Open and Welcoming** - Everyone is welcome regardless of background +- **Diverse and Inclusive** - We actively encourage diverse perspectives +- **Collaborative** - We work together to solve problems +- **Respectful** - We treat everyone with kindness and professionalism + +### Code of Conduct +We follow the [Contributor Covenant Code of Conduct](https://github.com/All-Hands-AI/OpenHands/blob/main/CODE_OF_CONDUCT.md). In summary: +- Be respectful and inclusive +- Focus on constructive feedback +- Help create a welcoming environment +- Report issues to [contact@all-hands.dev](mailto:contact@all-hands.dev) + +### Communication Guidelines +- **Be patient** - Contributors and maintainers often have other commitments +- **Be specific** - Include details, links, and context in your questions +- **Use appropriate channels** - General questions in #general, technical issues in relevant channels +- **Search first** - Check if your question has been answered before + +## ๐Ÿ“„ License + +OpenHands is released under the **MIT License**, which means: + +### โœ… You Can: +- **Use** OpenHands for any purpose, including commercial projects +- **Modify** the code to fit your needs +- **Distribute** copies of OpenHands +- **Sublicense** and sell copies + +### ๐Ÿ“‹ You Must: +- **Include** the original copyright notice and license text +- **Preserve** the license in any substantial portions you use + +### ๐Ÿšซ No Warranty: +- OpenHands is provided "as is" without warranty +- Contributors are not liable for any damages + +*Full license text: [LICENSE](https://github.com/All-Hands-AI/OpenHands/blob/main/LICENSE)* + +**Special Note:** Content in the `enterprise/` directory has a separate license. See `enterprise/LICENSE` for details. + +## ๐ŸŽฏ Next Steps + +Ready to make your first contribution? + +1. **โญ Star** our [GitHub repository](https://github.com/All-Hands-AI/OpenHands) +2. **๐Ÿ”ง Set up** your development environment using our [Development Guide](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) +3. **๐Ÿ’ฌ Join** our [Slack community](https://dub.sh/openhands) to meet other contributors +4. **๐ŸŽฏ Find** a [good first issue](https://github.com/All-Hands-AI/OpenHands/labels/good%20first%20issue) to work on +5. **๐Ÿ“ Read** our [Code of Conduct](https://github.com/All-Hands-AI/OpenHands/blob/main/CODE_OF_CONDUCT.md) + +## ๐Ÿ†˜ Need Help? + +Don't hesitate to ask for help: +- **Slack**: [Join our community](https://dub.sh/openhands) for real-time support +- **GitHub Issues**: [Open an issue](https://github.com/All-Hands-AI/OpenHands/issues) for bugs or feature requests +- **GitHub Discussions**: [Start a discussion](https://github.com/All-Hands-AI/OpenHands/discussions) for questions +- **Email**: Contact us at [contact@all-hands.dev](mailto:contact@all-hands.dev) + +--- + +**Thank you for considering contributing to OpenHands!** Together, we're building tools that will democratize AI-powered software development and make it accessible to developers everywhere. Every contribution, no matter how small, helps us move closer to that vision. + +Welcome to the community! ๐ŸŽ‰ \ No newline at end of file From f2368a6525375687bcf626687b2217086f137b3a Mon Sep 17 00:00:00 2001 From: Engel Nyst Date: Sat, 11 Oct 2025 07:35:06 +0200 Subject: [PATCH 2/8] Update openhands/usage/developers/contributing.mdx --- openhands/usage/developers/contributing.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openhands/usage/developers/contributing.mdx b/openhands/usage/developers/contributing.mdx index cdf86006..f7059192 100644 --- a/openhands/usage/developers/contributing.mdx +++ b/openhands/usage/developers/contributing.mdx @@ -168,8 +168,8 @@ OpenHands is released under the **MIT License**, which means: ### โœ… You Can: - **Use** OpenHands for any purpose, including commercial projects - **Modify** the code to fit your needs -- **Distribute** copies of OpenHands -- **Sublicense** and sell copies +- **Share** your modifications +- **Distribute** or sell copies of OpenHands ### ๐Ÿ“‹ You Must: - **Include** the original copyright notice and license text From 73990b740cada30a3ade4eae28f78657abd820b6 Mon Sep 17 00:00:00 2001 From: enyst Date: Sat, 11 Oct 2025 05:47:56 +0000 Subject: [PATCH 3/8] docs: add Development Guide page and link it in nav; update Contributing and other pages to point to docs site version of Development Guide - Add openhands/usage/developers/development-guide.mdx (migrated from OpenHands Development.md) - Insert Development Guide into OpenHands Developers navigation - Update links in Contributing and related docs to /openhands/usage/developers/development-guide Co-authored-by: openhands --- docs.json | 1 + .../usage/advanced/custom-sandbox-guide.mdx | 2 +- openhands/usage/developers/contributing.mdx | 4 +- .../usage/developers/development-guide.mdx | 209 ++++++++++++++++++ .../usage/developers/development-overview.mdx | 4 +- .../usage/developers/evaluation-harness.mdx | 2 +- openhands/usage/llms/local-llms.mdx | 2 +- .../usage/run-openhands/headless-mode.mdx | 2 +- openhands/usage/runtimes/local.mdx | 2 +- 9 files changed, 219 insertions(+), 9 deletions(-) create mode 100644 openhands/usage/developers/development-guide.mdx diff --git a/docs.json b/docs.json index 2dee0608..33f6fc48 100644 --- a/docs.json +++ b/docs.json @@ -157,6 +157,7 @@ "group": "OpenHands Developers", "pages": [ "openhands/usage/developers/development-overview", + "openhands/usage/developers/development-guide", "openhands/usage/developers/contributing", { "group": "Architecture", diff --git a/openhands/usage/advanced/custom-sandbox-guide.mdx b/openhands/usage/advanced/custom-sandbox-guide.mdx index 62481621..2cc5c0a4 100644 --- a/openhands/usage/advanced/custom-sandbox-guide.mdx +++ b/openhands/usage/advanced/custom-sandbox-guide.mdx @@ -60,7 +60,7 @@ docker run -it --rm --pull=always \ ### Setup -First, ensure you can run OpenHands by following the instructions in [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md). +First, ensure you can run OpenHands by following the instructions in our [Development Guide](/openhands/usage/developers/development-guide). ### Specify the Base Sandbox Image diff --git a/openhands/usage/developers/contributing.mdx b/openhands/usage/developers/contributing.mdx index f7059192..c7b456f9 100644 --- a/openhands/usage/developers/contributing.mdx +++ b/openhands/usage/developers/contributing.mdx @@ -83,7 +83,7 @@ Follow our comprehensive setup guide: - **Configuration**: `make setup-config` to configure your LLM - **Run locally**: `make run` to start the application -*Full details in our [Development Guide](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md)* +*Full details in our [Development Guide](/openhands/usage/developers/development-guide)* ### 3. ๐ŸŽฏ Find Your First Issue Look for beginner-friendly opportunities: @@ -188,7 +188,7 @@ OpenHands is released under the **MIT License**, which means: Ready to make your first contribution? 1. **โญ Star** our [GitHub repository](https://github.com/All-Hands-AI/OpenHands) -2. **๐Ÿ”ง Set up** your development environment using our [Development Guide](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) +2. **๐Ÿ”ง Set up** your development environment using our [Development Guide](/openhands/usage/developers/development-guide) 3. **๐Ÿ’ฌ Join** our [Slack community](https://dub.sh/openhands) to meet other contributors 4. **๐ŸŽฏ Find** a [good first issue](https://github.com/All-Hands-AI/OpenHands/labels/good%20first%20issue) to work on 5. **๐Ÿ“ Read** our [Code of Conduct](https://github.com/All-Hands-AI/OpenHands/blob/main/CODE_OF_CONDUCT.md) diff --git a/openhands/usage/developers/development-guide.mdx b/openhands/usage/developers/development-guide.mdx new file mode 100644 index 00000000..0484b64b --- /dev/null +++ b/openhands/usage/developers/development-guide.mdx @@ -0,0 +1,209 @@ +--- +title: Development Guide +description: Set up your development environment and run OpenHands locally. This is the canonical guide for contributors working on the OpenHands codebase. +--- + +# Development Guide + +This guide is for people working on OpenHands and editing the source code. +If you wish to contribute your changes, check out the +[CONTRIBUTING.md](https://github.com/All-Hands-AI/OpenHands/blob/main/CONTRIBUTING.md) +on how to clone and setup the project initially before moving on. Otherwise, +you can clone the OpenHands project directly. + +## Start the Server for Development + +### 1. Requirements + +- Linux, Mac OS, or [WSL on Windows](https://learn.microsoft.com/en-us/windows/wsl/install) [Ubuntu >= 22.04] +- [Docker](https://docs.docker.com/engine/install/) (For those on MacOS, make sure to allow the default Docker socket to be used from advanced settings!) +- [Python](https://www.python.org/downloads/) = 3.12 +- [NodeJS](https://nodejs.org/en/download/package-manager) >= 22.x +- [Poetry](https://python-poetry.org/docs/#installing-with-the-official-installer) >= 1.8 +- OS-specific dependencies: + - Ubuntu: build-essential => `sudo apt-get install build-essential python3.12-dev` + - WSL: netcat => `sudo apt-get install netcat` + +Make sure you have all these dependencies installed before moving on to `make build`. + +#### Dev container + +There is a [dev container](https://containers.dev/) available which provides a +pre-configured environment with all the necessary dependencies installed if you +are using a [supported editor or tool](https://containers.dev/supporting). For +example, if you are using Visual Studio Code (VS Code) with the +[Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) +extension installed, you can open the project in a dev container by using the +_Dev Container: Reopen in Container_ command from the Command Palette +(Ctrl+Shift+P). + +#### Develop without sudo access + +If you want to develop without system admin/sudo access to upgrade/install `Python` and/or `NodeJS`, you can use +`conda` or `mamba` to manage the packages for you: + +```bash +# Download and install Mamba (a faster version of conda) +curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" +bash Miniforge3-$(uname)-$(uname -m).sh + +# Install Python 3.12, nodejs, and poetry +mamba install python=3.12 +mamba install conda-forge::nodejs +mamba install conda-forge::poetry +``` + +### 2. Build and Setup The Environment + +Begin by building the project which includes setting up the environment and installing dependencies. This step ensures +that OpenHands is ready to run on your system: + +```bash +make build +``` + +### 3. Configuring the Language Model + +OpenHands supports a diverse array of Language Models (LMs) through the powerful [litellm](https://docs.litellm.ai) library. + +To configure the LM of your choice, run: + +```bash +make setup-config +``` + +This command will prompt you to enter the LLM API key, model name, and other variables ensuring that OpenHands is +tailored to your specific needs. Note that the model name will apply only when you run headless. If you use the UI, +please set the model in the UI. + +Note: If you have previously run OpenHands using the docker command, you may have already set some environment +variables in your terminal. The final configurations are set from highest to lowest priority: +Environment variables > config.toml variables > default variables + +**Note on Alternative Models:** +See our [LLM Configuration docs](/openhands/usage/llms/llms) for recommended models. + +### 4. Running the application + +#### Option A: Run the Full Application + +Once the setup is complete, this command starts both the backend and frontend servers, allowing you to interact with OpenHands: + +```bash +make run +``` + +#### Option B: Individual Server Startup + +- **Start the Backend Server:** If you prefer, you can start the backend server independently to focus on +backend-related tasks or configurations. + + ```bash + make start-backend + ``` + +- **Start the Frontend Server:** Similarly, you can start the frontend server on its own to work on frontend-related +components or interface enhancements. + ```bash + make start-frontend + ``` + +### 5. Running OpenHands with OpenHands + +You can use OpenHands to develop and improve OpenHands itself! This is a powerful way to leverage AI assistance for contributing to the project. + +#### Quick Start + +1. **Build and run OpenHands:** + ```bash + export INSTALL_DOCKER=0 + export RUNTIME=local + make build && make run + ``` + +2. **Access the interface:** + - Local development: http://localhost:3001 + - Remote/cloud environments: Use the appropriate external URL + +3. **Configure for external access (if needed):** + ```bash + # For external access (e.g., cloud environments) + make run FRONTEND_PORT=12000 FRONTEND_HOST=0.0.0.0 BACKEND_HOST=0.0.0.0 + ``` + +### 6. LLM Debugging + +If you encounter any issues with the Language Model (LM) or you're simply curious, export DEBUG=1 in the environment and restart the backend. +OpenHands will log the prompts and responses in the logs/llm/CURRENT_DATE directory, allowing you to identify the causes. + +### 7. Help + +Need help or info on available targets and commands? Use the help command for all the guidance you need with OpenHands. + +```bash +make help +``` + +### 8. Testing + +To run tests, refer to the following: + +#### Unit tests + +```bash +poetry run pytest ./tests/unit/test_*.py +``` + +### 9. Add or update dependency + +1. Add your dependency in `pyproject.toml` or use `poetry add xxx`. +2. Update the poetry.lock file via `poetry lock --no-update`. + +### 10. Use existing Docker image + +To reduce build time (e.g., if no changes were made to the client-runtime component), you can use an existing Docker +container image by setting the SANDBOX_RUNTIME_CONTAINER_IMAGE environment variable to the desired Docker image. + +Example: `export SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/all-hands-ai/runtime:0.59-nikolaik` + +## Develop inside Docker container + +TL;DR + +```bash +make docker-dev +``` + +See more details [here](https://github.com/All-Hands-AI/OpenHands/blob/main/containers/dev/README.md). + +If you are just interested in running `OpenHands` without installing all the required tools on your host. + +```bash +make docker-run +``` + +If you do not have `make` on your host, run: + +```bash +cd ./containers/dev +./dev.sh +``` + +You do need [Docker](https://docs.docker.com/engine/install/) installed on your host though. + +## Key Documentation Resources + +Here's a guide to the important documentation files in the repository: + +- [/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/README.md): Main project overview, features, and basic setup instructions +- [/Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) (this file): Comprehensive guide for developers working on OpenHands +- [/CONTRIBUTING.md](https://github.com/All-Hands-AI/OpenHands/blob/main/CONTRIBUTING.md): Guidelines for contributing to the project, including code style and PR process +- [/docs/DOC_STYLE_GUIDE.md](https://github.com/All-Hands-AI/OpenHands/blob/main/docs/DOC_STYLE_GUIDE.md): Standards for writing and maintaining project documentation +- [/openhands/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/README.md): Details about the backend Python implementation +- [/frontend/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/frontend/README.md): Frontend React application setup and development guide +- [/containers/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/containers/README.md): Information about Docker containers and deployment +- [/tests/unit/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/tests/unit/README.md): Guide to writing and running unit tests +- [/evaluation/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/evaluation/README.md): Documentation for the evaluation framework and benchmarks +- [/microagents/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/microagents/README.md): Information about the microagents architecture and implementation +- [/openhands/server/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/server/README.md): Server implementation details and API documentation +- [/openhands/runtime/README.md](https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/runtime/README.md): Documentation for the runtime environment and execution model diff --git a/openhands/usage/developers/development-overview.mdx b/openhands/usage/developers/development-overview.mdx index dbd7a5a5..dc57694a 100644 --- a/openhands/usage/developers/development-overview.mdx +++ b/openhands/usage/developers/development-overview.mdx @@ -9,7 +9,7 @@ description: This guide provides an overview of the key documentation resources - **Main Project Overview** (`/README.md`) The primary entry point for understanding OpenHands, including features and basic setup instructions. -- **Development Guide** (`/Development.md`) +- **Development Guide** ([/openhands/usage/developers/development-guide](/openhands/usage/developers/development-guide)) Comprehensive guide for developers working on OpenHands, including setup, requirements, and development workflows. - **Contributing Guidelines** (`/CONTRIBUTING.md`) @@ -56,7 +56,7 @@ If you're new to developing with OpenHands, we recommend following this sequence 1. Start with the main `README.md` to understand the project's purpose and features 2. Review the `CONTRIBUTING.md` guidelines if you plan to contribute -3. Follow the setup instructions in `Development.md` +3. Follow the setup instructions in the [Development Guide](/openhands/usage/developers/development-guide) 4. Dive into specific component documentation based on your area of interest: - Frontend developers should focus on `/frontend/README.md` - Backend developers should start with `/openhands/README.md` diff --git a/openhands/usage/developers/evaluation-harness.mdx b/openhands/usage/developers/evaluation-harness.mdx index 474a2b57..ca4bb5bb 100644 --- a/openhands/usage/developers/evaluation-harness.mdx +++ b/openhands/usage/developers/evaluation-harness.mdx @@ -6,7 +6,7 @@ This guide provides an overview of how to integrate your own evaluation benchmar ## Setup Environment and LLM Configuration -Please follow instructions [here](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) to setup your local development environment. +Please follow instructions in our [Development Guide](/openhands/usage/developers/development-guide) to set up your local development environment. OpenHands in development mode uses `config.toml` to keep track of most configurations. Here's an example configuration file you can use to define and use multiple LLMs: diff --git a/openhands/usage/llms/local-llms.mdx b/openhands/usage/llms/local-llms.mdx index 7404158d..a78f0519 100644 --- a/openhands/usage/llms/local-llms.mdx +++ b/openhands/usage/llms/local-llms.mdx @@ -204,7 +204,7 @@ Run OpenHands using [the official docker run command](/openhands/usage/run-openh #### Using Development Mode -Use the instructions in [Development.md](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md) to build OpenHands. +Use the instructions in our [Development Guide](/openhands/usage/developers/development-guide) to build OpenHands. Start OpenHands using `make run`. diff --git a/openhands/usage/run-openhands/headless-mode.mdx b/openhands/usage/run-openhands/headless-mode.mdx index 22a4ad24..9fcd2826 100644 --- a/openhands/usage/run-openhands/headless-mode.mdx +++ b/openhands/usage/run-openhands/headless-mode.mdx @@ -9,7 +9,7 @@ This is different from [the CLI](/openhands/usage/run-openhands/cli-mode), which ## With Python To run OpenHands in headless mode with Python: -1. Ensure you have followed the [Development setup instructions](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md). +1. Ensure you have followed the [Development setup instructions](/openhands/usage/developers/development-guide). 2. Run the following command: ```bash poetry run python -m openhands.core.main -t "write a bash script that prints hi" diff --git a/openhands/usage/runtimes/local.mdx b/openhands/usage/runtimes/local.mdx index 9dc32055..51aeca79 100644 --- a/openhands/usage/runtimes/local.mdx +++ b/openhands/usage/runtimes/local.mdx @@ -14,7 +14,7 @@ files on your machine. Only use this runtime in controlled environments or when Before using the Local Runtime, ensure that: -1. You can run OpenHands using the [Development workflow](https://github.com/All-Hands-AI/OpenHands/blob/main/Development.md). +1. You can run OpenHands using the [Development workflow](/openhands/usage/developers/development-guide). 2. For Linux and Mac, tmux is available on your system. 3. For Windows, PowerShell is available on your system. - Only [CLI mode](/openhands/usage/run-openhands/cli-mode) and [headless mode](/openhands/usage/run-openhands/headless-mode) are supported in Windows with Local Runtime. From 0336e9eb033a74b20ca4b4296667a08b41e663e2 Mon Sep 17 00:00:00 2001 From: Engel Nyst Date: Sun, 12 Oct 2025 09:35:00 +0200 Subject: [PATCH 4/8] Update openhands/usage/developers/development-overview.mdx --- openhands/usage/developers/development-overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openhands/usage/developers/development-overview.mdx b/openhands/usage/developers/development-overview.mdx index dc57694a..c4ad53f8 100644 --- a/openhands/usage/developers/development-overview.mdx +++ b/openhands/usage/developers/development-overview.mdx @@ -9,7 +9,7 @@ description: This guide provides an overview of the key documentation resources - **Main Project Overview** (`/README.md`) The primary entry point for understanding OpenHands, including features and basic setup instructions. -- **Development Guide** ([/openhands/usage/developers/development-guide](/openhands/usage/developers/development-guide)) +- **Development Guide** (`/Development.md`) Comprehensive guide for developers working on OpenHands, including setup, requirements, and development workflows. - **Contributing Guidelines** (`/CONTRIBUTING.md`) From bc1d067442c7b35de64f831a138726efa21f4b8b Mon Sep 17 00:00:00 2001 From: Engel Nyst Date: Sun, 12 Oct 2025 09:39:17 +0200 Subject: [PATCH 5/8] Update openhands/usage/developers/contributing.mdx --- openhands/usage/developers/contributing.mdx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/openhands/usage/developers/contributing.mdx b/openhands/usage/developers/contributing.mdx index c7b456f9..bd3d45c3 100644 --- a/openhands/usage/developers/contributing.mdx +++ b/openhands/usage/developers/contributing.mdx @@ -1,11 +1,7 @@ --- title: Contributing to OpenHands -description: Join us in building the future of AI-powered software development. Learn how to contribute to OpenHands and make a meaningful impact. ---- - -# ๐Ÿ™Œ Contributing to OpenHands - Welcome to the OpenHands community! We're building the future of AI-powered software development, and we'd love for you to be part of this journey. +--- ## ๐ŸŒŸ Our Vision: Free as in Freedom From 6b18f1fcc9fed0d48677db4f93a535be0cf07018 Mon Sep 17 00:00:00 2001 From: enyst Date: Sun, 12 Oct 2025 07:44:24 +0000 Subject: [PATCH 6/8] fix(docs): valid YAML front matter in contributing.mdx to restore Mintlify deploy - Move accidental paragraph out of frontmatter block - Keep the new version content, no reverts Co-authored-by: openhands --- openhands/usage/developers/contributing.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openhands/usage/developers/contributing.mdx b/openhands/usage/developers/contributing.mdx index bd3d45c3..cde50003 100644 --- a/openhands/usage/developers/contributing.mdx +++ b/openhands/usage/developers/contributing.mdx @@ -1,6 +1,6 @@ --- title: Contributing to OpenHands -Welcome to the OpenHands community! We're building the future of AI-powered software development, and we'd love for you to be part of this journey. +description: Join us in building the future of AI-powered software development. Learn how to contribute to OpenHands and make a meaningful impact. --- ## ๐ŸŒŸ Our Vision: Free as in Freedom From 0f3b0c6de76d79ad99cad383c0e9cfbde5a79f02 Mon Sep 17 00:00:00 2001 From: enyst Date: Sun, 12 Oct 2025 09:01:13 +0000 Subject: [PATCH 7/8] docs(contributing): update frontmatter description text per request\n\n- Set description to requested welcome sentence (quoted)\n- Keep the new version layout intact\n\nCo-authored-by: openhands --- openhands/usage/developers/contributing.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openhands/usage/developers/contributing.mdx b/openhands/usage/developers/contributing.mdx index cde50003..c610402e 100644 --- a/openhands/usage/developers/contributing.mdx +++ b/openhands/usage/developers/contributing.mdx @@ -1,6 +1,6 @@ --- title: Contributing to OpenHands -description: Join us in building the future of AI-powered software development. Learn how to contribute to OpenHands and make a meaningful impact. +description: "Welcome to the OpenHands community! We're building the future of AI-powered software development, and we'd love for you to be part of this journey." --- ## ๐ŸŒŸ Our Vision: Free as in Freedom From c23d510d16f8b35ae31d3b1603ff8aa4aef78d17 Mon Sep 17 00:00:00 2001 From: enyst Date: Sun, 12 Oct 2025 09:48:22 +0000 Subject: [PATCH 8/8] docs: reorder OpenHands Developers nav (Contributing first) and remove icons from section titles\n\n- Move Contributing before Development Overview\n- Strip emojis from headings and normalize levels\n\nCo-authored-by: openhands --- docs.json | 2 +- openhands/usage/developers/contributing.mdx | 46 ++++++++++----------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs.json b/docs.json index 33f6fc48..7c590547 100644 --- a/docs.json +++ b/docs.json @@ -156,9 +156,9 @@ { "group": "OpenHands Developers", "pages": [ + "openhands/usage/developers/contributing", "openhands/usage/developers/development-overview", "openhands/usage/developers/development-guide", - "openhands/usage/developers/contributing", { "group": "Architecture", "pages": [ diff --git a/openhands/usage/developers/contributing.mdx b/openhands/usage/developers/contributing.mdx index c610402e..938cc45d 100644 --- a/openhands/usage/developers/contributing.mdx +++ b/openhands/usage/developers/contributing.mdx @@ -3,7 +3,7 @@ title: Contributing to OpenHands description: "Welcome to the OpenHands community! We're building the future of AI-powered software development, and we'd love for you to be part of this journey." --- -## ๐ŸŒŸ Our Vision: Free as in Freedom +## Our Vision: Free as in Freedom The OpenHands community is built around the belief that **AI and AI agents are going to fundamentally change the way we build software**, and if this is true, we should do everything we can to make sure that the benefits provided by such powerful technology are **accessible to everyone**. @@ -11,11 +11,11 @@ We believe in the power of open source to democratize access to cutting-edge AI If this resonates with you, we'd love to have you join us in our quest! ๐Ÿš€ -## ๐ŸŽฏ What Can You Build? +## What Can You Build? There are countless ways to contribute to OpenHands. Whether you're a seasoned developer, a researcher, a designer, or someone just getting started, there's a place for you in our community. -### ๐ŸŽจ Frontend & UI/UX +### Frontend & UI/UX Make OpenHands more beautiful and user-friendly: - **React & TypeScript Development** - Improve the web interface - **UI/UX Design** - Enhance user experience and accessibility @@ -24,7 +24,7 @@ Make OpenHands more beautiful and user-friendly: *Small fixes are always welcome! For bigger changes, join our **#eng-ui-ux** channel in [Slack](https://dub.sh/openhands) first.* -### ๐Ÿค– Agent Development +### Agent Development Help make our AI agents smarter and more capable: - **Prompt Engineering** - Improve how agents understand and respond - **New Agent Types** - Create specialized agents for different tasks @@ -33,46 +33,46 @@ Help make our AI agents smarter and more capable: *We use [SWE-bench](https://www.swebench.com/) to evaluate our agents. Join **#evaluation** in [Slack](https://dub.sh/openhands) to learn more.* -### โš™๏ธ Backend & Infrastructure +### Backend & Infrastructure Build the foundation that powers OpenHands: - **Python Development** - Core functionality and APIs - **Runtime Systems** - Docker containers and sandboxes - **Cloud Integrations** - Support for different cloud providers - **Performance Optimization** - Make everything faster and more efficient -### ๐Ÿงช Testing & Quality Assurance +### Testing & Quality Assurance Help us maintain high quality: - **Unit Testing** - Write tests for new features - **Integration Testing** - Ensure components work together - **Bug Hunting** - Find and report issues - **Performance Testing** - Identify bottlenecks and optimization opportunities -### ๐Ÿ“š Documentation & Education +### Documentation & Education Help others learn and contribute: - **Technical Documentation** - API docs, guides, and tutorials - **Video Tutorials** - Create learning content - **Translation** - Make OpenHands accessible in more languages - **Community Support** - Help other users and contributors -### ๐Ÿ”ฌ Research & Innovation +### Research & Innovation Push the boundaries of what's possible: - **Academic Research** - Publish papers using OpenHands - **Benchmarking** - Develop new evaluation methods - **Experimental Features** - Try cutting-edge AI techniques - **Data Analysis** - Study how developers use AI tools -## ๐Ÿš€ Getting Started +## Getting Started Ready to contribute? Here's your path to making an impact: -### 1. ๐Ÿƒโ€โ™‚๏ธ Quick Wins +### 1. Quick Wins Start with these easy contributions: - **Use OpenHands** and [report issues](https://github.com/All-Hands-AI/OpenHands/issues) you encounter - **Give feedback** using the thumbs-up/thumbs-down buttons after each session - **Star our repository** on [GitHub](https://github.com/All-Hands-AI/OpenHands) - **Share OpenHands** with other developers -### 2. ๐Ÿ”ง Set Up Your Development Environment +### 2. Set Up Your Development Environment Follow our comprehensive setup guide: - **Requirements**: Linux/Mac/WSL, Docker, Python 3.12, Node.js 22+, Poetry 1.8+ - **Quick setup**: `make build` to get everything ready @@ -81,19 +81,19 @@ Follow our comprehensive setup guide: *Full details in our [Development Guide](/openhands/usage/developers/development-guide)* -### 3. ๐ŸŽฏ Find Your First Issue +### 3. Find Your First Issue Look for beginner-friendly opportunities: - Browse [good first issues](https://github.com/All-Hands-AI/OpenHands/labels/good%20first%20issue) - Check our [project boards](https://github.com/All-Hands-AI/OpenHands/projects) for organized tasks - Ask in [Slack](https://dub.sh/openhands) what needs help -### 4. ๐Ÿค Join the Community +### 4. Join the Community Connect with other contributors: - **[Slack Community](https://dub.sh/openhands)** - Real-time chat with developers and maintainers - **[Discord](https://discord.gg/ESHStjSjD4)** - Alternative community platform - **[GitHub Discussions](https://github.com/All-Hands-AI/OpenHands/discussions)** - Longer-form conversations -## ๐Ÿ“‹ How to Contribute Code +## How to Contribute Code ### Understanding the Codebase Get familiar with our architecture: @@ -106,12 +106,12 @@ Get familiar with our architecture: ### Pull Request Process We welcome all pull requests! Here's how we evaluate them: -#### ๐Ÿƒโ€โ™‚๏ธ Small Improvements +#### Small Improvements - Quick review and approval for obvious improvements - Make sure CI tests pass - Include clear description of changes -#### ๐Ÿง  Core Agent Changes +#### Core Agent Changes We're more careful with agent changes since they affect user experience: - **Accuracy** - Does it make the agent better at solving problems? - **Efficiency** - Does it improve speed or reduce resource usage? @@ -136,7 +136,7 @@ Follow these conventions for smooth reviews: - Include screenshots for UI changes - Add changelog entry for user-facing changes -## ๐Ÿค Community Guidelines +## Community Guidelines ### Our Values - **Open and Welcoming** - Everyone is welcome regardless of background @@ -157,21 +157,21 @@ We follow the [Contributor Covenant Code of Conduct](https://github.com/All-Hand - **Use appropriate channels** - General questions in #general, technical issues in relevant channels - **Search first** - Check if your question has been answered before -## ๐Ÿ“„ License +## License OpenHands is released under the **MIT License**, which means: -### โœ… You Can: +### You Can: - **Use** OpenHands for any purpose, including commercial projects - **Modify** the code to fit your needs - **Share** your modifications - **Distribute** or sell copies of OpenHands -### ๐Ÿ“‹ You Must: +### You Must: - **Include** the original copyright notice and license text - **Preserve** the license in any substantial portions you use -### ๐Ÿšซ No Warranty: +### No Warranty: - OpenHands is provided "as is" without warranty - Contributors are not liable for any damages @@ -179,7 +179,7 @@ OpenHands is released under the **MIT License**, which means: **Special Note:** Content in the `enterprise/` directory has a separate license. See `enterprise/LICENSE` for details. -## ๐ŸŽฏ Next Steps +## Next Steps Ready to make your first contribution? @@ -189,7 +189,7 @@ Ready to make your first contribution? 4. **๐ŸŽฏ Find** a [good first issue](https://github.com/All-Hands-AI/OpenHands/labels/good%20first%20issue) to work on 5. **๐Ÿ“ Read** our [Code of Conduct](https://github.com/All-Hands-AI/OpenHands/blob/main/CODE_OF_CONDUCT.md) -## ๐Ÿ†˜ Need Help? +## Need Help? Don't hesitate to ask for help: - **Slack**: [Join our community](https://dub.sh/openhands) for real-time support