|
| 1 | +# Docs WG Roadmap |
| 2 | + |
| 3 | +## Jan 2016 → Apr 2016 (Q1) |
| 4 | + |
| 5 | +This is the first of the quarterly roadmaps that this Working Group will |
| 6 | +produce, so it will be structured a bit differently than subsequent ones. Since |
| 7 | +this is a brand-new process, an explanation of **what it is** and **why it's |
| 8 | +necessary** follows. |
| 9 | + |
| 10 | +This roadmap outlines the priorities for the Docs working group for the |
| 11 | +quarter. These tasks can be as broadly or narrowly defined as is useful. They |
| 12 | +are not necessarily staffed — as folks step up to do the work, we'll link |
| 13 | +tracking issues to the tasks for them to self-organize. Every quarter we'll |
| 14 | +revisit this roadmap, adding a quick postmortem of how things went, and |
| 15 | +creating a new set of priorities for the ensuing quarter. |
| 16 | + |
| 17 | +That brings us to why a roadmap is necessary: the Node.js documentation is a |
| 18 | +relatively confined space to work within, and there are many interested |
| 19 | +parties: there are groups that consume the documentation as output, like the |
| 20 | +[website working group][wg-website], there are groups concerned with ensuring |
| 21 | +the [content addresses the needs of diverse audiences][wg-inclusivity], there are |
| 22 | +[groups that are required][wg-ctc] to produce API documentation as a |
| 23 | +pre-requisite to merging their primary work, there are contributors who wish to |
| 24 | +help in a _technical_ fashion, there are contributors who wish to contribute |
| 25 | +_editorially_, and there are the readers of the docs. All of these |
| 26 | +contributions overlap, so in order to make measurable progress without stepping |
| 27 | +on each other's feet, we have to: |
| 28 | + |
| 29 | +* **Set clear priorities** — if two contributions conflict, it should be |
| 30 | + straightforward to determine which contribution should take precedence. |
| 31 | +* **Message these priorities well in advance** — with this many stakeholders, |
| 32 | + we should mention repeatedly, loudly, and clearly what our intentions are. |
| 33 | + The Docs WG should aspire to avoid surprise. |
| 34 | +* **Make the best use of donated time** — we want to ensure that if someone is |
| 35 | + donating their time to improve the documentation, it will be well-spent, and |
| 36 | + directed at driving the documentation towards this WG's [stated goals][goals]. |
| 37 | + |
| 38 | +[Our goals][goals] can be summarized thusly: |
| 39 | + |
| 40 | +> Node.js should be in friendly competition for "Best Docs in OSS," with docs |
| 41 | +> that address the needs of a wide variety of audiences — across skill levels, |
| 42 | +> goals, and languages. |
| 43 | +
|
| 44 | +### Tasks |
| 45 | + |
| 46 | +Tasks for this quarter were drawn from [responses to this issue][issue-roadmap]. |
| 47 | +They are divided between three major areas: |
| 48 | + |
| 49 | +* **Content** — the actual content of the docs |
| 50 | +* **Features** — reader-focused features, like version metadata or autolinking. |
| 51 | +* **Tooling** — author-focused features, like doc linting or html generation. |
| 52 | + |
| 53 | +Since **content** is the ultimate product of this WG, it will usually be the |
| 54 | +highest priority. However, when **content** systemically fails audiences, it |
| 55 | +may point to a need for better **features** or **tooling**. |
| 56 | + |
| 57 | +**Right now, our features and tooling are lacking, and the content is suffering |
| 58 | +for it.** |
| 59 | + |
| 60 | +#### :one: Pulling Guides into [nodejs/node][repo-nodejs] |
| 61 | + |
| 62 | +**This is our highest priority over the next two months.** |
| 63 | + |
| 64 | +Right now the documentation is split between the [website repo][wg-website] and |
| 65 | +the [core repo][wg-ctc]. We wish to bring the [guide documentation][guide-docs] |
| 66 | +into the core repo. |
| 67 | + |
| 68 | +The existing [node doctool][ref-doctool] is specifically built to _only_ |
| 69 | +generate API docs. Until we can build the guide docs with Node.js' `make doc` |
| 70 | +command, guide documentation will be copied from the website repo into the core |
| 71 | +repo, but not *removed* from the website repo. |
| 72 | + |
| 73 | +As a result, we are investigating using [remark][ref-remark] to build the |
| 74 | +docs. The stages of this project are as follows: |
| 75 | + |
| 76 | +1. Use remark to build just the guides alongside the existing doctool. |
| 77 | +2. Remove the guides from the website repository. |
| 78 | +3. Identify and install the necessary remark plugins to faithfully render the |
| 79 | + API documentation. |
| 80 | +4. Generate all documentation using remark. Fix lint issues pointed out by |
| 81 | + `remark-lint`. |
| 82 | +5. Once no linting issues remain, wire up docs linting as part of Node.js' |
| 83 | + `make test`. |
| 84 | + |
| 85 | +Once this project is complete, all doc style rules will be handled by remark, |
| 86 | +which includes line lengths, code samples (via eslint), markdown bullet and |
| 87 | +emphasis styles, and link checking. We will have a solid basis on which to add |
| 88 | +spelling and grammar checkers in the future, making it easier to maintain the |
| 89 | +docs going forward. |
| 90 | + |
| 91 | +##### Subtasks |
| 92 | + |
| 93 | +Want to pitch in? Look here! If someone's already working on the task, see |
| 94 | +if they need help. |
| 95 | + |
| 96 | +* Identifying Remark plugins — **@qard**, others! [nodejs/docs#61](https://github.com/nodejs/docs/issues/61) |
| 97 | +* Initial Remark integration — **@qard** [nodejs/node#4866](https://github.com/nodejs/node/pull/4866) |
| 98 | +* Codify linting rules |
| 99 | + * Apply linting rules across API docs |
| 100 | +* HTML layout for guide docs |
| 101 | +* HTML layout update for API docs to include refs to guide docs |
| 102 | + |
| 103 | +#### :two: Guide and Topic Docs |
| 104 | + |
| 105 | +A _very_ close second to the work on the documentation tooling is the work on |
| 106 | +identifying and creating new guides and topic documentation. These two terms |
| 107 | +come up a lot, to clarify what they mean, here's an except from our [getting |
| 108 | +started][ref-getting-started] guide: |
| 109 | + |
| 110 | +> 1. **Guide** documents explain processes to help the reader learn a concept |
| 111 | +> in service of their larger goal. Usually a guide has the reader build |
| 112 | +> something — a little webserver, or CLI — and explains the concept it's trying |
| 113 | +> to convey using examples from the readers experience with that code. Guides |
| 114 | +> are great for introducing new concepts in a comfortable way, by letting the |
| 115 | +> reader "simulate" the process of what development will be like using those |
| 116 | +> concepts. |
| 117 | +> 2. **Topic** documents explain concepts to help the reader make a decision. |
| 118 | +> They are a great place for "deep dive" information, and to handle anything |
| 119 | +> that's fairly intricate. |
| 120 | +> 3. **Reference** documents explain capabilities to help the reader achieve |
| 121 | +> their goal. API documentation is the primary example of this. |
| 122 | +
|
| 123 | +Node.js currently has **reference** documentation, but because of the lack of |
| 124 | +**topic** and **guide** documentation, it ends up having to repeat itself a |
| 125 | +lot. Sometimes the lack of a dedicated place for this kind of documentation |
| 126 | +means that reference docs will attempt to include guides or topic docs inline — |
| 127 | +this usually doesn't end up working well in the long run. |
| 128 | + |
| 129 | +The Docs WG has identified and created a few guides already, some of which are |
| 130 | +the subject of the [first](#one-pulling-guides-into-nodejsnode) task. |
| 131 | +*However*, we need help filling in the gaps — both in identifying needed docs, |
| 132 | +as well as in executing on them. |
| 133 | + |
| 134 | +It's important to note that this documentation applies as much to topics |
| 135 | +*internal* to the project as it does to our externally facing API — we need |
| 136 | +guides and overviews for the architecture of Node, as well as how to |
| 137 | +collaborate on the project. |
| 138 | + |
| 139 | +##### Subtasks |
| 140 | + |
| 141 | +Want to pitch in? Look here! If someone's already working on the task, see |
| 142 | +if they need help. |
| 143 | + |
| 144 | +* Overviews: |
| 145 | + * "Encoding", to be used by the Buffer and FS docs. |
| 146 | + * "Blocking vs. non-blocking." |
| 147 | + * Syscall documentation, to be used primarily by FS, but throughout the codebase. |
| 148 | + * Internal: Node.js Architecture — **@eljefedelrodeodeljefe** [#71](https://github.com/nodejs/docs/issues/71) |
| 149 | + * Internal: Initialization process — **@thealphanerd** [#73](https://github.com/nodejs/docs/issues/73) |
| 150 | + * Internal: Timers |
| 151 | + * Internal: Event loop — **@DavidTPate** [#74](https://github.com/nodejs/docs/issues/74) |
| 152 | + * Internal: Signals |
| 153 | + * Internal: Docs WG Process — **@chrisdickinson** |
| 154 | +* Guides: |
| 155 | + * Internal: New Collaborator guide — **@nodejs/inclusivity**, **@ashleygwilliams** [nodejs/inclusivity#96](https://github.com/nodejs/inclusivity/issues/96) |
| 156 | + * Internal: Move "cutting releases" into these guides — **@thealphanerd** [#75](https://github.com/nodejs/docs/issues/75) |
| 157 | + * Streams: For Authors |
| 158 | + * Streams: For Consumers — **@bengl** |
| 159 | + * Walkthroughs for each module |
| 160 | +* Reference: |
| 161 | + * Glossary of terms, to be used by all docs. |
| 162 | + * Streams: remove guide content from API doc once guides have been written. |
| 163 | + * Streams: Descriptive spec — **@nodejs/streams** [nodejs/readable-stream#181](https://github.com/nodejs/readable-stream/issues/181) |
| 164 | +* Identifying other docs to create |
| 165 | + |
| 166 | +#### :three: Improving API Metadata |
| 167 | + |
| 168 | +One of the most common requests we've received is that the API docs start |
| 169 | +including relevant version information alongside methods. This information |
| 170 | +should include the version the API was introduced in, when it was last changed, |
| 171 | +and when it was deprecated, if applicable. Second to that, we've received |
| 172 | +requests to automatically link types of parameters to the appropriate MDN or |
| 173 | +Node.js documentation sections, and note what (if any) errors an API will |
| 174 | +generate, and how it will propagate them. |
| 175 | + |
| 176 | +This points to the need to standardize tooling around this metadata, and then |
| 177 | +execute against that tooling. |
| 178 | + |
| 179 | +This task should track the work being done in task #1 — that is to say, this |
| 180 | +metadata should be tracked by remark plugins in as much as is possible. |
| 181 | + |
| 182 | +##### Subtasks |
| 183 | + |
| 184 | +* Per-section YAML — **@qard**, **@tflanagan** [nodejs/node#3867](https://github.com/nodejs/node/pull/3867) |
| 185 | +* Noting 'version introduced' on each API — **@tflanagan** |
| 186 | + * Ideally this should link to the CHANGELOG for that release. |
| 187 | +* Standardizing API method signature documentation |
| 188 | + * Type annotation — **@fansworld-claudio** [nodejs/node#4741](https://github.com/nodejs/node/pull/4741) |
| 189 | + * (This will have to be brought into the Remark work as well.) |
| 190 | + * Error generation |
| 191 | +* Automatically linking `syscall(2)`-format terms to the appropriate docs. |
| 192 | +* Allow authors to pick a simpler anchor for headings in addition to the |
| 193 | + autogenerated anchor. |
| 194 | + |
| 195 | +### Notably Missing |
| 196 | + |
| 197 | +There are a few things notably missing from this list — this is not because |
| 198 | +they are not important to us, but because we are primarily constrained by time |
| 199 | +and the size of the content we are working within. Foremost among the missing |
| 200 | +pieces is an internationalization strategy. This task cannot be approached |
| 201 | +lightly, and will likely include touching *all* of the docs in a single PR. |
| 202 | +While we welcome discussion on how to approach this issue, we will not be |
| 203 | +executing on it until after March 2016. Likewise, search is an extant issue |
| 204 | +that we do not have the resources to work on at present. |
| 205 | + |
| 206 | +### Pitching In |
| 207 | + |
| 208 | +If you would like to help out with the Docs, you can: |
| 209 | + |
| 210 | +* Find a subtask above and raise your hand on the associated issue or create |
| 211 | + an issue on the [docs issue tracker][docs-tracker]. |
| 212 | +* Raise your hand [here][weekly-review] to help with the weekly docs review |
| 213 | + load. |
| 214 | + |
| 215 | +[docs-tracker]: https://github.com/nodejs/docs/issues/new |
| 216 | +[goals]: https://github.com/nodejs/node/blob/master/WORKING_GROUPS.md#documentation |
| 217 | +[guide-docs]: https://github.com/nodejs/nodejs.org/tree/master/locale/en/docs/guides |
| 218 | +[issue-roadmap]: https://github.com/nodejs/docs/issues/59 |
| 219 | +[ref-doctool]: https://github.com/nodejs/node/tree/master/tools/doc |
| 220 | +[ref-getting-started]: ./GETTING-STARTED.md |
| 221 | +[ref-remark]: https://www.npmjs.com/package/remark |
| 222 | +[repo-nodejs]: https://github.com/nodejs/node |
| 223 | +[weekly-review]: https://github.com/nodejs/docs/issues/69 |
| 224 | +[wg-ctc]: https://github.com/nodejs/node |
| 225 | +[wg-inclusivity]: https://github.com/nodejs/inclusivity/ |
| 226 | +[wg-website]: https://github.com/nodejs/nodejs.org/ |
0 commit comments