kibana/examples
Gerard Soldevila b24fdf5d3f
Sustainable Kibana Architecture: Categorise straightforward packages (#199630)
## Summary

This PR is part of the Kibana Sustainable Architecture effort.

The goal is to start categorising Kibana packages into _generic
platform_ (`group: "platform"`) vs _solution-specific_.

```
group?: 'search' | 'security' | 'observability' | 'platform'
visibility?: 'private' | 'shared'
```
Uncategorised modules are considered to be `group: 'common', visibility:
'shared'` by default.

We want to prevent code from solution A to depend on code from solution
B.
Thus, the rules are pretty simple:

* Modules can only depend on:
  * Modules in the same group
  * OR modules with 'shared' visibility
* Modules in `'observability', 'security', 'search'` groups are
mandatorily `visibility: "private"`.

Long term, the goal is to re-organise packages into dedicated folders,
e.g.:

```
x-pack/platform/plugins/private
x-pack/observability/packages
```

For this first wave, we have categorised packages that seem
"straightforward":
* Any packages that have:
  * at least one dependant module
  * all dependants belong to the same group
* Categorise all Core packages:
  * `@kbn/core-...-internal` => _platform/private_
  * everything else => _platform/shared_
* Categorise as _platform/shared_ those packages that:
  * Have at least one dependant in the _platform_ group.
  * Don't have any `devOnly: true` dependants.

### What we ask from you, as CODEOWNERS of the _package manifests_, is
that you confirm that the categorisation is correct:

* `group: "platform", visibility: "private"` if it's a package that
should only be used from platform code, not from any solution code. It
will be loaded systematically in all serverless flavors, but solution
plugins and packages won't be able to `import` from it.
* `group: "platform", visibility: "shared"` if it's a package that can
be consumed by both platform and solutions code. It will be loaded
systematically in all serverless flavors, and anybody can import / use
code from it.
* `group: "observability" | "security" | "search", visibility:
"private"` if it's a package that is intented to be used exclusively
from a given solution. It won't be accessible nor loaded from other
solutions nor platform code.

Please refer to
[#kibana-sustainable-architecture](https://elastic.slack.com/archives/C07TCKTA22E)
for any related questions.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2024-11-22 10:33:25 +01:00
..
bfetch_explorer Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
content_management_examples [EuiInMemoryTable] Persist table rows per page and sort (#198297) 2024-11-18 07:35:26 -06:00
controls_example [Embeddable Rebuild] [Controls] Remove non-React controls from controls plugin (#192017) 2024-09-17 08:12:54 -06:00
data_view_field_editor_example Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
developer_examples Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
discover_customization_examples [OneDiscover] Contextual App Menu Extension Point (#195448) 2024-10-30 13:35:15 +01:00
embeddable_examples Fix various EuiFormControlLayout usages (#192779) 2024-09-24 13:55:59 -07:00
error_boundary Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
eso_model_version_example Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
esql_ast_inspector [ES|QL] AddSORT command mutation APIs (#197185) 2024-10-30 21:34:57 +01:00
esql_validation_example Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
expressions_explorer Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
feature_control_examples Added scope field to features config. (#191634) 2024-09-12 19:22:20 -05:00
feature_flags_example [Feature Flags Example Plugin] Change ctx provider (#201097) 2024-11-21 06:01:02 -06:00
field_formats_example Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
files_example Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
grid_example [Dashboard] [Collapsable Panels] Switch to using props (#200793) 2024-11-21 10:27:56 -07:00
guided_onboarding_example [Expamples][Guided onboarding] - added missing EuiProvider to fix errors (#199070) 2024-11-05 20:17:16 -06:00
hello_world Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
locator_examples Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
locator_explorer Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
partial_results_example Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
portable_dashboards_example [dashboard] decouple DashboardCreationOptions from DashboardContainer (#194875) 2024-10-07 14:43:12 -06:00
preboot_example Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
resizable_layout_examples Sustainable Kibana Architecture: Categorise straightforward packages (#199630) 2024-11-22 10:33:25 +01:00
response_stream [ML] AIOps: Log Rate Analysis embeddable (#197943) 2024-11-05 15:48:45 +01:00
routing_example [UA][Core] Surface integrations with internal APIs in upgrade assistant (#199026) 2024-11-12 14:19:22 +03:00
screenshot_mode_example Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
search_examples Sustainable Kibana Architecture: Categorise straightforward packages (#199630) 2024-11-22 10:33:25 +01:00
share_examples [Reporting] fix dashboard "Copy Post URL" action (#192530) 2024-10-08 01:54:21 +02:00
state_containers_examples Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
ui_action_examples Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
ui_actions_explorer Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
unified_doc_viewer Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
unified_field_list_examples Sustainable Kibana Architecture: Categorise straightforward packages (#199630) 2024-11-22 10:33:25 +01:00
user_profile_examples Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
v8_profiler_examples Adds AGPL 3.0 license (#192025) 2024-09-06 19:02:41 -06:00
README.asciidoc Adds run without basepath configured to examples readme (#173086) 2023-12-12 11:22:02 -07:00

[[example-plugins]]
== Example plugins

This folder contains example plugins.  To run the plugins in this folder, use the `--run-examples` flag (without a basepath), via

[source,bash]
----
yarn start --run-examples
----