mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-03-17 13:22:42 +01:00
Improve contributing guide (#3625)
* Improve contributing guide * more improvements to contributing guide
This commit is contained in:
parent
a314a08309
commit
fafad5e119
15
.vscode/launch.template.jsonc
vendored
15
.vscode/launch.template.jsonc
vendored
@ -355,5 +355,20 @@
|
|||||||
"PYTHONPATH": "."
|
"PYTHONPATH": "."
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Install Python Requirements",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeExecutable": "bash",
|
||||||
|
"runtimeArgs": [
|
||||||
|
"-c",
|
||||||
|
"pip install -r backend/requirements/default.txt && pip install -r backend/requirements/dev.txt && pip install -r backend/requirements/ee.txt && pip install -r backend/requirements/model_server.txt"
|
||||||
|
],
|
||||||
|
"cwd": "${workspaceFolder}",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"presentation": {
|
||||||
|
"group": "3"
|
||||||
|
}
|
||||||
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,10 @@ As an open source project in a rapidly changing space, we welcome all contributi
|
|||||||
|
|
||||||
The [GitHub Issues](https://github.com/onyx-dot-app/onyx/issues) page is a great place to start for contribution ideas.
|
The [GitHub Issues](https://github.com/onyx-dot-app/onyx/issues) page is a great place to start for contribution ideas.
|
||||||
|
|
||||||
|
To ensure that your contribution is aligned with the project's direction, please reach out to Hagen (or any other maintainer) on the Onyx team
|
||||||
|
via [Slack](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA) /
|
||||||
|
[Discord](https://discord.gg/TDJ59cGV2X) or [email](mailto:founders@onyx.app).
|
||||||
|
|
||||||
Issues that have been explicitly approved by the maintainers (aligned with the direction of the project)
|
Issues that have been explicitly approved by the maintainers (aligned with the direction of the project)
|
||||||
will be marked with the `approved by maintainers` label.
|
will be marked with the `approved by maintainers` label.
|
||||||
Issues marked `good first issue` are an especially great place to start.
|
Issues marked `good first issue` are an especially great place to start.
|
||||||
@ -23,8 +27,8 @@ If you have a new/different contribution in mind, we'd love to hear about it!
|
|||||||
Your input is vital to making sure that Onyx moves in the right direction.
|
Your input is vital to making sure that Onyx moves in the right direction.
|
||||||
Before starting on implementation, please raise a GitHub issue.
|
Before starting on implementation, please raise a GitHub issue.
|
||||||
|
|
||||||
And always feel free to message us (Chris Weaver / Yuhong Sun) on
|
Also, always feel free to message the founders (Chris Weaver / Yuhong Sun) on
|
||||||
[Slack](https://join.slack.com/t/danswer/shared_invite/zt-1w76msxmd-HJHLe3KNFIAIzk_0dSOKaQ) /
|
[Slack](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA) /
|
||||||
[Discord](https://discord.gg/TDJ59cGV2X) directly about anything at all.
|
[Discord](https://discord.gg/TDJ59cGV2X) directly about anything at all.
|
||||||
|
|
||||||
### Contributing Code
|
### Contributing Code
|
||||||
@ -42,7 +46,7 @@ Our goal is to make contributing as easy as possible. If you run into any issues
|
|||||||
That way we can help future contributors and users can avoid the same issue.
|
That way we can help future contributors and users can avoid the same issue.
|
||||||
|
|
||||||
We also have support channels and generally interesting discussions on our
|
We also have support channels and generally interesting discussions on our
|
||||||
[Slack](https://join.slack.com/t/danswer/shared_invite/zt-1w76msxmd-HJHLe3KNFIAIzk_0dSOKaQ)
|
[Slack](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA)
|
||||||
and
|
and
|
||||||
[Discord](https://discord.gg/TDJ59cGV2X).
|
[Discord](https://discord.gg/TDJ59cGV2X).
|
||||||
|
|
||||||
@ -123,7 +127,47 @@ Once the above is done, navigate to `onyx/web` run:
|
|||||||
npm i
|
npm i
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Docker containers for external software
|
## Formatting and Linting
|
||||||
|
|
||||||
|
### Backend
|
||||||
|
|
||||||
|
For the backend, you'll need to setup pre-commit hooks (black / reorder-python-imports).
|
||||||
|
First, install pre-commit (if you don't have it already) following the instructions
|
||||||
|
[here](https://pre-commit.com/#installation).
|
||||||
|
|
||||||
|
With the virtual environment active, install the pre-commit library with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install pre-commit
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, from the `onyx/backend` directory, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pre-commit install
|
||||||
|
```
|
||||||
|
|
||||||
|
Additionally, we use `mypy` for static type checking.
|
||||||
|
Onyx is fully type-annotated, and we want to keep it that way!
|
||||||
|
To run the mypy checks manually, run `python -m mypy .` from the `onyx/backend` directory.
|
||||||
|
|
||||||
|
### Web
|
||||||
|
|
||||||
|
We use `prettier` for formatting. The desired version (2.8.8) will be installed via a `npm i` from the `onyx/web` directory.
|
||||||
|
To run the formatter, use `npx prettier --write .` from the `onyx/web` directory.
|
||||||
|
Please double check that prettier passes before creating a pull request.
|
||||||
|
|
||||||
|
# Running the application for development
|
||||||
|
|
||||||
|
## Developing using VSCode Debugger (recommended)
|
||||||
|
|
||||||
|
We highly recommend using VSCode debugger for development.
|
||||||
|
See [CONTRIBUTING_VSCODE.md](./CONTRIBUTING_VSCODE.md) for more details.
|
||||||
|
|
||||||
|
Otherwise, you can follow the instructions below to run the application for development.
|
||||||
|
|
||||||
|
## Manually running the application for development
|
||||||
|
### Docker containers for external software
|
||||||
|
|
||||||
You will need Docker installed to run these containers.
|
You will need Docker installed to run these containers.
|
||||||
|
|
||||||
@ -135,7 +179,7 @@ docker compose -f docker-compose.dev.yml -p onyx-stack up -d index relational_db
|
|||||||
|
|
||||||
(index refers to Vespa, relational_db refers to Postgres, and cache refers to Redis)
|
(index refers to Vespa, relational_db refers to Postgres, and cache refers to Redis)
|
||||||
|
|
||||||
#### Running Onyx locally
|
### Running Onyx locally
|
||||||
|
|
||||||
To start the frontend, navigate to `onyx/web` and run:
|
To start the frontend, navigate to `onyx/web` and run:
|
||||||
|
|
||||||
@ -223,35 +267,6 @@ If you want to make changes to Onyx and run those changes in Docker, you can als
|
|||||||
docker compose -f docker-compose.dev.yml -p onyx-stack up -d --build
|
docker compose -f docker-compose.dev.yml -p onyx-stack up -d --build
|
||||||
```
|
```
|
||||||
|
|
||||||
### Formatting and Linting
|
|
||||||
|
|
||||||
#### Backend
|
|
||||||
|
|
||||||
For the backend, you'll need to setup pre-commit hooks (black / reorder-python-imports).
|
|
||||||
First, install pre-commit (if you don't have it already) following the instructions
|
|
||||||
[here](https://pre-commit.com/#installation).
|
|
||||||
|
|
||||||
With the virtual environment active, install the pre-commit library with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install pre-commit
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, from the `onyx/backend` directory, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pre-commit install
|
|
||||||
```
|
|
||||||
|
|
||||||
Additionally, we use `mypy` for static type checking.
|
|
||||||
Onyx is fully type-annotated, and we want to keep it that way!
|
|
||||||
To run the mypy checks manually, run `python -m mypy .` from the `onyx/backend` directory.
|
|
||||||
|
|
||||||
#### Web
|
|
||||||
|
|
||||||
We use `prettier` for formatting. The desired version (2.8.8) will be installed via a `npm i` from the `onyx/web` directory.
|
|
||||||
To run the formatter, use `npx prettier --write .` from the `onyx/web` directory.
|
|
||||||
Please double check that prettier passes before creating a pull request.
|
|
||||||
|
|
||||||
### Release Process
|
### Release Process
|
||||||
|
|
||||||
|
27
CONTRIBUTING_VSCODE.md
Normal file
27
CONTRIBUTING_VSCODE.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# VSCode Debugging Setup
|
||||||
|
|
||||||
|
This guide explains how to set up and use VSCode's debugging capabilities with this project.
|
||||||
|
|
||||||
|
## Initial Setup
|
||||||
|
|
||||||
|
1. **Environment Setup**:
|
||||||
|
- Copy `.vscode/.env.template` to `.vscode/.env`
|
||||||
|
- Fill in the necessary environment variables in `.vscode/.env`
|
||||||
|
|
||||||
|
## Using the Debugger
|
||||||
|
|
||||||
|
Before starting, make sure the Docker Daemon is running.
|
||||||
|
|
||||||
|
1. Open the Debug view in VSCode (Cmd+Shift+D on macOS)
|
||||||
|
2. From the dropdown at the top, select "Clear and Restart External Volumes and Containers" and press the green play button
|
||||||
|
3. From the dropdown at the top, select "Run All Onyx Services" and press the green play button
|
||||||
|
4. Now, you can navigate to onyx in your browser (default is http://localhost:3000) and start using the app
|
||||||
|
5. You can set breakpoints by clicking to the left of line numbers to help debug while the app is running
|
||||||
|
6. Use the debug toolbar to step through code, inspect variables, etc.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Hot reload is enabled for the web server and API servers
|
||||||
|
- Python debugging is configured with debugpy
|
||||||
|
- Environment variables are loaded from `.vscode/.env`
|
||||||
|
- Console output is organized in the integrated terminal with labeled tabs
|
Loading…
x
Reference in New Issue
Block a user