the process was actually quite easy, i am impressed. the issue comes with VERY LONG compile times. having to wait around a whole week for it to finish grinding code before i could begin using it was somewhat frustrating.
the process was actually quite easy, i am impressed. the issue comes with VERY LONG compile times. having to wait around a whole week for it to finish grinding code before i could begin using it was somewhat frustrating.
It mainly gives you the option of changing a lot of settings which cannot be changed at runtime. Most C/C++ programs have preprocessor macros in them which let you choose to include or exclude various bits of code before sending it to the compiler. For instance, the Transmission Bittorrent client gives you options at compile time whether to enable support for GTK, QT, or a CLI interface, daemonization, systemd, which crypto library to use, etc. Once it's compiled, you're either stuck with a GTK, QT or a CLI interface. Most distributions ship with the GTK interface, but the choice is there.
The vast majority of non-trivial software has similar options, though they might not go as far as implementing the GUI in several toolkits. A lot of times experimental features (like native-compilation in Emacs) are made available through compile-time options which usually remain disabled by distributors. Other times you might decide you are never going to plug LibreOffice into a PostgreSQL database and can omit support for heavy features and additional dependencies with the flip of a switch.
Distributors generally do a good job of optimization and choosing sane defaults for security, but having access to compile time options can give you additional choices in terms of reducing attack surface and dependencies needed.
What Gentoo does is let you fiddle with most of these settings through an abstraction layer (USE flags) which automatically updates the dependency graph. For instance, Emacs will normally pull in X and GTK as dependencies, but if you compile it with the -X USE flag, all those dependencies will be eliminated from the dependency tree (at least for that package). This is a huge difference from binary distributions where software dependencies are essentially set in stone since they are pre-compiled with requirements for various dependencies. Otherwise, compiling software from source usually means you are working outside of your package manager and are responsible for manually ensuring the correct versions of the needed dependencies are installed, and cleaning up old versions which are no longer needed.