mirror of
https://github.com/exo-explore/exo.git
synced 2025-12-23 22:27:50 -05:00
## Motivation Users need to know what **prerequisites** they need in order to run exo. Simple addition to docs prevents future raised issues. ## Changes Updated ``README.md``: - to include installation instructions for **[uv](https://github.com/astral-sh/uv)** and **[macmon](https://github.com/vladkens/macmon)**. Updated ``CONTRIBUTING.md``: - to verify these prerequisites are met before starting development. - Standardized on brew installation instructions for macOS users to keep the guide simple. ## Why It Works By listing these prerequisites upfront, users will set up their environment correctly before attempting to run exo. ## Test Plan ### Manual Testing MacBook Pro M4 - Verified that ``uv`` and ``macmon`` were missing initially, causing failures - after installing them via brew (as documented), uv run exo starts successfully. ### Automated Testing <!-- Describe changes to automated tests, or how existing tests cover this change --> <!-- - --> --------- Co-authored-by: Evan Quiney <evanev7@gmail.com>
66 lines
2.4 KiB
Markdown
66 lines
2.4 KiB
Markdown
# Contributing to EXO
|
|
|
|
Thank you for your interest in contributing to EXO!
|
|
|
|
## Getting Started
|
|
|
|
To run EXO from source:
|
|
|
|
**Prerequisites:**
|
|
- [uv](https://github.com/astral-sh/uv) (for Python dependency management)
|
|
```bash
|
|
brew install uv
|
|
```
|
|
- [macmon](https://github.com/vladkens/macmon) (for hardware monitoring on Apple Silicon)
|
|
```bash
|
|
brew install macmon
|
|
```
|
|
|
|
```bash
|
|
git clone https://github.com/exo-explore/exo.git
|
|
cd exo/dashboard
|
|
npm install && npm run build && cd ..
|
|
uv run exo
|
|
```
|
|
|
|
## Development
|
|
|
|
EXO is built with a mix of Rust, Python, and TypeScript (Svelte for the dashboard), and the codebase is actively evolving. Before starting work:
|
|
|
|
- Pull the latest source to ensure you're working with the most recent code
|
|
- Keep your changes focused - implement one feature or fix per pull request
|
|
- Avoid combining unrelated changes, even if they seem small
|
|
|
|
This makes reviews faster and helps us maintain code quality as the project evolves.
|
|
|
|
## Code Style
|
|
|
|
Write pure functions where possible. When adding new code, prefer Rust unless there's a good reason otherwise. Leverage the type systems available to you - Rust's type system, Python type hints, and TypeScript types. Comments should explain why you're doing something, not what the code does - especially for non-obvious decisions.
|
|
|
|
Run `nix fmt` to auto-format your code before submitting.
|
|
|
|
## Testing
|
|
|
|
EXO relies heavily on manual testing at this point in the project, but this is evolving. Before submitting a change, test both before and after to demonstrate how your change improves behavior. Do the best you can with the hardware you have available - if you need help testing, ask and we'll do our best to assist. Add automated tests where possible - we're actively working to substantially improve our automated testing story.
|
|
|
|
## Submitting Changes
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch (`git checkout -b feature/your-feature`)
|
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
4. Push to the branch (`git push origin feature/your-feature`)
|
|
5. Open a Pull Request and follow the PR template
|
|
|
|
## Reporting Issues
|
|
|
|
If you find a bug or have a feature request, please open an issue on GitHub with:
|
|
- A clear description of the problem or feature
|
|
- Steps to reproduce (for bugs)
|
|
- Expected vs actual behavior
|
|
- Your environment (macOS version, hardware, etc.)
|
|
|
|
## Questions?
|
|
|
|
Join our community:
|
|
- [X](https://x.com/exolabs)
|