DEV Community

DevLog 20250619: Modularization Improvements

Overview

When it comes to software scalability, proper code management is one of the key factors that facilitates collaboration and the growth of software features. It enables us to offload complexity, define abstractions, and reuse code across components.

As a general-purpose visual programming language, Divooka is designed from day one with modularization and scalability in mind, so it can be used not only for scripting, but also for large-scale software development.

Graph Inputs, Outputs, and Summoning Graphs

In Divooka, you can reuse existing graphs by "summoning" them - the graph becomes an ordinary node with inputs and outputs.

Summon Example

Inside the graph, its inputs and outputs are defined with Inputs and Outputs nodes.

Inputs and Outputs Nodes

Challenges

There are a few challenges to ensure complete implementation:

  1. A single document may contain multiple graphs
  2. Should we allow multiple Inputs and Outputs nodes in a single graph?
  3. A graph may be procedural, in which case the concept of "output" is less obvious.

Implementation

Today I improved the Noe graph editor GUI by allowing users to drop files directly from the file system to create a graph reference, while holding the Ctrl key. Previously, this action would only open a new graph.

Drop File to Open Document

Ctrl Drop File to Summon Document

For other ordinary file types, the editor now automatically creates a Path node.

Drop Many Files to Create Reference

The grouping operation has gone whole lot smarter as well.

Smarter Grouping

On the procedural context front, work is still ongoing to support the use of summoned graphs.

Top comments (0)