-
Notifications
You must be signed in to change notification settings - Fork 8.5k
Description
the functionality in ui/public is exposed to all plugins. It has things like query bar logic, embeddable stuff, filters, courier, saved objects, some ui components, etc. Having this open directory is a problem for us though:
- Any change we make inside this massive folder is a potential breaking change for a plugin author.
- It's mostly undocumented
- It's filled with legacy code we don't want to continue being used (a lot of angular)
As we strive for a system that is more supportive of our plugin developers, we would like to fix this and replace it with code that has clear boundaries and exposes only very specific functionality. An API, that if changed, we know to issue BWC (backward compatibility) breaking change warnings, and an API that is also well documented.
This means migrating away from ui/public. We came up with a few locations the different types of folders belong in:
src/core- New platform for services central to the new platform; save to object etc. basicspackages: stateless libraries, utilities...src/plugins: visualizer, dashboard, index strings, canvas,...src/legacy/ui/public: Stuff that will be going away and isn't worth migrating anywhere.
We got together in Dublin and came up with this separation. It could go for another review, but this gives us a place to start.
src/core
- fonts
- favicons
- auto_load/settings
- auto_load/styles
- chrome
- query ES (related to the courier)
- state management
- error_allow_explicit_index => courier
- error_auto_create_index => saved objects
- error_url_overflow =>
- global_state, app_state
- kfetch
- modals (utils?)
- notify
packages
- agg_response
- visSDK (incl. number_list)
- point_series
- tabify
- bucket implementation
- metrics
- agg_type
- "smart" ES querying: here or in src/plugin
- utils, math, crypto
- field_wildcard_match
- kuery
- markdown
[src/plugin]
- autocomplete
- visEditor sidebar (with
draggable) - Discover (doc_table, doc_viewer)
- field_editor
- filter_bar (time queries as well)
- filter_editor
- filter_manager
- index_patterns
- inspector
- management
- embeddables
src/legacy/ui/public
- icon - disused already
- images
- jQuery
- checkbox Moved to watcher
- dirty_prompt (dissolve) Deleted
- es_errors
- es_client
- factories
- factories
- factory_forms
- agg_table Moved into table_vis
- paginated_table Moved into table_vis
- parse_query
- partials
- filters (angular) part 1
- fancy_forms moved to vis editor
- pager, pager_control => Moved to doc_table
- number_list => visSDK Reactified and moved to agg_types
- filter_bar Moved to data plugin
- table_info Deleted
- compat (angular)
- watcher
- ml
- kibana size picker
- debounce (angular)
- xpack hacks
- fixed scroll
- angular_bootstrap
- tabs removed
- dropdown removed
- progressbar removed
- pagination, timepicker, typeahead removed
- tooltip
- modal moved to ML
- bindHtml (currently used by tooltip and ml)
- auto_load (except auto_load/settings and auto_load/styles)
- accessibility
- directives Loaded explicitly removed
- filters Loaded explicitly removed
- modules Part 1
- bind (angular thing, an event emitter cleanup) to be replaced w/ rxjs
- render directive
- visualize editor
- accessibility => EUI
- chrome => moves to core/chrome
- config (angular)
- courier => replaced (in part? in full?) with the pipeline
- flot_charts
- i18n
- indexed_array
- listen
- kbn_top_nav
- Deprecate old directive Deprecate kbn-top-nav directiveย #55309
- documentation_link (per app)
- collapsible_sidebar
- vis editor
- discover