desipartart
: Design Partition is Art
Concept:
Can we investigate and assess the quality and features of the design of some software by looking at how files have changed over time? By looking at which files change together, based on change sets from the history from a version control system?
Look at index.html
for more.
-
Treat files as unique entities based on full path
-
Look at "packages" based on directories, but not nested (like Java packages)
-
Look at nesting, based on directories - split paths
-
Follow file renames (includes moving folder?)
-
(Optionally) include/exclude self-links
-
(Optionally) include/exclude unlinked files
-
Exclude edges representing fewer than N changes
- Combine with exclude "unlinked" files - unlinked if edge is excluded
-
Combine trees based on paths - for example, treat these two files as being in the same package even though the paths differ:
src/main/java/org/ayeseeem/example/Example.java
src/test/java/org/ayeseeem/example/ExampleTest.java
Could either merge
src/main/
andsrc/test
(merge one into the other), or perhaps just stripsrc/main/
andsrc/test
- less meaningful, but maybe easier? -
Keep track of dates and warn if log is not in chronological order (implying
--reverse
was not used to create the log).- Or better yet, automatically detect/fix order
- Does order matter if not using/following renames?
-
Exclude/Include commits on input based on prefix (or Conventional Commits prefix), regex, SHA.
- Update live based on Exclude/Filter by.
- Display shorter filenames? (what about duplicates?)
- Is there a "pending" animation we can add to graph?
- Highlight linked files when you select a Node. Or an Edge.
- Use an up-to-date version of visjs instead of
vis.js ?
- Don't use the Cloudflare one, install locally
- Extract and encapsulate graph/network concept
- Use
vis.DataView
to filter displayed data without modifying source data https://visjs.github.io/vis-network/examples/network/data/dynamicFiltering.html - Prefer
=>
(arrow function expression) for short functions where possible
- How come
package-info.java
is linked to so many files? Because it was added with a lot of files? Do we want/need to distinguish between file add and file change? - Why are there so few (no) leaf nodes?
The licence for this code is TBD, but it will be a liberal licence like Apache or MIT.
- vis.js
vis-network (used for network graph
visualisation) is dual
LICENSE-APACHE-2.0
andLICENSE-MIT
. - Plotly.js (used for various visualisations) is
MIT License
LICENSE
. - Jasmine (used for unit tests) is
MIT.LICENSE
.