Skip to content

Commit 6c985e0

Browse files
committed
Spec update 1.5: split spec into versioned docs
1 parent 1bcb98f commit 6c985e0

File tree

3 files changed

+102
-36
lines changed

3 files changed

+102
-36
lines changed

README.md

Lines changed: 30 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,71 +7,63 @@
77

88
Open Application Model is a runtime-agnostic specification for modeling cloud native applications and building app-centric platforms.
99

10-
Focused on application development and operation, _Open Application Model_ brings modular, extensible, and portable design to building application-first platforms on any underlying runtime system such as Kubernetes, cloud, or IoT devices.
10+
Focused on application development and operation, _Open Application Model_ brings modular, extensible, and portable design for creating application-first platforms on any infrastructures such as Kubernetes, cloud, or IoT devices.
1111

12-
> **NOTICE:** The current working draft of OAM specification (0.2.x release) is under pre-beta release, which means the specification is still under development but will keep backward compatibility in any further change. Interested in contributing? Take a look at the issues! We're looking for more great ideas on how to model cloud native applications.
12+
> **NOTICE:** The current working draft of OAM specification (0.2.x release) is under pre-beta release, which means the specification is still under development but will keep backward compatibility for any further change.
1313
1414
## Introduction
1515

16-
Open Application Model provides a series of standard but extensible abstractions to model application in a self-contained approach, which means both the components and corresponding operational capabilities (named "traits") are considered as parts of a given application. This enables platform builders to create platforms around this model, with an app-centric mindset by natural, and essentially changes building platforms into developing components and traits for the application to run.
16+
Developers think in terms of application architecture, not of infrastructure.
1717

18-
In addition, categorizing runtime capabilities into modularized components and traits will also provide better discoverability, manageability and interoperability to these capabilities regardless the runtime systems they rely on.
18+
In a nutshell, Open Application Model defines standard but extensible abstractions to model applications in a "self-contained" approach, i.e. both runnable components and corresponding operational capabilities (named "traits") are considered as parts of the given application. This enables platform builders to create platforms around this unified model, with app-centric mindset by natural, and essentially changes building platforms into developing modularized components and traits for the application.
1919

2020
![How it works][how-it-works]
2121

22-
In one word, Open Application Model empowers application platforms to provide standardized application centric primitives (e.g. Components and Traits) instead of exposing infrastructure details to end users, while retaining the high flexibility and extensibility for platform builders. This model won't lock you into any specific abstractions -- on the contrary, its primitives are designed to allow you to define the right level of abstraction depend on your own use case.
22+
In addition, Open Application Model won't lock you into any specific abstractions -- on the contrary, its primitives are designed to allow you to define the right level of abstraction depend on your own use case.
2323

24-
Open Application Model specification convention adopts [Kubernetes Resource Model](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/resource-management.md) which we believe will become the standard interface for the majority of platforms in the future.
24+
### A team-centric model
2525

26-
### Team-centric personas
26+
When it comes to the application centric primitives, we think it is important to separate concerns between the parts that developers are responsible for, and the parts that operators and platform engineers are responsible for.
2727

28-
When it comes to the application centric primitives, we think it is important to distinguish between the parts that developers are responsible for, and the parts that operators (or the platform itself) are responsible for.
28+
This is because in practice different levels of abstraction would apply to different personas. Also, if these primitives get muddled in the platform, a simple operational modification on wrong primitive would easily result in bugs, mishaps or even service outages.
2929

30-
This is because in practice different levels of abstraction would apply to different personas. Also, if these primitives get muddled in the platform, a careless operational modification on wrong primitive would easily result in bugs, mishaps or even service outages.
31-
32-
Thus _Open Application Model_ defines different abstractions for different roles responsible for building and operating apps and maintaining infrastructure.
30+
Thus _Open Application Model_ defines different personas from building and operating apps to maintaining infrastructure.
3331

