dvc.org icon indicating copy to clipboard operation
dvc.org copied to clipboard

READMEs vs Docs

Open casperdcl opened this issue 3 years ago • 23 comments

From https://github.com/iterative/cml/pull/492#pullrequestreview-650736268

We need to decide on a clear scope of README files (and, ahem, cough, cough docs). Right now, https://dvc.org/doc/cml is just a mirror of https://github.com/iterative/cml meaning a lot of duplication - but there may be more things which need addressing too. Related: #2433.

UPDATE: See recent summary in https://github.com/iterative/dvc.org/issues/2443#issuecomment-1144410100.

My personal preference is:

  • features: https://PRODUCT.com/features (heavy on graphics, low on text. High level intro to solutions)
    • maybe just https://PRODUCT.com if there's no better content for the site root
  • docs: https://PRODUCT.com/doc
    • Use Cases (features elaborated. High level intro to problems)
    • Getting Started (beginner tutorials)
    • User Guide (advanced tutorials/how-tos)
    • Command/API Reference (man pages)
  • README (targeted at "power users"/devs)
    • status badges (related: our own badge #234)
    • installation methods
    • super short summary of (in order): Use Cases + Features (list/diagram), Getting Started (briefest possible tutorial), link to User Guide, link to Command/API Reference
    • links to related technologies
    • link to Contributing
    • link to Mailing List & forums
    • licen[c/s]e & citation

I think most agree that https://dvc.org/doc/cml should be a one page blurb containing links to cml.dev


  • [x] DVC readme #2433
  • [x] DVC badges #234
  • [ ] CML (readme, https://github.com/iterative/cml-website/issues/55, wiki) https://github.com/iterative/cml/issues/514
  • [x] TPI?
  • [x] DVCLive https://github.com/iterative/dvclive/issues/45
  • ~~DVC.org website #144~~
  • [ ] MLEM https://github.com/iterative/mlem/pull/220
  • [ ] GTO https://github.com/iterative/gto/pull/149
  • [ ] VSCode Extension https://github.com/iterative/vscode-dvc/pull/1816
  • LDB ...
  • Studio?

casperdcl avatar May 04 '21 17:05 casperdcl

LGTM! :)

shcheklein avatar May 04 '21 17:05 shcheklein

Great proposal! I have two questions:

* features: https://PRODUCT.com/features (heavy on graphics, low on text. High level intro to solutions)

What is the goal of the features page? It's been previously discussed that the existing dvc features page may not be that useful. Maybe we can take a look at the popularity of this page and decide whether the current format is useful.

* links to related technologies

Does this mean something like https://github.com/iterative/dvc#comparison-to-related-technologies, where there is a link to each related technology and a short explanation of how it relates? Does it mean a link to a docs page that explains how the product relates to other technologies?

I lean towards leaving this out of the README and having a separate doc comparing technologies (if needed) to keep the readme shorter and to allow for a more in-depth comparison elsewhere. Some examples:

  • https://spacy.io/usage/facts-figures#comparison
  • https://valohai.com/mlops-platforms-compared/

dberenbaum avatar May 04 '21 18:05 dberenbaum

What is the goal of the features page?

Anything which doesn't exclusively target devs (i.e. purely marketing material targeting managers, and possibly also devs)

Does this mean something like iterative/dvc#comparison-to-related-technologies

yes

a link to a docs page that explains how the product relates to other technologies?

That sounds like something for the bottom of the "features" page. Wouldn't necessarily mention it in the README.

casperdcl avatar May 04 '21 21:05 casperdcl

We can probably keep further discussion of the features and related technologies in separate tickets since there seems to be agreement that they don't belong in the readme, or at least should be as minimal as possible there.

dberenbaum avatar May 04 '21 23:05 dberenbaum

Great topic!

features: https://PRODUCT.com/features Use Cases (features elaborated. High level intro to problems) Use Cases + Features (list/diagram) Anything which (that 😋) doesn't exclusively target devs

We have been considering merging that with the Use Cases (currently inside docs but unclear whether they belong there), and instead have visual-oriented "features" right in the home page (which we already try to do in dvc.org/, see below).

image

Also the Get Started has an overview of DVC features...

But maybe we should further extract this part of the discussion? Rel. #144

docs: https://PRODUCT.com/doc

Minor: I would personally prefer /docs but lost that battle some time ago ⚔️

User Guide (advanced tutorials)

Another minor note: guides aren't really tutorials (not meant to be, at least), they're more of an explanation-type doc (ref) and sometimes have even deeper details than the references.


Agree about README contents in general 👍 (links may vary as needed)

https://dvc.org/doc/cml should be a one page blurb containing links to cml.dev

Wouldn't your proposal imply creating cml.dev/doc to put guides and refs in?

jorgeorpinel avatar May 05 '21 01:05 jorgeorpinel

We have been considering merging that with the Use Cases (currently inside docs but unclear whether they belong there), and instead have visual-oriented "features" right in the home page (which we already try to do in dvc.org/, see below).

Sure, I don't have strong opinions on /features versus /. If / has no real content then /features may as well be moved to it.

Also the Get Started has an overview of DVC features...

Yes, but only minimally as an augmented table of contents for its main purpose (i.e. getting started ToC rather than feature overview).

But maybe we should further extract this part of the discussion? Rel. #144

The main point of this issue is about what to put in READMEs. I only mention websites as tangential to prompt ideas. #144 is so longstanding I'm surprised that the tangential discussion here seems to be largely in agreement solving it :)

Minor: I would personally prefer /docs but lost that battle some time ago :crossed_swords:

I don't mind. Slight preference for shorter URLs.

User Guide (advanced tutorials) [...] aren't really [...] meant to be [tutorials ...] they're more of an explanation-type doc (ref) and sometimes have even deeper details than the references.

idk what the original plan was, but they look like what I call "advanced tutorials" to me at the moment. Based on the divio ref link, this would be currently labelled "How-Tos" rather than "Explanations." Also in terms of importance I'd say "How-To" is much more important to have than "Explanation," which may be why the original plan wasn't adhered to.

Wouldn't your proposal imply creating cml.dev/doc[s] to put guides and refs in?

Yup. Working on it.

casperdcl avatar May 05 '21 15:05 casperdcl

this would be currently labelled "How-Tos" rather than "Explanations."

We have a how-to section https://dvc.org/doc/user-guide/how-to/stop-tracking-data BTW

idk what the original plan was

There was no original plan, we're improving as we go. The current intention is that Guides contain explanations

in terms of importance I'd say "How-To" is much more important

Why? Interested in your fresh perspective

jorgeorpinel avatar May 06 '21 01:05 jorgeorpinel

in terms of importance I'd say "How-To" is much more important

Why? Interested in your fresh perspective

People are much more likely to first ask "How can I solve my problem?" (How-To) rather than "Thanks for solving my problem - how exactly did your solution work, btw?/I'm having an existential crisis. Why does my problem exist?/Where do we come from?/What is the meaning of life, the universe and everything?" (Explanation).

casperdcl avatar May 06 '21 12:05 casperdcl

I'd prefer to know the meaning of life TBH. Otherwise yes, How-tos should get more quick traffic for sure: basically a support FAQ I guess?

BTW should we merge this issue with #2433?

jorgeorpinel avatar May 06 '21 15:05 jorgeorpinel

I'd prefer to know the meaning of life TBH. Otherwise yes, How-tos should get more quick traffic for sure: basically a support FAQ I guess?

yeah, I like explanations too but I don't think the rest of the world has the same priorities.

BTW should we merge this issue with #2433?

I think #2433 is a DVC-specific part of this (more general cross-project) issue so wouldn't merge it. I'd add an epic label here and cross-ref other issues/PRs (incl. #2433).

casperdcl avatar May 06 '21 16:05 casperdcl

Good idea, either epic this, or extract the README-specific stuff to #2433 and make them clearly different? Up to you

jorgeorpinel avatar May 06 '21 16:05 jorgeorpinel

BTW (if this is an epic), is this related too? #234

jorgeorpinel avatar May 06 '21 16:05 jorgeorpinel

Also related: https://github.com/iterative/dvclive/issues/45 cc @pared

jorgeorpinel avatar May 08 '21 05:05 jorgeorpinel

Henlo

We recently discussed this (and closed #2433) so I wanted to restart the conversation so we have a plan of action with the different core teams that maintain the product repos, starting with dvc cc @dberenbaum

@casperdcl's proposal is to follow the pattern in https://github.com/iterative/terraform-provider-iterative#readme:

  • Banner/badges
  • Short intro with main features
  • Figure? If needed
  • Sell the benefits
  • Compressed yet comprehensive Usage
  • How it Works - basic explanation, preferably a diagram
  • Other sections

My feedback on that README is that a) the features and benefits sections overlap quite a bit I think there could be a single intro section with all that to get to Usage faster b) How it Works may not be necessary IF there's a docs website for the tool where we can link to instead

