Skip to content
This repository has been archived by the owner on Sep 24, 2022. It is now read-only.

RFC-012: internal knowledge base #28

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Changes from 3 commits
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
121 changes: 121 additions & 0 deletions Accepted-RFCs/RFC-012-internal-knowledge-base.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# RFC-012: Internal Knowledge Base
## Proposed by

Ryan Macklin ([@macklin](https://thegooddocs.slack.com/team/U01DYRWG43X))

Initially submitted on 24 Aug 2022

## Current status

- [x] Draft
- [x] Under discussion
- [ ] Final comment and voting (until YYYY-MM-DD) {{Add date after selecting this status.}}
- [ ] Accepted
- [ ] Rejected
- [ ] Implemented
- [ ] Deferred
- [ ] Withdrawn

## Proposal overview

We need a central knowledge repository for contributors that:
* Isn't fragmented across different platforms or accounts
* Is easy for new contributors to access
* Has a sense of hierarchy
* Allows contributors to dump critical or needed info in a place that keeps them from being a bus number
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
* Allows contributors to dump critical or needed info in a place that keeps them from being a bus number
* Allows contributors to dump critical or needed info in a place that prevents them from becoming a bottleneck

* Has some sense of discipline/oversight to keep it from becoming disorganized or discordant

This is internal-facing material, which is about the audience, and not about privacy. We should assume all information is publicly viewable, just intended to be viewed by those with working group context. Our template/product users wouldn't need to know this stuff, but there's no reason to hide it.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
This is internal-facing material, which is about the audience, and not about privacy. We should assume all information is publicly viewable, just intended to be viewed by those with working group context. Our template/product users wouldn't need to know this stuff, but there's no reason to hide it.
This is internal-facing material, meant to be consumed by members of the Good Docs project. Our template/product users don't need to know this stuff, but there's no reason to hide it. Therefore, we keep all information viewable to the public.


## Motivation

We don't have a good way to share information to use contributors, or a common places where information can live and grow. This was mentioned by multiple people during our recent retrospectives.
Copy link
Contributor

Choose a reason for hiding this comment

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

I agree to some extent.
I can share some experiences from what we did in the Chronologue project to try to preserve knowledge. Spoiler: We are still figuring out how we want to do this sustainably, so your RFC is more than welcome. :)

Approach 1:
Before I joined, I found a wiki in shambles and a running Google Doc with meeting notes.
I updated the wiki with our newest set of assumptions to stomp a fake product out of the ground.
For a while, that was a really good way to do it, as we were just a small group and didn't have as much velocity.

And then more people started coming along and needed to build context, learn how we work, essentially get onboarded.
I found myself explaining a lot of things verbally instead to pointing to the wiki (probably because I wanted to build social rapport).

Approach 2:
To create a more solid point of reference, I started creating a README page to give people an idea how to actually contribute.
As for the wiki, I decided to migrate some content that I deemed was solid enough into a more "permanent" format. For example, in one wiki entry, I explained how the Chronologue telescope works "scientifically". I turned that into a concept in our docs folder.
We try to do that with as much knowledge as we can, and plan on deprecating the wiki eventually for maintenance reasons. I think the wiki failed due to lack of ownership, whereas more permanent files require one or more authors to write something and ideally a PR. It requires more commitment, and therefore, I think the outcome is higher quality.

If that is the best way to do it, well, I don't know.

P.S. I wrote this comment before reading the rest. I am curious what you propose.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ideally, if we all know we have a core space, and are expected to use that space, those overall problems get resolved.


## Proposal

We could use a GitLab wiki or repo as a place where contributors can post material or comment on said material with questions, corrections, etc.

We'd have some guideline on structure, intent, etc. Each core initiative would have a space for their information, along with general information, community resources, etc.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we need to find a good balance between keeping the information in a place where you would expect it/need it vs. keeping it somewhere where it is discoverable.
For example, I experienced that many of my Chronologue group members are pretty new to Github (let alone Gitlab), and switching/finding things in different places than their "home" repo is pretty hard for them.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Noted


Ideally, our docs would make use of our templates—in fact, they would make for great use/test cases. However, we would allow for a "quickly written" status, in cases where information needs to be dumped from someone's mind, but the time/effort cost in polishing isn't currently possible.
Copy link
Contributor

Choose a reason for hiding this comment

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

Agree!


We'd have a mechanism for checking the freshness of content, though we can defer the details of that until later.
Copy link
Contributor

Choose a reason for hiding this comment

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

Agree that we need this, along with owners of the file/ reviewers.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Noted


### GitLab wiki: a.k.a. Do we already have this?
There's a wiki in GitLab, and [Aaron has release weight information there](https://gitlab.com/tgdp/governance/-/wikis/Guide-to-assigning-weight-scores-to-issues-and-epics-%28release-planning%29). Should we just go with that? Does that make sense for us as a group of groups?
Copy link
Contributor

Choose a reason for hiding this comment

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

In my mind the (a) wiki is the place for this type of information, as it's basically what they were designed for. The tricky part will be where it resides, and slightly related, if there's one for everything or one for each WG (as each repo has its own wiki I believe). I usually favor the "source of truth" approach, which implies we have one wiki to rule them all. Of course, at this point the IA and content strategy becomes super important...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Noted


Is the wiki going to be oversaturated with other purposes? Would it be difficult to use search functionality when looking for KB articles, due to non-KB stuff in the wiki also populating the search results?
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you elaborate on what you think could be saved in the wiki that would qualify as non-KB stuff? If we can pinpoint certain things, we can brainstorm with the CS group where those things should live.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is a general question regarding technological limitations. Ideally there should be only KB material in whatever CMS or repo we use, but if we're not able to accomplish that, how to do we handle such a situation?


## Consequences

We'd have a central place for information.

Said information though could become out of date without a contributor realizing it, due to the nature of knowledge bases and the bandwidth of contributors.

We also need to decide on the access control. Having new contributors being able to edit can be great for finding holes in the content, but could also be an issue if contributors put misunderstandings into our KB without others noticing right away.
Copy link
Contributor

Choose a reason for hiding this comment

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

I see this as a blessing and curse as well. Having a stricter format that needs a PR before contributing would prevent these things, I guess.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That gets into drafting the core info on contributing to the KB, which is in the implementation list


This space would also be great for small procedural elements that should be documented, but don't need a full RFC for said documentation (such as the recent "break/restart" process the co-chairs initiated). That way such info isn't lost to the ether due to a lack of documentation procedure for such things.


## Links and prior art

{This section is optional if you want to [link](https://example.com) to other resources.}


## Open questions

{This section is optional and is where you can list questions that won't be resolved by this RFC, including those raised in comments from community members.}


## Decisions deferred
Copy link
Contributor

Choose a reason for hiding this comment

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

I feel like we should be in the clear about these two things before we settle on a wiki. Seems to important and I guess it is a pain to migrate later on.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added those to the implementation checklist


* Freshness mechanisms
* Access control (a.k.a. who can edit/update)


## Feedback

{If you accept feedback from a community member, you will incorporate it into your RFC before it is accepted.
If you reject feedback, note that rejected feedback here before resolving the conversation.}


## Organizational dependencies

* The tech team would be involved in implementation
* Content strategy may have thoughts, even with this being internal-facing info

## Implementation checklist

If this proposal is accepted, the following tasks must be completed:

- [ ] Set the site/wiki/whatever up
- [ ] Draft the core info on how to use & contribute, so we're all on the same page about it
- [ ] Create the initial structure/document tree
- [ ] Ask group leads to dump critical or infrastructure knowledge from their brains or disparate notes into the KB

Copy link
Contributor

Choose a reason for hiding this comment

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

  • Scrape the existing GitHub repos and wikis for any project and process information that is relevant to capture in the KB
  • Comb existing Google drives per working group for relevant info to move into the KB

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added


## Votes

Votes as per our [decision process](https://thegooddocsproject.dev/decisions/):

Project steering committee (listed alphabetically by first name):

- Aaron Peters:
- Alyssa Rock:
- Ankita Tripathi:
- Bryan Klein:
- Cameron Shorter:
- Carrie Crowe:
- Erin McKean:
- Deanna Thompson:
- Felicity Brand:
- Gayathri Krishnaswamy:
- Morgan Craft:
- Nelson Guya:
- Ryan Macklin:
- Tina Lüdtke:


Community members who voted (non-binding):

- {Your name}: {Your vote}