Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Embeddables Rebuild] Meta #167429

Open
18 of 36 tasks
ThomThomson opened this issue Sep 27, 2023 · 1 comment
Open
18 of 36 tasks

[Embeddables Rebuild] Meta #167429

ThomThomson opened this issue Sep 27, 2023 · 1 comment
Labels
Feature:Embeddables Relating to the Embeddable system impact:critical This issue should be addressed immediately due to a critical level of impact on the product. Meta project:embeddableRebuild Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas

Comments

@ThomThomson
Copy link
Contributor

ThomThomson commented Sep 27, 2023

Embeddables Rebuild

Kibana’s Embeddables system is responsible for much of the behavior we see in Kibana today. Our Embeddable infrastructure underpins: Dashboards & Portable Dashboards, the Save and Return flow, drilldowns, Triggers & Actions, Portable Lens and Maps in solutions, the New Controls, much of Canvas, and a lot more.

This system is fundamental to Kibana, but is not well-liked by the engineers who maintain it, or adopt it. This is because it is over-engineered, boilerplate heavy and prescriptive. The Presentation team is planning to:

  • Build a new Embeddables system with the goal of making it adhere to well-known modern React paradigms.
  • Rework each of the 15 existing Embeddable implementations to use the new system
  • Completely remove the old Embeddables system from Kibana.

Investment here can pay major dividends for the future in terms of performance, stability, and expanding which features are possible.

(Prep work) Decouple Embeddables from Kibana

  1. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    ThomThomson
  2. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    ThomThomson
  3. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    nreese
  4. 25 of 36
    Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild

Build the new engine

  1. Feature:Embeddables Team:Presentation impact:critical loe:large project:embeddableRebuild
    ThomThomson
  2. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    ThomThomson
  3. Feature:Embeddables Team:Presentation impact:high loe:medium project:embeddableRebuild
    ThomThomson
  4. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    ThomThomson
  5. Feature:Embeddables Team:Presentation impact:high loe:medium project:embeddableRebuild
    ThomThomson

React Embeddable review checklist

  • test react embeddable factory deserializeState method where rawState: undefined.
  • If embeddable type is "Add to library" menu, remove embeddable type from registerSavedObjectToPanelMethod registry. Register embeddable type in new ??. Also take into account managed state.

Migrate all Embeddables

  1. Feature:Embeddables Team:Presentation impact:critical loe:large project:embeddableRebuild
    Zacqary
  2. Feature:Embeddables Team:Presentation Team:Visualizations impact:critical loe:x-large project:embeddableRebuild
    dej611
  3. Feature:Embeddables Team:Presentation impact:critical loe:large project:embeddableRebuild
    Heenawter
  4. Feature:Embeddables Team:Presentation impact:critical loe:x-large project:embeddableRebuild
    nreese
  5. 1 of 4
    Feature:Embeddables Team:Presentation impact:critical loe:x-large project:embeddableRebuild
    Heenawter
  6. Feature:Embeddables Team:Presentation impact:critical loe:small project:embeddableRebuild
    Heenawter
  7. :ml Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild v8.15.0
    darnautov
  8. :ml Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild v8.15.0
    qn895
  9. :ml Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild v8.15.0
    qn895
  10. 4 of 4
    :ml Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild v8.14.0
    darnautov
  11. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
  12. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    nickpeihl
  13. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    nreese
  14. :ml Feature:Embeddables Team:ML Team:Presentation impact:critical loe:medium project:embeddableRebuild v8.15.0
    alvarezmelissa87
  15. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    nickpeihl
  16. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    nickpeihl
  17. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    nickpeihl
  18. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    nickpeihl
  19. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    mgiota
  20. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    mgiota
  21. Feature:Embeddables Team:Presentation impact:critical loe:medium project:embeddableRebuild
    mgiota

Cleanup

  1. Feature:Embeddables Team:Presentation blocked impact:critical loe:medium project:embeddableRebuild
  2. Feature:Embeddables Team:Presentation impact:critical loe:large project:embeddableRebuild
  3. Feature:Embeddables Team:Presentation impact:high loe:small project:embeddableRebuild
  4. Feature:Embeddables Team:Presentation blocked impact:critical loe:small project:embeddableRebuild
  5. Feature:Dashboard Feature:Embeddables Team:Presentation bug impact:medium loe:medium
  6. Team:Presentation impact:low loe:medium project:embeddableRebuild
@ThomThomson ThomThomson added Meta Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas impact:critical This issue should be addressed immediately due to a critical level of impact on the product. Feature:Embeddables Relating to the Embeddable system labels Sep 27, 2023
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-presentation (Team:Presentation)

Heenawter added a commit that referenced this issue Jan 30, 2024
)

Closes #174703

## Summary

