Feedback on Platform

Structured Feedback (Work in Progress)

Feedback to Platform team: 9/12/19

Testing of complex functions and large workspaces

When testing the final implementation of a complex function(s) it is sometimes difficult to diagnose where a mis-wiring might occur.

In one instance, we removed a function which had an unforeseen knock on effect on other parts of the model. In another case, we took some time to troubleshoot problems in our logic.

Linh came up with a Development Tool Service which helps in these areas, and which could potentially be further developed and included as a platform standard service. See details below.

Development tools service

Dev Tools service in CSTraining01: https://cstraining01.knowledge.maana.io/service/614e528e-b429-4a33-a3c2-2ab539d16151:

The main goal of the service is helping SMEs and developers do their work faster and easier, by providing the following functionalities:

1. Easy to find problems (Status: Completed, could be adopted as a platform standard service)

  • Given a workspace, list all unimplemented functions.

  • Given a workspace, inspect its functions and report all un-executable ones.

  • Given a workspace, inspect its functions and report all unused functions.

  • Given a function, report all other functions that (directly and indirectly) depends on it.

2. Automation (Status: Proposed idea, first 2 bullets critical)

  • Export all function compositions in json format for backup and/or version control purpose.

  • Import function compositions from json files (automated deployment)

  • Given a service with unimplemented functions, find compatible functions (based on function signature and function name) and automatically compose unimplemented functions with compatible ones.

  • Given a function graph with its nodes, automatically "wire" its nodes based on compatible inputs and outputs.

3. Preventive warning (Status: Proposed idea)

  • Warn developers of the impact of permanently deleting a function (by reporting all functions that depends on it)

  • Warn developers of the impact of modifying/deleting an input of a function.

  • Warn developers of the impact of modifying a kind.

4. Easy Testing and Debugging (Ideas to be discussed)

---

Feedback to Platform team: 8/30/19

Deleting functions requires refreshing of the browser

If you do not refresh, you get an error when trying to do further work, e.g., connecting the output of one function to the input of another one. This is not a major issue, but good if it could be solved.

Open Function in a new Tab

Navigation of a model with a large number of functions is challenging as mentioned in other prior feedback sessions. It would be convenient to the user to be able to visualize multiple knowledge graphs in tabs in the canvas.

Same knowledge graph appears twice on tree

When using a function twice or multiple times in a knowledge graph, it would be more appropriate to show only one instance in the knowledge graph navigation tree.

Being able to search in the tree

The navigation tree of a large workspace can be challenging to navigate. The Inventory panel on the contrary has a Search field, which helps find an element quickly. The Tree could use a similar Search functionality.

Cannot see long function names in canvas

Long function names cannot be visualized in the canvas (example above). It would be good to get the full name throught tooltip or a different means.

Tree does not show all levels of decomposition

We might not understand how the tree works, but as in the example above all the functions shown have sub-functions in it, but it is not possible to access them via the tree.

After Refreshing Browser, tree returns to the top

We need to refresh the browser on ocassion and every time the tree comes back to the top, which makes it difficult to find the knowledge graph you were working on.

-----

Feedback to Platform team: 8/14/19

Support of Additional GraphQL Features

While creating some kinds (WellType in Iris-Alpha) we would like to be able to specify a list of valid values for a field. For example: A field may take either Oil or Gas and not any other value. Currently we cannot have that level of specification (Enum and Union feature).

Adding and Duplicating Functions and Kinds

When adding, duplicating and deleting functions and kinds it takes 10-30seconds for the change to occur. This is on 3.2.0 on CSTraining01.

Finding Services in the Catalog

In Iris we created the Iris Classification service. We think this Service could be re-used in other projects and applications. Part of what we would like to do is to make it easier to find for people interested in it. We added a tag to it, but the Search function does not look for tags.

We would also like to change the icon of the service, so that it is more recognizable to users (The same applies for icons of functions and kinds).

If possible we would also like to have this service deployed in default Maana installations, but this is of course up to the platform team to decide...

Finding Kinds in a Crowded Knowledge Graph

We sometimes find it difficult to find the details of a Kind in a crowded knowledge graph. One option is when selecting a kind from the tree, the platform could bring up the selected kind to the center and zoom in to see the details of the kind.

As the complexity of the solution grows we have difficulties in navigating Functions / Sub-Functions and following logic structures. It is easy to get lost, so there might be some ways to facilitate deep navigation of a complex model.

Creating functions through CLI

It would be good to have a way to create functions through CLI. This would be useful for recreating a workspace if the original one is corrupted or if the user wants to move to a new development environment and leave the stable one intact.

------------------------------------------------------------------

Feedback prior to August, 2019

Annotations

