diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..18b587c76 --- /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 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 000000000..15a43a507 --- /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.