# Design

**URL:** https://discourse.kitware.com/c/smtk/design/12.md

[Latest](https://discourse.kitware.com/latest.md) · [Categories](https://discourse.kitware.com/categories.md)

---

## [About the Design category](https://discourse.kitware.com/t/about-the-design-category/475)

<div class="topic-metadata">

**Author:** [@kitware-sysadmin](https://discourse.kitware.com/u/kitware-sysadmin)\
**Replies:** 0

</div>

This category is for announcing, proposing, and discussing SMTK features, architectural changes to the SMTK API, and user interface components in SMTK. If you want to discuss what release something should be in, please …

---

## [Views for task interaction](https://discourse.kitware.com/t/views-for-task-interaction/1445)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 0\
**Last updated:** [January 21, 2025, 5:09pm UTC](https://discourse.kitware.com/t/views-for-task-interaction/1445 "2025-01-21T17:09:31Z")

</div>

Component and Resource Visibility One thing that has come up in task-based workflows is the need for users to control visibility of components and resources during specific tasks. We are considering creating a qtBaseView…

---

## [Project Templates](https://discourse.kitware.com/t/project-templates/1461)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 1\
**Last updated:** [February 11, 2025, 10:29pm UTC](https://discourse.kitware.com/t/project-templates/1461 "2025-02-11T22:29:26Z")

</div>

Currently Projects are defined by a single JSON file and though JSON is an excellent format for machine driven I/O, it can be cumbersome for project designers to define new types of projects and workflows. In addition, t…

---

## [Task editor tooltips](https://discourse.kitware.com/t/task-editor-tooltips/1439)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 0\
**Last updated:** [January 8, 2025, 7:38pm UTC](https://discourse.kitware.com/t/task-editor-tooltips/1439 "2025-01-08T19:38:12Z")

</div>

I was debugging data-flow in a workflow and found adding an HTML tool-tip to port nodes to be useful to show connections (and when the connected object is a port, the port’s data in their roles) to be useful. In the …

---

## [Refactoring tasks](https://discourse.kitware.com/t/refactoring-tasks/1355)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 2\
**Last updated:** [November 18, 2024, 4:28pm UTC](https://discourse.kitware.com/t/refactoring-tasks/1355 "2024-11-18T16:28:02Z")

</div>

Problem Description We have customers interested in combining the behaviors of multiple tasks. For example, as part of a single task, users may need to edit an attribute resource as well as run an operation. The task’s s…

---

## [Making Attribute Views Thread-safe](https://discourse.kitware.com/t/making-attribute-views-thread-safe/1335)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 1\
**Last updated:** [August 14, 2024, 9:18pm UTC](https://discourse.kitware.com/t/making-attribute-views-thread-safe/1335 "2024-08-14T21:18:18Z")

</div>

Currently when the UI sets an Item value of an Attribute, it simply calls the appropriate method on the instance. Prior to asynchronous operations this was the appropriate thing to do. However, since operations can be …

---

## [Supporting Custom Relevancy Functions for Enums](https://discourse.kitware.com/t/supporting-custom-relevancy-functions-for-enums/1312)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 1\
**Last updated:** [June 14, 2024, 7:59pm UTC](https://discourse.kitware.com/t/supporting-custom-relevancy-functions-for-enums/1312 "2024-06-14T19:59:47Z")

</div>

In addition to supporting information with discrete enumerated values, smtk::ValueItem also contains a method that returns a list of relevant enums. In 24.01, an emum value is considered relevant based on the following: …

---

## [Dealing with "Flexible" Units](https://discourse.kitware.com/t/dealing-with-flexible-units/1291)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 9\
**Last updated:** [June 3, 2024, 8:33pm UTC](https://discourse.kitware.com/t/dealing-with-flexible-units/1291 "2024-06-03T20:33:18Z")

</div>

In SMTK, units information can be associated with Attribute Value Items (via their Definitions) and is used make sure that users are setting the Item’s value using units that are comparable with those in its Definition. …

---

## [Expanding Category Constraints](https://discourse.kitware.com/t/expanding-category-constraints/1275)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 1\
**Last updated:** [April 16, 2024, 9:14pm UTC](https://discourse.kitware.com/t/expanding-category-constraints/1275 "2024-04-16T21:14:25Z")

</div>

Category Constraints indicate if an Attribute or Item is considered relevant based on a set of category strings. Typically this set is represented as the current set of active categories that has been specified by an An…

---

## [Design Proposal for Changing Tasks Workflows (Major Changes)](https://discourse.kitware.com/t/design-proposal-for-changing-tasks-workflows-major-changes/1255)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 2\
**Last updated:** [March 20, 2024, 11:43am UTC](https://discourse.kitware.com/t/design-proposal-for-changing-tasks-workflows-major-changes/1255 "2024-03-20T11:43:15Z")

</div>

This discourse is to discuss possible major changes related to how tasks are connected via adaptors. How Task Workflows are currently modeled in SMTK. In SMTK 24.01, a workflow is represented as a set of Tasks that are …

---

## [Gather Resources Task UI Design](https://discourse.kitware.com/t/gather-resources-task-ui-design/1248)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 1\
**Last updated:** [March 12, 2024, 9:17pm UTC](https://discourse.kitware.com/t/gather-resources-task-ui-design/1248 "2024-03-12T21:17:18Z")

</div>

In the process of designing a User Interface for the Gather Resources Task and there are a couple of architectural issues. The main one is how to display the UI needed to aid the user in selecting Resources from the Pro…

---

## [Cloning resources](https://discourse.kitware.com/t/cloning-resources/1240)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 0\
**Last updated:** [March 3, 2024, 3:26am UTC](https://discourse.kitware.com/t/cloning-resources/1240 "2024-03-03T03:26:29Z")

</div>

Prior Work Last year, we introduced versioning and document-updating for attribute resources; this allows attribute resources to have a “template type” (which roughly corresponds to a set of definitions) and a “template …

---

## [Updaters and worklets](https://discourse.kitware.com/t/updaters-and-worklets/1151)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 1\
**Last updated:** [November 3, 2023, 5:10pm UTC](https://discourse.kitware.com/t/updaters-and-worklets/1151 "2023-11-03T17:10:37Z")

</div>

Hi @Bob\_Obara, as I am reviewing the worklet MR, I am becoming more sure that smtk::resource::Component should not have a schema and version. If components are going to mirror BRep-like model entities, that would be a lo…

---

## [Adding Task Galleries to Projects](https://discourse.kitware.com/t/adding-task-galleries-to-projects/1143)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 5\
**Last updated:** [October 26, 2023, 2:47pm UTC](https://discourse.kitware.com/t/adding-task-galleries-to-projects/1143 "2023-10-26T14:47:27Z")

</div>

Currently, the user interface support for Task Workflows allows the user to create and follow predefined workflows. Kitware is actively looking to extend this to allow a user to build their own workflows from a gallery …

---

## [Extending \`TypeContainer\` for run-time objects](https://discourse.kitware.com/t/extending-typecontainer-for-run-time-objects/1139)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 0\
**Last updated:** [September 28, 2023, 2:08pm UTC](https://discourse.kitware.com/t/extending-typecontainer-for-run-time-objects/1139 "2023-09-28T14:08:23Z")

</div>

Proposal: Add a RuntimeTypeContainer In order to support run-time arc and node types for graph resources, I’m proposing to create a new RuntimeTypeContainer that inherits TypeContainer: it would hold objects by their e…

---

## [Supporting Units in SMTK's Attribute Resource](https://discourse.kitware.com/t/supporting-units-in-smtks-attribute-resource/984)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 16\
**Last updated:** [May 30, 2023, 4:38am UTC](https://discourse.kitware.com/t/supporting-units-in-smtks-attribute-resource/984 "2023-05-30T04:38:25Z")

</div>

Current “Support” of Units In SMTK 23.01, a designer can set the units of any ValueItemDefinition which is the base class used to represent String, Integer, and DoubleItem Definitions. The units are represented as a str…

---

## [Adding Parameterized Blocks to SBT Files](https://discourse.kitware.com/t/adding-parameterized-blocks-to-sbt-files/1013)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 3\
**Last updated:** [June 28, 2023, 8:12pm UTC](https://discourse.kitware.com/t/adding-parameterized-blocks-to-sbt-files/1013 "2023-06-28T20:12:34Z")

</div>

This page extends the proposed changes to Item Blocks mention in here. In the current implementation, the contents of an ItemBlock are copied exactly. I proposed extending this to allow for parameterization of the Bloc…

---

## [Progress on the task subsystem](https://discourse.kitware.com/t/progress-on-the-task-subsystem/982)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 7\
**Last updated:** [April 22, 2023, 10:25pm UTC](https://discourse.kitware.com/t/progress-on-the-task-subsystem/982 "2023-04-22T22:25:14Z")

</div>

The task system in SMTK was developed to a point but not integrated with (1) SMTK workflows or (2) SMTK’s GUI components. We are now moving forward with these aspects of the design. The merge request for the first part …

---

## [Further Extending ItemBlocks](https://discourse.kitware.com/t/further-extending-itemblocks/994)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 3\
**Last updated:** [March 21, 2023, 2:10pm UTC](https://discourse.kitware.com/t/further-extending-itemblocks/994 "2023-03-21T14:10:11Z")

</div>

Since SMTK 23.01, there have been requests to further expand the ItemBlock capabilities which include the following: New Types of Blocks Discrete Blocks There are times when you want to have multiple Items to “share” th…

---

## [Saving nodal UI geometry between sessions](https://discourse.kitware.com/t/saving-nodal-ui-geometry-between-sessions/993)

<div class="topic-metadata">

**Author:** [@johnt](https://discourse.kitware.com/u/johnt)\
**Replies:** 8\
**Last updated:** [March 10, 2023, 4:51pm UTC](https://discourse.kitware.com/t/saving-nodal-ui-geometry-between-sessions/993 "2023-03-10T16:51:25Z")

</div>

This an is adjunct to the task subsystem discussions (Design Issues, Progress) specifically directed at storing the nodal UI geometry offline. The initial thinking is outlined below. Strawman The graphical node layout…

---

## [Thoughts on Versioning SMTK Attribute Resources](https://discourse.kitware.com/t/thoughts-on-versioning-smtk-attribute-resources/912)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 6\
**Last updated:** [March 4, 2023, 6:53pm UTC](https://discourse.kitware.com/t/thoughts-on-versioning-smtk-attribute-resources/912 "2023-03-04T18:53:22Z")

</div>

The question was raised recently as to how to update an existing Attribute Resource w/r to an updated template specification. Here are some of my thoughts on the topic. To handle the most general case where attribute p…

---

## [Design issues around tasks and projects](https://discourse.kitware.com/t/design-issues-around-tasks-and-projects/931)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 4\
**Last updated:** [March 4, 2023, 5:48pm UTC](https://discourse.kitware.com/t/design-issues-around-tasks-and-projects/931 "2023-03-04T17:48:07Z")

</div>

Projects and Task Configuration This page is to discuss some upcoming design decisions we have to make about tasks, projects, their user interfaces, and workflows in general. There are several issues that constrain how…

---

## [Versioning Resources in SMTK](https://discourse.kitware.com/t/versioning-resources-in-smtk/972)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 3\
**Last updated:** [February 13, 2023, 4:40pm UTC](https://discourse.kitware.com/t/versioning-resources-in-smtk/972 "2023-02-13T16:40:17Z")

</div>

In SMTK, each Resource and Component is giving an UUID to uniquely identify the Resource or Component regardless of where it is located. However, we do have the issue of how to deal with the case where the Resource or i…

---

## [Expanding ItemBlock Usability](https://discourse.kitware.com/t/expanding-itemblock-usability/915)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 3\
**Last updated:** [December 9, 2022, 8:31pm UTC](https://discourse.kitware.com/t/expanding-itemblock-usability/915 "2022-12-09T20:31:17Z")

</div>

Currently ItemBlocks are defined within the file-scope of an attribute template file. Recently it has been asked if instead ItemBlocks could be made available to all template files that have an include path to the file …

---

## [Proposed Changes to Attribute Copy and Item Assignment Methods](https://discourse.kitware.com/t/proposed-changes-to-attribute-copy-and-item-assignment-methods/913)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 7\
**Last updated:** [October 16, 2022, 3:13pm UTC](https://discourse.kitware.com/t/proposed-changes-to-attribute-copy-and-item-assignment-methods/913 "2022-10-16T15:13:43Z")

</div>

I’m working on extending the copyAttribute method in attribute::Resource to allow the following: Setting the new attribute’s UUID to be the same as the original attribute (assuming it is being copied into a different r…

---

## [Operational model for SMTK](https://discourse.kitware.com/t/operational-model-for-smtk/896)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 5\
**Last updated:** [October 12, 2022, 2:33pm UTC](https://discourse.kitware.com/t/operational-model-for-smtk/896 "2022-10-12T14:33:00Z")

</div>

There is currently a bug in SMTK that allows operation observers to run after the operation’s resource locks have been released. This results in other operations modifying the same resources while observers attempt to up…

---

## [Runtime definition of graph resources](https://discourse.kitware.com/t/runtime-definition-of-graph-resources/911)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 1\
**Last updated:** [October 12, 2022, 3:25am UTC](https://discourse.kitware.com/t/runtime-definition-of-graph-resources/911 "2022-10-12T03:25:30Z")

</div>

Problem statement There are times when a graph resource’s node and arc types may need to be extended at run-time rather than compile time. The current design provides type-safety but also requires all the node and arc ty…

---

## [Extending Category Inheritance to Support Restrictive Constraints](https://discourse.kitware.com/t/extending-category-inheritance-to-support-restrictive-constraints/845)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 3\
**Last updated:** [June 29, 2022, 5:57pm UTC](https://discourse.kitware.com/t/extending-category-inheritance-to-support-restrictive-constraints/845 "2022-06-29T17:57:09Z")

</div>

Background SMTK’s Attribute Category Modeling is based on Categories::Set. A Category::Set represents the category constraint directly associated with an Attribute::ItemDefinition or Attribute::Definition. It is compos…

---

## [Improving Default Layouts for Attribute Items](https://discourse.kitware.com/t/improving-default-layouts-for-attribute-items/846)

<div class="topic-metadata">

**Author:** [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Replies:** 1\
**Last updated:** [June 14, 2022, 3:43pm UTC](https://discourse.kitware.com/t/improving-default-layouts-for-attribute-items/846 "2022-06-14T15:43:07Z")

</div>

In SMTK 22.04, ValueItems were laid out horizontally if they were not extensible and were not discrete with children items, else they were laid out vertically. A bug in QtTableWidget which fails to sometimes calculate t…

---

## [Potential changes to the graph resource](https://discourse.kitware.com/t/potential-changes-to-the-graph-resource/742)

<div class="topic-metadata">

**Author:** [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Replies:** 1\
**Last updated:** [May 10, 2022, 1:45am UTC](https://discourse.kitware.com/t/potential-changes-to-the-graph-resource/742 "2022-05-10T01:45:03Z")

</div>

Graph resource changes We are considering 2 changes to the graph resource. They are not directly related, but since both would impact downstream users of graph resources, we are considering doing them at the same time or…

[Next page](https://discourse.kitware.com/c/smtk/design/12.md?page=1)
