gno icon indicating copy to clipboard operation
gno copied to clipboard

gitpod image

Open faddat opened this issue 3 years ago • 5 comments

The development environment image now supports all of the databases that gno does.

We can also...

faddat avatar May 21 '22 10:05 faddat

OK, so, it's still opaque, because in both cases, the original dockerfile, and the modified one seen here, we still have mystery meat:

In the first one the mystery meat is golang:1.18.1 & debian-slim -- we trust those

faddat avatar May 21 '22 19:05 faddat

But if we add this:

https://github.com/gnolang/gno/pull/178

Then the entire docker image build chain becomes fully transparent except for the compilation of the OS (and I do think that we can solve that part too, later, over time)

faddat avatar May 21 '22 19:05 faddat

If we merge #178 then, we get a mystery-meat-free clearly defined build and runtime environment that builds here and at that point, there's no remaining opacity other than the upstream build process for:

  • linux kernel
  • os packages
  • golang

and all of that can in fact be compiled in github actions, too.

Finally, to break the github chains, a second implementation of the builder can be kept self-hosted, to ensure that github is also not a dependency

faddat avatar May 21 '22 19:05 faddat

In the first one the mystery meat is golang:1.18.1 & debian-slim -- we trust those

Yes, we trust those, because they are standards used and reviewed by millions for more than 10 years.

They are known to be rigorous in terms of updates.

And the images are versioned.

Notional’s docker image is made by a bunch of people, no massive review, no versioning, no proof of release consistency, and the need to audit by ourselve what is changed.

moul avatar May 21 '22 21:05 moul

I’ve open a PR here -> https://github.com/gnolang/gno/pull/212

In this PR, I add `gofumpt and go pls, which looks like to be the two additions from your PR (I didn’t added golangci-lint yet, because the repo is not configured to support it yet).

This implementation is simple, pure go, and a way more transparent:

  • your solution -> docker is not versioned, and go install …@latest is not versioned
  • this solution -> go.mod enforced versions of our dev deps, simple

moul avatar May 21 '22 23:05 moul

@moul shall we move these thoughts to an issue and close this draft? Thanks!

ajnavarro avatar Jun 01 '23 12:06 ajnavarro