[Feature Request] Graph View
Feature Request: Graph View
Is your feature request related to a problem? Please describe.
This feature request aims to meet the following objectives:
- Expand the market share of ownCloud Infinite Scale (oCIS) among end users.
- Increase the product value of oCIS among corporations that use SaaS services for collaborative mindmap, concept maps, and knowledge maps.
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:
- Title of the resource.
- Description of the resource (node-specific).
- Tags of the resource (or virtual node).
- Resource Type (e.g., document, spreadsheet, webpage).
- Per User Read Status (optional: enabled in settings).
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
- Filter: By Collection (Tag), Children, etc.
- Source of Truth: Determines what the graph uses as a source of truth for nodes. See QA for details on the difference between each option.
- Files (Default): Use oCIS files and their references to display the graph (similar to Obsidian).
- Show External Links as Nodes: Enabling this option creates nodes for referenced external resources with an oCIS file.
- Manual: Nodes that point to a file or external link can be created and stored in $LOCATION. Users define connections at the Spaces level.
- Files (Default): Use oCIS files and their references to display the graph (similar to Obsidian).
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.
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
- No Graph View.
- Freeform Graph Software.
- Non-Collaborative Graph Software.
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.
- 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).
- 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:
- An optimal oCIS extension backend implementation (see https://github.com/owncloud/ocis/issues/6503 for scope) is determined (preferably by owncloud developers).
- For sponsorship or salary.
Otherwise, this feature request is published in an Open Source Software environment, available to all for implementation.
@switchupcb How is your current status in connection to this idea?
From owncloud, this is not on our roadmap in the foreseable future.
@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.
Freeplane View
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.