One Good Tutorial: The Plan

The past few posts have been about prep work for my BSSw project: interviews and a survey of tools. After all this throat-clearing, I’m ready to sketch out the resource that I’m actually planning to create!

I plan to call it One Good Tutorial. The target audience will be, of course, developers of small-to-medium scientific software projects. The centerpiece of the project will be a checklist: complete these actions, and you can sleep easy knowing that you’ve documented your project adequately.

One thing that I absolutely want to beat people over the head with is the point that there is more to documentation than API docs. This is the big idea behind Diátaxis, of course, and I’m completely sold on it; and I also believe that it’s an idea that many scientific software developers need to be exposed to. I think this is such a big deal that, well, I let it drive the whole project branding. In particular, I believe that the most important thing that most projects lack is introductory, “getting started”-type material. So: if your docs have One Good Tutorial, you’ve done your job. If the only thing that people retain from being exposed to my project is those three words, I’ll be happy.

I also believe that many scientific software developers don’t feel confident about how they should approach documentation in general. This is, well, totally reasonable: technical writing and information architecture are whole fields of human endeavor, and we’re generally approaching them with no training or support. Realistically, that’s not going to change: the goal is not to train people to become expert technical writers. But I think it will make a real difference if we can help scientific software developers feel like they’re not quite so at sea. Hence the checklist format. I’m hopeful that a checklist will work well to provide both tangible instructions and a rewarding sense of clarity: “OK, I did everything they said I should — gold star for me!”

I also think that such a checklist will fill an unoccupied niche in this space. The Good Docs Project provides templates for authoring specific documents, but doesn’t quite provide the holistic work plan that I think a checklist will offer. The Write the Docs Guide has a lot of resources and guidance but, once again, doesn’t quite meet the needs of someone saying, “Just tell me what to do!”

Another nice aspect of the checklist format, I think, is that it leads to a natural structuring of the resource materials. The core artifact is, of course, the checklist itself, which I’d expect to deliver as both HTML and a PDF one-pager. Then, for each item on the checklist, there will be an associated webpage with deeper explanation, references, and examples. In certain cases this page might be quite short, but in other cases, it could get fairly extensive. Contrast this with “cookbook” or “recipe” format, which tend to be structured more like prose text — which means that the length keeps on increasing as you think of little details or clarifications to throw in. The recipe format also implies that the steps should be followed in strict order, whereas checklists allow for some level of skipping around. I think that’s a good thing in this case.

More specifically, I’m currently envisioning what you might call a “checklist matrix”. The checklist items will mostly correspond to important pieces of documentation that must exist: Tutorial (of course!), Citation Information, Installation Instructions, and so on. These are the rows of the checklist matrix.

But I’m also envisioning four columns corresponding to four phases that I will encourage people to work through: Plan, Draft, Assess, and Revise. The basic guidance would be to go through these phases in order:

  1. Take some time to think about your plan for all of the different components of your documentation. Consider creating a Google Doc, or something similar, to hold notes about your plans.
  2. Actually draft the materials, and do the initial setup of whatever tools you’re going to need to get your docs published.
  3. Assess the complete first draft. Did the process of drafting reveal any problems that need to be fixed?
  4. Revise. Self-explanatory.

I pointedly do not include a “publish” phase, because I think that encourages people to think of the docs as a one-time project: “I wrote them and published them, and now they’re done.” I think it’s important to approach the both the code and the docs as things that are never quite done, which to me means having a mindset oriented around “making releases”, rather than “publishing”.

Here’s my first draft of the rows for the checklist matrix:

Each of these items will have a corresponding article on the One Good Tutorial website, providing advice on how to approach the item in each of the four phases. In at least some cases, these will branch out into more specific how-to pages. For the Authoring Tools and Release Processes items, this is where I will provide specific tool recommendations and step-by-step tutorials on how to handle common scenarios (e.g., using Sphinx and ReadTheDocs to document a pure-Python package; depositing your software to Zenodo). There should be ample opportunity to refer people to existing resources like the Good Docs Project templates. Time permitting, I could also see myself adding supporting “explainers” giving information about, say, the topic of software citation in general.

It will probably also make sense to have a section that I would describe as “Extra Credit”. This would mostly be aimed at slightly larger projects, addressing topics like codes of conduct, organizing multiple tutorials, how-tos, social sites like StackExchange, and so on. There’s no shortage of material that could be written here, but I expect that these topics will be out of scope for most of the developers that I would want to visit One Good Tutorial. And in the end, I’m aiming to reach people rather than projects, so I’d rather be relevant to lots of people working on smaller efforts, even if the bulk of the documentation-reading and -writing that happens might be concentrated on a small number of high-profile pieces of software.

I’m feeling pretty good about this plan, so I’ve gone ahead and registered onegoodtutorial.org, set up a GitHub repo (pkgw/onegoodtutorial), and wired up a static site built with Zola and hosted via GitHub Pages, with deployment automated using GitHub Actions. I am pretty sure that a basic static site generator will suffice for setting up the OGT website; if I run into limitations, it will be easy to rebuild it to use different infrastructure instead.

The work described in this post was supported by a Better Scientific Software Fellowship.

Questions or comments? For better or worse this website isn’t interactive, so send me an email or, uh, Toot me.

To get notified of new posts, try subscribing to my lightweight newsletter or my RSS/Atom feed. No thirsty influencering — you get alerts about what I’m writing; I get warm fuzzies from knowing that someone’s reading!

Earlier: The State of the Doc Tools

See a list of all posts.

View the revision history of this page.