Currently, the burden of determining unsaved changes is handled entirely
by the Dashboard - this means that we need special logic for comparing
the state of every piece of a dashboard, including the controls and the
panels. Once the [embeddable
refactor](#167429) work is
complete, this will no longer be the case; instead, each component will
be responsible for handling its **own** unsaved changes, and the
Dashboard will simply listen for updates.

As an intermediate step, this PR separates out the control group logic
from the Dashboard plugin so that, when it comes time, the transition to
the new embeddable framework will be much smoother. This PR also
unblocks #170396 since, now that
the control group is responsible for handling its own unsaved changes, I
should be able to determine when to enable/disable the "reset changes"
button.


### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
WafaaNasr pushed a commit to WafaaNasr/kibana that referenced this issue Feb 5, 2024
…tic#175146)

Closes elastic#174703

## Summary

Currently, the burden of determining unsaved changes is handled entirely
by the Dashboard - this means that we need special logic for comparing
the state of every piece of a dashboard, including the controls and the
panels. Once the [embeddable
refactor](elastic#167429) work is
complete, this will no longer be the case; instead, each component will
be responsible for handling its **own** unsaved changes, and the
Dashboard will simply listen for updates.

As an intermediate step, this PR separates out the control group logic
from the Dashboard plugin so that, when it comes time, the transition to
the new embeddable framework will be much smoother. This PR also
unblocks elastic#170396 since, now that
the control group is responsible for handling its own unsaved changes, I
should be able to determine when to enable/disable the "reset changes"
button.


### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
WafaaNasr pushed a commit to WafaaNasr/kibana that referenced this issue Feb 6, 2024
…tic#175146)

Closes elastic#174703

## Summary

Currently, the burden of determining unsaved changes is handled entirely
by the Dashboard - this means that we need special logic for comparing
the state of every piece of a dashboard, including the controls and the
panels. Once the [embeddable
refactor](elastic#167429) work is
complete, this will no longer be the case; instead, each component will
be responsible for handling its **own** unsaved changes, and the
Dashboard will simply listen for updates.

As an intermediate step, this PR separates out the control group logic
from the Dashboard plugin so that, when it comes time, the transition to
the new embeddable framework will be much smoother. This PR also
unblocks elastic#170396 since, now that
the control group is responsible for handling its own unsaved changes, I
should be able to determine when to enable/disable the "reset changes"
button.


### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
CoenWarmer pushed a commit to CoenWarmer/kibana that referenced this issue Feb 15, 2024
…tic#175146)

Closes elastic#174703

## Summary

Currently, the burden of determining unsaved changes is handled entirely
by the Dashboard - this means that we need special logic for comparing
the state of every piece of a dashboard, including the controls and the
panels. Once the [embeddable
refactor](elastic#167429) work is
complete, this will no longer be the case; instead, each component will
be responsible for handling its **own** unsaved changes, and the
Dashboard will simply listen for updates.

As an intermediate step, this PR separates out the control group logic
from the Dashboard plugin so that, when it comes time, the transition to
the new embeddable framework will be much smoother. This PR also
unblocks elastic#170396 since, now that
the control group is responsible for handling its own unsaved changes, I
should be able to determine when to enable/disable the "reset changes"
button.


### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
CoenWarmer pushed a commit to CoenWarmer/kibana that referenced this issue Feb 15, 2024
…tic#175146)

Closes elastic#174703

## Summary

Currently, the burden of determining unsaved changes is handled entirely
by the Dashboard - this means that we need special logic for comparing
the state of every piece of a dashboard, including the controls and the
panels. Once the [embeddable
refactor](elastic#167429) work is
complete, this will no longer be the case; instead, each component will
be responsible for handling its **own** unsaved changes, and the
Dashboard will simply listen for updates.

As an intermediate step, this PR separates out the control group logic
from the Dashboard plugin so that, when it comes time, the transition to
the new embeddable framework will be much smoother. This PR also
unblocks elastic#170396 since, now that
the control group is responsible for handling its own unsaved changes, I
should be able to determine when to enable/disable the "reset changes"
button.


### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
fkanout pushed a commit to fkanout/kibana that referenced this issue Mar 4, 2024
…tic#175146)

Closes elastic#174703

## Summary

Currently, the burden of determining unsaved changes is handled entirely
by the Dashboard - this means that we need special logic for comparing
the state of every piece of a dashboard, including the controls and the
panels. Once the [embeddable
refactor](elastic#167429) work is
complete, this will no longer be the case; instead, each component will
be responsible for handling its **own** unsaved changes, and the
Dashboard will simply listen for updates.

As an intermediate step, this PR separates out the control group logic
from the Dashboard plugin so that, when it comes time, the transition to
the new embeddable framework will be much smoother. This PR also
unblocks elastic#170396 since, now that
the control group is responsible for handling its own unsaved changes, I
should be able to determine when to enable/disable the "reset changes"
button.


### Checklist

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [x] This was checked for [cross-browser
compatibility](https://www.elastic.co/support/matrix#matrix_browsers)

### For maintainers

- [ ] This was checked for breaking API changes and was [labeled
appropriately](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature:Embeddables Relating to the Embeddable system impact:critical This issue should be addressed immediately due to a critical level of impact on the product. Meta project:embeddableRebuild Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas
Projects
None yet
Development

No branches or pull requests

3 participants