Skip to content

Commit a28afa1

Browse files
committed
principles: Give principles their own home
Signed-off-by: Vincent Batts <[email protected]>
1 parent dbac706 commit a28afa1

File tree

2 files changed

+52
-52
lines changed

2 files changed

+52
-52
lines changed

README.md

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
Table of Contents
77

8+
- [Container Principles](principles.md)
89
- [Filesystem Bundle](bundle.md)
910
- [Container Configuration](config.md)
1011
- [Linux Specific Configuration](config-linux.md)
@@ -24,58 +25,6 @@ To provide context for users the following section gives example use cases for e
2425
There is a loose [Road Map](https://github.com/opencontainers/specs/wiki/RoadMap:) on the wiki.
2526
During the `0.x` series of OCI releases we make no backwards compatibility guarantees and intend to break the schema during this series.
2627

27-
# The 5 principles of Standard Containers
28-
29-
Define a unit of software delivery called a Standard Container.
30-
The goal of a Standard Container is to encapsulate a software component and all its dependencies in a format that is self-describing and portable, so that any compliant runtime can run it without extra dependencies, regardless of the underlying machine and the contents of the container.
31-
32-
The specification for Standard Containers is straightforward.
33-
It mostly defines 1) a file format, 2) a set of standard operations, and 3) an execution environment.
34-
35-
A great analogy for this is the shipping container.
36-
Just like how Standard Containers are a fundamental unit of software delivery, shipping containers are a fundamental unit of physical delivery.
37-
38-
## 1. Standard operations
39-
40-
Just like shipping containers, Standard Containers define a set of STANDARD OPERATIONS.
41-
Shipping containers can be lifted, stacked, locked, loaded, unloaded and labelled.
42-
Similarly, Standard Containers can be created, started, and stopped using standard container tools (what this spec is about); copied and snapshotted using standard filesystem tools; and downloaded and uploaded using standard network tools.
43-
44-
## 2. Content-agnostic
45-
46-
Just like shipping containers, Standard Containers are CONTENT-AGNOSTIC: all standard operations have the same effect regardless of the contents.
47-
A shipping container will be stacked in exactly the same way whether it contains Vietnamese powder coffee or spare Maserati parts.
48-
Similarly, Standard Containers are started or uploaded in the same way whether they contain a postgres database, a php application with its dependencies and application server, or Java build artifacts.
49-
50-
## 3. Infrastructure-agnostic
51-
52-
Both types of containers are INFRASTRUCTURE-AGNOSTIC: they can be transported to thousands of facilities around the world, and manipulated by a wide variety of equipment.
53-
A shipping container can be packed in a factory in Ukraine, transported by truck to the nearest routing center, stacked onto a train, loaded into a German boat by an Australian-built crane, stored in a warehouse at a US facility, etc.
54-
Similarly, a standard container can be bundled on my laptop, uploaded to S3, downloaded, run and snapshotted by a build server at Equinix in Virginia, uploaded to 10 staging servers in a home-made Openstack cluster, then sent to 30 production instances across 3 EC2 regions.
55-
56-
## 4. Designed for automation
57-
58-
Because they offer the same standard operations regardless of content and infrastructure, Standard Containers, just like their physical counterparts, are extremely well-suited for automation.
59-
In fact, you could say automation is their secret weapon.
60-
61-
Many things that once required time-consuming and error-prone human effort can now be programmed.
62-
Before shipping containers, a bag of powder coffee was hauled, dragged, dropped, rolled and stacked by 10 different people in 10 different locations by the time it reached its destination.
63-
1 out of 50 disappeared.
64-
1 out of 20 was damaged.
65-
The process was slow, inefficient and cost a fortune - and was entirely different depending on the facility and the type of goods.
66-
67-
Similarly, before Standard Containers, by the time a software component ran in production, it had been individually built, configured, bundled, documented, patched, vendored, templated, tweaked and instrumented by 10 different people on 10 different computers.
68-
Builds failed, libraries conflicted, mirrors crashed, post-it notes were lost, logs were misplaced, cluster updates were half-broken.
69-
The process was slow, inefficient and cost a fortune - and was entirely different depending on the language and infrastructure provider.
70-
71-
## 5. Industrial-grade delivery
72-
73-
There are 17 million shipping containers in existence, packed with every physical good imaginable.
74-
Every single one of them can be loaded onto the same boats, by the same cranes, in the same facilities, and sent anywhere in the World with incredible efficiency.
75-
It is embarrassing to think that a 30 ton shipment of coffee can safely travel half-way across the World in *less time* than it takes a software team to deliver its code from one datacenter to another sitting 10 miles away.
76-
77-
With Standard Containers we can put an end to that embarrassment, by making INDUSTRIAL-GRADE DELIVERY of software a reality.
78-
7928
# Contributing
8029

