sageserpent-open / kineticMerge

Merge a heavily refactored codebase and stay sane.
MIT License
12 stars 2 forks source link

Design documentation. #44

Closed sageserpent-open closed 5 months ago

sageserpent-open commented 6 months ago

What is says on the tin.

Describe:

  1. How Kinetic Merge sees its problem-space world.
  2. The component breakdown.
  3. Sources (aka sides - worth mentioning the nuanced difference between these names).
  4. Sections.
  5. Matches.
  6. Section merging and why it is sections that are merged and not tokens. Code motion detection.
  7. How merging relates to the longest common subsequence.
  8. Merge algebras.
  9. CodeMotionAnalysis - and the odd sequence of match determination and then cleanup, and why it is done this way.
  10. Fingerprinting.
  11. Main.
sageserpent-open commented 6 months ago

Also, it's worth describing some of the blind alleys taken - the genetic algorithm, token-based merging.

Also why Rabin fingerprinting has been replaced by simpler rolling hashing.

Three-way partitioning deserves its obituary too.

Not doing two scans for matches should be explained.

The attempts at dealing with matches for single elements, digraphs and trigraphs should also be mentioned.

Breaking down sections into one-token sections when filling gaps.

Tweaking the metric used by LongestCommonSubsequence.

Allowing ambiguity in LongestCommonSubsequence to look for alternative, better three-way merges.

sageserpent-open commented 5 months ago

Done!