Skip to content

Commit 98d17cc

Browse files
authored
Merge pull request #393 from resouer/update-spec
Spec update 1: revise readme to reflect latest change
2 parents f51ebbf + 6c985e0 commit 98d17cc

File tree

4 files changed

+106
-47
lines changed

4 files changed

+106
-47
lines changed

2.overview_and_terminology.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ In addition, the specification defines the following definition constructs for i
3535

3636
Thus, OAM defines an _application_ as a collection of _components_ each with a set of operational traits and scoped together into one or more application boundaries.
3737

38+
Further reading: [a relation diagram for various OAM resources](./assets/relations_between_various_OAM_resources.png)
39+
3840
## Terminology
3941

4042
The following terms are used throughout this specification.

README.md

Lines changed: 32 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,80 +5,65 @@
55
[![TODOs](https://badgen.net/https/api.tickgit.com/badgen/github.com/oam-dev/spec)](https://www.tickgit.com/browse?repo=github.com/oam-dev/spec)
66
[![Follow on Twitter](https://img.shields.io/twitter/follow/oam_dev.svg?style=social&logo=twitter)](https://twitter.com/intent/follow?screen_name=oam_dev)
77

8-
|![notification](assets/bell-outline-badge.svg) What is NEW!|
9-
|------------------|
10-
|May 18th, 2020. [Crossplane](https://github.com/crossplane/crossplane) becomes the standard Kubernetes implementation of OAM spec!|
11-
|Mar 27th, 2020. OAM v0.2.0 is **RELEASED**! The new spec is highly extensible and native to Kubernetes runtime. Check the spec and [What's new in OAM v0.2.0](https://speakerdeck.com/resouer/whats-new-in-oam-v1alpha2-spec) for more detail!|
12-
|Mar 26th, 2020. A proof-of-concept project named AWS ECS for OAM is published! Check [the AWS Labs repo ](https://github.com/awslabs/amazon-ecs-for-open-application-model) and have fun with developer centric experience with OAM + Fargate!|
8+
Open Application Model is a runtime-agnostic specification for modeling cloud native applications and building app-centric platforms.
139

14-
Open Application Model is a platform-agnostic specification for building cloud native applications.
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.
1511

16-
Focused on separating concerns of development and operation needs, _Open Application Model_ brings modular, extensible, and portable design to building and delivering applications on different platforms.
17-
18-
> **NOTICE:** *This repository is unstable and open to contributions.* The specification is under development and could adopt breaking changes in the future. 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.
1913
2014
## Introduction
2115

22-
Open Application Model provides a standard and extensible framework for platform builders to create application centric platforms on top of lower level runtime systems such as Kubernetes with additions of discoverability, manageability and interoperability.
16+
Developers think in terms of application architecture, not of infrastructure.
17+
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.
2319

2420
![How it works][how-it-works]
2521

26-
Open Application Model empowers application platforms to provide standardized application centric primitives (e.g. Workloads and Traits) instead of exposing infrastructure details to end users, while retaining the extensibility of the underlying runtime system. With the idea of simplify creating upper layer platforms, the model won't lock you into specific abstractions -- on the contrary, its primitives 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.
2723

2824
### A team-centric model
2925

30-
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) is responsible for. Otherwise, if these roles get muddled, it would result in communications mishaps, bugs, or even service outages.
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.
27+
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.
3129

32-
_Open Application Model_ attempts to solve this problem by modeling the application according to the
33-
roles responsible for building and running apps and operating infrastructure.
30+
Thus _Open Application Model_ defines different personas from building and operating apps to maintaining infrastructure.
3431

35-
* _Developers_ are responsible for describing what a microservice or component does,
32+
* _Developers_ are responsible for writing business logic, describing what a microservice or component does,
3633
and _how_ it can be configured. They are the domain experts on the code.
3734
* _Application Operators_ are responsible for configuring the runtime aspects of
3835
one or more of these microservices. They are the domain experts on the
39-
platform.
36+
platform. In some use cases (e.g. Serverless), application operator could be the platform itself.
4037
* _Infrastructure Operators_ also known as _Platform Builders_, are responsible for setting up and maintaining the
4138
infrastructure within which applications run. They are the domain
42-
experts on the low-level details.
39+
experts on developing platform capabilities and infrastructure-level details.
4340

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

46-
[Relations between various OAM resources](./assets/relations_between_various_OAM_resources.png)
47-
48-
## See it in action
49-
50-
[OAM Kubernetes Runtime](https://github.com/crossplane/oam-kubernetes-runtime) is the officially maintained OAM plugin for Kubernetes.
51-
52-
OAM Kubernetes Runtime is a [joint effort](https://cloudblogs.microsoft.com/opensource/2020/05/27/open-application-model-oam-v1alpha2-crossplane/) with [the Crossplane community](https://github.com/crossplane/crossplane). Furthermore, to get started with an example of using OAM to deliver both applications and cloud resources in unified approach, please follow the end-to-end [getting started doc in Crossplane](https://crossplane.io/docs/v0.12/getting-started/run-applications.html).
53-
54-
## The Specification
43+
## Read the specification
5544

56-
The 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.
45+
The following documents are available:
5746

58-
- [Notational Conventions](notational_convention.md)
59-
- [Purpose and Goals](1.purpose_and_goals.md)
60-
- [Overview and Terminology](2.overview_and_terminology.md)
61-
- API Resource Specification
62-
- Application Developers
63-
- [Components](4.component.md)
64-
- Application Operators
65-
- [Application Scopes](5.application_scopes.md)
66-
- [Traits](6.traits.md)
67-
- [Application Configuration](7.application_configuration.md)
68-
- Infrastructure Operators/Platform Builders
69-
- [Workload Definition](3.workload.md)
70-
- [Practical Considerations](8.practical_considerations.md)
71-
- [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) |
7261

73-
## Versioning
7462

75-
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.
7663

77-
### Changes to the API objects
78-
79-
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
8065

81-
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.
8267

8368

8469
## Community

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)