In a separate discussion today I sketched out my vision for the Pipelines documentation site (pipelines.lsst.io). Although this is still a proposal, I wanted to share this outline widely both so that the pipelines team can understand my vision for the docs, and also to start a conversation about the types of content we’ll need to produce and how it will be organized. Eventually this can be distilled into a technote to help focus pipelines documentation production.
The proposed organization reflects patterns I’ve noticed in successful documentation sites. Some key features of the plan are:
- An ‘Overview’ section to promote key functionality in an approachable way to attract and orient new users.
- Command line tasks are featured as a main interface to the Stack for astronomers. Collecting and curating tasks in a top-level section makes this interface approachable.
- In-depth user guides and API references for EUPS packages live in situ with the code. Still, this organization scheme curates packages into logical groups on the homepage and allows us to write umbrella user guides around API topics (e.g., for all
meas
packages, or allobs
packages).
Again, what follows is my vision for the organization of the docs, primarily from the perspective of the layout of the homepage.
The pipelines team might have a different vision and I’d love to hear about that perspective. The main thing is that I’d like us to have a concrete vision for the Pipelines docs so that we can work together to ship it.
Getting started
This will link into:
- Installation docs
- Release notes and a high-level “what’s new in this release” page
- A user-oriented EUPS guide/recipes so that people know how to integrate additional packages with their installed Stack.
- A page describing the meta-packages (
lsst_apps
,lsst_distrib
, etc) and what they contain
Overview
This section will link into a series of short pages that introduce astronomers into the world-view of the LSST Science Pipelines. These pages are written for people who are new to the Stack (and maybe haven’t even invested in installing it yet) and just want to the know what the Stack is and what it can offer for their work.
This is where we introduce all the key concepts behind the Stack, such as tasks and command line tasks, the butler, key data structures like exposures and tables, ISR algorithms, calibration algorithms, measurement algorithms, and so on.
I see these pages being short, approachable, and non-exhaustive. These pages will link into more in-depth documentation later in the doc site. You can think of these pages as marketing.
These pages will be a souped-up version of something like https://www.djangoproject.com/start/overview/ and the “Intro to Django” section of https://www.djangoproject.com/start/
Tutorials
This section will link into a series of general tutorials that exercise the Stack and give astronomers a feel for what it’s like to use both the command line tasks and the Python API.
Command Line Tasks
This section will be a gateway for all command line task (pipeline) documentation. I’m putting it here because a lot of astronomers will be focused on this interface. There will be two parts to this section:
-
General user guides for command line tasks: how they can be run; how they are configured; and how command line tasks can be strung together to form whole pipelines.
-
A reference section linking to pages documenting all command line tasks from across the Stack. These tasks will be organized into topical groups and ordered by flow of execution.
API Guide
This section will link to the user guides of individual packages (i.e., content in the doc/
directories of each package’s Git repository).
At the highest level, the API Guide section will be divided into topical subsections. For example, groupings of all the measurement packages, all the obs
packages, all the butler and data access packages, etc… These subsections can have an umbrella guide that covers the API topic as a whole, and orients the user towards what each package does. There might also be tutorials that specifically focus on this part of the api.
Within the API topic subsection would be the user guides for each package. I expect these user guides will be similar to the user guides that astropy produces for their subpackages (e.g. see the astropy.table user guide as a great archetype). The main sections of each package’s user guide are:
- Introduction — A brief statement of what the package is for and a high-level list of key features)
- Getting Started — If appropriate, a section with examples show what it’s like to use the API)
- Using {{package name}} — detailed user guides covering all of the API’s functionality and behaviour
- Task Reference — A section linking to the detailed reference documentation for each task and command line task
- Python API Reference — A section linking to the detailed API reference pages for all Python classes and functions, i.e., content from docstrings.
- C++ API Reference — A section linking to the complementary API reference oriented to C++ consumers.