User:Callahanp/Flightgear Technical Manual
Without rewriting existing documentation, I'm going to try to organize all technical information related to Flightgear's code, Scenery, Aircraft and Airports to make it accessible from a single location. The intent is to create a resource that can be used by a new developer to contribute across a broad range of flightgear activities. The reader will be expected to read not just the material in this guide, but be familiar with material in a number of supplementary documents. The desired result should be that the reader can successfully work with and contribute changes or additions in one or more of C++ code, aircraft, scenery or airports.
The first audience for this document is myself. I'd like to find a way to make sure I'm not the only reader.
- Understanding the [Culture, History] and [Current State of the Flightgear Project]
- Getting appropriate copies of [FlightGear Materials], Code and Data, Aircraft, Scenery, Airports
- Obtaining the [Development Tools] needed to work on the material
- Gaining [General and FlightGear Specific Skills] for the work attempted
- Understanding and Executing the [FlightGear Workflows] related to other's changes to materials and your own changes.
FlightGear Culture and History
The FlightGear project has a more than 20 year history. There are individuals involved who have in-depth knowledge of various aspects of it, but there is no one single overall manager, or even managers in charge of specific subject areas, although there are experts in these various subject areas participating regularly within the project.
There have been a number of discussions over the years about the project. These discussions on the [flightgear-devel mailing list] along with flightgear forum entries and wiki articles are an important source of information for new developers. Rather than summarize them here, I'm providing links to those I think important enough to review immediately if you are new to the project or would like a refresher.
To Do: Find a few relevant email threads. Include threads on controversial topics such as Rembrandt and GPL issues
FlightGear Current Status
Current activity on next includes fixes that may or may not be included in 2020.2 next lts release, 2020.1 current release) and 2018.3 (lts release)
After the release of 2020.2, the next branch will be used for a number of potentially breaking changes. This is being discussed on the mailing list. The work may affect those that use Scripted compilation on Linux to build a working version of Flightgear.
The term Long Term Support is used by flightgear to indicate a release that will receive fixes to issues uncovered in the LTS branch as well as backported changes deemed important enough to include.
Current Activities being discussed on [flightgear-devel mailing list]
Code and Data, Aircraft, Scenery, Airports
- Open Scene Graph
General and FlightGear Specific Skills
Workflow - Reacting to a New Flightgear Release
Workflow - Reacting to Ongoing Changes
Changes in the Next Branch
Changes in a Release Branch
Changes in Another User's Fork
Your Own Changes intended for Release
Your Own Changes intended for Investigation
- Open Scene Graph
- Setting up working builds (not download_and_compile.sh)
- Skill Development
- clang & lldb
- c++11 (now)
- c++14 (not yet but soon)
- c++17 (not yet but maybe soon)
- c++20 (not yet)
- VS Code
- boost test
Organization. Slicing and Dicing the material.
- Structural aspects of Flightgear
- Startup, Initialization, Update, Restart & Shutdown
- Creating small numerous objects
- Gather and Orchestrating smaller pieces
- png, jpg
- Flight Dynamics Model
- Communication & File IO
- Property Tree
- Tied Properties
- Scene Graph
- Main Loop
- Flight Recorder
- Heads Up Display
- Sound and Voice
- Major Projects
- Subsystem Conversion and Upgrades
- Test Suite
- Web Services
- Bug Documentation
- Changes in Official Flightgear Repositories
- Changes in "upstream" hangars
- Changes in Scenery Repositories