Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify and divide README #103

Merged
merged 1 commit into from
Sep 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Community Code of Conduct

OCM follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).
57 changes: 33 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,42 @@
# Open Component Model

This project provides a go library binding for working with the
[Open Component Model (OCM)](docs/README.md) and an [OCM command line client](docs/reference/ocm.md).

The library supports an extensible set of repository bindings for OCM repositories:
- OCI: use a repository prefix path of an OCI repository to implement an OCM
repository
- CTF (Common Transport Format): a file based binding to represent any set of
component versions as file system content (directory, tar, tgz)
- Component Archive: Compose the content of a component version on the
filesystem

Additionally it provides a generic solution
- to sign component version in any supported OCM repository implementation and
verify signatures based on public keys or verified certificates.
- to transport component versions, per reference or as value among any of those
The Open Component Model provides a standard for describing delivery [artefacts](https://github.com/gardener/ocm-spec/tree/main/doc/specification/elements#artifacts) that can be accessed from many types of [component repositories](https://github.com/gardener/ocm-spec/tree/main/doc/specification/elements#repositories).

## OCM Specifications
OCM defines a set of semantic, formatting, and other types of specifications that can be found in the [`ocm-spec` repository](https://github.com/gardener/ocm-spec/tree/main/doc/specification). Start learning about the core concepts of OCM elements [here](https://github.com/gardener/ocm-spec/tree/main/doc/specification/elements).

## OCM Library
This project provides a Go library containing an API for interacting with the
[Open Component Model (OCM)](https://github.com/gardener/ocm-spec) elements and mechanisms.

The library currently supports the following [repository mappings](docs/ocm/interoperability.md):
- **OCI**: Use the repository prefix path of an OCI repository to implement an OCM
repository.
- **CTF (Common Transport Format)**: Use a file-based binding to represent any set of
component versions as filesystem content (directory, tar, tgz).
- **Component Archive**: Compose the content of a component version on the
filesystem.

Additionally, OCM provides a generic solution for how to:
- Sign component versions in any supported OCM repository implementation.
- Verify signatures based on public keys or verified certificates.
- Transport component versions, per reference or as values to any of the
repository implementations.

This functionally is additionally put into a command line tool
([package `cmds/ocm`](cmds/ocm)), the
[`ocm` tool](docs/reference/ocm.md), which provides the
most of the functionality of the library on the command line. This makes is easy
to embed the creation of component versions in build processes, for example in a
[*makefile*](examples/make/Makefile).
## OCM CLI
The [`ocm` CLI](docs/reference/ocm.md) may also be used to interact with OCM mechanisms. It makes it easy to create component versions and embed them in build processes.

The `ocm` CLI documentation can be found [here]((https://github.com/gardener/ocm/blob/main/docs/reference/ocm.md)).

The code for the CLI can be found in [package `cmds/ocm`](https://github.com/gardener/ocm/blob/main/cmds/ocm).

An example of how to use the `ocm` CLI in a Makefile can be found in [`examples/make`](https://github.com/gardener/ocm/blob/main/examples/make/Makefile).

The OCI and OCM support can be found in packages
[`pkg/contexts/oci`](pkg/contexts/oci) and [`pkg/contexts/ocm`](pkg/contexts/ocm).

## Contributing

Code contributions, feature requests, bug reports, and help requests are very welcome.

There are several specifications:
- [Naming Schemes](docs/names/README.md)
- [Element Specifications](docs/formats/README.md)
OCM follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/main/code-of-conduct.md).