nextcloud / nextcloud/text

Version difference extraction

Open
#4,422 4 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
JavaScript
Stars
659
Forks
133
Avg merge
1d 20h
Merged PRs (30d)
110

Description

When trying to summarize changes that happened since a file was last viewed or to compare the difference of versions in a overview we would need a way to extract the difference between two files in some structured way.

When brainstorming with @AndyScherzinger and @marcoambrosini today we came up with the following idea:

  • Generate a simple diff of relevant changes in a CRUD approach, e.g.
    • Paragraph added/removed/updated with content
    • Image inserted/removed
    • Table added/updated/removed
    • List added/updated/removed
  • To give the change more context we could extract the preceding heading as the section the change refers to
  • This way we could generate a changelog style output for any given two documents

As a first step we'd need to:

  • experiment with possible tools we could use to generate the diff
  • remove or group possibly irrelevant changes like single character/word changes
  • figure out a way to find matching section headings and connect them
  • try to represent them in structured data

If this works out fine we can align with the design team on how to further make use of this, some possible candidates:

For implementation we may want approach it in a flexible API approach so that apps could provide their own extractors for file types which could be text for markdown and a different implementation in richdocuments for office files, though that is something to still evaluate in further detail after the first feasibility exploration.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points. Start by experimenting with diff tools for Markdown and document versions, then define structured CRUD changes with relevant headings and grouped edits; done means a feasible representation and extraction approach that can support the listed comparison and summary use cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, markdown
Domain
api, content
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.