Skip to content
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

Create Documentation Site #73

Closed
jannikwinghart opened this issue Mar 20, 2024 · 3 comments · Fixed by #1372
Closed

Create Documentation Site #73

jannikwinghart opened this issue Mar 20, 2024 · 3 comments · Fixed by #1372
Labels
documentation Improvements or additions to documentation severity:medium Problems that affect many users

Comments

@jannikwinghart
Copy link
Contributor

Summary

The goal of this issue is to propose a first documentation concept to iterate on and start a discussion around this topic.

Motivation

As the Project grows it would be helpful to have a good documentation, especially for new contributors and users.
The documentation has to contain all neccessary information while still beeing easy to use and maintain.

Technical Design

TL;DR
Create a seperate repository "OpenDevin/OpenDevinDocs" for documentation, containing autogenerated code documentation and manually created parts (Overview, architecture, examples)

Generation and content
The documentation should at least contain the following contents:

  • High-level project overview
  • Installation instructions, How-To Guide, Examples
  • Architectural diagrams
  • API documentation
  • Generated code documentation

This means documentation will consist of two parts: An autogenerated code documentation Part which is generated by GitHub actions on every commit/PR and a part for which has to be maintained manually, but less frequently.

Versioning / Repository
The documentation should be stored in a seperate repository (e.g. OpenDevin/OpenDevinDocs)
This enables tracking documentation-related issues separately, keeping the main repository focused on development.
It would also be possible to implement the same branch concept as in the code repository by automatically creating a docs branch for each code branch.

Separation between Frontend and Backend
Pro seperation: Frontend and backend use very different technology stacks. A seperation allows it to use better suited tools for each part.
Con seperation: Frontend and Backend are part of the same project, so the documentation should also consider both parts for a better understanding of the project as a whole.
Proposal: Store frontend and backend docs in the same repository with a root-level separation (similar to the code repository). Then docs for frontend and backend can be generated separately and maybe can be tied together with an index site for navigation between both parts.

Tooling
For Backend: Use Sphinx due to its wide usage and extensive configurability.
For Frontend: TBD.

Documentation Format
HTML for best readability/design and compatibility for hosting on various platforms.

Hosting
Sphinx generates HTML files which can be hosted for example on GitHub Pages or readthedocs.

Alternatives to Consider

Additional Context

This page provides a good guideline on the content of a project documentation
https://coderefinery.github.io/documentation/wishlist/

@huybery huybery added the documentation Improvements or additions to documentation label Mar 21, 2024
@AbhisekOmkar
Copy link
Contributor

@huybery we can close this

@rbren rbren changed the title Concept for Project Documentation Create Documentation Site Mar 23, 2024
@rbren
Copy link
Collaborator

rbren commented Mar 23, 2024

We will definitely need a docs site at some point, so I think it makes sense to keep it open.

@jannikwinghart IMO we should keep the docs within this repo for now. It's much simpler to manage everything in one place. I could be convinced otherwise though.

@jannikwinghart
Copy link
Contributor Author

In my opinion the main constraints regarding docs generation and storage should be:

  • Don't flood the source repo with autogenerated docs html files (increases repo size, leads to many "irrelevant" changes in each PR, etc.)
  • Don't build the docs locally, build process has to happen in the CI-Pipeline (no time consuming pre-commit hooks, don't introduce additional toolchain requirements for contributors)

In case we want to use github pages for hosting (or similar static html hosting sites), we would need to generate all html files and push them to a repo which then can be hosted.
In this case I would prefer to use a seperate repo to fulfill the constraints above.

The other option (which I also like after reading into it) is to not generate and store the html files on our end, but instead use a service like readthedocs for generation and hosting of the docs files. readthedocs builds and stores the html files on their servers completely, so our repo would only contain the documentation "source" files (sphinx rst, etc.), and no autogenerated html files.
At least for the python part this would be a clean solution, even though I'm not quite sure yet if docs for the tsx/frontend part can be integrated easily.
Possible downside on this option is that the docs build process (and possible errors) is not visible for everybody, only for the readthedocs project maintainers (unlike github actions).

@rbren rbren added the severity:medium Problems that affect many users label Apr 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation severity:medium Problems that affect many users
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants