Making Talkyard contributor friendly
Talkyard is open source, and it'd be good if it was simpler to contribute, without running into confusion e.g. when building images, or reading the source code. This is a roadmap for making it simpler, to contribute.
-
A simpler build system. Assuming you have installed Docker-Compose, then, this:
git clone https://github.com/debiki/talkyard cd talkyard make up # GNU Makeshould be enough, for pulling down Javascript and Scala dependencies, compiling and packaging, building Docker development mode images, and starting Talkyard. Actually, this seems to work, I just tested in new repo :- ) ... Stop everything like so:
make dead. Ok, so step 1 done? -
A simple way for deploying one's own images with Docker Compose or Swarm, HTTPS-proxied with Traefik or Caddyserver. See K8s, Swarm, Traefik and Talkyard.
Briefly, could be something like this?:
vi .env # fill in your repo name: DOCKER_REPOSITORY=... make prod-images make tag-and-push-lates-prod-images tag=v1.2.3 # pushes to your repo envsubst "VERSION_TAG=v1.2.3 REPO=..." < docker-stack.yml > my-stack.yml docker stack deploy -c my-stack.yml my-talkyard # deploys your images -
I'll write a Contributors Guide: A high level overview of how the source code is organized, to guide want-to-contribute people to the right places?
-
You, I and everyone create a todo list for improving the source code quality and clarity. E.g. refactoring, maybe adding something like Redux or MobX or ReactN. Using React Higher Order Components when appropriate. Renaming Scala classes. Fairly often, I ( @KajMagnus ) am probably the one who should do the actual source code changes, since I'm familiar with the code base — and you're the one who can tell me what needs to be done? Since I don't know what, from other people's perspectives, are the most annoying / confusing things.
Here's the above-mentioned todo list: Cleaner Code Todo List
— Feel free to post comments there. I won't start fixing things immediately. Instead, first, we'll just make a list. Then prioritizing.
-
Speed up the end-to-end tests. There are almost 100 end-to-end test suites, and they take about 50 minutes to run (in total). People cannot wait for that long, to find out if their code changes broke something? Instead, the e2e tests should run in parallel.
After these steps 1 to 5, it should be okay simple to read the contributor guide, find and edit the relevant files, and see if your changes work. And then deploying your custom images, or submitting a patch.
@IvanTheGeekI checked the current repo/docs against this 2018 roadmap. It looks partly implemented but not in a fully CI/reproducible-build sense.
The current developer flow is no longer just “install Docker Compose and run make up”; the docs now describe Debian/Ubuntu + Docker + Nix, then nix develop and s/tyd up. The Makefile still has up, prod-images, and image tagging/pushing targets, and production image building is documented.
However, I don’t see a single build container or hermetic builder image that makes the whole build reproducible and directly CI-able. There is a Nix flake, which helps pin host build tools like Node, pnpm, Deno, and GNU Make, but the production build script still assumes a prepared local host with Docker/sudo, .env, no conflicting containers, and Selenium started separately. It also has interactive prompts.
I also don’t see GitHub Actions workflows in the main repo; .github/workflows appears absent, and the Actions tab looks like the default empty/onboarding page. So my read is: Docker/Nix/Make-based local builds exist and are probably maintainer-usable, but there is not yet an out-of-the-box CI pipeline or fully reproducible build container.
via ChatGPT
KajMagnus @KajMagnus2026-07-08 15:21:43.453Z2026-07-08 15:28:41.358ZYes there's some manual steps in: https://github.com/debiki/talkyard/blob/main/docs/starting-talkyard.md, e.g. installing Docker, git, Nix.
Not sure how much this can be simplified. For example, some people have Docker, maybe Nix, installed already, others don't. I suppose they'll need to look at the readme and do or skip different steps.
Once the necessary stuff has been installed, starting Nix and:
make prod-imagesruns the tests and builds the images,
see: https://github.com/debiki/talkyard/blob/main/docs/building-images.md.(However there are some old Webdriverio 6 tests that I'm running separately for now, because of some Nodejs backw compat issue with
node-gypI think. I've been thinking about using an AI to port them to a newer Webdriverio version.)The current developer flow ...
It's a bit messy! And some old nowadays unused scripts lingering that can cause confusion I guess.
I'm planning to clean up such cruft, and finish some ongoing refactorings of the source code.
Continuous Integration
There's an experimental GitHub Actions branch, from 2022:
main-ci-test, https://github.com/debiki/talkyard/tree/main-ci-testIt builds everything and runs tests. But very out-of-date!
I would not recommend running it as is though! So many GitHub Actions supply chain attacks lately.
Reproducible Builds
This would be lovely, some day. I think Nixpkgs is the way to go.
