NOTE: For any released features, please see notes in release notes.
You may have noticed that the team is working on DocFX v3 right now. Yes, v3 is the long-term plan for DocFX to be the end-to-end "docs" tool to support
NOTE: Roadmap for v3 is tracked here.
- build of markdown and structured conceptuals (such as landing page, tutorial, etc.)
- end-to-end generation of reference language documentation from either source codes or released packages (such as .NET, REST, Java, etc.)
- able to run everywhere (i.e. cross-platform) and publish to anywhere possible (static site, or a built-in rendering stack with functionalities similar to https://docs.microsoft.com)
- look and feel defaulted to https://docs.microsoft.com, but still customizable
The reason why we choose to have a redesign and reimplementation of v3 instead of continuous improvement in v2 is mainly due to following considerations:
- The v2 architecture, especially the plugin framework, is too flexible, making it difficult to do changes in DocFX without impacting the plugins. The flexibility also hinders community users to dig deep into the code and contribute.
- It is not easy to locally debug and test due to the existence of the plugin framework.
- The performance is also not ideal: two major issues are with AppDomain and Git related operations.
- Technical stacks are not consistent throughout the pipeline, causing additional overhead in development and troubleshooting.
- Community users are expressing their desire to have a documentation experience similar to https://docs.microsoft.com (i.e. feature requests on versioning, PDF link, REST definition pages, etc.), but there is no easy way to approach these requirements in v2.
Though we're focusing our resource on DocFX v3, please be assured that v2 is and will still be actively supported and maintained for a long time. We don't expect sudden deprecation of v2 before the full-fledge of v3 plus a reasonable time for migration.
However, due to limited resource on v2, we are going to:
- address large-impact requests only, e.g. features or bugs blocking adoption of DocFX v2,
metadata
gap to support any new version of .NET and .NET core - postpone other features to be reconsidered and planned in v3
- continuously improve usability, e.g. documentation, error messages
- still provide active support to all channels (GitHub issue, Disqus forum, etc.), but may have some latency in response
- still provide full support to your contribution by PRs
Below are the features we put in backlog to be reconsidered and planned in v3 in future.
Status In progress. As spec indicates, schema-driven processor is to handle the multi-language support issues. With SDP, it is much easier than today to onboard new languages such as TypeScript, SQL, GO, etc. A new language on-boarding will include the following steps:
- Generate the YAML file from the language
- Create the schema for the language YAML
- Create the template for the language based on the schema
Take TypeScript as a start point.
Status In design phase.
Razor page is a new feature of ASP.NET Core. A Razor page contains a template file A.cshtml
and a 'code-behind' file A.cshtml.cs
. The design is pretty similar to DocFX's templating system which is a template file A.tmpl
or A.liquid
and a 'preprocessor' file A.tmpl.js
or A.liquid.js
.
Razor page is quite familiar to ASP.NET developers. Supporting it in DocFX sounds friendly to new comers.
According to Feature Proposals, docfx watch
wins far ahead.
Watch => Changed file list => Build => File Accessor Layer
File changes include:
- Source Code file change => Out of scope. (Hard to implement)
.md
and.yml
file change => In scope.- Template file change
- Dependent style files change => In scope.
- Template file change => In scope. (Could be slow)
- VSCode extension
- Preview
- TOC
- Schema based YAML files
- Intellisense and validation
- Markdig syntax: uid autocomplete, syntax detect
- docfx.json
- toc.yml
- schema based YAML documents
- Preview
With this API service, there is no need to download msdn.zip
package or xrefmap.yml
file anymore.
- Integrate DocFX with CI, e.g. Travis, Appveyor
- Easier installation, e.g. one script for copy
* Dotnet-core migration
* Docker