Skip to content

Commit

Permalink
Introducing an explicit protocol versioning scheme. (#65)
Browse files Browse the repository at this point in the history
  • Loading branch information
d-stahl-ericsson committed Sep 6, 2016
1 parent acc6380 commit 99751a3
Show file tree
Hide file tree
Showing 51 changed files with 183 additions and 81 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ __IMPORTANT NOTICE:__ The contents of this repository currectly reflect a __DRAF
1. [Event Structure](./eiffel-syntax-and-usage/event-structure.md)
1. [The Meta Object](./eiffel-syntax-and-usage/the-meta-object.md)
1. [The Links Object](./eiffel-syntax-and-usage/the-links-object.md)
1. [Versioning](./eiffel-syntax-and-usage/versioning.md)
1. [Compositions and Validity Checking](./eiffel-syntax-and-usage/compositions-and-validity-checking.md)
1. The Eiffel Vocabulary
1. [EiffelActivityTriggeredEvent](./eiffel-vocabulary/EiffelActivityTriggeredEvent.md)
Expand Down
4 changes: 2 additions & 2 deletions eiffel-syntax-and-usage/the-meta-object.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ __Description:__ The type of event. This field is required by the recipient of t

### meta.version
__Type:__ String
__Format:__ Semantic version excluding PATCH.
__Format:__ [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html)
__Required:__ Yes
__Description:__ The version of the event type. This field is required by the recipient of the event to interpret the contents.
__Description:__ The version of the event type. This field is required by the recipient of the event to interpret the contents. Please see [Versioning](./versioning.md) for more information.

### meta.time
__Type:__ Integer
Expand Down
13 changes: 13 additions & 0 deletions eiffel-syntax-and-usage/versioning.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Versioning
In Eiffel, each individual event type is versioned independently. This version is declared by the __meta.version__ property (see [The Meta Object](./the-meta-object.md)) and follows the [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html) format. The documentation of each event type lists the complete version history of that type, including links to commits introducing older versions of the type.

The independent versioning of event types, as opposed to a protocol-wide versioning scheme, was chosen for the greater flexibility and extensibility it affords. There are consequences, however, which are important to understand:
* Consumers must always be ready to receive event types which they are unable to parse: the event producer may be ahead of the consumer on one event type, but not another. Similarly, new and/or custom event types must be expected and handled.
* Backwards incompatible changes may not be introduced to the __meta.type__ and __meta.version__ properties, as these together form the key which allows the consumer to unlock the remainder of the event.

That being said, to facilitate compatibility and consistency, the Eiffel protocol as described in this repository is released in named and internally coherent _editions_. Each of these editions is represented as a GitHub [release](https://github.com/Ericsson/eiffel/releases). A history of Eiffel editions is available below.

| Edition | Tag |
| --------- | ------------------ |
| Bordeaux | _First edition. Not yet finished. Planned for end of [Drop 4](https://github.com/Ericsson/eiffel/milestone/4)._ |

5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelActivityCanceledEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,10 @@ __Type:__ String
__Required:__ No
__Description:__ Any human readable information as to the reason for dequeueing.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelActivityCanceledEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelActivityFinishedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,10 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI at which the log can be retrieved.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelActivityFinishedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelActivityStartedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,10 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI at which the log can be retrieved.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelActivityStartedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelActivityTriggeredEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ __Required:__ No
__Legal values:__ MANUAL, SEMI_AUTOMATED, AUTOMATED, OTHER
__Description:__ The type of execution (often related to, but ultimately separate from, __data.trigger.type__).

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelActivityTriggeredEvent/simple.json)
* [Example containing custom data](../examples/events/EiffelActivityTriggeredEvent/simple-customdata.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelArtifactCreatedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,11 @@ __Type:__ String
__Required:__ Yes
__Description:__ The version of the dependency. Note that [version range notation](https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN402) is supported.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelArtifactCreatedEvent/simple.json)
* [Interface example](../examples/events/EiffelArtifactCreatedEvent/interface.json)
Expand Down
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelArtifactPublishedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,10 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI at which the artifact can be retrieved.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelArtifactPublishedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelCompositionDefinedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,10 @@ __Type:__ String
__Required:__ No
__Description:__ The version of the composition, if any. This is in a sense redundant, as relationships between compositions can be tracked via the __PREVIOUS_VERSION__ link type, but can be used for improved clarity and semantics.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelCompositionDefinedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,10 @@ __Type:__ String
__Required:__ No
__Description:__ Any group, such as a development team, committee or test group, to which the issuer belongs.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelConfidenceLevelModifiedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelEnvironmentDefinedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ __Type:__ String
__Required:__ No
__Description:__ A URI identifying the environment description. This is the catch-all method of environment descriptions. Eiffel does not concern itself with the format or nature of the description, but merely points to its location.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [URI example](../examples/events/EiffelEnvironmentDefinedEvent/uri.json)
* [Host example](../examples/events/EiffelEnvironmentDefinedEvent/host.json)
Expand Down
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelFlowContextDefinedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,10 @@ __Type:__ String
__Required:__ No
__Description:__ A version context which other events can relate to. This member SHOULD be used in tandem with one of the other optional members - a version by itself is not very informative.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelFlowContextDefinedEvent/simple.json)
8 changes: 7 additions & 1 deletion eiffel-vocabulary/EiffelSourceChangeCreatedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -191,5 +191,11 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI of the repo.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelSourceChangeCreatedEvent/simple.json)
* [Simple example](../examples/events/EiffelSourceChangeCreatedEvent/simple.json)

