-
Notifications
You must be signed in to change notification settings - Fork 4.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enhance on-boarding documentation & workflow for new users #5878
Comments
You are absolutely correct, and thank you for drafting / re-drafting some of this! A note on this too:
There's an attempt somewhere to document this... The point here is: almost all settings that are in toml are also exposed as environment variables. So you can achieve almost anything by using only env, if you want. All of them are uppercase as environment vars. The
as The reason for "almost" is just that some features are too complex and not just a variable with a defined meaning, and those aren't exposed in env. In particular, it is possible for the user to define sub-sections, and those user-defined sections are not available in the env. But the system vars are. |
Re: mounting I'm not sure why we don't seem to have |
Hey @enyst thanks for confirming the availability of env variables. I think the lack of visibility on this is the main reason many people are trying to deploy using I think the goal should be that anyone who is only using OpenHands should only ever use the Docker deployment mode. Most people need just to set a persistent storage volume and a JWT secret and add an instruction file to their project. Then, some people will want to use a custom LLM provider or a custom sandbox (to install requirements.txt, for example). This is all fine for Web UI but there should also be some way to have Openhands start in CLI mode or headless mode in the docker container, then the user just SSHs into the container to access. This would mean only people who truly intend to develop the Openhands app need to deploy locally. This would greatly simplify using Openhands and avoid non-dev users trying to do build steps and mess around with Makefiles, etc. Anyway that's the vision :-) |
That may have been the reason why it's not on the docs site, but it seems a bit confusing atm because we do have the Debugging page there, which assumes Development.md. 😅 I think running CLI and/or headless is possible with the docker app. Something like this https://docs.all-hands.dev/modules/usage/how-to/cli-mode#with-docker I really appreciate you taking a look at this! I think you're entirely correct that getting to know the project recently gives you a unique perspective we don't have, and won't realize what we don't have. 😅 |
Cool, happy to help. Let me checkout the env variables and the Docker deployment for CLI and headless and see if I can get all the main use cases running and documented. |
@enyst - just setup my fork and looking at the docs. There is some overlap between the official website docs and the documentation files scattered through the code but its not completely 1:1. Is there a structure or method in what is in which place and what is the source of truth if they diverge? Is there a way you keep them in sync? Just trying to understand your practice so I can align with it and put things in the right place. |
The docs on the website are deployed from this repo, /docs/modules folder. Other than that, I don't have good answers, I'm afraid. I'd say the docs on the site are maintained well, compared to other info through the code, it's more likely that some readme is outdated, since it's less visible/used. There can be exceptions. The code itself is the source of truth. 😅 So I guess I'd suggest website first, but please, feel free to choose and ask for any detail you may want? |
Hey @autonomousit , thanks so much for this! IMO, ideally the documentation site should be good enough for OpenHands users to understand how to do everything. @mamoodi might also have comments. |
Thanks @enyst & @neubig - I just setup the docs dev environment using |
Thanks so much for this. Things I would add:
|
Thanks for the extra context @mamoodi . I agree regarding sticking to the absolute minimum for Installation and Getting Started but I do think there are some customisations that need to be added here to prevent users getting stuck.
I've attached a draft for the Installation section (had to convert from .mdx to .md to share here). I have tried to assume very little knowledge from the User for this document and focus on the case where someone is just trying to use OpenHands, not develop it. I only focus on a Docker deployment and Web UI access mode. Other access modes and the developer workflow can be addressed in the dedicated sections. I also wanted to ask about the prerequisites- it says Windows users need to use WSL. If deploying via Docker that shouldn't be needed, this should only impact deploying locally from source, correct? Let me know what you think about the approach and my general style, etc. Feedback on improvements or changes would be very helpful so I get a feeling for how you want this to look and feel. Just an FYI, if I follow these instructions I get the app deployed however it always times out when waiting for the client to start, on both 0.16 and 0.17 so there's still something unstable about this I need to work out. It would also be helpful if you could setup a branch for this. I can then do PRs to that branch for you to review progress and give feedback instead of manually passing files here. I think this will be bigger than a simple chamge and PR and will require multiple rounds of feedback until I get it the way you want. |
You are welcome to open a PR, @autonomousit , you don't need us with a different branch for that, a PR to |
Thanks @enyst just wasn't sure about your preferences regarding PRs to |
What problem or use case are you trying to solve?
The current on-boarding process is split across multiple documentation sections and many of the default steps or instructions lead to unstable states. This is to be expected as a project grows and many new features are added but it would be helpful to re-assess this and try to streamline the process for new users to get started. This can be difficult for the maintainers to do as they have a lot of implicit knowledge that new users don't have and their dev environments may contain undocumented state that makes it hard for them to replicate the issues faced by new users. It also leads to unnecessary support workload for the maintainers as people try to get setup.
As someone with Python dev experience but unfamiliar with the project I'd like to volunteer to draft some enhanced documentation based on my own experience on getting started and
Describe the UX of the solution you'd like
There should be a clear Getting Started path that leads to a stable deployment and helps the user make key decisions based on the use case they have. There should also be clear migration or switching paths to change between different deployment methods without resulting in bad states. This is especially true of
Development.md
because many non-dev users may find themselves trying to implement this to access something like CLI mode.Do you have thoughts on the technical implementation?
Some examples of things that I have come across in my own efforts to get things running the way I want:
Development.md
requirements setup is quite sparse and leads to errors (see [Bug]: pylcs wheel fails to install when running make build #5793 as an example). It requirespython3.12-dev
not justpython3.12
and both Poetry (via pipx) and NPM (via nvm) have some very specific installation requirements that are not covered.config.toml
which can't be accessed when deploying via the docker image. There seems to be some undocumented environment variables that can be used for this (see the French and Chinese versions oftroubleshooting.md
on the0.16.1
tag). It would be good to document any such environment variables that can be used to manipulate the docker deployment to achieve a similar running state as when usingconfig.toml
and Development mode./.openhands
in 0.16.1 to/.openhands-state
in 0.17. There are some references to mounting these paths withdocker run -v
but they aren't explained and are poorly documented as to why you would do this. It also assumes the local path exists and if it isn't docker just fails to mount it silently without any errors which gives the impression that the volume has been mounted when it hasn't. This wouldn't be obvious to less experienced users.Describe alternatives you've considered
Additional context
As a research architect for a tech company I have Python development experience as well as experience with LLMs, common tools like langchain, etc and other AI methods and technologies. As a new user to the project I think I have a good perspective on the on-boarding process and can help improve it in a way that might be difficult for the more experienced maintainers who have a lot of implicit knowledge of the project.
The text was updated successfully, but these errors were encountered: