User:Callahanp/Flightgear and Simgear Code
Flightgear and Simgear Code
Getting Started or Rebooting
This is my personal attempt to describe aspects of the Flightgear and Simgear Codebase as I learn how to do maintenenance, bug fixes and eventually, (one hopes!) new contributions to the project. Caveat: I'm doing this not as a software beginner, but as someone new to Flightgear's codebase and to modern C++. Any specific statements about flightgear's code may not have been checked for accuracy by people who know the topics better than me. While its unlikely that what I write will be totally off base, there may be specifics that I get wrong.
I learned C++ in the 1990's, but never got a chance to apply it in my work. I'm retired and now's the time.
I got encouragement from the core developers. Then I read a lot of stuff on the wiki about how the project actually works. Then I got to work. Detailed work. I'm not about to ask the core developers to hold my hand and walk me through it all. But of course advice is always welcome and I'll be asking a few questions on the developer's mailing list.
Things almost ready for prime time
Here's what I've explored so far:
- Tools for a Flightgear Developer (see also Tools of the Trade)
- From Command Line to Holding Short. A look at what gets called when you start Flightgear
- Descriptions and file counts of flightgear/src and simgear/simgear subdirectories
What's in progress
- What's Happening in The Event Loop. Just a few calls in a loop
- Graphics: What you see and how it gets there
- Review selected Flightgear development projects for understanding, annotating each with reference to specific folders, modules and routines.
At this point I think the following topics are now open for further exploration:
- A Closer Look at Manager Modules Code that affects what other code does in some way, and Subsystems.
- The Property Tree
- Stepping through Code for Chosen Scenarios
- "Code Patterns" Found in Flightgear and Simgear
- More About Events and Event Handling.
- Visiting the Boundaries of Flightgear and Simgear. a look at things flightgear calls or customizes.
- The Immediate Future of Flightgear - A look at where Flightgear' codebase is heading. What people are working on now, and plan to work on for the immediate future, a version or two out. Moving more code to simgear, RTI etc.
At some point while exploring the topics above, I'll be taking a closer look at some of these: Application Code Structures:
- Any Method to Set or Get a Property
- The Property Tree
- Why Properties are Tied and why you can't subscribe to them through telnet. See: Howto:Use Property Tree Objects (the background here being that tied properties don't use the listener interface, but are basically raw pointers (references actually) - thus, listeners never "see" values being changed, because that would require using the public SGPropertyNode API to change the value, whereas tied properties access the raw memory directly - they were a performance hack introduced over a decade ago).
Things that seemed like a good idea at the time
- A look at where and how extensively particular Language Features are used in Flightgear.]] This page will be a long term effort, or will be cancelled.
Maybe separate pages for: