Skip to content

Commit 37b2d1b

Browse files
Add support for experimental event versions (#343)
Document how experimental event versions work and add words of caution in a couple of places in the documentation template. Co-authored-by: Emil Bäckmark <[email protected]>
1 parent 21148da commit 37b2d1b

26 files changed

+34
-1
lines changed

eiffel-syntax-and-usage/event-schemas.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Both schemas and documentation files are generated from _schema definition files
3131
| `_links.<link type>.description` | A description of the link type. |
3232
| `_links.<link type>.required` | A boolean value indicating whether a link of this type is required. Optional, default false. |
3333
| `_links.<link type>.multiple` | A boolean value indicating whether multiple links of this type is allowed. Optional, default false. |
34+
| `_links.<link type>.experimental` | A boolean value indicating whether the link type is experimental, i.e. the only valid target is an experimental event type. Optional, default false. |
3435
| `_links.<link type>.targets.any_type` | A boolean value indicating whether the link can point to an event of any type. |
3536
| `_links.<link type>.targets.types` | A string array of event names that the link type may point to. Must be non-empty if `any_type` is false, and must be empty if `any_type` is true. |
3637
| `_history` | An array of objects describing the event type's version history, up to and including the current version. The items should be sorted in reverse order. |

eiffel-syntax-and-usage/versioning.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,8 @@ As with any software, historical versions may need to be updated occasionally. U
5858
* If 2.0.0 and 2.0.1 exist, the 2.0.0 event may not serve as a baseline for new versions. Instead the 2.0.1 event shall be used as baseline for changes to the event type.
5959

6060
Users are not bound to use only event types included in an edition. To exemplify, a consumer may accept all [edition-toulouse](../../../tree/edition-toulouse) events, plus [EiffelIssueVerifiedEvent](../eiffel-vocabulary/EiffelIssueVerifiedEvent.md) 2.0.0, which is not included in that edition. Indeed, it may also accept additional events not included at all, such as [EiffelIssueDefinedEvent](../eiffel-vocabulary/EiffelIssueDefinedEvent.md). In this sense, editions are non-exclusive. That being said, if there is a need to identify a collection of events updated from a historical edition, a new edition may be created for that purpose. The naming scheme of such editions SHALL be `<baseline edition name>-<increment integer starting at 1>`. To exemplify, an updated [edition-toulouse](../../../tree/edition-toulouse) would be named `edition-toulouse-1`, while a subsequent one would be named `edition-toulouse-2`, et cetera.
61+
62+
## Experimental event versions
63+
To allow for experimentation with new event types that require actual usage to be fully understood and evaluated, pre-1.0.0 version numbers may be used. The first experimental version of an event is 0.1.0, and stepping the minor and patch components of such versions is done in the usual manner except the important difference that backwards incompatible changes may take place in any 0.x.y version. The introduction of a 0.x.y version of an event type does not imply that there will ever be a 1.0.0 version; it may be abandoned and not included in subsequent protocol editions.
64+
65+
Other events types may link to events that only exist as experimental. Normal rules apply when adding or removing such link types from a source event, i.e. adding the link requires a minor version stepping and removing it again (e.g. if the experimental event type is abandoned) requires a major version stepping. The source event type documentation should note that the target event type is experimental and that the link type may be removed in a later version.

eiffel-vocabulary/EiffelActivityCanceledEvent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--->
55

66
# EiffelActivityCanceledEvent (ActC)
7+
78
The EiffelActivityCanceledEvent signals that a previously triggered activity execution has been canceled _before it has started_. This is typically used in queuing situations where a queued execution is dequeued. It is recommended that __CAUSE__ links be used to indicate the reason.
89

910
## Data Members

eiffel-vocabulary/EiffelActivityFinishedEvent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--->
55

66
# EiffelActivityFinishedEvent (ActF)
7+
78
The EiffelActivityFinishedEvent declares that a previously started activity (declared by [EiffelActivityTriggeredEvent](./EiffelActivityTriggeredEvent.md) followed by [EiffelActivityStartedEvent](./EiffelActivityStartedEvent.md)) has finished.
89

910
## Data Members

eiffel-vocabulary/EiffelActivityStartedEvent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--->
55

66
# EiffelActivityStartedEvent (ActS)
7+
78
The EiffelActivityStartedEvent declares that a previously triggered activity (declared by [EiffelActivityTriggeredEvent](./EiffelActivityTriggeredEvent.md)) has started.
89

910
## Data Members

eiffel-vocabulary/EiffelActivityTriggeredEvent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--->
55

66
# EiffelActivityTriggeredEvent (ActT)
7+
78
The EiffelActivityTriggeredEvent declares that a certain activity - typically a build, test or analysis activity - has been triggered by some factor. Note that this is crucially different from the activity execution having _started_ (as declared by [EiffelActivityStartedEvent](./EiffelActivityStartedEvent.md)).
89

910
In a situation where execution follows immediately upon triggering these two events should be sent together. Where that is not the case (e.g. due to queuing) the time delta between EiffelActivityTriggeredEvent and EiffelActivityStartedEvent constitutes the queue time.

eiffel-vocabulary/EiffelAnnouncementPublishedEvent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--->
55

66
# EiffelAnnouncementPublishedEvent (AnnP)
7+
78
The EiffelAnnouncementPublishedEvent represents an announcement, technically regarding any topic but typically used to communicate any incidents or status updates regarding the continuous integration and delivery pipeline. This information can then be favorably displayed in visualization and dashboarding applications.
89

910
## Data Members

eiffel-vocabulary/EiffelArtifactCreatedEvent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--->
55

66
# EiffelArtifactCreatedEvent (ArtC)
7+
78
The EiffelArtifactCreatedEvent declares that a software artifact has been created, what its coordinates are, what it contains and how it was created.
89

910
## Data Members

eiffel-vocabulary/EiffelArtifactPublishedEvent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--->
55

66
# EiffelArtifactPublishedEvent (ArtP)
7+
78
The EiffelArtifactPublishedEvent declares that a software artifact (declared by [EiffelArtifactCreatedEvent](./EiffelArtifactCreatedEvent.md)) has been published and is consequently available for retrieval at one or more locations.
89

910
## Data Members

eiffel-vocabulary/EiffelArtifactReusedEvent.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
--->
55

66
# EiffelArtifactReusedEvent (ArtR)
7+
78
The EiffelArtifactReusedEvent declares that an identified [EiffelArtifactCreatedEvent](./EiffelArtifactCreatedEvent.md) has been _reused_ for an identified [EiffelCompositionDefinedEvent](./EiffelCompositionDefinedEvent.md). This means that it is logically equivalent to an artifact that would have been built from that composition, and can be used for build avoidance (see the [Build Avoidance Usage Example](../usage-examples/build-avoidance.md) for more information).
89

910
The event has no data members, but solely relies on its two required link types __REUSED_ARTIFACT__ and __COMPOSITION__ (see below).

0 commit comments

Comments
 (0)