User:Callahanp/Flightgear Technical Manual

From FlightGear wiki
Jump to navigation Jump to search

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.

Developer Activities

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

Next Branch

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.

Upcoming Release

Current Release

LTS Release

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]


[Issues - 25 at a time]

[Issues - 250 at a time]

FlightGear Materials

Code and Data, Aircraft, Scenery, Airports

    • Open Scene Graph
    • Simgear
    • Flightgear

Development Tools

General and FlightGear Specific Skills

Flightgear Workflows

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
    • Simgear
    • Flightgear
  • Setting up working builds (not
  • Skill Development
    • clang & lldb
    • c++11 (now)
    • c++14 (not yet but soon)
    • c++17 (not yet but maybe soon)
    • c++20 (not yet)
    • CMake
    • Git
    • gdb
      • gdbgui
      • VS Code
      • Atom
      • Eclipse
      • ptrace
    • rr
    • valgrind
    • cppcheck
    • cppunit
    • boost test

[[ ]]

Organization. Slicing and Dicing the material.

  • Structural aspects of Flightgear
    • Startup, Initialization, Update, Restart & Shutdown
    • Subsystems
      • Creating small numerous objects
      • Gather and Orchestrating smaller pieces
    • xml
    • png, jpg
    • Models
    • Materials
    • Flight Dynamics Model
    • Communication & File IO
    • Property Tree
    • Tied Properties
    • Scene Graph
    • Main Loop
    • Nasal
    • Clouds
    • Flight Recorder
    • Heads Up Display
    • Multiplayer
    • Sound and Voice
    • Particles
    • Panels

  • Toolchains
  • Major Projects
    • Subsystem Conversion and Upgrades
    • Test Suite
    • Vulkan
    • Multiprocessing
    • Web Services
  • Activities
    • Bug Documentation
    • Changes in Official Flightgear Repositories
    • Changes in "upstream" hangars
    • Changes in Scenery Repositories