Please describe your proposed solution.
Market
dApp builders on Cardano.
Problem Space
When building a dApp on the Cardano Network, there are several major hurdles to overcome, which are solved through strong documentation in other ecosystems. Very early questions such as 'What tools and libraries should I use to build a production-ready app?' are often tough to answer. This compounds knowledge among the experienced developers and prevents new developers from learning the lessons of previous projects.
This leads to a great deal of lost time and resources across many projects. Projects may need to experiment with and ultimately abandon tools or implement their own tooling. Developers may struggle through under-used parts of a tool or library, slowing their productivity. Documentation can also go stale and become inaccurate as tools grow and change.
What does high-quality documentation look like?
reference: <u>https://diataxis.fr</u>
Strong documentation will typically reflect a mix of four categories:
- Tutorials
- How-To guides
- Explanations
- Reference
Tutorials are designed to introduce a piece of technology to the user. They often reflect the most common use cases and must maintain simplicity to avoid overwhelming the learner. For example, an easy introduction to working with the tool without unnecessary details.
How-To guides assume some familiarity with the technology or tool and address important features and use cases or integrations with other tools that might not be obvious after the first tutorials.
Explanations help users to understand exactly why a tool has a certain behavior, addressing lingering questions and non-intuitive aspects of the technology. Potentially helping contributors to the project have a better understanding of the project's inner workings, or helping a developer move from a beginner to an intermediate user.
Reference material is about maximum detail about the project, intended for troubleshooting, advanced configuration, or a fast lookup for an immediate problem that may be found.
There are some other properties that good documentation ought to have to maximize its utility:
- Searchability
- Discoverability
- Clarity
- Readability
- Accuracy
Searchability - The documentation has internal search-by-keyword and is laid out in an organized way so that a developer can quickly find the article(s) relevant to their current effort.
Discoverability - The documentation can be located through Google and other search engines easily, the documentation resource is found on resource lists (such as Essential Cardano), readme files for relevant projects, and other locations. If nobody can find your documents, they aren’t very useful.
Clarity - Concepts must be plainly laid out, and in some cases, explained multiple different ways, so that users can gain a better understanding of complex concepts. Illustrative examples can offer even greater benefits.
Readability - Providing a consistent glossary of terms, explaining those terms, and providing references can help users gain a better understanding faster, especially if the terms used are aligned with those used in other knowledge bases across the ecosystem. This can also apply to code style in examples, being very explicit and optimizing code so that its meaning is explicit.
Accuracy - Documentation can become outdated very quickly, as bug fixes and feature improvements land, documentation can be an afterthought. Sometimes tests can be introduced to ensure that documentation aligns with the current implementation. Sometimes users need to make sure they are viewing the correct version of the documentation for the software version they are using.
As an example of a documentation project which exhibits these properties, The Mozilla Developer Network provides documentation for web and browser technology. This is a shining example of excellent developer-directed documentation which can radically improve development times on a range of projects.
In the fast-moving world of Cardano dApp development though, we have a different set of tools that we can currently leverage:
1. Haddock documentation (for Haskell tools)
2. Specification documents
3. In-repo docs
4. Knowledge-hubs
5. Blog posts
Each of these offers less-than-ideal tradeoffs for discovery and searchability, and this leads to a sort-of folklore of knowledge, found in obscure corners of documentation, which is often central to the real use of those tools.
In short, our work is cut out for us if we want to build the level of documentation necessary for Cardano to grow.
Please describe how your proposed solution will address the Challenge that you have submitted it in.
We want to commit to making serious improvements in Cardano ecosystem documentation.
This will include:
- Updating haddock documents to be in line with the specifications so that developers can avoid working with specification documents in favor of the more searchable haddock documents across the entire Cardano/Plutus stack.
- Contributing documentation to several key ecosystem components, with a focus on discoverable tutorials, highly searchable reference materials, and explainer blog posts.
- Building better tutorials to understand on-chain and off-chain architecture, enabling dApp developers new to the ecosystem to more quickly understand the landscape and help them make critical early decisions.
Key software projects we wish to contribute to as part of this effort include:
- Cardano (including cardano-node, cardano-api, cardano-cli, and other components)
- Plutus/Plutus-apps (Including PAB)
- Plutarch
- Plutip
- Cardano-serialization-lib & Cardano-multiplatform-lib
- Blockfrost & Ogmios
- Oura & Carp
Together, these applications represent the most common building blocks for production dApps on Cardano today.
To keep these resources discoverable, we may also make contributions to multiple documentation projects, such as:
- Essential Cardano
- Awesome-plutus
- The Plutonomicon
How will these resources help Cardano?
We want to provide significant improvements to documentation so that developers across the Cardano ecosystem can move faster, get stuck less, and ultimately ship products for less.
What are the main risks that could prevent you from delivering the project successfully and please explain how you will mitigate each risk?
Of course, maintainers for projects not directly run by MLabs will need to agree with our approach to documentation for our work to be merged, so it’s critical to involve them in the process. Long-term, as new features are added or new tools introduced, the documentation will also need to be updated.