Being able to annotate on the knowledge graph canvas and in kinds and functions could help reinforce the collaborative nature of the platform. We can think of collaboration within a team developing a knowledge model / application, but also with external groups, e.g., platform team reviewing the work of others. Here are a few ideas:

Describing Functions and Kinds (right hand side panel)

The description field for Functions and Kinds is good, but often times, more space is required to explain details of the work in progress. Some other A few options are:

  • Being able to expand the Description onto a larger text editing box, where larger text can be visualized at once (2 paragraphs would be good).

  • Some users would like to have a schematic / visual representation of what a function and/or kind represents. The thumbnailUrl is good, but most people might want to be able to upload a picture from their local drives.

Annotations on Canvas

Understanding the model has to speak for itself, it would be good to have the ability to make annotations on the canvas. A Comments / Review Layer could be hidden or shown, like the Review Mode of MS Word. Here's a few examples:

Another idea could be to follow to use some of the visualization elements that engineers in physical sciences (particularly chemical engineers) are more familiar with. See example below, where a box at the top right includes notes numbered. The kinds, functions and links can contain simply the number of the annotation, similar to what's shown in the example.

Understanding the platform is obviously not meant to represent P&IDs, it might be an idea to consider, to borrow some look-and-feel elements from the physical sciences in the user experience. The first impression the platform brings to a petro-technical person, might be of high unfamiliarity. Bringing some familiar layout concepts might help with adoption. Please consider this as an idea to be discussed in more detail and not a must have...

Status and Ownership Visual Indicators for Kinds and Functions on Canvas

Understanding the status and ownership of functions in a canvas might be a good idea. This could help seeing progress at large and distributing work.

Note this could be applicable also for the tree on the left hand side. Also, not sure if links to Jira tickets has been considered, it could be a good idea.

Adding tags

Searching for services, workspaces, kinds, functions could be improved if there could be a way to tag add tags to them. Not sure if this would be in contradiction with the philosophy of the platform, or if this is already possible by other means...

Creating temporary kinds

When decomposing a function, it is many times needed to go back to the domain model and create new kinds. Often times, we end up creating attributes, or input / output as STRING, go back to create a Kind and then back to the function to change to the Kind.

It would be good to create temporary kinds on the fly while doing function decomposition. These temporary kinds could be flagged to the user, so that they are completed later. Once they are completed, there should not be a need to come back to the functions.

Visualizing connections of Kinds and Functions

It is not easy to see for a Kind or a Function an indication of where they are used. It would be good to be able to see which Functions use a given Kind as Input and Output. In some cases we might end up with Kinds which are not used anywhere, and it is not easy to diagnose if this is the case.

Also, before we want to change the structure of a Kind, we would like to understand the impact of this action in the larger model.

Being able to drag and drop Kinds into a Function Decomposition Canvas

Kinds and Functions can only visually co-exist in the Knowledge Graph Canvas. It would be good if this is still the case for Function Decomposition canvas. In these, only functions are allowed. It is sometimes hard to navigate many windows to find Kinds relevant to the Function Decomposition the user is looking at.

Saving user-specific visualization

When 2 or more people are working on a workspace, one person might open a particular function or knowledge graph. The other person would see the same, so this creates confusion as the 2nd user would not know why his / her current visualization changed. It would be bettter to have different users having their own visualization of the platform.

Being able to model decision-tree type of knowledge as part of function decomposition

A lot of times SME knowledge can be encoded in the form of complex decision trees, which make reference to entities which can be connected to Kinds and Functions in Knowledge Models.

It seems difficult to model conditionals: "If x, then y, else z" with several branches. See example in link for a typical decision tree from one of our projects.

Being able to re-arrange Knowledge Graphs on Left Panel Tree

It would be good if the user can rearrange the order of Knowledge Graphs primarily on the Navigation Tree on the left hand side panel. As it is, items are ordered by creation date, but it would be good to have more flexibility to rearrange them in different orders.

Explore Different Ideas for Visualization of Complex Functions with Operators and Selectors

I think there might be some ways to improve visualization of complex functions. Problems in physical sciences typically can be represented at a high level, with visualizations like the one below, which is from Matlab-Simulink. In Petro-technical domains this type of interface is very popular. I understand a lot of this would not be applicable to Maana, but at the same time, I wanted to show how SMEs in the space would tend to create / visualize complex models.

This visualization below is from VenSim, which is an application used in System Dynamics . Again not fully aligned with our platform, but I think we can still borrow ideas from this. System Dynamics is used to capture the dynamic nature of complex systems of many kinds. In a way it can also be framed as a digital twin of a complex system or a process. Its origin is from introducing a Process Control Engineering concepts to business problems. I can provide extra context in this, as this is one of core domains at MIT.

Last updated