[Gentoo](https://www.gentoo.org/) is a source-based independent Linux distro. # Notability Gentoo is perhaps the most customizable Linux distro out there unless you count [[Linux From Scratch]]. I spent many many hours configuring compiler flags and building custom kernels in Gentoo around 2008. Only rarely did I get GUI working on it, but I was very happy with the terminal experience I built for myself and many of the configurations and scripts I still use today saw a lot of development during that era. Gentoo is now considered part of the old guard and most people with that DIY attitude use [[Arch Linux]] these days. Gentoo also historically had the best wiki documentation. It has since mostly been surpassed by [[Arch Linux]] but Gentoo is still a very useful trove of information. ## Distros Based on Gentoo There are many distros based on Gentoo, but there are a few I consider partcularly notable: - [[Funtoo]] was started by the same creator after a split (defunct as of [[2024]]) - [[ChromiumOS]] and [[ChromeOS]] operated by Google - Container Linux formerly CoreOS was also based on Gentoo before being taken over by Red Hat and subsequently rewritten on top of Red Hat Linux, [Flatcar](https://www.flatcar.org/) is the spiritual successor still based on Gentoo with improvements from ChromiumOS # Philosophy ## Source-Based Gentoo is a source-based distro, meaning that every package you download must be compiled on your machine. ## Anti-AI Policy Gentoo has a strong, simple, policy against AI-powered contributions. ```cardlink url: https://wiki.gentoo.org/wiki/Project:Council/AI_policy title: "Project:Council/AI policy - Gentoo wiki" host: wiki.gentoo.org ``` # Features ## USE Flags [USE flags](https://wiki.gentoo.org/wiki/USE_flag) tell Portage what features (and optional dependencies) to build into a package at compile time. > USE flags are options \[that tell Gentoo\] how to build a package. They enable or disable features in that software. Simple example you build VLC with "USE=-opus". This will make VLC unable to play files using the opus codec but it also changes the dependencies of VLC and it won't need to build libopus anymore. > > So if you don't need some feature in your system at all you can put -*featureflag* into make.conf and it will be disabled for all software in your system drastically shrinking the dependency tree. Or you can put it into a package specific configuration and only set the useflag for one specific package like you want to be able to play opus in all software but not in VLC. \- user via Reddit [comment](https://www.reddit.com/r/Gentoo/comments/181ari0/can_someone_give_more_explanation_about_use_flags/) ### Configuring USE Flags USE flags may be set globally or for a specific package with [`make.conf`](https://wiki.gentoo.org/wiki//etc/portage/make.conf) and [`package.use`](https://wiki.gentoo.org/wiki//etc/portage/package.use) files. ### USE Flags: Optional Features USE flags may toggle compile-time options. For example: Most packages can be built with debug symbols, but usually do not be default. ### USE Flags: Dependencies USE flags may also control what dependencies are allowed for packages. For example: VIM can optionally be built against different scripting languages, like Ruby and Python, but these are optional and can be excluded. ### USE Flags: Package Preferences USE flags may be used to control what files are installed from a package. For example: documentation or other optional files. # References - https://unix.stackexchange.com/questions/108468/gentoo-linux-portage-use-flags-what-is-the-difference-between-removing-a-defaul - https://www.reddit.com/r/Gentoo/comments/j88og1/necessary_use_flags_for_gui_apps/