Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate and Document the Intent of each Chunk #3086

Open
samm82 opened this issue Nov 2, 2022 · 6 comments
Open

Investigate and Document the Intent of each Chunk #3086

samm82 opened this issue Nov 2, 2022 · 6 comments
Assignees
Labels
documentation Documentation of Drasil itself - how to install, how to use, build system etc.

Comments

@samm82
Copy link
Collaborator

samm82 commented Nov 2, 2022

This issue will be worked on in a wiki page.


While there is some documentation in the wiki and through Haddock surrounding the "what" of each chunk in Drasil, there isn't much "why", which can lead to some chunk types being chosen for a use case where they aren't the best fit. We want to remedy this by documenting what each chunk semantically represents (at a deeper level than just what it contains, while still being brief!) along with examples of code to actually see how this all works together.

For example, DefinedQuantityDict is defined by the Haddock documentation as "the combination of a Concept and a Quantity. Contains a ConceptChunk, a Symbol dependent on Stage, a Space, and maybe a UnitDefn. Used when we want to assign a quantity to a concept. Includes the space, symbol, and units for that quantity." However, this description never explains why we would want to assign a quantity to a concept.


This was motivated by #2704 in an attempt to find the rationale behind creating DefinedQuantityDicts in the first place, and will provide some background on #1658 to see why certain chunks are used (and why we often have to merge a Quantity and Concept into a DefinedQuantityDict).

@samm82 samm82 added the documentation Documentation of Drasil itself - how to install, how to use, build system etc. label Nov 2, 2022
@samm82 samm82 self-assigned this Nov 2, 2022
@smiths
Copy link
Collaborator

smiths commented Nov 2, 2022

This issue sounds good to me @samm82.

@JacquesCarette
Copy link
Owner

Looks good to me as well.

What I'm expecting will be needed is to first document the "parts" that go into each chunk (description, unit, space, etc) and their rationale. The chunks are then unions of parts. Chunks are then naturally partially ordered by inclusion of parts. Parts themselves are also partially ordered - it makes no sense to have a unit if there is no quantity.

@peter-michalski
Copy link
Collaborator

I appreciate that you made this issue @samm82 . The "why" surrounding Drasil's current chunks is something that I too will need to understand and critique.

When I do look into this myself I am planning on a review of previous issues, and re-reads of Drasil papers. I do wonder how much of the background information (and conversations) that led to the decisions to create some of the current chunks is tacit knowledge though.

@JacquesCarette
Copy link
Owner

Lots and lots was only discussed in meetings. There are bits and pieces on the wiki. However, I don't think it is so hard to reconstruct, as we did try to give things meaningful names (to record fields), so some of our intent is recorded. The chunk names themselves are sometimes good, sometimes bad.

@peter-michalski
Copy link
Collaborator

I thought of this issue when looking at MUChunk. It would be nice if deprecated chunks, their usage, rationale, and rationale for deprecating them, were also documented in the wiki, or in another artifact. That way developers could better understand how and why Drasil encoding has progressed to where it is today. Perhaps a time might come when developers need to resurrect deprecated chunks, or at least reference their documentation to avoid, or improve, going down an already explored path. It might be tedious to do this retroactively, and it might not be feasible to remember/find all deprecated chunks, but once the current chunks are documented it would be great if we avoid removing them from the documentation if they are ever deprecated, and instead tag them and add design decision rationale for deprecation.

Design documentation that includes deprecated data structures, and details the rationale, seems like it could be quite useful in domains that require developing a knowledge encoding.

@JacquesCarette
Copy link
Owner

I agree. But first, we need to document our basic design!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Documentation of Drasil itself - how to install, how to use, build system etc.
Projects
Status: In progress
Development

No branches or pull requests

4 participants