Skip to content

Commit 26660e4

Browse files
committed
Prepare v0.3.1: spec->model
1 parent 56ab73b commit 26660e4

17 files changed

+54
-59
lines changed

1.purpose_and_goals.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
# 1. Purpose and Goals
22

3-
The goal of Open Application Model is to define a standard, runtime-agnostic way to describe application deployment across hybrid environments, clouds or even edge devices.
3+
The goal of Open Application Model is to define a standard, infrastructure-agnostic way to describe application deployment across hybrid environments, clouds or even edge devices.
44

5-
The central problem this specification seeks to address is how distributed applications can be composed and then successfully handed off to those responsible for operating them. The problem is not so much about how to write programs, but how to take components of a service oriented (or microservice oriented) architecture, and streamline the workflow that surrounds such applications.
5+
The central problem this model seeks to address is how distributed applications can be composed and then successfully handed off to those responsible for operating them. The problem is not so much about how to write programs, but how to take components of a service oriented (or microservice oriented) architecture, and streamline the workflow that surrounds such applications.
66

77
For example, a contemporary cloud application may be composed of dozens of microservices, each responsible for a discrete chunk of what, broadly speaking, is "an application." Such applications need to be configured, deployed, audited, updated, and deleted. Sometimes the application must be treated as a whole, and sometimes finer levels of granularity are required. And most importantly, often such applications are managed not by one person or one team, but by multiple teams who must cooperate to achieve reliability, stability, and timeliness.
88

9-
This specification provides a description of such applications, where the description is declarative, extensible and with best clarity. Furthermore, it suggests patterns and processes for managing such applications. The specification describes a model for cloud native (i.e. highly distributed) applications, encompassing public cloud technologies, on-prem solutions, and IoT/edge technologies. By specifying a common model, this specification provides a foundation for building application delivery systems with a standard yet higher level description of cloud native applications.
9+
This model provides a description of such workflow, where the description itself is declarative, extensible and with best clarity. Furthermore, it suggests patterns and processes for operating such applications. The model will focus on cloud native (i.e. highly distributed) applications, encompass public cloud technologies, on-prem solutions, and IoT/edge technologies. This sets a solid foundation for modern application delivery systems with a standard yet higher level description of cloud native application deployment.
1010

1111
Non-goals include:
1212

13-
- Defining or prescribing specific orchestrating workflow.
13+
- Defining or prescribing specific orchestrating tool.
1414
- Defining the schemas of operational resources, for example (but not limited
1515
to):
1616
- Secrets (secure, encrypted values)
1717
- Networks
1818
- Volumes
19-
- Describing or defining the runtimes themselves.
19+
- Describing or defining the runtime infrastructures themselves.
2020

2121
| Next Part |
2222
| ------------- |

2.overview_and_terminology.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ This section provides an overview of the Open Application Model (OAM) and its te
44

55
## Overview of the Model
66

7-
This specification proposes a model that defines cloud native applications as follows:
7+
This documentation proposes a model that defines cloud native applications as follows:
88

9-
> A cloud native application is a collection of interrelated, but discrete components (services, tasks, workers) that, when coupled with configuration and instantiated in a suitable runtime, together accomplish a unified functional purpose.
9+
> A cloud native application is a collection of interrelated, but discrete components (services, tasks, workers) that, when coupled with configuration and instantiated in a suitable runtime infrastructure, together accomplish a unified functional purpose.
1010
1111
In current release, this application model defines the following:
1212

3.component_model.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Here are the attributes that provide top-level information about the component d
2020

