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

Document aspirational documentation structure #293

Merged
merged 2 commits into from
Mar 10, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ All hub configuration is in `hubs.yaml`. You can add a new hub by adding
an entry there, and pushing that to github.

```{toctree}
structure
configure
operate
custom-image
Expand Down
74 changes: 74 additions & 0 deletions docs/structure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Documentation Structure

We primarily offer documentation, peace of mind and expertise to
our users - and code/configuration is simply an implementation
detail. Well structured documentation aimed at different audiences is
essential to 2i2c's long term health. This document lists the audiencs
we serve, what kinda docs they might expect, and where we provide them.

## Audiences

For each feature we add or change we make, we should create & update
documentation for all of these audiences, as applicable. There are
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
documentation for all of these audiences, as applicable. There are
documentation for all of these audiences, as applicable.
There are a few key audiences that are outlined below.


## For the general public
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## For the general public
## The general public


People visit our website to learn about us, and investigate if we could
be of use to them. Communicating what value we can add to them is
extremely important, so any feature we write should be integrated into
[our website](https://2i2c.org/infrastructure/). The focus should
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the relationship between this page and 2i2c.org/pilot? In my mind, 2i2c.org/infrastructure is a description of the stack in general but is more like a high-level advertisement, while 2i2c.org/pilot is more dynamic and feature-complete.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not the infrastructure page in particular, but I really want a page where we can say overall value of what we support, without going into the details - a 'sales' page almost. /pilot is documentation, and much more detailed. So whatever is in the 'sales' page should just be a blurb at most - hence the link to the infrastructure page. A different page is perhaps in order.

be on the value we can add to potential users, and should link to
other kinda documentation for more detail if needed.

## For hub users
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## For hub users
## Hub users


Ultimately, our hubs are built to serve researchers, students and instructors. These are our *end users*, and they need to be able to
get their work done. The infrastructure we provide is primarily
opinionated bundles of upstream software, so we don't *need* to rewrite
documentation for all the software they might use. So we should provide
at least the following kinds of documentation:

1. **Tutorials** for common workflows on our infrastructure, since this is heavily driven by the opinionated choices we have made while building it.
3. **How-to guides** to help users accomplish a specific well defined task, especially if it is something they know how to do in a different system.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious what you think about content like https://2i2c.org/pilot/admin/interfaces.html - do you think that is in-scope for 2i2c docs? Or something we should instead link to the jupyterhub docs for?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've clarified what 'how to' guides should be written, and I've removed the interfaces documentation page in pilot docs. I've moved the content into a 'how to' page instead. So I think we shouldn't have any 'reference' docs (I think of the current page as one) but ok to have howto docs.

2. **Component reference** to inform users where to find documentation for the component they might be having issues with. Most users are unfamiliar with the intricate details of what component does what, so might not be able to find the appropriate place to look at.j
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
2. **Component reference** to inform users where to find documentation for the component they might be having issues with. Most users are unfamiliar with the intricate details of what component does what, so might not be able to find the appropriate place to look at.j
2. **Component reference** to inform users where to find documentation for the component they might be having issues with. Most users are unfamiliar with the intricate details of what component does what, so might not be able to find the appropriate place to look at.


## For hub administrators
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## For hub administrators
## Hub administrators

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that we tend to call these people "Community Champions" so far...do you distinguish between the Hub Administrator and the Community Champion?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should definitely clearly define it. I think these aren't exactly the same people. For example, with UToronto, Avi / Nathan are who I'd think of as Community Champions. But there's a lot of people who do the day-to-day work, and those are 'admins'. They fulfill different roles, I think. But 'hub administrator' is not defined yet, and we should. Do you have a sense of how we could do that?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about we add another role here: https://2i2c.org/team-compass/sre/#roles-needed-to-run-a-2i2c-hub and modify the Community Champion language as needed (if needed)? If you're +1 on that then we can open an issue to track it so it doesn't block this PR

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@choldgraf sounds perfect!


Hub administrators are the interface between the 2i2c engineers running
the hub and the actual users of the hub. They are usually a part of the
community using the hub, and are interested in the *configuration* of
the hub infrastructure as well. They shoudl be aware of possible
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
the hub infrastructure as well. They shoudl be aware of possible
the hub infrastructure as well. They should be aware of possible

configuration options they can choose to serve their community best, and
be empowered to make those choices without interaction with 2i2c
engineers wherever possible.

They help make decisions about the configuration of the hub that benefits
its users most, and hence we should provide at least the following kinds
of documentaiton.

1. **Configuration guides** to help them pick the configuration that
will be best fit for each of our major features - such as
authentication, kind of user interface, etc.
2. **Self-serve guides** to allow them to do as many *safe*
configuration changes as quickly as possible without having to
involving 2i2c engineers. This will also help surface issues that are
in need of more automation on 2i2c's side.

This documentation should exist in the [2i2c-org/pilot-hubs](https://github.com/2i2c-org/pilot-hubs)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about stuff like https://2i2c.org/pilot/admin/interfaces.html - that is for admins, but more on the "hub users" side. Should that be moved to pilot-hubs?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that should definitely continue existing where it is now, since it's targetted at hub admins / users rather than infrastructure engineers

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made a mistake, this should've referred to the pilot repo. Fixed


## For 2i2c engineers

These are folks tasked with building, maintaining, debugging and fixing
2i2c infrastructure. Documentation targetting them should be in this
repository (2i2c-org/pilot-hubs), regardless of the kind of hub it
relates to. Since we run our hubs openly, with best practices that can
ba adopted by anyone, we should try write
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the text here got jumbled

possible.

Here are some contexts where they would need documentation.

1. **Tutorials**, to help orient folks who might be working on areas
they aren't already familiar with.
2. **How-to guides** for performing common tasks that have not been automated yet.
3.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More to come?