[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/