8130
Development happens on GitHub for the spec.

principles.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# The 5 principles of Standard Containers
2+
3+
Define a unit of software delivery called a Standard Container.
4+
The goal of a Standard Container is to encapsulate a software component and all its dependencies in a format that is self-describing and portable, so that any compliant runtime can run it without extra dependencies, regardless of the underlying machine and the contents of the container.
5+
6+
The specification for Standard Containers is straightforward.
7+
It mostly defines 1) a file format, 2) a set of standard operations, and 3) an execution environment.
8+
9+
A great analogy for this is the shipping container.
10+
Just like how Standard Containers are a fundamental unit of software delivery, shipping containers are a fundamental unit of physical delivery.
11+
12+
## 1. Standard operations
13+
14+
Just like shipping containers, Standard Containers define a set of STANDARD OPERATIONS.
15+
Shipping containers can be lifted, stacked, locked, loaded, unloaded and labelled.
16+
Similarly, Standard Containers can be created, started, and stopped using standard container tools (what this spec is about); copied and snapshotted using standard filesystem tools; and downloaded and uploaded using standard network tools.
17+
18+
## 2. Content-agnostic
19+
20+
Just like shipping containers, Standard Containers are CONTENT-AGNOSTIC: all standard operations have the same effect regardless of the contents.
21+
A shipping container will be stacked in exactly the same way whether it contains Vietnamese powder coffee or spare Maserati parts.
22+
Similarly, Standard Containers are started or uploaded in the same way whether they contain a postgres database, a php application with its dependencies and application server, or Java build artifacts.
23+
24+
## 3. Infrastructure-agnostic
25+
26+
Both types of containers are INFRASTRUCTURE-AGNOSTIC: they can be transported to thousands of facilities around the world, and manipulated by a wide variety of equipment.
27+
A shipping container can be packed in a factory in Ukraine, transported by truck to the nearest routing center, stacked onto a train, loaded into a German boat by an Australian-built crane, stored in a warehouse at a US facility, etc.
28+
Similarly, a standard container can be bundled on my laptop, uploaded to S3, downloaded, run and snapshotted by a build server at Equinix in Virginia, uploaded to 10 staging servers in a home-made Openstack cluster, then sent to 30 production instances across 3 EC2 regions.
29+
30+
## 4. Designed for automation
31+
32+
Because they offer the same standard operations regardless of content and infrastructure, Standard Containers, just like their physical counterparts, are extremely well-suited for automation.
33+
In fact, you could say automation is their secret weapon.
34+
35+
Many things that once required time-consuming and error-prone human effort can now be programmed.
36+
Before shipping containers, a bag of powder coffee was hauled, dragged, dropped, rolled and stacked by 10 different people in 10 different locations by the time it reached its destination.
37+
1 out of 50 disappeared.
38+
1 out of 20 was damaged.
39+
The process was slow, inefficient and cost a fortune - and was entirely different depending on the facility and the type of goods.
40+
41+
Similarly, before Standard Containers, by the time a software component ran in production, it had been individually built, configured, bundled, documented, patched, vendored, templated, tweaked and instrumented by 10 different people on 10 different computers.
42+
Builds failed, libraries conflicted, mirrors crashed, post-it notes were lost, logs were misplaced, cluster updates were half-broken.
43+
The process was slow, inefficient and cost a fortune - and was entirely different depending on the language and infrastructure provider.
44+
45+
## 5. Industrial-grade delivery
46+
47+
There are 17 million shipping containers in existence, packed with every physical good imaginable.
48+
Every single one of them can be loaded onto the same boats, by the same cranes, in the same facilities, and sent anywhere in the World with incredible efficiency.
49+
It is embarrassing to think that a 30 ton shipment of coffee can safely travel half-way across the World in *less time* than it takes a software team to deliver its code from one datacenter to another sitting 10 miles away.
50+
51+
With Standard Containers we can put an end to that embarrassment, by making INDUSTRIAL-GRADE DELIVERY of software a reality.

0 commit comments

Comments
 (0)