# Guide to bringing a new language to Fuchsia

Fuchsia is designed to support a wide variety of languages.  This directory
contains documentation about how to bring a new language to Fuchsia.

## Topics

 * [How to structure Fuchsia support for a language](structure.md)
 * [Fuchsia System Interface](/docs/concepts/packages/system.md)
