Examining Chunks for Future Refactoring
Problem
Working with our existing chunk organization is difficult to work for a number of reasons, but the major issue is the design. Currently, the design is inconsistent, the organization is confused, they confuse different kinds of knowledge necessary for Drasil's various facilities. Additionally, the design has not kept up with what we think about Drasil and how knowledge should be gathered and organized. Overall, the chunks need to be redesigned.
Objective
To redesign and rationalize Drasil's chunks.
Plan
The plan is fairly obvious, at the least for the start:
-
Diagram them. Diagramming them will let us take ignore the code and focus on the greater organization. A tool like Mermaid UML class diagrams should be helpful for this. The diagram should contain information about:
- The typeclasses we form and which chunks satisfy which typeclasses.
- Which chunks are "standalone" vs "nested"/Which chunks are allowed to inherit a UID from another.
- Which chunks deeply embed other chunks (a bad thing! they should exclusively carry references).
- Analyze them and plan refactoring. TODO.
- Refactor them. TODO.
- Document them. TODO.
Tracking Status
1. Diagramming
- [ ]
drasil-lang:- [ ]
IdeaDict-- #4030 - [ ]
ConceptChunk,ConceptInstance-- #4031 - [ ] ?
- [ ]
- [ ] ?
2. Analyzing
TODO.
3. Refactoring
TODO.
Note
This ticket is probably related to a ton of other issues in our issue tracker. Being mindful of them is probably good, but only after we've examined the existing structures.
Since this kind of work is very time-consuming, @JacquesCarette @smiths, I'm going to wait until you've both reviewed #4030 and #4031 to make sure what I'm doing is good + should be continued. For drasil-lang, the goal will be that I, in tandem:
- Move things from
Language.Drasilnamespace toDrasil.$X$namespace, where $X$ is something more appropriate than whatever it is currently under. - Document the related chunks and typeclasses in a Mermaid UML diagram.
This scheme will be followed for all packages.