-
Notifications
You must be signed in to change notification settings - Fork 56
Create close-reading recommendation/action report #326
Comments
IPFS Documentation ReportThe step from old docs to new docs has been a vast improvement. A bunch of work has gone into create a better way of serving documentation to users. But there's still a lot of holes that need filling. This report is an informal review of the current state of documentation across IPFS. I'll discuss the following areas:
Content GuidelinesThe current structure of docs content is heavily based around what has already been written. Articles have been placed into groups that make sense from a content perspective, but they completely lack any sense of hierarchical structure. The initial purpose of documentation is to teach users how to use a particular product or service. The current docs do that, to an extent. The second purpose of documentation is to make it easy for users to learn that stuff. Technically, with enough time and effort, a user could look at the IPFS codebase and figure out how to do everything. But for obvious reasons, that's stupid. I propose that we move towards building the following structure within the IPFS docs:
Let's go into this map a little bit more: GuidesThis section contains guides on how to do a specific thing from end-to-end. "How to create a single page site and host it on IPFS" would live here. This is the place for long-form guides that tell the user how to reach the desired end-goal. Generally speaking, these guides will take the user at least 10 minutes to complete. They'll cover a bunch of minor elements that get discussed elsewhere in the docs. The point of these guides is to teach users processes and workflows of IPFS. The driving goal of these guides is to teach a user something without them having to jump all over the place to get the information they need. If the want to find out more about a certain process or function, then, by all means, we can link to that function or whatever. But everything necessary to complete the goal of a particular guide should be contained within that guide. This will mean repeating things like installation steps across guides. ToolsThis section is generally for things that you have to install. So the IPFS Desktop and daemon would go here. Since the CLI isn't actually and API then it would go here, since the API section is specifically for APIs only. Users might not have to use all or any of these tools, and the vast majority of them are likely going to be optional. Stuff like installation guides and how-to-do-this steps are going to be here. The Guides section will contain some of the steps mentioned here. For example, installing the IPFS Daemon will likely be repeated in several tutorials, but the content will be the same as what is listed here. APIsThis is the easiest section to define. If the user is going to programmatically interact with a thing, and that thing has a bunch of available functions and endpoints, then that thing is an API and it's documentation lives here. None of the links listed in the sidebar here will be external links. If the JS IPFS documentation is listed on GitHub somewhere, then the docs will take that documentation and serve it from the docs site. This doesn't mean we're duplicating effort, it just means we're cloning specific folders in certain repositories to gather their API docs. An alternative method would be to house all the API docs within the Getting StartedThis is the most crucial part of the website for new developers or those new to IPFS. Here we'll have a simple tutorial that the user can follow through and reach an ah-ha moment within about 10 minutes. In an ideal world, this tutorial will be kept entirely within the browser session so that the user can learn a bunch of stuff without having to install anything. There should also be some general explanations of IPFS and it's concepts in here. This section is for beginners, so the language and assumptions should reflect that. Towards the end of this section could be some further guided projects users could jump into if they wanted. Developer ConceptsWhile this is called developer concepts the articles listed here don't have to relate directly to development. There should be little to no code in this section at all. The articles listed here should go over ideas and the thought processes behind IPFS, essentially the login you need to understand to get the most out of building on IPFS. Things like the decentalized web and storage permanence should be found here. CommunityPages like Contribution Guidelines and Social Links go here. Not a huge amount of content, but where users should end up if they're looking for help or want to get involved with IPFS a bit more. PersonaCreating documentation with character can seem a bit strange, depending on the background that you're coming from. The vast majority of corporate documentation is boring and bland by design, it's not attempting to tell a story or convey any sense of theme. Instead, most documentation from large companies strictly tells a user how to get from A to B without explaining why. This isn't the direction PL should take with its documentation. Documentation at its core is a support function. It's intended as a way for users to teach themselves about a product or service. The fewer people use our docs, the more they'll use other support channels like forums, chat rooms, and mailing lists, all of which take much more effort to maintain and moderate. And for users to want to use documentation, it's got to be fun to use. This is where the idea of a persona comes in. WritingProtocol Labs has multiple tones and characters in all of its documentation and marketing materials. That's what happens when you have multiple people all over the world writing content for one company. What we need to do is decide which specific character we want the IPFS docs to reflect. I have a feeling this is going to be an informal, chatty tone with an effort to keep the content easy and fun to read. CodeHaving a code-persona is just as important as defining a persona for written content. A code-persona defines what examples to produce, how they're described to the user, and what kind of projects we give the user. One major aspect of this is to create one major project that we can pull examples from to explain different parts of the IPFS protocol. We could create a base example project about a car sales service. Throughout all the example and code blocks, we can refer back to this base example project. If we were teaching the reader how to get the hash of a file and store it on IPFS, we could use images of cars currently in-stock in the car sales service. Having a base example project to work from not only keeps all the articles and sections consistent, but it reduces the need for readers to understand a new project every time they move to a different topic or section. Within a few pages the user should understand what the base example project is, how it works, and ways it can be extended. The car sales service example I've used in this report is just used to illustrate what a project like this would be for. Suggestions for a more relevant base example project are highly sought-after and more than welcome. Learn StuffThe number one search engine in the world is Google. The number two search engine in the world is YouTube. This means if we want to expand our reach to as many people as possible, we need to make more videos to supplement our written content. Right now the docs are pretty much just a wall of text, with a few images thrown in here and there. What we need to have is something like the Laravel Docs. They have their standard documentation, which is great. But they also have Laracasts, a bunch of video courses that explore the topics discussed in the documentation, and show the user how to do stuff. APIsThere are three major issues with the API docs right now:
To fix these issues we need to do a few things. First off, we need to pull in all the API docs from the three main API repositories that we have: Next, we should create a completely new site view for documentation. Having a long list of functions and endpoints is terrible UX. Being able to preview posts and responses from an API within the browser is incredibly useful, and helps users pinpoint exactly what they need. We'll also need to create useful API examples to complement the API reference listings. Lastly, we need to work with the Go and JS development teams to help them add documentation-automation into their projects. It might take a bit of work, but it'll be super worth it in the long run. Developer RelationsWE NEED TO TALK TO DEVELOPERS! This is incredibly key, and I'm surprised that PL doesn't have a significant DevRel team already. We need external developers and users to look at our docs, and tell us why the suck. We can only get so far on dog-food. If we set up a DevRel strategy then the output from those talks, meetings, and conference will feedback into the requirements for documentation and tutorials. Dealing with end-users face-to-face is by far the best way to learn what's required from us, but creating a significant online presence is also handy. LocalizationHaving content written in local languages around the world is more of an SEO stunt than anything. Due to utilities like Google's Language processor, when it comes to localizing content for a specific region, it's often easier for the user to choose their own translation software. However, if there were specific requests from the community to include a localization effort into the IFPS docs roadmap then it should be considered. Something to take into account however is the significant increase in workload when directly translating documentation manually, instead of relying on services like Google or Localize.js. Whenever each document is updated, it must be translated again to make sure everything still makes sense. What to do NextHere are some actionable steps that have come from this report:
I'll create issues for these where they don't exist, and then link everything here. |
Video walkthrough from @johnnymatthews is here: https://www.loom.com/share/fc17d21502c14fdc8422a62258627a5a |
@johnnymatthews -- this is awesome, thank you! Can you please prioritize creating the issues you mention above (ideally this week if you're able), so we can wrap up this stage of this effort? Thank you! |
For future reference, the following issues were created as follow-up from this effort:
I'll go through these issues to groom in a little more depth, label them accordingly, and link to existing related issues. We'll prioritize them within our Q1 2020 OKRs when we get those pinned down, but for now, OK to call this parent issue closed. |
This issue is part of Epic 3C: Content-focused "close reading" audit.
Create a report on the close-reading audit effort, including ...
The text was updated successfully, but these errors were encountered: