Skip to content

[RFC] Migrating existing OpenSearch plugins from the main OpenSearch repository into their own dedicated repositories #17246

@pgtgrly

Description

@pgtgrly

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:

  1. analysis-icu
    
  2. analysis-kuromoji
    
  3. analysis-nori
    
  4. analysis-phonenumber
    
  5. analysis-phonetic
    
  6. analysis-smartcn
    
  7. analysis-stempel
    
  8. analysis-ukrainian
    
  9. cache-ehcache
    
  10. crypto-kms
    
  11. discovery-azure-classic
    
  12. discovery-ec2
    
  13. discovery-gce
    
  14. identity-shiro
    
  15. ingest-attachment
    
  16. mapper-annotated-text
    
  17. mapper-murmur3
    
  18. mapper-size
    
  19. repository-azure
    
  20. repository-gcs
    
  21. repository-hdfs
    
  22. repository-s3
    
  23. store-smb
    
  24. telemetry-otel
    
  25. transport-grpc
    
  26. transport-nio
    
  27. transport-reactor-netty4
    
  28. workload-management
    

Whereas the standard opensearch distribution contains the following 23 plugins:

  1. opensearch-alerting
    
  2. opensearch-anomaly-detection
    
  3. opensearch-asynchronous-search
    
  4. opensearch-cross-cluster-replication
    
  5. opensearch-custom-codecs
    
  6. opensearch-flow-framework
    
  7. opensearch-geospatial
    
  8. opensearch-index-management
    
  9. opensearch-job-scheduler
    
  10. opensearch-knn
    
  11. opensearch-ml
    
  12. opensearch-neural-search
    
  13. opensearch-notifications
    
  14. opensearch-notifications-core
    
  15. opensearch-observability
    
  16. opensearch-performance-analyzer
    
  17. opensearch-reports-scheduler
    
  18. opensearch-security
    
  19. opensearch-security-analytics
    
  20. opensearch-skills
    
  21. opensearch-sql
    
  22. opensearch-system-templates
    
  23. 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:

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

No one assigned

    Labels

    MetaMeta issue, not directly linked to a PRPlugins

    Type

    No type

    Projects

    Status

    New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions