Kibana: App Architecture roadmap for New Platform migration

Created on 25 Feb 2019  Β·  4Comments  Β·  Source: elastic/kibana

This tracks work for migrating all areas owned by App Architecture team to the New Platform.

Phase I: Move πŸ“¦

_Shimming and moving code from ui/public and legacy plugins into shims._

7.2

**Prep Work** - [X] Delete unused items in `ui/public` [#26505] @lizozom - [X] Move in `ui/public` that are only imported in one place [#26505] @lizozom - [X] Document (re)moved items [#33289] @lukeelmers + @lizozom - [X] Initial data plugin framework [#34350] @lukeelmers - [x] Initial embeddables plugin framework [#31941] @stacey-gammon **ui/public modules** - [X] draggable -> moved to ui/vis - [x] fancy_forms -> [moved to vis editor](https://github.com/elastic/kibana/pull/39977) - [x] [filters](https://github.com/elastic/kibana/pull/34555) -> data @lizozom - [x] modals -> [leave behind](https://github.com/elastic/kibana/pull/39976) - [x] number_list -> moved to agg_types - [x] [query_manager](https://github.com/elastic/kibana/pull/36683) -> deleted @lizozom - [x] parse_query - [x] check_box - [x] debounce - [x] dirty_prompt - [x] factories - [x] icons - [x] partials - [x] sortable_column - [x] table_info - [x] toggle_button - [x] toggle_panel - [x] tooltip **Legacy Plugins** - [X] visualization_editor [#35627] @wylieconlon @flash1293

7.3

**Prep Work** - [x] Initial visualizations plugin framework @lukeelmers [#35625] **ui/public modules** - [X] agg_table -> moved into table_vis - [x] pager -> [discover](https://github.com/elastic/kibana/pull/39975) - [x] pager_control -> [discover](https://github.com/elastic/kibana/pull/39975) - [x] paginated_table -> moved to table_vis - [x] doc_table -> moved to discover - [x] doc_viewer -> moved to discover - [x] utils/parse_es_interval -> data (shim only) [#39091] @timroes - [x] [apply_filters](https://github.com/elastic/kibana/pull/36778) -> data @lizozom - [x] [filter_bar](https://github.com/elastic/kibana/pull/37347) -> data @lizozom - [x] [filter_manager](https://github.com/elastic/kibana/pull/37311) -> data @lizozom - [x] [query_bar](https://github.com/elastic/kibana/pull/37162) @lizozom - [x] [search_bar](https://github.com/elastic/kibana/pull/37162) -> data @lizozom - [x] utils/brush_event -> moved to ui/vis/vis_filters @lukeelmers **Legacy Plugins** - [x] markdown_vis -> vis_type_markdown [#38767] @ppisljar

7.4

**ui/public modules** - [x] inspector -> inspector plugin @streamich - [x] markdown -> [kibana-react](https://github.com/elastic/kibana/pull/42684) @lizozom - [x] timepicker -> [kbn_top_nav](https://github.com/elastic/kibana/pull/40603) @lizozom - [x] kbn_top_nav -> kibana-react [#39341][#39518][#40262][#39981][#41900] @lizozom - [x] utils/parse_es_interval -> data (remove directory) [#42917] [#40553] @alexwizp - [x] courier -> leave behind @lukasolson - [x] embeddable -> embeddables [#40489] @streamich - [x] error_allow_explicit_index -> leave behind w courier @lukasolson - [x] [index_patterns -> data](https://github.com/elastic/kibana/issues/43438) [#39247][#40555] @lukeelmers **Legacy Plugins** - [x] timelion -> vis_type_timelion [#38244][#41667] [#43197] [#44039] @alexwizp @Avinar-24 - [x] metrics -> vis_type_tsvb [#38615][#39169] @alexwizp @Avinar-24 (note: shimming part was done, renaming blocked by #33558) - [x] inspector_views -> inspector [#43191], [#43349] @alexwizp 🚧 - [x] metric_vis -> vis_type_metric [#41669][#42240] @alexwizp 🚧 - [x] region_map -> ~vis_type_maps~ region_map [#40966] [#40966] @alexwizp @Avinar-24 🚧 - [x] table_vis -> vis_type_table [#41248][#38245][#40732][#41248] @alexwizp 🚧 - [x] tagcloud -> vis_type_tagcloud [#41249][#42348] @alexwizp 🚧 - [x] tile_map -> ~vis_type_maps~ tile_map [#41265] [#41265] @alexwizp - [x] vega -> vis_type_vega [#38247][#39915][#40032][#41750][#42582] @alexwizp 🚧

7.5

**ui/public modules** - [x] timefilter -> data @lizozom 🚧 (moved from 7.4) - [x] searchsource -> data @lukeelmers @ppisljar (moved from 7.4) - [x] [registry -> deprecate; remove all usages of `ui/registry`](https://github.com/elastic/kibana/issues/36705) (moved from 7.4) - We have about ~7 `uiRegistries` on our plate left, some of them will be killed in 7.5, others in 7.6 - [x] `exit_full_screen` -> `kibana-react` - [x] autocomplete_providers -> data(https://github.com/elastic/kibana/issues/42864) - [x] listen -> copy/leave behind - [x] indexed_array -> remove, used in `uiRegistry`, `IndexedPatterns`, other - [x] [`ui/saved_object` React components](https://github.com/elastic/kibana/issues/42865) **Legacy Plugins** - [x] [interpreter](https://github.com/elastic/kibana/issues/44153) @streamich

7.6

**ui/public modules** - [x] [`vis`, `vislib`, `visualize` -> visualizations](https://github.com/elastic/kibana/issues/44121) [#35625][#44839] (moved from 7.4) - [x] management -> management [#38610] @elastic/kibana-app-arch - [x] share -> NP - [x] [value_suggestions -> data (straight to NP)](https://github.com/elastic/kibana/pull/45762) - [x] [`field_wildcard` -> `data/management` or `kibana_utils`](https://github.com/elastic/kibana/pull/45235) - [x] [`storage` πŸ‘‰ `src/kibana_utils/storage`](https://github.com/elastic/kibana/issues/47160)

7.7

**ui/public modules** - [x] management -> advanced settings -> settings

7.x

  • [x] Management [#47431] [#47531]

Phase II: Refactor πŸ› 

_Rewiring stateful dependencies, de-Angularizing, Jestifying, TypeScriptifying, NP-readyfying._

  • [x] [Embeddables](https://github.com/elastic/kibana/issues/40489)
  • [x] [Expressions](https://github.com/elastic/kibana/issues/44153)
  • [x] [Filters and Queries](https://github.com/elastic/kibana/issues/44377)
  • [x] [Index Patterns](https://github.com/elastic/kibana/issues/43438)
  • [x] [Management App](https://github.com/elastic/kibana/issues/47022)
  • [x] Search #44659 #42639
  • [x] [State Management](https://github.com/elastic/kibana/issues/44151)
  • [x] [Visualizations](https://github.com/elastic/kibana/issues/44121)

Phase III: Cutover πŸŽ‰

_Moving a plugin from the legacy world to the New Platform—it's when code has moved out of src/legacy and into src/plugins._

__AppArch Plugins__

  • [x] bfetch
  • [x] data

    • [x] data.indexPatterns

    • [x] [index patterns management UI](https://github.com/elastic/kibana/issues/51322)



      • migration of ui extension points is blocking rollups



    • [x] data.filter

    • [x] data.query

    • [x] data.timefilter

    • [x] data.ui

    • [x] data.search

    • [x] aggs legacy API removal

  • [x] dashboard_embeddable_container
  • [x] embeddable
  • [x] expressions
  • [x] inspector
  • [x] management
  • [x] navigation
  • [x] kibana_react
  • [x] kibana_utils

    • [x] state management scoped history support [#58137]

  • [x] ui_actions
  • [x] visualizations
  • [x] x-pack: advanced_ui_actions
  • [x] x-pack: data_enhanced (includes kuery autocomplete)

Other items that need to happen before 8.0

  • [x] Miscellaneous "Other" Items #51560
  • [x] Migrate App Arch uiSettings #63480
  • [ ] Zoom party πŸŽ‰

Resources

NP Migration Meta AppServices

Most helpful comment

The @elastic/kibana-design team's thoughts around that top menu is to remove it altogether as a component that plugins must extend. We're seeing more and more that each application is using their own style of "menu bar" – for good reason as most plugins are unique.

Instead, what we should provide is more of an established pattern and/or component in EUI. This way, they should all look and behave the same but don't rely on a heavily dictated service within Kibana. The design team can add this to our roadmap for 7.4 as something that should be thought out.

You're welcome to move all those current services to where appropriate but I probably wouldn't put effort into expanding the capabilities.

All 4 comments

If you’re splitting plugins, I recommend splitting oss_telemetry to visualize_telemetry, dashboard_telemetry, etc. as appropriate.

@elastic/kibana-app-arch we were long discussing where to move kbn_top_nav.

What is it?

kbn_top_nav is a UI component has the following features:

  • Displaying the top menu (New, Edit, Help menus etc)
  • Extending said menu with custom items using a registry (currently NavBarExtensionsRegistryProvider)
  • It currently has an element that can be used to display a inline piece of UI. This option is being used only by DevTools, and these custom pieces should be moved to a flyout and this capability deprecated (@AlonaNadler, @elastic/eui-design )
  • Supports adding additional content using $transclude. This is being used to inject things like

    • SearchBar

    • QueryBar

    • Timepicker

    • etc.

Where should it go?

I would like to suggest that kbn_top_nav is a react helper for apps and app developers to create and enrich menus. As such, I believe the new platform implementation should reside in the kibana-react plugin.

The @elastic/kibana-design team's thoughts around that top menu is to remove it altogether as a component that plugins must extend. We're seeing more and more that each application is using their own style of "menu bar" – for good reason as most plugins are unique.

Instead, what we should provide is more of an established pattern and/or component in EUI. This way, they should all look and behave the same but don't rely on a heavily dictated service within Kibana. The design team can add this to our roadmap for 7.4 as something that should be thought out.

You're welcome to move all those current services to where appropriate but I probably wouldn't put effort into expanding the capabilities.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

rashidkpc picture rashidkpc  Β·  116Comments

srl295 picture srl295  Β·  104Comments

panda87 picture panda87  Β·  206Comments

doubret picture doubret  Β·  105Comments

AlexIoannides picture AlexIoannides  Β·  138Comments