5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelSourceChangeSubmittedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,5 +126,10 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI of the repo.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelSourceChangeSubmittedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelTestCaseFinishedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,10 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI at which the log can be retrieved.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelTestCaseFinishedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelTestCaseStartedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,10 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI at which the log can be retrieved.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelTestCaseStartedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelTestSuiteFinishedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,10 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI at which the log can be retrieved.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelTestSuiteFinishedEvent/simple.json)
5 changes: 5 additions & 0 deletions eiffel-vocabulary/EiffelTestSuiteStartedEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,10 @@ __Type:__ String
__Required:__ Yes
__Description:__ The URI at which the log can be retrieved.

## Version History
| Version | Introducing Commit |
| --------- | ------------------ |
| 1.0.0 | _Current version_ |

## Examples
* [Simple example](../examples/events/EiffelTestSuiteStartedEvent/simple.json)
2 changes: 1 addition & 1 deletion examples/events/EiffelActivityCanceledEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelActivityCanceledEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelActivityFinishedEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelActivityFinishedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelActivityStartedEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelActivityStartedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"meta": {
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"type": "EiffelActivityTriggeredEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"source": {
"domainId": "test-domainId"
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelActivityTriggeredEvent/simple.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"meta": {
"id": "e1e93f13-7c3c-4f17-9753-ebf0c86ff1c2",
"type": "EiffelActivityTriggeredEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"source": {
"domainId": "example.domain"
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelArtifactCreatedEvent/backend.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelArtifactCreatedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"source": {
"domainId": "example.domain"
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelArtifactCreatedEvent/dependent.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelArtifactCreatedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"source": {
"domainId": "example.domain"
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelArtifactCreatedEvent/interface.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelArtifactCreatedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"source": {
"domainId": "example.domain"
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelArtifactCreatedEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelArtifactCreatedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelArtifactPublishedEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelArtifactPublishedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelCompositionDefinedEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelCompositionDefinedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"domainId": "example.domain",
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelConfidenceLevelModifiedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelEnvironmentDefinedEvent/host.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelEnvironmentDefinedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelEnvironmentDefinedEvent/image.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelEnvironmentDefinedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelEnvironmentDefinedEvent/uri.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelEnvironmentDefinedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelFlowContextDefinedEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelFlowContextDefined",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"source": {
"domainId": "example.domain"
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelSourceChangeCreatedEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelSourceChangeCreatedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"domainId": "example.domain",
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelSourceChangeSubmittedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"domainId": "example.domain",
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0"
Expand Down
2 changes: 1 addition & 1 deletion examples/events/EiffelTestCaseFinishedEvent/simple.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"meta": {
"type": "EiffelTestCaseFinishedEvent",
"version": "1.0",
"version": "1.0.0",
"time": 1234567890,
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0",
"source": {
Expand Down

0 comments on commit 99751a3

Please sign in to comment.