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

[#3558] Docs for Contributing and Defining Components #3574

Merged
merged 16 commits into from
Aug 16, 2022

Conversation

armanjindal
Copy link
Contributor

@armanjindal armanjindal commented Aug 11, 2022

The purpose of this PR is to organize discussions around how we want to maintain and update components. I have tried to capture our internal discussion on this issue in this initial draft. This PR also includes an update to our definition of Components in the glossary (#3294). Please amend/discuss/comment!

The secondary purpose is to merge these docs before we implement the proposed change. This way, we can adopt a "docs-driven" development approach.

The primary change proposed is the creation of an external repository where the Helm package and information on components are stored. The benefits of this approach are:

  1. We can update information on components between release cycles (if needed).
  2. The description.yaml associated with a connector file becomes the "source of truth" on components and can be standardized for the Control Center.
  3. The helm files can help potential enterprise clients technically audit us.
  4. We begin to create the infrastructure to support third-party components.


:::

`Airy Core` is fundamentally a collection of components. When you [install `Airy Core`](../getting-started/installation/introduction.md), you install a set of _core_ components which create the minimum infrastructure to install other components and begin using the platform.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Airy Core is not really how we market the open source. Let's just call it Airy and mention that it shipds with a few components out-of-the-box.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. Although there are a ton of references to Airy Core in the docs, so we might need a larger fix. For now I will refer to it as Airy.

Airy is designed to support a plug-and-play architecture. Components are installed and run as pods in your cluster. Components can provide four kinds of functionality:

1. Connector - i.e Rasa, DialogFlow
2. Source - i.e., Facebook, WhatsApp, SMS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We decided to not differentiate between sources and connectors on a component level.

In the glossary docs I suggested the following definition for a connector which nicely brackets both use cases:

A connector is a type of component that authenticates with one or more third-party services in order to exchange data

This document should link to the glossary definitions that aren't here yet, unfortunately. @AitorAlgorta perhaps we can already add definitions for component and connector in this PR?


## The Component File Structure

Below is a model of the file stucture of a single component inside the [`airy-components`](https://github.com/airyhq/airy-/airy-components) repository.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I created the repository that we can use to link to correctly: https://github.com/airyhq/airy-components

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing!

```
/airy-components
/[COMPONENT_NAME]
information.yaml
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

description.yaml seems a bit more apt. What do you think? 🤔

Also sharing this neat little app for generating these file graphs: https://tree.nathanfriend.io/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed.

@armanjindal armanjindal changed the title [#3558] Docs & Discussion for Contributing Components [#3558] Docs for Contributing and Defining Components Aug 12, 2022
docs/docs/getting-started/componentDefinition.mdx Outdated Show resolved Hide resolved
docs/docs/guides/contributing-components.md Outdated Show resolved Hide resolved
docs/docs/guides/contributing-components.md Outdated Show resolved Hide resolved
docs/docs/guides/contributing-components.md Outdated Show resolved Hide resolved
docs/docs/guides/contributing-components.md Outdated Show resolved Hide resolved
@armanjindal armanjindal marked this pull request as ready for review August 16, 2022 09:57
@@ -0,0 +1,13 @@
A component is a Helm Chart that can be installed on an Airy Cluster in order to extend its functionality.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do call components also the components which are part of Airy Core: api-admin, api-communication 🤔 Perhaps a collection of functionalities and resources? There some components which are part of Core and the others can be installed on top.


:::note

A Component can provide multiple functions (e.g., Connector & UI or UI & API) but usually has a single primary function. You can find a more detailed description of a specific component in the `description.yaml` file of the component in our [airy-components](https://github.com/airyhq/airy-components) respository.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that this is how we should do it (with the description.yaml file). However this is not there at the moment and the CI pipeline should be setup in place before we can write this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will hold off on this detail in the definition and move it to the contributing components page. This is marked as under development, so will help to implement when we do this.

Copy link
Contributor

@ljupcovangelski ljupcovangelski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great initiative and a good start of the "contribution of components" docs 👍

@armanjindal armanjindal merged commit 9e1f358 into develop Aug 16, 2022
@armanjindal armanjindal deleted the docs/3558-docs-contributing-components branch August 16, 2022 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants