I accidentally posted a reply here, when I meant to move it to a new thread. And although there is mention of it above, I wanted to just make a new reply here to make sure @B_Sp saw it was a reply to this topic. Will be more careful about which thread I am replying to in the future.
My team has come up on this again as we build out new areas with multiple levels. We are building some multi-level structures in a software system. Basically, three apps, One has 4 levels, the other 3. There structures are in turn connected to a couple of types of Dev work items in other apps: We have multiple story types (Technical, User) and related tasks and bugs.
As we build it out, we are seeing that in some cases, structures don’t all have four levels. There are items on level three, or two even, that are the end of that particular “tree.” The stories need to link to the item that is being built, though. So without Polymorphic, in order to have the relation of a story to all levels I need, I have to have three Types in the hierarchy relate to the Story Type in the other App. This is getting very unwieldy. Or, I have to artificially create items in my structures down to the bottom level of each app, even though in reality this may not reflect how my structure looks.
This is basically a repeated instance of multiple examples I already posted in this thread, but just wanted to add yet another use case here.
Glad to see we’re up to 10 votes here, really hoping for some movement on this soon!
I don’t mean to be the primary torch holder of those of us really eager for this feature, but since it is about 1/2 year since @mdubakov weighed in here, would love to get another update on the team’s thoughts around this. I’m aware we have a good deal of visibility into what you are working on right now, such as blocks and new Entity View - both of which I eagerly anticipate. But my team still has a bunch of big things we want to do in Fibery, mainly around hierarchies we need to represent, that are blocked by the lack of Polymorhpic.
Would even be happy to hear if you guys think this might be addressed in the next 1/2 year, or not till 2023, etc.
In closing I’ll just add that if you can get this live, it will be one of Fibery’s truly differentiating features in the market and I think you guys should leverage it when completed to pick up some of the networked-thought folks flocking to Roam/Notion etc. as those tools have nothing like this. And I’m sure they don’t even have it thought through and on the dev radar yet, you guys have a leg up here!
I have a concrete issue that relates to polymorphic relations:
First, i have a bunch of cases for which we need to allocate time periods and people. But the cases belong to different entities, e.g. Contracts we are delivering on, marketing Campaigns, and business Opportunities we need to develop. We feel the need to have the planning aspects in one place.
So, i have created a Case DB with one-to-one relations to each of those three. The Case entity contains fields that all three need, and the three separate entities contain the fields that are unique to each. So, a Case should only by linked to one Contract OR one Campaign OR one Opportunity. Essentially, Contracts, Campaigns, and Opps subclass the Case class with their unique fields.
The other option would be to give Cases the union of all fields of those three entities, and replace the separate entities with a category label. But that leaves a lot of unused fields, and invites the risk of using the wrong fields for a given category.
My “inheritance” or data deduplication system works, but there is no protection against multi-classing a Case by mistake (linking a Case to both an Opportunity and a Campaign, for instance) which messes our planning up because we double-book resources.
I would like to collect Contracts, Campaigns, and Opportunities under a group label and give Cases a one-to-one relation to that group. I believe this use case falls under the umbrella of Polymorphic relations.
Just wanted to check in and see if there is any specific update on when this important feature might come out? The need continues to grow for my team as our Fibery instance grows and we add in some new uses, such as some customer management, tracking of vendors, and other business stuff that Fibery is well-suited to manage.
Personally I’m hoping that when we get some form of “field hiding” (soon??), that it will be dynamic, i.e. have the ability to hide different fields depending on the current value of some single-select field. Just like a Formula or Rule. And ideally, also based on what View is currently being displayed.
@mdubakov Hey! I think this concept of polymorphic relations is really interesting. I’ve been working a lot with graph databases like ArangoDB, where you get polymorphic relations built in. There are some things it’s not quite as good at compared to relational databases (where you can rely upon a schema), but with modern stacks, it’s still fast enough without schemas to work just fine for me.
That’s sort of a ramble. My main point is that I’m really interested, conceptually, in how Fibery works, and I’m wondering if you’d ever be willing to share, publicly or confidentially, the architure of the platform. I’m not interested in stealing intellectual property or using it to build a competitor or anything; I’ve just enjoyed learning more about how products like yours - that are sort of on the forefront of what humanity has ever seen before - work. What makes polymorphic relations difficult? How does Fibery represent all the users’ different types in a database? What kind of database are you using?
Anyways, I’d love to pick your brain. If you’re ever trying to solve difficult technical challenges, I’d love to pitch in!
Has anybody explored using a rich text field with a specific syntax and item linking as a workaround for this? I assume entity references are available in rich text fields through the API, and if you can use Fibery automations to enforce specific rich text syntaxes, and use some kind of button-and-user-input-popup to change the relations inside, that might work.
Before I jump in and try it out, I’d like to hear if anybody else has already tried this.
It is theoretically possible, but I’d not recommend it.
Extracting references from rich text is a PITA.
References are great for adhoc relations where you don’t need to leverage them elsewhere.
As soon as you want to build upon them (formulas, automations, lookups) they become less useful.
Anything you built might get superseded by genuine polymorphism at some point so your work would be wasted.
For the time being, if you must have links to many dbs, it’s probably better to just use multiple relations and optimise the UX/UI with thoughtful relation views and field hiding.
If you can afford to wait a while, that’s probably going to yield the best result
I, too, wonder if the concept of ‘tags’ wouldn’t accomplish a lot here. Creating a new entity type and then associating it with lots of other entity types (if I understand that’s what’s being suggested) seems a little like overkill for many use cases, if a person could just create some tags that can be applied all over the place in Fibery.