orchestracities / ngsi-timeseries-api

QuantumLeap: a FIWARE Generic Enabler to support the usage of NGSIv2 (and NGSI-LD experimentally) data in time-series databases
https://quantumleap.rtfd.io/
MIT License
38 stars 49 forks source link

Truly reproducible, local-first builds and dev envs #772

Open c0c0n3 opened 2 weeks ago

c0c0n3 commented 2 weeks ago

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

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 commented 2 weeks ago

Forgot to mention: