# A logo for bpftool [![License: CC BY 4.0][badge]][cc-by-4.0]

[badge]: https://img.shields.io/badge/License-CC_BY_4.0-blue.svg
[cc-by-4.0]: https://creativecommons.org/licenses/by/4.0/

![bpftool logo](bpftool_stacked_color.svg)

Meet **Hannah the Honeyguide**, bpftool's mascot. She is a [greater
honeyguide](https://en.wikipedia.org/wiki/Greater_honeyguide), but a juvenile
one, as can be seen from her yellow throat. We accentuated her shades, because
Hannah really wanted to share colors with eBee and Tux (the mascots for eBPF
and Linux, respectively).

Living in sub-Saharan Africa, greater honeyguides are known for guiding humans
to the nests of wild bees. They use a specific call to attract human attention,
then they fly towards the hive. Once the honey hunters have found and harvested
the nest, greater honeyguides feed on the remnants of the hive, eating bee eggs
and larvae, and even beeswax.

Like a honeyguide, bpftool guides humans towards bees, or to be more accurate,
towards BPF objects loaded on a system: after all, one of the primary use cases
for bpftool is to load and inspect BPF programs and maps. Don't worry, bpftool
will not eat your programs. Although, it could well detach programs and have
them removed from the kernel, if you asked it to. Of course, bpftool is a piece
of software and cannot "expect" to receive something in return for its
services. But think of it this way: for guiding humans to BPF, it feeds on
software maintenance and new features. Isn't that some form of mutualism, after
all?

Greater honeyguides are also brood parasites: the females lay their eggs in the
nests of birds of different species, and the chicks attempt to get rid of any
competitors as soon as they hatch. Thankfully, Hannah chose not to fight at
birth. As for bpftool? Shhhh, we may well have placed it in a particular
penguin's nest, so it could thrive. But we're happy to report that bpftool
never pushed any other project out of the Linux repository!

**License:** The logos are licensed under the [Creative Commons Attribution 4.0
International (CC-BY-4.0)][cc-by-4.0]. Reuse them as you want, but please
credit the bpftool authors. The logos were designed by Quentin Monnet. The font
used to typeset "bpftool" is
[Raleway](https://www.theleagueofmoveabletype.com/raleway).
