owncloud / ocis

:atom_symbol: ownCloud Infinite Scale Stack
https://doc.owncloud.com/ocis/next/
Apache License 2.0
1.31k stars 170 forks source link

[Feature Request] Graph View #6558

Open switchupcb opened 1 year ago

switchupcb commented 1 year ago

Feature Request: Graph View

Is your feature request related to a problem? Please describe.

This feature request aims to meet the following objectives:

The use case for this feature request is present in popular software such as Obsidian, Roam Research, and Logseq.

Describe the solution you'd like

Show a graph view of oCIS files and references (with an oCIS Graph View extension).

Example: Obsidian

https://forum.obsidian.md/t/design-talk-about-the-graph-view/22594 (contains images).

Example: D2

https://d2lang.com/ (contains diagrams and images).

oCIS Graph View extension

Use customized nodes instead of circle nodes (obsidian) or freeform nodes (d2) to represent nodes: oCIS nodes are structured nodes of resources (e.g., oCIS files, URL references to webpages) that show:

  1. Title of the resource.
  2. Description of the resource (node-specific).
  3. Tags of the resource (or virtual node).
  4. Resource Type (e.g., document, spreadsheet, webpage).
  5. Per User Read Status (optional: enabled in settings).

ocis-graph-view-node

Views

The views of this extension are Graphical User Interface (GUI) components that users can use to view nodes.

Graph

See Obisidian and D2 examples above.

Options

Node

A view of the single node for editing purposes. This view is similar to editing a document.

Main Window Side View

User, Group, Spaces Thread similar to the Google Drive Document, or NextCloud Document Comment Feature.

ocis-graph-view-notes

Let the user filter visible notes by User, Group, and Spaces (similar to #6504).

File (Graph)

Introduce a "graph file" (e.g., .graph) that lets the user configure the graph view settings within the file. Then, when the "graph file" is rendered (while using an oCIS client), the main window of the Graph View extension will display the respective graph.

Describe alternatives you've considered

Context (QA)

What is the difference between a Graph View: Source of Truth: File Node vs. Manual Node?

The file node is based on the files in the oCIS filesystem. The manual node is a virtual node created by the user, which references the files in the oCIS filesystem.

A file node is a unique node: Since file nodes must match the state of the filesystem, the only way to create a duplicate file node (of the same file) is to duplicate the file and rename it.

A manual node holds a reference to a resource: You can create two manual nodes which reference a single file, then assign each node different descriptions and tags without modifying the underlying file. Subsequently, changing the underlying file results in all its virtual nodes updating.

Implementation

I have identified two approaches to the backend implementation of a graph view.

  1. Use the Obsidian approach of a graph view implementation, which involves the usage of a key-store storage solution (i.e., IndexedDB) and position each node using an algorithm (e.g., ELK).
  2. Use an OSS graph database (i.e Dgraph): Store virtual nodes in reference to physical file nodes or "virtual node files" in a folder that is hidden from users.

Resources

I am willing to develop the backend implementation on the following conditions:

  1. An optimal oCIS extension backend implementation (see https://github.com/owncloud/ocis/issues/6503 for scope) is determined (preferably by owncloud developers).
  2. For sponsorship or salary.

Otherwise, this feature request is published in an Open Source Software environment, available to all for implementation.

micbar commented 1 month ago

@switchupcb How is your current status in connection to this idea?

From owncloud, this is not on our roadmap in the foreseable future.

switchupcb commented 2 weeks ago

@micbar

Here are alternative solutions to this feature request.

Graph View via Files: Users use clientside software https://docs.tagspaces.org/perspectives/folderviz/#mindmap-view to load files within the drive.

Graph View via Manual: Users use clientside software https://docs.freeplane.org/ to create graphs with links to files. Features such as "Per User Read Status" may require a plugin.

Tags of the resource (or virtual node) can be achieved through a filename specification, which I can provide an example for later.

switchupcb commented 1 week ago

Freeplane View

Capture

The mindmap import does not update in real time, so a feature similar to this in OCIS that updated in real time would make OCIS appeal to users who use mindmapping software.