ory / oathkeeper

A cloud native Identity & Access Proxy / API (IAP) and Access Control Decision API that authenticates, authorizes, and mutates incoming HTTP(s) requests. Inspired by the BeyondCorp / Zero Trust white paper. Written in Go.
https://www.ory.sh/?utm_source=github&utm_medium=banner&utm_campaign=hydra
Apache License 2.0
3.25k stars 359 forks source link

Moving forward with this project's versioning #130

Closed aeneasr closed 5 years ago

aeneasr commented 6 years ago

Hi there,

so I kinda messed up. This project is currently released as version v1.0.0-beta.X. The goal of this was to have one coherent version across all services to make integration of them as easy as possible. While that was a good intention, releasing something as v1.0.0 gave the wrong impression of stability, and rightful so. My initial idea was to label projects that are not fully backed yet with a -sandbox or -preview tag (v1.0.0-sandbox) but that contradicts how semantic versioning works and is probably even more confusing.

For so many reasons this was a bad decision, this project specifically moved right away from v0.0.29 to v0.11.0 to v1.0.0 - instead of going through a "sandbox" or "graduating" phase where you, the community, evaluates the usefulness of the service and gives feedback on missing parts which may require breaking changes.

To resolve this, we worked on a new concept which I would like to present to you here. To not make the same mistake again, I want to get your feedback on this before moving forward with this plan. Implementing this plan implies that versions v1.0.0-beta.* will be purged and that we will start tagging this as a v0.y.z release instead.

Please read (and give feedback) on the following paragraphs which will be (upon approval) immortalized in the ORY Documentation:

Software Versions

The ORY ecosystem consists of multiple services versioned using semantic versioning. This section explains how we define service versions and what they mean.

There are two types of services:

To make deployment easier but stay compatible with semantic versioning, each service is equipped with a ecosystem version number denoted by +oes.X where X represents the version ecosystem. This is specifically useful when using incubating or sandboxed services which do not share the version numbers of graduated services. Let's look at some examples:

Important: Each release - unless explicitly labeled as -unstable - is going through extensive quality assurance and is considered secure and reliable enough to be run in production. If you choose to go with an incubating or sandbox service, it is likely that you will spend some time addressing breaking changes.

We always provide ways to migrate breaking changes, and all breaking changes are meticolously described in each project's UPGRADE.md as well as HISTORY.md.

aeneasr commented 5 years ago

Fixed