Create an instance wide catalog for .com (community catalog)
Problem
As the author of a project of components I would like to open source my project to allow anyone to use it and contribute to it.
Background
Following the proposal in gitlab-com/Product#12734
We want to provide a GitLab community experience for the CI/CD components catalog, enabling all users from different organizations to consume and manage their CI/CD components.
- Namespace catalog (organizational catalog) - a catalog that is bound to a namespace today (organization when its get introduced)
- Community catalog - a catalog that is available in .com only which allow users to share and discover different components that exist in dispersed repositories and organizations.
Requirements
The User experience should be similar to the internal organizational catalog where:
- Users / community members are empowered to publish open source CI/CD components
- Other community members discover them
- And consume them responsibly
Requirements
-
A single instance could contain multiple organizations, we would need the ability to allow users to search across multiple organization, in Cells blueprint its mentioned that:
Organizations are isolated from each other by default meaning that cross-Namespace features will only work for Namespaces that exist in a single Organization
We need a solution that overcomes this limitation.
-
Components could live in separate organizations on different repositories. Users should be allowed to consume them directly from there, this is why we might need to support the federation of components: Distribute GitLab component projects on self-ma... (#415638)
-
Any user should be able to contribute and publish a component to the Catalog
-
Each user should be able to see the published components based on their permission level.
Iteration plan
Action | description | issue | phase |
---|---|---|---|
Support federated components | Ability to include component from different instance | #415638 | |
Support cross cell search | Foundation work to support cross cell search of components | #425750 | |
Support index page search | UI (Frontend) part for search a components | ||
Convert/adjust organizational catalog to community | Convert the name space catalog index & Detailed page to community catalog | #390655 (closed) | |
Establish community contribution process | Streamline the process to contribute a component | ||
Convert existing templates to components | We should convert all GitLab template to components | ||
Mirror components | we should allow administrators to mirror components from community catalog into Self managed | ||
Support instance wide catalog for Self manage | the instance wide catalog will be available in .com only, we should evaluate if it is needed in self manage |
Open question
- Should all published components be findable in the instance wide catalog, or do we need to force users to do that explicitly?
Out of scope
The Instance wide catalog will be the community catalog, which means it is only applicable for .com, but in the future we may introduce a similar catalog for self manage customers, (in case a self manage instance has multiple organization).
Although this is out of scope for this epic, we should take this requirement into our considerations when designing our solution.