JuliaDiff / ChainRulesCore.jl

AD-backend agnostic system defining custom forward and reverse mode rules. This is the light weight core to allow you to define rules for your functions in your packages, without depending on any particular AD system.
Other
256 stars 62 forks source link

Reorganise the documentation #508

Closed mzgubic closed 2 years ago

mzgubic commented 2 years ago

The ChainRules docs are one of my favourite docs. We have been diligently adding clear and concise documentation for every change or feature and the docs serve as a great reference point for experienced users.

However, due to their organic growth, they can be quite confusing for a first time reader trying to get acquainted with the package and find out how to use it. I suppose the 1.0 milestone is a good time to revisit the organisation of the documentation and try to make it more friendly for first time users.

This issue outlines a proposal for the reorganisation of the docs. Let's discuss first and then make the changes. The main proposal is to make Introduction simpler, separate out the maths, and split the rest into pages for rule authors, and AD authors.

Titles in italic are the existing pages to be moved.


Introduction

The maths

How to use ChainRules as a rule author

How to support ChainRules rules as an AD package author

Design

FAQ

API


Open questions:

I suggest we do this in at least two PRs: The first one moving things, and the second one rewriting the introduction and some other parts.

To do:

sethaxen commented 2 years ago

I think we want to introduce complex numbers before array rules; otherwise use of adjoints makes no sense. We could simply add a callout box at the top saying one can proceed without reading that section and then the first time a decision is made in the array rules section to ensure complex support, we add a callout box saying to go back and read that section for an explanation.

oxinabox commented 2 years ago

Yes, make it so.