2121
| Attribute | Type | Required | Default Value | Description |
2222
|-----------|------|----------|---------------|-------------|
23-
| `apiVersion` | `string` | Y | | A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification |
23+
| `apiVersion` | `string` | Y | | A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of model |
2424
| `kind` | `string` | Y || Must be `ComponentDefinition` |
2525
| `metadata` | [`Metadata`](2.overview_and_terminology.md#metadata) | Y | | Entity metadata. |
2626
| `spec`| [`Spec`](#spec) | Y | | The specification for the component definition. |
@@ -49,7 +49,7 @@ Here are the attributes that provide top-level information about the component d
4949

5050
#### Schematic
5151

52-
This section declares the schematic of a component that could be instantiated as part of an application in the later deployment workflow. Note that OAM specification has no enforcement on how to implement the schematic as long as it could:
52+
This section declares the schematic of a component that could be instantiated as part of an application in the later deployment workflow. Note that OAM itself has no enforcement on how to implement the schematic as long as it could:
5353
1. model a deployable unit;
5454
2. expose a JSON schema or equivalent parameter list.
5555

4.workload_types.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Here are the attributes that provide top-level information about the workload de
1414

1515
| Attribute | Type | Required | Default Value | Description |
1616
|-----------|------|----------|---------------|-------------|
17-
| `apiVersion` | `string` | Y | | A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification |
17+
| `apiVersion` | `string` | Y | | A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of model |
1818
| `kind` | `string` | Y || Must be `WorkloadDefinition` |
1919
| `metadata` | [`Metadata`](2.overview_and_terminology.md#metadata) | Y | | Entity metadata. |
2020
| `spec`| [`Spec`](#spec) | Y | | The specification for the workload definition. |

5.application_scopes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ These attributes provide top-level information about the application scope.
2929

3030
| Attribute | Type | Required | Default Value | Description |
3131
|-----------|------|----------|---------------|-------------|
32-
| `apiVersion` | `string` | Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification. |
32+
| `apiVersion` | `string` | Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of model. |
3333
| `kind` | `string` | Y || Must end with `ScopeDefinition`. |
3434
| `metadata` | [`Metadata`](2.overview_and_terminology.md#metadata) | Y | | Entity metadata. |
3535
| `spec`| [`Spec`](#spec) | Y || A specification for scope attributes. |
@@ -64,7 +64,7 @@ spec:
6464
name: healthscopes.core.oam.dev
6565
```
6666
67-
The following sample scope capabilities are defined in the OAM specification.
67+
The following sample scope capabilities are defined in this documentation.
6868
6969
### Health Scope
7070

6.traits.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ The top-level attributes of a trait define its metadata, version, kind, and spec
1818

1919
| Attribute | Type | Required | Default Value | Description |
2020
|-----------|------|----------|---------------|-------------|
21-
| `apiVersion` | `string` | Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification. |
21+
| `apiVersion` | `string` | Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of documentation. |
2222
| `kind` | `string` | Y || Must be `TraitDefinition` |
2323
| `metadata` | [`Metadata`](2.overview_and_terminology.md#metadata) | Y | | Information about the trait. |
2424
| `spec`| [`Spec`](#spec) | Y || A specification for trait attributes. |
@@ -47,11 +47,11 @@ The [`Application`](7.application.md) section will describe how a user can attac
4747

4848
## Implementing a Trait System
4949

50-
> WARNING: this section is for OAM platform implementors only, feel free to skip this section if you are only interested in the OAM concepts.
50+
> WARNING: this section is for OAM platform implementors (i.e. KubVela) only, feel free to skip this section if you are only interested in the OAM concepts.
5151
52-
The _traits system_ is defined in this specification as the way a runtime applies and manages operational behaviors to instances of components through traits.
52+
The _traits system_ is defined in this documentation as the way a runtime applies and manages operational behaviors to instances of components through traits.
5353

54-
Runtime implementations of the specification MUST provide the traits system for attaching operational behaviors to instances of components.
54+
Runtime implementations of the model MUST provide the traits system for attaching operational behaviors to instances of components.
5555

5656
### Traits System Rules and Characteristics
5757

@@ -80,19 +80,19 @@ The traits system is designed to serve as an extension point for runtime operati
8080

8181
The implementation details of a trait is beyond the scope of this document. However, to allow runtimes to implement arbitrary traits while maintaining a degree commonality for application portability across runtimes, traits are categorized in the following way:
8282

83-
- **Core traits.** This specification defines a set of trait definitions with type names in the `core.oam.dev` group. These traits provide operational functionality that is necessary for the operation of certain workload types and component features. Runtimes are REQUIRED to implement these traits as defined in this specification.
83+
- **Core traits.** This category defines a set of trait definitions with type names in the `core.oam.dev` group. These traits provide operational functionality that is necessary for the operation of certain workload types and component features. Runtimes are REQUIRED to implement these traits as defined in this model.
8484

85-
- **Standard traits.** The specification defines a set of trait definitions with type names in the `standard.oam.dev` group. These traits provide operational functionality that is commonly used by application operators and implemented by most runtimes. Runtimes are RECOMMENDED to use the standard trait definitions as defined in this specification when providing equivalent operational functionality to those listed in the standard trait definitions. In other words, if a runtime is implementing trait with behavior `foo` and a standard trait definition for behavior `foo` exists, the runtime SHOULD use the standard `foo` trait definition. Application operators that intend to maximize portability of their applications should use these trait definitions when available. Although this does not _guarantee_ portability of an application, it is designed to increase portability across runtimes.
85+
- **Standard traits.** The category defines a set of trait definitions with type names in the `standard.oam.dev` group. These traits provide operational functionality that is commonly used by application operators and implemented by most runtimes. Runtimes are RECOMMENDED to use the standard trait definitions as defined in this model when providing equivalent operational functionality to those listed in the standard trait definitions. In other words, if a runtime is implementing trait with behavior `foo` and a standard trait definition for behavior `foo` exists, the runtime SHOULD use the standard `foo` trait definition. Application operators that intend to maximize portability of their applications should use these trait definitions when available. Although this does not _guarantee_ portability of an application, it is designed to increase portability across runtimes.
8686

87-
- **Extension traits.** The specification allows a runtime to define its own set of trait definitions that are unique to that runtime in addition to those defined by core and standard traits. A runtime can choose to implement any set of traits in this category with any definition. Extension trait type names MUST NOT be in the `core.oam.dev` or `standard.oam.dev` groups.
87+
- **Extension traits.** The category allows a runtime to define its own set of trait definitions that are unique to that runtime in addition to those defined by core and standard traits. A runtime can choose to implement any set of traits in this category with any definition. Extension trait type names MUST NOT be in the `core.oam.dev` or `standard.oam.dev` groups.
8888

8989
### Trait Characteristics
9090

9191
An individual trait MAY be tied to specific workloads (or MAY apply to all workloads). A trait MAY declare which workload it applies to.
9292

93-
The specification does not set requirements about how simple or complicated a trait may be. Some might expose an expansive set of configurable options while others may expose no configurable options. And it is not required that a trait be as exhaustive as its underlying technology. For example, an implementation of an autoscaling technology may provide numerous ways of determining when a component should scale. But the trait may only surface a few of those. Likewise, multiple autoscaling traits may be defined (each uniquely named), where each trait exposes a different subset of configurable options. Or one large trait may expose all of the possible autoscaling configurations.
93+
The model does not set requirements about how simple or complicated a trait may be. Some might expose an expansive set of configurable options while others may expose no configurable options. And it is not required that a trait be as exhaustive as its underlying technology. For example, an implementation of an autoscaling technology may provide numerous ways of determining when a component should scale. But the trait may only surface a few of those. Likewise, multiple autoscaling traits may be defined (each uniquely named), where each trait exposes a different subset of configurable options. Or one large trait may expose all of the possible autoscaling configurations.
9494

95-
Implementations of an OAM runtime SHOULD make all supported traits discoverable in the format explained below.
95+
Implementations of an OAM platform SHOULD make all supported traits discoverable in the format explained below.
9696

9797

9898
| Previous Part | Next Part |

7.application.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
This section describes how applications are designed and deployed.
44

5-
> Up to v0.3.0 of the current specification, the _Application_ was known as _ApplicationConfiguration_.
5+
> Up to v0.3.0 of the current model, the _Application_ was known as _ApplicationConfiguration_.
66
77
## Application
88

@@ -16,7 +16,7 @@ The top-level attributes of a application define its metadata, version, kind, an
1616

1717
| Attribute | Type | Required | Default Value | Description |
1818
|-----------|------|----------|---------------|-------------|
19-
| `apiVersion` | `string` | Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of specification. |
19+
| `apiVersion` | `string` | Y || A string that identifies the version of the schema the object should have. The core types uses `core.oam.dev/v1beta1` in this version of documentation. |
2020
| `kind` | `string` | Y || Must be `Application` |
2121
| `metadata` | [`Metadata`](metadata.md) | Y | | Information about the application. |
2222
| `spec`| [`Spec`](#spec) | Y || A specification for application attributes. |

8.practical_considerations.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,30 @@ This section provides additional guidance on practical considerations for implem
44

55
## Proposal Stages and the Maturity of the Specification
66

7-
The specification is currently in Rough Draft, working toward Working Draft. After Working Draft, the specification will become a Final Specification (e.g., 1.0).
7+
The model is currently in Rough Draft, working toward Working Draft. After Working Draft, the specification will become a Final Specification (e.g., 1.0).
88

9-
- During _Rough Draft_, no part of the specification is considered stable
9+
- During _Rough Draft_, no part of the model is considered stable
1010
- During _Working Draft_, features may be added, and issues fixed. Breaking changes may occur, but as an irregularity
11-
- During _Final Specification_, the specification will only be updated with errata, grammatical fixes, and clearly marked "clarifying text"
11+
- During _Final Specification_, the model will only be updated with errata, grammatical fixes, and clearly marked "clarifying text"
1212

1313
Once a Final Specification is released (e.g., 1.0), a new _version_ of the spec (e.g., 1.1) may be started at the rough draft phase.
1414

1515
## Media Types
1616

17-
The media types for schematics will be defined when the specification enters Working Draft status. Preliminarily, the media types will be of the form:
17+
The media types for schematics will be defined when the model enters Working Draft status. Preliminarily, the media types will be of the form:
1818

1919
- `application/oam.TYPE.v1+json`, where `TYPE` is replaced by the name of the type (e.g. `component`).
2020

2121
## Security
2222

23-
This specification, in its current form, does not mandate a specific set of security policies. However, it does provide guidance on certain aspects of security:
23+
This model, in its current form, does not mandate a specific set of security policies. However, it does provide guidance on certain aspects of security:
2424

2525
- OCI/Docker images MUST be referenced by SHA wherever possible
2626
- File formats MUST be converted to a canonical format so that they can be hashed
2727

2828
When these two conditions are satisfied, systems can be constructed in which a digest verification of schematics will preserve the immutability of all components of the system. To wit, if a schematic references an image with a hash, then the process to verify the digest of the schematic also ensures that the image pulled has the same reference used to generate the schematic.
2929

30-
Other security details, such as network transport security or securing data at rest, are considered beyond the scope of this specification.
30+
Other security details, such as network transport security or securing data at rest, are considered beyond the scope of this model.
3131

3232
| Previous | Next |
3333
| ------------- |-------------|

9.design_principles.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 9. Design Principles
22

3-
The Open Application Model follows a set of design principles that ensure the clarity, richness, and extensibility of the specification.
3+
The Open Application Model follows a set of design principles that ensure the clarity, richness, and extensibility of the model.
44

55
## Separation of Concerns
66

@@ -20,7 +20,7 @@ OAM offers multiple abstraction layers so that operational concerns can be captu
2020

2121
Components in the OAM schematics are designed to be re-usable and shareable. In addition, they remain independent of the code that they describe, making it possible to re-use the code (containers), and prevent "lock-in" conditions.
2222

23-
The specification as a whole is designed to provide application "distributions" where the same application can be executed on different platforms without alteration. This portability of the application is intended to make the following scenarios not just possible, but easy:
23+
The model as a whole is designed to provide application "distributions" where the same application can be executed on different platforms without alteration. This portability of the application is intended to make the following scenarios not just possible, but easy:
2424

2525
- Transferring an application from a developer workstation to a production cluster or service
2626
- Migrating from one implementation to another with no code changes

0 commit comments

Comments
 (0)