== Introduction

This document describes **F Prime Prime**, also known as FPP or F Double Prime.
FPP is a modeling language for the
https://fprime.jpl.nasa.gov[F Prime flight software framework].
For more detailed information about F Prime, see the
https://fprime.jpl.nasa.gov/devel/docs/user-manual/[F Prime User Manual].

The goals of FPP are as follows:

* To provide a modeling language for F Prime that is simple, easy to use, and
well-tailored to its purpose.

* To provide semantic checking and error reporting for F Prime models.

* To generate code in the various languages that F Prime uses, e.g.,
{cpp} and JSON.
In this document, we will call these languages the *target languages*.

Developers may combine code generated from FPP with code written by hand to
create, e.g., deployable flight software (FSW) programs and ground data environments.

The name "`F Double Prime`" (or F&Prime;) deliberately suggests the idea of a
"`derivative`"
of F Prime (or F&prime;).
By "`integrating`" an FPP model (i.e., running the tools) you get a partial
FSW implementation in the F Prime framework; and then by "`integrating`" again
(i.e., providing
the project-specific {cpp} implementation) you get a FSW application.

*Purpose:* The purpose of this document is to describe FPP in a way that is accessible
to users, including beginning users.
A more detailed and precise description is available in
https://nasa.github.io/fpp/fpp-spec.html[_The FPP Language Specification_].
We recommend that you read this document before consulting that one.

*Overview:* The rest of this document proceeds as follows.
Section 2 explains how to get up and running with FPP.
Sections 3 through 12 describe the elements of an FPP
model, starting with the simplest elements (constants
and types) and working towards the most complex (components
and topologies).
Section 13 explains how to specify a model as a collection
of files: for example, it covers the management of dependencies
between files.
Section 14 explains how to analyze FPP models and how
to translate FPP models to {cpp} and JSON.
It also explains how to translate an XML format previously used
by F Prime into FPP.
Section 15 explains how to write a {cpp} implementation
against the code generated from an FPP model.
