versatile-data-kit icon indicating copy to clipboard operation
versatile-data-kit copied to clipboard

Python VDK Interface Web Documentation

Open antoniivanov opened this issue 4 years ago • 0 comments

What is the feature request? What problem does it solve? Our Python interfaces are described in the classes of vdk API https://github.com/vmware/versatile-data-kit/blob/main/projects/vdk-core/src/vdk/api/ But that's not very easy to navigate and read by end-users. It's also non obvious. Proper documentation should be found in a web page something similar to

  • https://docs.python-requests.org/en/latest/api/
  • https://pandas.pydata.org/docs/reference/frame.html
  • https://docs.pytest.org/en/latest/reference/reference.html

Only those under vdk.API or imported in vdk.api (e.g. vdk.core.context) needs to be documented.

Suggested solution pydoc or sphinx + github pages (e.g https://www.docslikecode.com/articles/github-pages-python-sphinx/)

vmware.github.io can be used as landing page These are static HTML pages that are served by GitHub from the "gh-pages" branch in each repository. Simply create a file "index.html" in that branch and it will be displayed on http://vmware.github.io// . GitHub Manager provides VMware branded HTML templates that can be used.

https://github.com/vmware/lightwave/tree/gh-pages

https://github.com/vmware/photon/tree/gh-pages

Additional context

This is also needed to meet best practice of https://bestpractices.coreinfrastructure.org/en/projects/5363

The project MUST provide reference documentation that describes the external interface (both input and output) of the software produced by the project. [documentation_interface] The documentation of an external interface explains to an end-user or developer how to use it. This would include its application program interface (API) if the software has one. If it is a library, document the major classes/types and methods/functions that can be called. If it is a web application, define its URL interface (often its REST interface). If it is a command-line interface, document the parameters and options it supports. In many cases it's best if most of this documentation is automatically generated, so that this documentation stays synchronized with the software as it changes, but this isn't required. The project MAY use hypertext links to non-project material as documentation. Documentation MAY be automatically generated (where practical this is often the best way to do so). Documentation of a REST interface may be generated using Swagger/OpenAPI. Code interface documentation MAY be generated using tools such as JSDoc (JavaScript), ESDoc (JavaScript), pydoc (Python), devtools (R), pkgdown (R), and Doxygen (many). Merely having comments in the implementation code is not sufficient to satisfy this criterion; there needs to be an easy way to see the information without reading through all the source code. If the project does not produce software, choose "not applicable" (N/A).

It is arguable as our interfaces are generally separated in vdk.api. so maybe we fix the criteria narrowly. Still, UX would be better if we have Web page in any case.

antoniivanov avatar Nov 10 '21 17:11 antoniivanov