From f16f70596836b67a20ee269f2fc8ec6b48a14100 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Dan=C4=9Bk?= Date: Fri, 31 Oct 2025 18:51:52 +0100 Subject: [PATCH 1/2] NO-JIRA: chore(docs/adr): document language preference for Python, Go, and TypeScript --- ...-python-go-and-typescript-in-this-order.md | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 docs/architecture/decisions/0003-prefer-python-go-and-typescript-in-this-order.md diff --git a/docs/architecture/decisions/0003-prefer-python-go-and-typescript-in-this-order.md b/docs/architecture/decisions/0003-prefer-python-go-and-typescript-in-this-order.md new file mode 100644 index 0000000000..15a43a5074 --- /dev/null +++ b/docs/architecture/decisions/0003-prefer-python-go-and-typescript-in-this-order.md @@ -0,0 +1,54 @@ +# 3. Prefer Python, Go, and Typescript (in this order) + +Date: 2025-10-31 + +## Status + +Accepted + +## Context + +We have many Bash scripts, often they are inline scripts embedded in Dockerfiles. +This is hindering code reuse, and makes using good software engineering practices difficult. + +The current team self-reported that they are comfortable with Python, Go, and (to a lesser degree) TypeScript. +Use these languages in preference to Bash. + +## Decision + +The team has agreed to use Python, Go, and Typescript, in this order. + +For any new development, we should use the most appropriate language out of these. +Old code should be gradually migrated to one of the preferred languages. + +Avoid using Bash for anything more complicated than a `RUN dnf install -y ... && dnf clean all`. + +### Python + +_The language of AI._ + +Pytest as the currently most popular test discovery and execution tool. + +Rewriting Bash scripts to Python is verbose. Library to help with this is [sh](https://github.com/amoffat/sh) and others. + +The indentation-based syntax is obnoxious, multiline lambdas are not available. + +### Go + +_90% Perfect, 100% of the time._ [Brad Fitzpatrick, 2014](https://go.dev/talks/2014/gocon-tokyo.slide), [slide #36](https://go.dev/talks/2014/gocon-tokyo.slide#36) + +Good performance, creates native executables, first class library support for dealing with Kubernetes. + +### TypeScript + +_The language of the web._ + +Playwright has best support for TypeScript, other language bindings are a bit of a second class citizen. + +We will consider using full-stack TypeScript in preference to having either a Python or Go backend to a TypeScript frontend. + +## Consequences + +Less duplication of code due to easier maintenance, and testing of Python code, which should promote reuse. + +Simple scripts will be more verbose in Python, but this is a trade-off we can make. From 20c563bcb4b62fec337a1394980e8c3479a65859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Dan=C4=9Bk?= Date: Mon, 3 Nov 2025 11:36:15 +0100 Subject: [PATCH 2/2] Issue #2632: chore(ci): add `.travis.yml` for multi-arch test execution --- .travis.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..18b587c76a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,17 @@ +# https://docs.travis-ci.com/user/billing-overview/#partner-queue-solution +os: linux +arch: + - ppc64le + - s390x + +language: python +python: + - "3.12" + +install: + - pip install uv + - uv venv --python $(which python3.12) + - uv sync --locked + +script: + - make test