Why apply to Outreachy? > Outreachy Eligibility Rules > December 2018 to March 2019 Outreachy internships > GNU Guix

Outreachy internships

What is Outreachy?

Outreachy is a program that provides internships for people from groups traditionally underrepresented in tech. Interns are paid a stipend of $5,500 for a three month internship. The internship is completely remote, and interns come from around the world.

Interns work one-on-one with a mentor from Free and Open Source Software (FOSS) communities. The internship projects range from programming, user experience, documentation, illustration and graphical design, to data science.

Interns have $500 travel stipend available to use to attend tech events. Many interns use the travel stipend to network and find a job. Interns often find employment after their internship with Outreachy sponsors or in jobs that use the skills they learned during their internship.

For more information on who is eligible for Outreachy internships, see the eligibility page. A description of the application process can be found on the application instructions page

Outreachy Timeline

Sept. 19, 2018Outreachy application period opens and applicants make their required contributions to projects
Oct. 30, 2018Outreachy applications due for most GNU Guix projects
Nov. 6, 2018Some Outreachy GNU Guix projects have a late application deadline
Nov. 16, 2018Interns are publicly announced at 4pm UTC on the alums page
Dec. 4, 2018 to March 4, 2019Internships period

Outreachy Internships with GNU Guix

GNU Guix is a Free and Open Source Software (FOSS) community that is offering internship projects through the Outreachy program.

Internships with other FOSS communities can be found on the the current round page.

What is GNU Guix?

GNU Guix is a functional package manager written in Guile Scheme.

GNU Guix is a package management tool for the GNU system. Guix makes it easy for unprivileged users to install, upgrade, or remove packages, to roll back to a previous package set, to build packages from source, and generally assists with the creation and maintenance of software environments.

Guix provides a command-line package management interface (see Invoking guix package), a set of command-line utilities (see Utilities), as well as Scheme programming interfaces (see Programming Interface). Its build daemon is responsible for building packages on behalf of users (see Setting Up the Daemon) and for downloading pre-built binaries from authorized sources (see Substitutes).

Guix includes package definitions for many GNU and non-GNU packages, all of which respect the user’s computing freedom. It is extensible: users can write their own package definitions (see Defining Packages) and make them available as independent package modules (see Package Modules). It is also customizable: users can derive specialized package definitions from existing ones, including from the command line (see Package Transformation Options).

You can install GNU Guix on top of an existing GNU/Linux system where it complements the available tools without interference (see Installation), or you can use it as part of the standalone Guix System Distribution or GuixSD (see GNU Distribution). With GNU GuixSD, you declare all aspects of the operating system configuration and Guix takes care of instantiating the configuration in a transactional, reproducible, and stateless fashion (see System Configuration).

Under the hood, Guix implements the functional package management discipline pioneered by Nix (see Acknowledgments). In Guix, the package build and installation process is seen as a function, in the mathematical sense. That function takes inputs, such as build scripts, a compiler, and libraries, and returns an installed package. As a pure function, its result depends solely on its inputs—for instance, it cannot refer to software or scripts that were not explicitly passed as inputs. A build function always produces the same result when passed a given set of inputs. It cannot alter the environment of the running system in any way; for instance, it cannot create, modify, or delete files outside of its build and installation directories. This is achieved by running build processes in isolated environments (or containers), where only their explicit inputs are visible.

The result of package build functions is cached in the file system, in a special directory called the store (see The Store). Each package is installed in a directory of its own in the store—by default under /gnu/store. The directory name contains a hash of all the inputs used to build that package; thus, changing an input yields a different directory name.

This approach is the foundation for the salient features of Guix: support for transactional package upgrade and rollback, per-user installation, and garbage collection of packages (see Features).


Note that Guix can only be used on GNU+Linux systems, not on Mac or Windows machines.

Open Projects

Mentors for these projects are willing to work with new Outreachy applicants. Please note that as the round goes on, mentors may close their project to new applicants because they are already working with many applicants. Make sure to start your required contribution as soon as possible!

Each project mentor is looking for applicants who have different skills. Sometimes a skill is a hard requirement for an applicant to have. Other times, a mentor might prefer an applicant to have a skill, but they would accept an applicant as an intern who didn't have that skill. Some skills are "nice to have" meaning it would be great if applicants have this skill, but the mentor doesn't have a strong preference.

Each project will require a different level of experience with a particular skill. Experience levels are indicated with numbers:

Mentors are willing to teach this skill to applicants with no experience at all
Applicants should have read about the skill
Applicants should have used this skill in class or personal projects
Applicants should be able to expand on their skills with the help of mentors
Applicants who are experienced in this skill will have the chance to expand it further

GNU Guix extended deadline project #1

Create user video documentation for GNU Guix

Project details are hidden.The details may be hidden because you are not logged in. See the message in the box at the top of the page.

This project had a low number of applicants

Deadline was Nov. 6, 2018 to record your contributions and create a final application.

Skill description
Impact on intern selection
Experience Level
Good communication
Experience in creating documentation in general and video documentation in particular
Nice to have
Ability to select important/relevant information
Nice to have

Open Projects

Create user video documentation for GNU Guix

Deadline was Nov. 6, 2018 to record your contributions and create a final application.