Most of the issues presented here are only relevant for CGO and other
programming languages, not Go.

Also, could anyone share references about the security problems in Alpine?
I may say Windows is more secure and faster than Linux (or the opposite),
but without any evidence, it is just a conjecture.

Some of the advantages from Alpine for me:

* Image size. My internet connection is 1mbps (my country sucks) and I
usually have to share it with 15 other devices, so 100MB is a lot for me.

* Simplicity. It is easier to become a US citizen than having your package
in the Debian stable branch. Haha just kidding, but it is pretty hard and a
lot of organizational complexity happens there [1]. If you use apt to
install some tools, you will get old releases (which is good for end-users
or servers, they are really well tested, but we are developers, and in
production you should probably use `scratch` with distributed tracing,
logging, etc...). Mirroring Debian repositories takes a lot of storage
space (the last time I did, it was ~250GB) because you have to download
every release and you need special tools [2] for that (you can setup a
proxy instead, but internet access is required most of the time), also the
mirror gets invalidated every in a while, so you are forced to update or
you will end up with a broken environment. For an Alpine mirror you only
need rsync and some options for excluding unneeded releases, so less
storage space is required (3.12 is <20GB). (Again, my country sucks, so I
need a mirror, or I will wait more than 30 minutes every time I have to
install some packages).

* Consistency. If your build scripts work on Alpine, they will probably
work in any Unix (or at least Linux) environment.

I don't consider deployment advantages because as I said, I prefer
deploying my binaries with `scratch`, but if I have to use `alpine`, I
would say:

* Minimalism. It is not just only about numbers, but philosophy [3], Alpine
keeps everything as minimal as it can, packages are usually split into
`package`, `package-docs` (man pages), `package-{bash,zsh,...}-completion`,
so you get what you need, no more, no less.

* Security. The attack surface is very small and C binaries are compiled
with some good security options.

Don't take me wrong, I love Debian, it was my very first Linux
distribution. If CGO is a requirement and musl doesn't work out of the box,
you should choose `debian`, otherwise, I strongly recommend `alpine`.

[1]: https://www.debian.org/releases/
[2]: https://www.debian.org/mirror/ftpmirror
[3]: https://wiki.alpinelinux.org/wiki/Alpine_Linux:Overview

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAF9DLCm5Bd8B%2BBLtpk%2B4GGnj_eaiad92cASatcqkiSaWbUU%2BLw%40mail.gmail.com.

Reply via email to