<commit_before># CloudEvents SDK Requirements

The intent of this document to describe a minimum set of requirements for new
Software Development Kits (SDKs) for CloudEvents. These SDKs are designed and
implemented to enhance and speed up CloudEvents integration. As part of
community efforts CloudEvents team committed to support and maintain the
following SDKs:

- [CSharp](https://github.com/cloudevents/sdk-csharp)
- [Go SDK](https://github.com/cloudevents/sdk-go)
- [Java SDK](https://github.com/cloudevents/sdk-java)
- [JavaScript SDK](https://github.com/cloudevents/sdk-javascript)
- [Python SDK](https://github.com/cloudevents/sdk-python)
- [Ruby SDK](https://github.com/cloudevents/sdk-ruby)

This is intended to provide guidance and requirements for SDK authors. This
document is intended to be kept up to date with the CloudEvents spec.

## Contribution Acceptance

Being an open source community the CloudEvents team is open for new members as
well open to their contributions. In order to ensure that an SDK is going to be
supported and maintained the CloudEvents community would like to ensure that:

- Each SDK has active points of contact.
- Each SDK supports the latest(N), and N-1, major releases of the
  [CloudEvent spec](spec.md)\*.
- Within the scope of a major release, only support for the latest minor
  version is needed.

Support for release candidates is not required, but strongly encouraged.

\* Note: v1.0 is a special case and it is recommended that as long as v1.0
  is the latest version, SDKs should also support v0.3.

## Technical Requirements

Each SDK MUST meet these requirements:

- Supports CloudEvents at spec milestones and ongoing development version.
  - Encode a canonical Event into a transport specific encoded message.
  - Decode transport specific encoded messages into a Conical Event.
- Idiomatic usage of the programming language.
  - Using current language version(s).
- Supports HTTP transport renderings in both `structured` and `binary`
  encodings.

### Object Model Structure Guidelines

Each SDK will provide a generic CloudEvents class/object/structure that
represents the conical form of an Event.

The SDK should enable users to bypass implementing transport specific encoding
and decoding of the CloudEvents `Event` object. The general flow for Objects
should be:

```
Event (-> Message) -> Transport
```

and

```
Transport (-> Message) -> Event
```

An SDK is not required to implement a wrapper around the transport, the focus
should be around allowing programming models to work with the high level `Event`
object, and providing tools to take the `Event` and turn it into something that
can be used with the implementation transport selected.
<commit_msg>Replace "conical" with "canonical" in "SDK Requirements"<commit_after># CloudEvents SDK Requirements

The intent of this document to describe a minimum set of requirements for new
Software Development Kits (SDKs) for CloudEvents. These SDKs are designed and
implemented to enhance and speed up CloudEvents integration. As part of
community efforts CloudEvents team committed to support and maintain the
following SDKs:

- [CSharp](https://github.com/cloudevents/sdk-csharp)
- [Go SDK](https://github.com/cloudevents/sdk-go)
- [Java SDK](https://github.com/cloudevents/sdk-java)
- [JavaScript SDK](https://github.com/cloudevents/sdk-javascript)
- [Python SDK](https://github.com/cloudevents/sdk-python)
- [Ruby SDK](https://github.com/cloudevents/sdk-ruby)

This is intended to provide guidance and requirements for SDK authors. This
document is intended to be kept up to date with the CloudEvents spec.

## Contribution Acceptance

Being an open source community the CloudEvents team is open for new members as
well open to their contributions. In order to ensure that an SDK is going to be
supported and maintained the CloudEvents community would like to ensure that:

- Each SDK has active points of contact.
- Each SDK supports the latest(N), and N-1, major releases of the
  [CloudEvent spec](spec.md)\*.
- Within the scope of a major release, only support for the latest minor
  version is needed.

Support for release candidates is not required, but strongly encouraged.

\* Note: v1.0 is a special case and it is recommended that as long as v1.0
  is the latest version, SDKs should also support v0.3.

## Technical Requirements

Each SDK MUST meet these requirements:

- Supports CloudEvents at spec milestones and ongoing development version.
  - Encode a canonical Event into a transport specific encoded message.
  - Decode transport specific encoded messages into a Canonical Event.
- Idiomatic usage of the programming language.
  - Using current language version(s).
- Supports HTTP transport renderings in both `structured` and `binary`
  encodings.

### Object Model Structure Guidelines

Each SDK will provide a generic CloudEvents class/object/structure that
represents the canonical form of an Event.

The SDK should enable users to bypass implementing transport specific encoding
and decoding of the CloudEvents `Event` object. The general flow for Objects
should be:

```
Event (-> Message) -> Transport
```

and

```
Transport (-> Message) -> Event
```

An SDK is not required to implement a wrapper around the transport, the focus
should be around allowing programming models to work with the high level `Event`
object, and providing tools to take the `Event` and turn it into something that
can be used with the implementation transport selected.

{'fraction_non_alphanumeric': 0.06587807097361237, 'fraction_numerical': 0.0025477707006369425, 'mean_word_length': 4.457795431976167, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 11, 'https://': 12, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3027769', 'n_tokens_mistral': 1467, 'n_tokens_neox': 1372, 'n_words': 722}