From 8eef1e210cc19b0ae30fce1a37331bd5cc3be4a5 Mon Sep 17 00:00:00 2001 From: Pavel Gabriel Date: Wed, 2 Aug 2023 21:55:13 +0200 Subject: [PATCH] add go version support policy (#260) * add go version support policy * use oldstable alias for github workflows * run on both go versions stable and oldstable * no need to install make as we don't run it on windows * fix workflow * update project status * unify headers * update TOC * tiny updates into TOC --- .github/workflows/go.yml | 7 ++----- .github/workflows/release.yml | 6 +++--- README.md | 32 ++++++++++++++++++++++++++++---- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index aeb2800..dd2e8f9 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -13,20 +13,17 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] + version: [stable, oldstable] steps: - name: Set up Go 1.x uses: actions/setup-go@v4 with: - go-version: stable + go-version: ${{ matrix.version }} id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 - - name: Install make (Windows) - if: runner.os == 'Windows' - run: choco install -y make mingw - - name: Check if: runner.os == 'Linux' run: make check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4d7eb33..84723d0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v4 with: - go-version: stable + go-version: oldstable id: go - name: Check out code into the Go module directory @@ -64,7 +64,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v4 with: - go-version: stable + go-version: oldstable id: go - name: Check out code into the Go module directory @@ -132,7 +132,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v4 with: - go-version: stable + go-version: oldstable id: go - name: Check out code into the Go module directory diff --git a/README.md b/README.md index 9e2fc44..7aa9f19 100644 --- a/README.md +++ b/README.md @@ -30,12 +30,13 @@ ISO8583 implements an ISO 8583 message reader and writer in Go. ISO 8583 is an i - [Project status](#project-status) - [Go module](#go-library) +- [Go version support policy](#go-version-support-policy) +- [How to](#how-to) - [Define specification](#define-your-specification) - [Build message](#build-and-pack-the-message) - [Parse message](#parse-the-message-and-access-the-data) - [Inspect message fields](#inspect-message-fields) - - [JSON encoding](#json-encoding) - - [Network header](#network-header) + - [Encode/Decode from/to JSON](#json-encoding) - [ISO8583 CLI](#cli) - [Learn about ISO 8583](#learn-about-iso-8583) - [Getting help](#getting-help) @@ -44,11 +45,32 @@ ISO8583 implements an ISO 8583 message reader and writer in Go. ISO 8583 is an i ## Project status -Moov ISO8583 currently offers a Go package with plans for an API in the near future. Please star the project if you are interested in its progress. The project supports generating and parsing ISO8583 messages. Feedback on this early version of the project is appreciated and vital to its success. Please let us know if you encounter any bugs/unclear documentation or have feature suggestions by opening up an issue. Thanks! +Moov ISO8583 is a Go package that's been **thoroughly tested and trusted in the real world**. The project has proven its reliability and robustness in real-world, high-stakes scenarios. Please let us know if you encounter any missing feature/bugs/unclear documentation by opening up [an issue](https://github.com/moov-io/iso8583/issues/new). Thanks! ## Go library -This project uses [Go Modules](https://go.dev/blog/using-go-modules) and Go v1.18 or newer. See [Golang's install instructions](https://golang.org/doc/install) for help in setting up Go. You can download the source code and we offer [tagged and released versions](https://github.com/moov-io/iso8583/releases/latest) as well. We highly recommend you use a tagged release for production. +This project uses [Go Modules](https://go.dev/blog/using-go-modules). See [Golang's install instructions](https://golang.org/doc/install) for help in setting up Go. You can download the source code and we offer [tagged and released versions](https://github.com/moov-io/iso8583/releases/latest) as well. We highly recommend you use a tagged release for production. + +## Go version support policy + +### Always up-to-date, never left behind + +While we strive to embrace the latest language enhancements, we also appreciate the need for a certain degree of backward compatibility. We understand that not everyone can update to the latest version immediately. Our philosophy is to move forward and embrace the new, but without leaving anyone immediately behind. + +#### Which versions do we support now? + +As of today, we are supporting: + +1. Go 1.20 (current version) +2. Go 1.19 (previous version) + +#### What does this mean for you? + +Whenever a new version of Go is released, we will update our systems and ensure that our project remains fully compatible with it. At the same time, we will continue to support the previous version. However, once a new version is released, the 'previous previous' version will no longer be officially supported. + +#### Continuous integration + +To ensure our promise of support for these versions, we've configured our GitHub CI actions to test our code with both the current and previous versions of Go. This means you can feel confident that the project will work as expected if you're using either of these versions. ### Installation @@ -56,6 +78,8 @@ This project uses [Go Modules](https://go.dev/blog/using-go-modules) and Go v1.1 go get github.com/moov-io/iso8583 ``` +## How to + ### Define your specification Currently, we have defined the following ISO 8583 specifications: