Hi Denis, Adding to Andreas's thesis - it's hard to be the first =) and extending your concern - start with small; small series, small contribution, small steps, but be persistent in your efforts and keep the attitude (refering to Chris Hadfield's "An Astronaut's Guide to Life on Earth").
To ease you first step - just don't think about overwhelming complexity of bringing all 500+ (or more) packages into Guix at one go, start with short logical series say 5-10. Contribution in small series is, personally as a commiter, easy to review and merge quickly than wait for months when someone has a free time slot to review long chain (I try to find time between family duties and main job). Sending small series from larger count of involved contributors makes propagation of new packages much faster, e.g. you may pack 10 projects which will be in inputs for others sent by someone else etc. Take a look at the current effort of unbundle (gnu packages ipfs) - kubo. Bit by bit and we nearly unweaved the rainbow. --8<---------------cut here---------------start------------->8--- I've also no idea about how many go packages use bundled dependencies, so maybe if there is a way to somehow un-bundle part of the dependencies it could be a road to improve the situations as the maintenance the dependencies shared by many go packages could be shared somehow (assuming people do check that when updating things it doesn't break other packages). --8<---------------cut here---------------end--------------->8--- This part may be addressed in go-build-system with default phase, removing "vendor" directory - the only way to bundle in Go ecosystem. --8<---------------cut here---------------start------------->8--- Another issue is that all that is statically built but that's part of the default go compiler if I understood well, though given how Guix works, it might easier to somehow use shared libraries (compared to more standard distributions) if some compilers that support that since we don't need very strict/strong ABI guarantees with Guix, and thanks to that, reduce build times and resources consumption (like RAM, space, etc). --8<---------------cut here---------------end--------------->8--- There is nearly 0 linking to any libraries in Go ecosystem, each "library" is a bunch of code which compiler use to build the final binary, nothing is linked in terminology of C/C++ e.g. - library from the Golang point of view is a source code (text, not blob) --8<---------------cut here---------------start------------->8--- What would be the quality of the maintenance in the long run with about 500 packages to update? --8<---------------cut here---------------end--------------->8--- No need to update all the chain to make a fresh version of final binary in most cases it's enough to refresh 2-3 packages to make build/test green. Golang does not implement any pin mechanics for dependencie versions like Rust/Cargo does. So... let's get packages be packed and review in small consistence flow, keep your altitude and let the curiosity be with you! Keep hacking. -- Oleg
signature.asc
Description: PGP signature