-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Description
Please describe the end goal of this project
Glossary
- OpenSearch server Version: The release version of OpenSearch server without any plugins.
- Plugin Version: The release version of plugins, this is independent of OpenSearch server version.
- Managed Plugins: Plugins developed and released by OpenSearch Project
- Core Repository Plugins : Managed Plugins in the OpenSearch core repository (eg analysis-nori)
- Default Plugins : Managed Plugins that are bundled with standard OpenSearch distribution (eg security plugin).
Motivation
This document proposes, migrating existing plugins in core OpenSearch repository into their own dedicated repository
Background
In addition to the background in https://github.com/opensearch-project/OpenSearch/issues/17127, There are a few more things we need to dive into before we discuss the problem statement.
Default and Core repository plugins
Currently the core OpenSearch repository contains 28 plugins:
-
analysis-icu -
analysis-kuromoji -
analysis-nori -
analysis-phonenumber -
analysis-phonetic -
analysis-smartcn -
analysis-stempel -
analysis-ukrainian -
cache-ehcache -
crypto-kms -
discovery-azure-classic -
discovery-ec2 -
discovery-gce -
identity-shiro -
ingest-attachment -
mapper-annotated-text -
mapper-murmur3 -
mapper-size -
repository-azure -
repository-gcs -
repository-hdfs -
repository-s3 -
store-smb -
telemetry-otel -
transport-grpc -
transport-nio -
transport-reactor-netty4 -
workload-management
Whereas the standard opensearch distribution contains the following 23 plugins:
-
opensearch-alerting -
opensearch-anomaly-detection -
opensearch-asynchronous-search -
opensearch-cross-cluster-replication -
opensearch-custom-codecs -
opensearch-flow-framework -
opensearch-geospatial -
opensearch-index-management -
opensearch-job-scheduler -
opensearch-knn -
opensearch-ml -
opensearch-neural-search -
opensearch-notifications -
opensearch-notifications-core -
opensearch-observability -
opensearch-performance-analyzer -
opensearch-reports-scheduler -
opensearch-security -
opensearch-security-analytics -
opensearch-skills -
opensearch-sql -
opensearch-system-templates -
query-insights
There is no overlap between the plugins that are part of the standard distribution plugins and the plugins which are present in the core repository.
Most of the plugins present in core repository, are not subject to active changes after initial development and go through dependency version bumps that need to be executed by the core maintainers.
These core plugins are not separately released in maven and require the consumers to build it by themselves to install in their OpenSearch cluster. The core plugins lack documentation as well.
Plugin artifact publication
Managed plugins are published in multiple repositories:
- OpenSearch Managed repositories: Repositories like artifacts.opensearch.com and ci.opensearch.com. However it is not possible to browse these repositories to navigate to a plugin zip. One has to know the exact URL to be able to download the plugin.
- Maven: Only the default managed plugin zip [example] is published in maven. Core repository zips are not hosted there [example]
Previous discussion
reta published a RFC in 2021 to migrate the plugins out of the core repository #1754. He did a PoC as well where he moved the plugins out of the core repository into a single repository as well. In Issue 7962 It was called out that moving the plugins out of core repository would removed multiple 3P dependencies from the core repo.
Problem Statement
The current inclusion of 28 plugins within the OpenSearch core repository creates several operational challenges. These plugins lack active maintenance, proper documentation, and Maven publication, requiring users to build them manually. Updates to these plugins, primarily dependency version bumps, unnecessarily burden core maintainers due to their tight coupling with the core repository, which also prevents independent versioning and release management. Additionally, the presence of plugin-specific third-party dependencies bloats the core repository. This RFC proposes migrating these plugins to dedicated repositories to improve maintainability, documentation, and release processes while reducing complexity in the core repository.
Proposed Approach
We propose migrating the all the plugins from the core repository to their own repository. The migration process will begin by identifying owners for each plugin who will be responsible for their respective repositories. New dedicated repositories will be created following the naming convention 'opensearch-project/opensearch-' and will include standard components such as Apache 2.0 LICENSE, Code of Conduct, CONTRIBUTING.md, GitHub Actions CI for tests and scanning, and comprehensive README documentation. The code migration will preserve Git history using git subtree split, replace existing plugin folders in the core repository with redirecting READMEs, and update official documentation accordingly. Each repository will have its own CI/CD infrastructure for running integration tests, enabling independent releases that align with core major versions, and maintaining plugin-specific documentation. This migration can proceed independently of the OpenSearch 3.0 release timeline, starting with a single plugin to establish a standard operating procedure for subsequent migrations.
Pros compared to the status quo:
- Decouples plugin code from core repository, removing bloatware and maintenance overhead
- Creates a standard release process and release notes for each plugin
- Creates documentation for each plugin
- This can be coupled with RFC [RFC] Decoupling OpenSearch Distribution, Server and Plugin versioning #17127 to maintain further independent releases
Cons:
- Will require additional head count to ensure maintenance and release of each plugin repository
Alternatively, we can just migrate the plugins to a single separate repository as reta proposed. This will remove the bloatware from the core repository
FAQ
Q. What will the plugins folder in core repository be used for once these plugins are migrated out?
A. It can be used as a step in migrating features from plugins to core opensearch (like security), it can also contain example and temples for custom plugins.
Q. How will this affect the release process for the core OpenSearch distribution?
A. This will not impact the standard distribution as none of the core repo plugins are shipped with standard distribution
Metadata
Metadata
Assignees
Labels
Type
Projects
Status