ngsi-timeseries-api icon indicating copy to clipboard operation
ngsi-timeseries-api copied to clipboard

Truly reproducible, local-first builds and dev envs

Open c0c0n3 opened this issue 5 months ago • 1 comments

Is your feature request related to a problem? Please describe.

We've wasted a huge amount of dev cycles over the years to debug and fix issues related to Docker images, remote builds and cross platform dev envs which resulted in different local builds. Technologies like Docker, GitHub actions, Circle CI, ReadTheDocs, PipEnv etc. basically all the stuff we use don't ensure true reproducibility. This is especially painful and time-consuming if a remote build breaks and then you've got to debug it to figure out how to fix it.

We'd like to have builds and dev envs that

  • work both on Linux and MacOS; and
  • are deterministic, irrespective of the platform on which you run them.

In particular, building on your laptop or on a remote machine should yield the exact same results. This means we can safely build and test locally since the outcome is the same for everybody. Then we can just use online services like GitHub as an extra convenience not as the main driver of our build and test process.

Describe the solution you'd like

Nixify everything in sight. Even Docker images we should build from Nix expressions. The dev env should contain absolutely everything you need to develop, build and test, including native tools and all their native libs---Bash, Docker, etc.

Describe alternatives you've considered

Guix. Possibly better from the programming language point of view, but Nix has an edge when it comes to the amount of available packages.

Additional context

See e.g. #273, #612, #734, #735. Plus all the time we wasted debugging GitHub actions, CircleCI failed tests, etc. It all adds up to months of development over four years.

c0c0n3 avatar Aug 29 '24 07:08 c0c0n3