Package design document #87
Replies: 5 comments 4 replies
-
Design document templateTitle: Design of the {packagename} packagePackage title: The title taken from Package description: The description taken from Use caseWhat is the current intended usage of the package;
Example from {epidemics}, which is used to model vaccine or intervention impacts, and is considered a 'late stage' package.
Package concept and motivation
ScopeWrite a little bit about the scope of the package within the wider package and analytics ecosystem. Be open about where the intended use-case boundaries are, what features are not (currently) included, and reasons why. Future developmentWhat are the future directions of development - if a feature or method is not currently included, explain what it is, and when it might be added. Limitations and disclaimerWhat are the limitations of the package - what does it or will it not include. Example:
Potentially, add a disclaimer about package use for legal or other reasons. Package design and componentsWhat are the conceptual components of the package, these could be epidemiological or biological concepts represented by package classes or data structures. Figures are useful. See example figure for {epidemics}. Design principlesWhat are the design principles - this section blends into the next section, Components.
ComponentsHow are the package components actually designed, that is, how are the package concepts translated into code. This is initially intended to be light on technical details. Add the technical details in the next section, Implementation. Example:
This is a good place to describe in general terms:
Implementation (P2)Use this section to describe how the principles and components in the package are actually implemented in code. Example:
Dependencies (P2)What are the dependencies and design decisions around them,
Package usageHow is the package intended to be used, with a very small pseudocode example for non-technical readers to understand. Pseudocode example (P1)Does not have to be detailed, the main functionality of the package explained in a few lines of pseudocode. Use-case example(P2)Later, an actual use-case can be shown - this is similar to the examples shown in package Readmes. Package contribution (P2)Write how users and developers should contribute to the package - this can be through pull requests or issues, but also through contribution functionality built-in. Note: This is different from the |
Beta Was this translation helpful? Give feedback.
-
Thanks for your work on this! It'll be helpful to have a template to inform what kind of information needs to be included in this document and make sure we don't forget anything. My main concern is having package information spread over multiple repositories. This complexifies maintenance and increased the risk that information in the online book becomes out of date. A solution might be to keep the source of this file in the package repo and to automatically create a book that collects all these vignettes via the GitHub API. This script would also automatically create the first section ("Title: Design of the {packagename} package") from the Comments by section:
|
Beta Was this translation helpful? Give feedback.
-
Hi all, thank you for all the feedback. Moving forward with the primary task of having a design document in each Epiverse-TRACE package, we have decided on a few of action points.
As part of this task we will:
The intended final outcome from this task will be that a design principles vignette is present in every Epiverse-TRACE package. This vignette will not have length or formatting requirements; in it's minimal form it can be a couple of bullet points. We hope that moving forward this will improve the contribution pathway for Epiverse-TRACE packages as part of co-creation and decentralising code ownership within the open-source community. Please give feedback on this proposal. @pratikunterwegs and I will start working on it over the coming weeks. |
Beta Was this translation helpful? Give feedback.
-
Progress on task: Epiverse-TRACE packages have been reviewed and those containing a design vignette are: {episoap} and {simulist}.
Good sections to include in the design principles vignette have been listed with suggested content in a design vignette template and is being suggested as an addition to the {packagetemplate} (epiverse-trace/packagetemplate#97). Next steps: Arrange calls with Epiverse-TRACE package maintainers to explain benefit of design vignette and advice all to add a short vignette to their packages. |
Beta Was this translation helpful? Give feedback.
-
Closing this discussion as resolved for now by epiverse-trace/packagetemplate#97 and epiverse-trace/packagetemplate#99. Tagging @joshwlambert in case you feel it should stay open. |
Beta Was this translation helpful? Give feedback.
-
This discussion is to introduce and get feedback on @joshwlambert and my template and thoughts for Epiverse-TRACE package design documents.
It's fairly long, and the template is in the next comment.
These are initial ideas and we are very happy to get and update them and the template based on input. Thanks also to @jd-otero whose design doc for {iraca} was also referred to while drafting the template.
Design document ideas
We see package design documents as having at least two goals:
These goals map only roughly to locations along a user-developer spectrum; both users and developers might benefit from both aspects.
We propose that Epiverse-TRACE packages should have two design documents:
The second document would be a subset of the first.
We intend that package design documents should be living documents, which are updated throughout development. Some sections might only be written once the package is in development and practical challenges are encountered and resolved. The document is intended to be a place to document (briefly) the design decisions taken to resolve these challenges. We mark some sections in the template document as P1 for phase 1 sections (can be written before package development), and P2 for phase 2 sections (can be written once the package is in development and basic use cases are working).
We also intend that the documents should be modular and reusable, such that sections can be usefully copied into documentation such as the package vignettes or the repository Readme.
Creation
We propose the following creation options for these documents:
.Rmd
or.qmd
), so that it can be included in the package repo, presented as package vignette, and potentially combined into a larger collection (see below).Storage
We propose the following storage and presentation options for the general and user-developer facing documents:
We also propose the creation of an online collection of the user-developer facing (or even the general) design documents, as a book or website, in a repository called
et_design_docs
. Each package could have its own chapter or page. These chapters would be taken automatically from the package design vignettes via an automated workflow. Collecting the documents together would create a comprehensive reference for how Epiverse-TRACE thinks about R packages. This would link with Blueprints, while having a distinct focus.Beta Was this translation helpful? Give feedback.
All reactions