3432
* _Developers_ are responsible for writing business logic, describing what a microservice or component does,
3533
and _how_ it can be configured. They are the domain experts on the code.
3634
* _Application Operators_ are responsible for configuring the runtime aspects of
3735
one or more of these microservices. They are the domain experts on the
38-
platform. In fully automatic use cases (e.g. Serverless), application operator could be the platform itself.
36+
platform. In some use cases (e.g. Serverless), application operator could be the platform itself.
3937
* _Infrastructure Operators_ also known as _Platform Builders_, are responsible for setting up and maintaining the
4038
infrastructure within which applications run. They are the domain
4139
experts on developing platform capabilities and infrastructure-level details.
4240

4341
For more details and user stories, see [introduction.md](./introduction.md).
4442

45-
## See it in action
46-
47-
[OAM Kubernetes Runtime](https://github.com/crossplane/oam-kubernetes-runtime) is the officially maintained OAM plugin for Kubernetes, which is a [joint effort](https://cloudblogs.microsoft.com/opensource/2020/05/27/open-application-model-oam-v1alpha2-crossplane/) with [Crossplane](https://github.com/crossplane/crossplane) community.
43+
## Read the specification
4844

49-
## The Specification
45+
The following documents are available:
5046

51-
- [Notational Conventions](notational_convention.md)
52-
- [Purpose and Goals](1.purpose_and_goals.md)
53-
- [Overview and Terminology](2.overview_and_terminology.md)
54-
- API Resource Specification
55-
- Application Developers
56-
- [Components](4.component.md)
57-
- Application Operators
58-
- [Application Scopes](5.application_scopes.md)
59-
- [Traits](6.traits.md)
60-
- [Application Configuration](7.application_configuration.md)
61-
- Infrastructure Operators/Platform Builders
62-
- [Workload Definition](3.workload.md)
63-
- [Practical Considerations](8.practical_considerations.md)
64-
- [Design Principles](9.design_principles.md)
47+
| | Latest Release | Working Draft |
48+
| :---------------------------- | :--------------------------------: | :----------------------------------------: |
49+
| **Core Specification:** |
50+
| OAM Specification | [v0.2.1](https://github.com/oam-dev/spec/blob/v0.2.1/SPEC_LATEST_STABLE.md) | [v0.2.2-WD](https://github.com/oam-dev/spec/blob/master/SPEC_WORKING_DRAFT.md) |
51+
| |
52+
| **Workloads** |
53+
| Containerized Workload | [v1alpha2](https://github.com/oam-dev/spec/blob/v0.2.1/core/workloads/containerized_workload/containerized_workload.md) | [v1alpha2-WD](https://github.com/oam-dev/spec/blob/master/core/workloads/containerized_workload/containerized_workload.md) |
54+
| |
55+
| **Traits** |
56+
| Manual Scaler | [v1alpha2](https://github.com/oam-dev/spec/blob/v0.2.1/core/traits/manual_scaler_trait.md) | [v1alpha2-WD](https://github.com/oam-dev/spec/blob/master/core/traits/manual_scaler_trait.md) |
57+
| |
58+
| **Scopes** |
59+
| Network Scope | [v1alpha2](https://github.com/oam-dev/spec/blob/v0.2.1/standard/scopes/network_scope.md) | [v1alpha2-WD](https://github.com/oam-dev/spec/blob/master/standard/scopes/network_scope.md) |
60+
| Health Scope | [v1alpha2](https://github.com/oam-dev/spec/blob/v0.2.1/standard/scopes/health_scope.md) | [v1alpha2-WD](https://github.com/oam-dev/spec/blob/master/standard/scopes/health_scope.md) |
6561

66-
## Versioning
6762

68-
Releases of the specification are versioned according to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html) and described in [OAM release page](https://github.com/oam-dev/spec/releases). Implementations of the specification are required to specify which version they implement.
6963

70-
### Changes to the API objects
71-
72-
Changes to the API objects in this specification follows [on compatibility](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#on-compatibility) and [incompatible api changes](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#incompatible-api-changes) defined in Kubernetes API convention. It doesn't couple with release version of the specification.
64+
## See it in action
7365

74-
Changes to the change process (e.g. governance model, review/approve process etc) itself are not currently versioned but may be independently versioned in the future.
66+
[OAM Kubernetes Runtime](https://github.com/crossplane/oam-kubernetes-runtime) is the officially maintained OAM plugin for Kubernetes. This is a [joint effort](https://cloudblogs.microsoft.com/opensource/2020/05/27/open-application-model-oam-v1alpha2-crossplane/) with [Crossplane](https://github.com/crossplane/crossplane) community.
7567

7668

7769
## Community
@@ -102,6 +94,8 @@ One of the easiest ways to contribute is to participate in discussions. There ar
10294
| IM Channel | https://gitter.im/oam-dev/ |
10395
| Twitter | [@oam_dev](https://twitter.com/oam_dev) |
10496

97+
[how-it-works]: assets/how-it-works.png
98+
10599
### Resources
106100

107101
Come find community blogs and conference talks about OAM in [community/talks_and_blogs.md](./community/talks_and_blogs.md).

SPEC_LATEST_STABLE.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
# Open Application Model
3+
4+
## Version
5+
6+
This is OAM **spec** version **v0.2.1**.
7+
Learn more about versioning [below](#versioning).
8+
9+
## The Specification
10+
11+
- [Notational Conventions](notational_convention.md)
12+
- [Purpose and Goals](1.purpose_and_goals.md)
13+
- [Overview and Terminology](2.overview_and_terminology.md)
14+
- API Resource Specification
15+
- Application Developers
16+
- [Components](4.component.md)
17+
- Application Operators
18+
- [Application Scopes](5.application_scopes.md)
19+
- [Traits](6.traits.md)
20+
- [Application Configuration](7.application_configuration.md)
21+
- Infrastructure Operators/Platform Builders
22+
- [Workload Definition](3.workload.md)
23+
- [Practical Considerations](8.practical_considerations.md)
24+
- [Design Principles](9.design_principles.md)
25+
26+
## Versioning
27+
28+
Open Application Model specification convention adopts [Kubernetes Resource Model](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/resource-management.md) which we believe will become the standard interface for the majority of platforms in the future.
29+
30+
Releases of the specification are versioned according to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html) and described in [OAM release page](https://github.com/oam-dev/spec/releases). Implementations of the specification are required to specify which version they implement.
31+
32+
### Changes to the API objects
33+
34+
Changes to the API objects in this specification follows [on compatibility](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#on-compatibility) and [incompatible api changes](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#incompatible-api-changes) defined in Kubernetes API convention. It doesn't couple with release version of the specification.
35+
36+
Changes to the change process (e.g. governance model, review/approve process etc) itself are not currently versioned but may be independently versioned in the future.

SPEC_WORKING_DRAFT.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
# Open Application Model
3+
4+
## Version
5+
6+
This is OAM **spec** working draft version **v0.2.2-WD**.
7+
Learn more about versioning [below](#versioning).
8+
9+
## The Specification
10+
11+
- [Notational Conventions](notational_convention.md)
12+
- [Purpose and Goals](1.purpose_and_goals.md)
13+
- [Overview and Terminology](2.overview_and_terminology.md)
14+
- API Resource Specification
15+
- Application Developers
16+
- [Components](4.component.md)
17+
- Application Operators
18+
- [Application Scopes](5.application_scopes.md)
19+
- [Traits](6.traits.md)
20+
- [Application Configuration](7.application_configuration.md)
21+
- Infrastructure Operators/Platform Builders
22+
- [Workload Definition](3.workload.md)
23+
- [Practical Considerations](8.practical_considerations.md)
24+
- [Design Principles](9.design_principles.md)
25+
26+
## Versioning
27+
28+
Open Application Model specification convention adopts [Kubernetes Resource Model](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/resource-management.md) which we believe will become the standard interface for the majority of platforms in the future.
29+
30+
Releases of the specification are versioned according to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html) and described in [OAM release page](https://github.com/oam-dev/spec/releases). Implementations of the specification are required to specify which version they implement.
31+
32+
### Changes to the API objects
33+
34+
Changes to the API objects in this specification follows [on compatibility](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#on-compatibility) and [incompatible api changes](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api_changes.md#incompatible-api-changes) defined in Kubernetes API convention. It doesn't couple with release version of the specification.
35+
36+
Changes to the change process (e.g. governance model, review/approve process etc) itself are not currently versioned but may be independently versioned in the future.

0 commit comments

Comments
 (0)