We have a schema, and it is open for extension.
It should be possible to filter an OST to show more or less detail.
Less depth for a simplified view of just the top layers
Less breadth to focus in on an area
Less density to exclude ideas that aren't in focus (eg leave out status: identified
I'm hoping we can define a simple filter language or find an existing one that's human friendly and works with json. Todoist filters are a good reference - they support basic boolean logic(| and & and parens), some keywords that translate to specific filters (eg "today", "@Label"). Another source of inspiration might be something akin to CSS or XPath selectors.
Let's do a top down and bottom up investigation of options - top down for good filter approaches, bottom up for existing low level json filtering - then see where they meet.
We'll also need to reconcile how relationships and hierarchies are selected. I don't necessarily want to go down a graphql path. A simple rubric might be that nodes that match the filter will also always include all of their parent nodes (even if parent nodes don't match a criteria; or possibly unless parent nodes don't match a specific filter criteria related to traversal). We might need a separate "where clause" (ie filter) and "select/include clause" (ie what to include from the matching objects and across relationships).
Example use cases to be fleshed out further, but off the top of my head:
- High level selected opportunities (no solutions or experiments) - select
opportunity where ( wondering | exploring ) & opportunity (all layers above implied)
- Detail view of a goal - select
goal where "Increase MAU" (title match) include goal to experiment
- All nodes reachable by parent links up and/or child links down from a given node
We have a schema, and it is open for extension.
It should be possible to filter an OST to show more or less detail.
Less depth for a simplified view of just the top layers
Less breadth to focus in on an area
Less density to exclude ideas that aren't in focus (eg leave out
status: identifiedI'm hoping we can define a simple filter language or find an existing one that's human friendly and works with json. Todoist filters are a good reference - they support basic boolean logic(
|and&and parens), some keywords that translate to specific filters (eg "today", "@Label"). Another source of inspiration might be something akin to CSS or XPath selectors.Let's do a top down and bottom up investigation of options - top down for good filter approaches, bottom up for existing low level json filtering - then see where they meet.
We'll also need to reconcile how relationships and hierarchies are selected. I don't necessarily want to go down a graphql path. A simple rubric might be that nodes that match the filter will also always include all of their parent nodes (even if parent nodes don't match a criteria; or possibly unless parent nodes don't match a specific filter criteria related to traversal). We might need a separate "where clause" (ie filter) and "select/include clause" (ie what to include from the matching objects and across relationships).
Example use cases to be fleshed out further, but off the top of my head:
opportunitywhere( wondering | exploring ) & opportunity(all layers above implied)goalwhere"Increase MAU"(title match) includegoaltoexperiment