How to Dev

From Funtoo
Revision as of 03:42, 29 June 2014 by Drobbins (Talk | contribs)

Jump to: navigation, search

How to 'dev'

Tip: This page will continue to be updated with development-related information... thanks for your interest :)

This page serves as the official introduction on how to collaborate with our community and help to improve Funtoo Linux.


Thanks for your interest in helping out with Funtoo Linux! Funtoo Linux has existed for several years, and we've been using git since the beginning of the project, but have played with various approaches on how to develop Funtoo Linux in a collaborative fashion. Some approaches have worked, some haven't, and I (Daniel) and others like to periodically experiment with different approaches, so these methods are likely to change in the future.

Let's start by doing a quick overview of Funtoo infrastructure and how it (currently) relates to Funtoo Linux development.

Currently, serves as the center of operations for all development. If you're going to collaborate with us, then you should definitely Create a Funtoo account and familiarize yourself with our bug tracker. We try to ensure that all work in Funtoo Linux has a corresponding issue opened on the bug tracker, so there is some reference for someone to look to find out why some change was made.

The Wiki

You are currently reading the wiki, and it is becoming a more and more important part of development. We currently have the ability to define wiki pages for Ebuilds, which are used as official documentation for the ebuild. Documentation is a very important part of Funtoo Linux development, and you're strongly encouraged to read about Adding an Ebuild to the Wiki. Developers who write good documentation gain much respect :)

All of our master git repositories exist on


We have mirrors of all our git repositories on GitHub. When we push to a repository on, it automatically pushes the change to the corresponding repo on GitHub, too.

This has historically created some confusion, because we don't really (right now) do active development on GitHub, using pull requests. If you have an improvement to Funtoo Linux, we want you to open a bug on our bug tracker. However, I am hoping that this will change - see Bug FL-1322. But for now, if you create an issue or a pull request on GitHub, we probably won't see it in a timely manner.

The Git Repositories Themselves

One important thing to understand about Funtoo Linux is that the git tree you receive when you type emerge --sync is what I call a transport tree -- it is used to deliver updates to you, but it is not used for development. Our main /usr/portage tree can be seen at or is generated using automated scripts which take the Gentoo Portage tree, various funtoo overlays, and several other overlays and combine them into a unified tree. We generate an updated commit for our transport tree every 4 hours.

Development Trees

The repositories that we actually do development in are:

 Repository ID
Bar Overlaybar-overlay
Bliss Overlaybliss-overlay
Foo Overlayfoo-overlay
Funtoo DeaDBeeF Overlayfuntoo-deadbeef
Funtoo GNOME Overlayfuntoo-gnome-overlay
Funtoo LDAP Overlayfuntoo-ldap
Funtoo MySQL Overlayfuntoo-mysql
Funtoo Overlayfuntoo-overlay
Funtoo Plex Overlayfuntoo-plex
Progress Overlayprogress
Squeezebox Overlaysqueezebox

funtoo-overlay is where nearly all of the core Funtoo forked ebuilds live. This tree is maintained by senior Funtoo staff and the BDFL, and also contains stuff like our Funtoo 1.0 Profile system, and the actual scripts that are used to generate our main "transport" tree that users receive.

The Funtoo LDAP and GNOME overlays are examples of development trees where Funtoo staff have collected a bunch of ebuilds that were cluttering up funtoo-overlay, and placed them in their own repository to improve organization. These are treated as extensions of funtoo-overlay.

The Plex overlay and DeaDBeeF overlays are examples of overlays that are maintained by independent developers, and these overlays are hosted in these developers' GitHub accounts. We have added these overlays to our merge script, so any updates made to these GitHub repositories are automatically pulled into our transport tree.