Kibana: [Meta] Migrate Kibana plugins to TS project references

Created on 14 Oct 2020  ยท  15Comments  ยท  Source: elastic/kibana

Documentation
Preparatory work https://github.com/elastic/kibana/issues/46773

App team

@elastic/kibana-app
Issue https://github.com/elastic/kibana/issues/84750

  • โš ๏ธ Circular dependency between charts <--> expressions
  • โš ๏ธ Circular dependency between charts <--> vis_default_editor
  • โš ๏ธ Circular dependency between vis_default_editor <--> visualizations
  • โš ๏ธ Circular dependency between vis_default_editor <--> visualize
  • โš ๏ธ Circular dependency between visualizations <--> visualize

| plugin | migration status|
|--------|-----------------|
|discover_enhanced|๐Ÿ”ด|
|lens|๐Ÿ”ด|
|graph|๐Ÿ”ด|
|advanced_settings|๐Ÿ”ด|
|charts| ๐Ÿ”ด|
|discover|๐Ÿ”ด|
|management|๐Ÿ”ด|
|kibana_legacy (https://github.com/elastic/kibana/pull/80992)|โœ…|
|timelion|๐Ÿ”ด|
|vis_default_editor|๐Ÿ”ด|
|vis_type_metric|๐Ÿ”ด|
|vis_type_table|๐Ÿ”ด|
|vis_type_tagcloud|๐Ÿ”ด|
|vis_type_timelion|๐Ÿ”ด|
|vis_type_timeseries|๐Ÿ”ด|
|vis_type_vega|๐Ÿ”ด|
|vis_type_vislib|๐Ÿ”ด|
|vis_type_xy|๐Ÿ”ด|
|visualize|๐Ÿ”ด|
|visualizations|๐Ÿ”ด|

AppArch team

Blockers:

  • โœ… Circular dependency between data <--> expressions #80510
  • โš ๏ธ Circular dependency between uiActions <--> embeddable
  • โš ๏ธ Circular dependency between uiActions <--> data #82047
  • โš ๏ธ Circular dependency between uiActions <--> embeddable #82047

@elastic/kibana-app-arch

| plugin | migration status|
|--------|-----------------|
| bfetch | ๐Ÿ”ด |
|data | ๐Ÿ”ด |
|embeddable | ๐Ÿ”ด |
|expressions | ๐Ÿ”ด |
|inspector (#81792)| โœ… |
|kibana_react | โœ… |
|kibana_utils | โœ… |
|navigation | ๐Ÿ”ด |
|share (#82051) | โœ… |
|ui_actions | ๐Ÿ”ด |
|data_enhanced | ๐Ÿ”ด |
|embeddable_enhanced | ๐Ÿ”ด |
|ui_actions_enhanced | ๐Ÿ”ด |

APM team

  • โš ๏ธ Circular dependency between apm <--> infra

@elastic/apm-ui
| plugin | migration status|
|--------|-----------------|
| apm (#81003) | ๐Ÿ”ด |
|apm_oss (#81003) | ๐Ÿ”ด |

Canvas team

@elastic/kibana-canvas
| plugin | migration status|
|--------|-----------------|
| canvas | ๐Ÿ”ด |
|dashboard_enhanced|๐Ÿ”ด|
|dashboard|๐Ÿ”ด|
|input_control_vis|๐Ÿ”ด|
|vis_type_markdown|๐Ÿ”ด|

Core UI team

@elastic/kibana-core-ui
| plugin | migration status|
|--------|-----------------|
| home | ๐Ÿ”ด |
| kibana_overview | ๐Ÿ”ด |
| global_search_bar | ๐Ÿ”ด |

Logs metrics UI team

@elastic/logs-metrics-ui
| plugin | migration status|
|--------|-----------------|
| infra | ๐Ÿ”ด (#80995) |

Ingest management team

~@elastic/ingest-management~ will be done by @elastic/kibana-platform team
| plugin | migration status|
|--------|-----------------|
| ingest_manager (https://github.com/elastic/kibana/issues/82220) | ๐Ÿ”ด |

Observability UI team

@elastic/observability-ui
| plugin | migration status|
|--------|-----------------|
| observability | ๐Ÿ”ด |

Stack monitoring UI team

@elastic/stack-monitoring-ui
| plugin | migration status|
|--------|-----------------|
| monitoring | ๐Ÿ”ด |

Uptime team

@elastic/uptime
| plugin | migration status|
|--------|-----------------|
| uptime | ๐Ÿ”ด |

ML team

@elastic/ml-ui
| plugin | migration status|
|--------|-----------------|
| ml | ๐Ÿ”ด |
| transform | ๐Ÿ”ด |

Maps team

@elastic/kibana-gis
| plugin | migration status|
|--------|-----------------|
| maps | ๐Ÿ”ด |
| maps_legacy | ๐Ÿ”ด |
| file_upload | ๐Ÿ”ด |
| maps_legacy_licensing | ๐Ÿ”ด |
| tile_map | ๐Ÿ”ด |
| region_map | ๐Ÿ”ด |

Operations team

@elastic/kibana-operations
| plugin | migration status|
|--------|-----------------|
| src/dev | ๐Ÿ”ด |

Platform team

@elastic/kibana-platform
| plugin | migration status|
|--------|-----------------|
| src/core | โœ… |
| features | ๐Ÿ”ด |
| global_search | โœ… |
| cloud | ๐Ÿ”ด |
| licensing | โœ… |
| status_page | ๐Ÿ”ด |
| saved_objects | ๐Ÿ”ด waiting for data|
| saved_objects_management | ๐Ÿ”ด |
| saved_objects_tagging | ๐Ÿ”ด |
| beats_management | ๐Ÿ”ด |

Security team

Blockers: โš ๏ธ Circular dependency between security <--> spaces https://github.com/elastic/kibana/issues/80496~~ (resolved via https://github.com/elastic/kibana/pull/81891)

@elastic/kibana-security
| plugin | migration status|
|--------|-----------------|
| security_oss (#82135) | โœ… |
| spaces | ๐Ÿ”ด |
| encrypted_saved_objects | ๐Ÿ”ด |
| security | ๐Ÿ”ด |

Kibana telemetry team

@elastic/kibana-telemetry
| plugin | migration status|
|--------|-----------------|
| kibana_usage_collection (https://github.com/elastic/kibana/pull/81265) | โœ… |
| newsfeed (https://github.com/elastic/kibana/pull/81254) | โœ… |
| telemetry (https://github.com/elastic/kibana/pull/81090) | โœ… |
| telemetry_collection_manager (https://github.com/elastic/kibana/pull/81090) | โœ… |
| telemetry_management_section | ๐Ÿ”ด |
| usage_collection (https://github.com/elastic/kibana/pull/81090) | โœ… |
| telemetry_collection_xpack (https://github.com/elastic/kibana/pull/81269) | โœ… |

Kibana Alerting team

@elastic/kibana-alerting-services
| plugin | migration status|
|--------|-----------------|
| alerts | ๐Ÿ”ด |
| actions | ๐Ÿ”ด |
| event_log | ๐Ÿ”ด |
| task_manager | ๐Ÿ”ด |
| triggers_actions_ui | ๐Ÿ”ด |
| stack_alerts | ๐Ÿ”ด |

Enterprise Alerting team

@elastic/enterprise-search-frontend
| plugin | migration status|
|--------|-----------------|
| enterprise_search | ๐Ÿ”ด |

Elasticsearch UI team

@elastic/es-ui
| plugin | migration status|
|--------|-----------------|
|dev_tool (https://github.com/elastic/kibana/pull/82197) | โœ… |
|console| ๐Ÿ”ด |
|es_ui_shared| ๐Ÿ”ด |
|cross_cluster_replication| ๐Ÿ”ด |
|index_lifecycle_management| ๐Ÿ”ด |
|console_extensions| ๐Ÿ”ด |
|es_ui_shared| ๐Ÿ”ด |
|grokdebugger| ๐Ÿ”ด |
|index_management| ๐Ÿ”ด |
|license_management| ๐Ÿ”ด |
|painless_lab| ๐Ÿ”ด |
|remote_clusters| ๐Ÿ”ด |
|rollup| ๐Ÿ”ด |
|searchprofiler| ๐Ÿ”ด |
|snapshot_restore| ๐Ÿ”ด |
|upgrade_assistant| ๐Ÿ”ด |
|watcher| ๐Ÿ”ด |
|ingest_pipelines| ๐Ÿ”ด |

Security Solution team

Blockers: โš ๏ธ Circular dependency between security_solution <--> lists https://github.com/elastic/kibana/issues/80513
Blockers: โš ๏ธ Circular dependency between actions <--> lists
Blockers: โš ๏ธ Circular dependency between security_solution <--> case

@elastic/siem
@elastic/endpoint-app-team
| plugin | migration status|
|--------|-----------------|
|endpoint| ๐Ÿ”ด |
|siem| ๐Ÿ”ด |
|security_solution| ๐Ÿ”ด |
|case| ๐Ÿ”ด |
|lists| ๐Ÿ”ด |

Logstash team

@elastic/logstash
| plugin | migration status|
|--------|-----------------|
|logstash| ๐Ÿ”ด |

Reporting team

@elastic/kibana-reporting-services
| plugin | migration status|
|--------|-----------------|
|reporting| ๐Ÿ”ด |

Meta

Most helpful comment

For those following along, we've eliminated the circular dependency between the security and spaces plugins via https://github.com/elastic/kibana/pull/81891

All 15 comments

@restrry for our planning purposes, is there a target release or deadline for this effort? ty

@ryankeairns @timroes
Making every plugin an independent TS project is a prerequisite for Phase 2 of https://github.com/elastic/kibana/issues/69706. That @elastic/kibana-operations team plans to start in v7.12 (cc @tylersmalley, @mistic)
Ideally, all the plugins migrate to TypeScript projects in v7.11, beginning of v7.12.
The main blocker at the moment is data plugin, I suppose (cc @lukeelmers)

Ack @restrry -- we're sorting out how we want to handle the changes required for data and I'll report back once updates are being made

@restrry According to the docs migration order matters, so plugins at the leaves of the dependency tree won't be able to begin migration until their dependencies have been migrated. Because of the sequential nature of this work, I'd like to set expectations. There are 6 weeks until feature freeze, and ES UI's apps have many unmigrated dependencies. For example, here are Index Management's dependencies:

      data
      expressions
      uiActions
      management
      features
      visTypeTimelion
      visualizations
      embeddable
      savedObjects
      discover
      charts
      visDefaultEditor
      navigation
      security
      taskManager
      securityOss
      spaces
      advancedSettings
      savedObjectsManagement
      dashboard
      esUiShared
      ingestManager
      encryptedSavedObjects
      cloud

Looking at how many dependencies remain to be migrated and how much time remains in the dev cycle, it seems likely that we'll be unblocked with a week or two remaining. This is also typically the time when we're focused on polishing and testing new features in preparation for feature freeze. Sometimes we uncover bugs or opportunities for improvement that we need to execute on in order to ship. With this in mind, i think there's a high probability that some percentage of ES UI's apps (~75%) won't be migrated to TS projects by 7.11 feature freeze.

It's also very likely that the security team's plugins won't be migrated either, as we first have to resolve the circular dependency between security and spaces. I've been working on a POC for this, but time has not been on my side this week. And based on CJ's list ^, we are one of the teams blocking their work.

I am rather surprised that Index Management has a dependency on the spaces plugin though. Is that transient by way of another dependency?

@legrego Yes, it's a transient dependency. Here's the package.json. It has an optional dependency upon security, which is probably the cause of the spaces transient dependency.

i think there's a high probability that some percentage of ES UI's apps (~75%) won't be migrated to TS projects by 7.11 feature freeze.

It's okay. It's not a user-facing feature at the end of the day. All the teams have some space in 7.12 to wrap up this work until @elastic/kibana-operations team starts introducing the new building toolchain.

@restrry Same heads-up from Kibana App side. This was not part of our 7.11 planning. We will try to squeeze some things where possible in, but I'd expect the majority of our plugins not to be migrated in the 7.11 time frame and hopefully we'll be able to get the majority done up to 7.12.

@restrry The Logstash team doesn't currently have any UI engineers and we will need someone to take over this work. Is this something you or your team can help with?

@roaksoax I''ll help out, but logstash depends on home, and data transitively, so it's probably going to be blocked from getting its own tsconfig set up until those are done.

The data plugin is the big rock sitting in the way of this work. I'd say 90% of plugins can't be completed right now because of dependencies on data.

Once that one has the circular dependencies resolved and its references set up it will make things a lot smoother. I've been working a bit on this so I'll try to help out where I can.

Data plugin is next thing on my list to look at; we know it's holding up everyone else. Will report back here with updates.

Update: I have a PR up for resolving the circular dependencies in the data/expressions plugins. A PR will be on the way soon for the uiActions ones.

Once we address those, I'll have a PR which cuts over data, uiActions, and expressions to project refs all in one go, which should unblock a bunch of other plugins.

For those following along, we've eliminated the circular dependency between the security and spaces plugins via https://github.com/elastic/kibana/pull/81891

@lukeelmers any progress on the data plugin migration to project refs?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

stacey-gammon picture stacey-gammon  ยท  3Comments

snide picture snide  ยท  3Comments

MaartenUreel picture MaartenUreel  ยท  3Comments

spalger picture spalger  ยท  3Comments

ctindel picture ctindel  ยท  3Comments