Also I'd propose adding a ToC near the top if we're going with a long format.

Thoughts?

jorgeorpinel avatar Apr 28 '22 16:04 jorgeorpinel

@casperdcl's proposal is to follow the pattern in https://github.com/iterative/terraform-provider-iterative#readme

I would say "my" proposal (with lots of feedback & iterations with @dmpetrov) is:

AS COMPLETE_AND_CONCISE AS POSSIBLE, assume readers lack patience

no-scroll:

  • Banner/badges
  • Features
  • Diagram

scroll down:

  • Unique Selling Points (i.e. why it's better than alternatives)
  • Usage (in-place complete-yet-minimal-working-example quickstart)
    • requirements & installation
    • example/tutorial
    • links to more Use cases/tutorials
  • Architecture/in-depth explanation/diagrams (target advanced devs & contributors)
  • Future plans/Roadmap
  • Help & Debugging (--verbose/export DEBUG=1/GH issue links/docs links)
  • Contributing (requirements & installation for contributors)
  • Copyright/licence

features and benefits sections overlap quite a bit I think there could be a single intro section with all that to get to Usage faster

disagree - the "Features" completely describe the solution, and capture attention of appropriate users (acquisition). The "USPs" describe why no other solution is better (retention).

How it Works may not be necessary IF there's a docs website

there's a docs website for everything (incl for TPI) but the point is to put a minimal reference in the readme. Links are fine but there should also be a concise summary in the readme for local devs who hate websites (there are a lot).

Also I'd propose adding a ToC near the top

GH auto-generates ToC - we don't need to add this explicitly.

image

casperdcl avatar May 09 '22 12:05 casperdcl

  • Features

I think it should be something like workflows rather than features. We should be focusing on how users interact with the product.

dberenbaum avatar May 09 '22 14:05 dberenbaum

that... would be "Use cases" instead of "Features?"

idk if it's possible to cram all the use cases into the top of the readme. Would be great if possible.

Was thinking use cases could be part of Examples further down...

casperdcl avatar May 09 '22 14:05 casperdcl

If we consider Features as on this page https://dvc.org/features then I would prefer to have a short list of Use cases instead, features are not very meaningful if I don't understand why would I want to use the tool.

And to clarify, even an entry paragraph can answer "why use it" question.

shcheklein avatar May 09 '22 16:05 shcheklein

that... would be "Use cases" instead of "Features?"

I was thinking somewhere in between. Since we are building modular tools, it should be possible to have a paragraph or a few bullets to explain the basic expected workflow.

Related:

  • https://github.com/iterative/dvc/pull/7723
  • https://github.com/iterative/terraform-provider-iterative/issues/558.

idk if it's possible to cram all the use cases into the top of the readme. Would be great if possible.

Was thinking use cases could be part of Examples further down...

Yeah, makes sense. IMO the intro should be a lower level explanation of how to interact with the tool, and use cases might still be relevant to describe different high-level scenarios. For TPI, I would expect the intro to be about how to train/run ML jobs in the cloud, while lower down would be use cases like remote Jupyter notebooks.

dberenbaum avatar May 11 '22 18:05 dberenbaum

To summarize

  1. Header, banners

No-scroll

  1. Main value proposition This answers "why should I care".
  2. Include what the tool is (a CLI, a library, a GUI)
  3. Mention use cases or things you can do. Either as an actual list or a (part of) a clear paragraph Further hooks people for a specific reason.
  • Diagrams I think are optional as needed? One could go here.

Scroll

Everything else is more flexible, up to each product. One example:

  • Compressed "quick start" / basic workflow (happy path) including installation + maybe config info.
  • Comprehensive list(s) of features/commands, linked to full doc guides or refs.
  • Complete usage reference/guide if needed It could be a separate md file linked from the README too.
  • More conceptual "How it works" stuff + diagrams (ideally only if there's no docs site)
  • Other info. (support, debugging/contrib, license or copyright, telemetry, etc.)

Other notes like current state or future roadmap can be added as needed, we don't need to plan for it in this template.

jorgeorpinel avatar Jun 02 '22 04:06 jorgeorpinel

Are there org-level issues/discussions? This goes beyond DVC at this point.

For now I updated the task list at the bottom of the OP desc ☑️ ☑️ ☑️

jorgeorpinel avatar Jun 02 '22 04:06 jorgeorpinel

No-scroll

  1. Header, banners
  2. Main value proposition
  3. what the tool is (a CLI, a library, a GUI)
  4. use cases

seems impossible sans diagrams. Spacing would have to be:

  1. banner images + title + badges take >5 lines
  2. paragraph
  3. sentence part of 1 (don't see why it's separate?)
  4. best shown in multiple flowcharts

casperdcl avatar Jun 02 '22 10:06 casperdcl

I just don't think we can expect mandatory diagrams in every README.

don't see why it's separate?

It's a separate item in my list but can be in the same paragraph of course. I just wanted to emphasize not to forget this.

jorgeorpinel avatar Jun 02 '22 21:06 jorgeorpinel

Interesting guidelines: https://github.com/ddbeck/readme-checklist (via @omesser thanks)

jorgeorpinel avatar Dec 06 '22 21:12 jorgeorpinel

about READMEs, I like the minimal one from deno, i.e.:

  • USP list
  • cross-platform installation
  • get started snippet
  • contributing link

casperdcl avatar Feb 13 '23 22:02 casperdcl

I think a lot of things here have been done. Closing this. I put a link in Notion to this dicussion.

shcheklein avatar Mar 01 '23 03:03 shcheklein