Howto:Start core development: Difference between revisions

Jump to navigation Jump to search
This is out of date - Gitorious is no longer where development occurs. The Gitorious links have been deleted or replaced with {{repo link}} subtemplates.
(This is out of date - Gitorious is no longer where development occurs. The Gitorious links have been deleted or replaced with {{repo link}} subtemplates.)
Line 1: Line 1:
 
{{out of date}}


''01/2012: I have taken my [http://flightgear.org/forums/viewtopic.php?f=18&t=14870#p146436 forum response] and copied/pasted it here. Everybody is invited to contribute. While we do have a [[Volunteer]] page, we don't currently have a page dedicated to people wanting to contribute to the C++ source code, so this is an attempt to get something like this started.''
''01/2012: I have taken my [http://flightgear.org/forums/viewtopic.php?f=18&t=14870#p146436 forum response] and copied/pasted it here. Everybody is invited to contribute. While we do have a [[Volunteer]] page, we don't currently have a page dedicated to people wanting to contribute to the C++ source code, so this is an attempt to get something like this started.''
Line 147: Line 147:
Note that this article is meanwhile somewhat deprecated and these days using gitorious (and filing merge requests there) is pretty much encouraged. If your patch is related to a previously reported bug/defect, you can obviously also use the issue tracker (see below).
Note that this article is meanwhile somewhat deprecated and these days using gitorious (and filing merge requests there) is pretty much encouraged. If your patch is related to a previously reported bug/defect, you can obviously also use the issue tracker (see below).


In general, the FlightGear gitorious project is the entry point for new developers: http://gitorious.org/fg/
In general, the FlightGear gitorious project is the entry point for new developers.


Some more recommendations can be found at [[Recommended Project Policies]].
Some more recommendations can be found at [[Recommended Project Policies]].
Line 230: Line 230:


= Important docs =
= Important docs =
There's a wealth of documentation to get you started available in [http://gitorious.org/fg/fgdata/trees/master/Docs $FG_ROOT/Docs]
There's a wealth of documentation to get you started available in {{fg root file|Docs}}


API docs auto generated from source are at http://api-docs.freeflightsim.org/
API docs auto generated from source are at http://api-docs.freeflightsim.org/
Line 262: Line 262:
If your C++ is rusty and you'd just like to get started quickly, there are also certain FG components that are strictly (largely) pure C, the Nasal interpreter is just one example (Nasal is FlightGear's built in scripting language): http://wiki.flightgear.org/Nasal_scripting_language
If your C++ is rusty and you'd just like to get started quickly, there are also certain FG components that are strictly (largely) pure C, the Nasal interpreter is just one example (Nasal is FlightGear's built in scripting language): http://wiki.flightgear.org/Nasal_scripting_language


The Nasal interpreter is part of the SimGear project, and can be found in $SG_SRC/nasal: http://gitorious.org/fg/simgear/trees/next/simgear/nasal
The Nasal interpreter is part of the SimGear project, and can be found in $SG_SRC/nasal: {{simgear url|trees/next/simgear/nasal}}


The longest-standing issue related to Nasal scripting is fixing its Garbage Collector (GC) to become generational, incremental or even concurrent, this is to reduce main loop impact (frame rate & frame spacing), see [[How the Nasal GC works]] to learn more. Almost certainly, we're going to adopt an existing GC library, or even implement an interface to experiment with different GC schemes, and allow those to be selected at startup.
The longest-standing issue related to Nasal scripting is fixing its Garbage Collector (GC) to become generational, incremental or even concurrent, this is to reduce main loop impact (frame rate & frame spacing), see [[How the Nasal GC works]] to learn more. Almost certainly, we're going to adopt an existing GC library, or even implement an interface to experiment with different GC schemes, and allow those to be selected at startup.
Line 272: Line 272:
None of this requires any C++ knowledge!
None of this requires any C++ knowledge!


Only the scripting interface connecting the Nasal interpreter and FlightGear is implemented in C++, it can be found in $FG_SRC/Scripting: http://gitorious.org/fg/flightgear/trees/next/src/Scripting
Only the scripting interface connecting the Nasal interpreter and FlightGear is implemented in C++, it can be found in {{fg src file|Scripting}}


Basically, the scripting interface implements a custom SGSubsystem, so that the Nasal interpreter can be run as a FlightGear system. In addition, all FlightGear-specific extension functions are to be found there. Increasingly, this folder also contains wrappers to map FlightGear classes to Nasal space in an OOP fashion using the [[Nasal/CppBind]] framework, so that not just functions, but full "objects" are provided, which are computed lazily. If that's what you are interested in, you should take a look at the NasalPositioned_cppbind.cxx source code, which demonstrates how this is done.
Basically, the scripting interface implements a custom SGSubsystem, so that the Nasal interpreter can be run as a FlightGear system. In addition, all FlightGear-specific extension functions are to be found there. Increasingly, this folder also contains wrappers to map FlightGear classes to Nasal space in an OOP fashion using the [[Nasal/CppBind]] framework, so that not just functions, but full "objects" are provided, which are computed lazily. If that's what you are interested in, you should take a look at the NasalPositioned_cppbind.cxx source code, which demonstrates how this is done.

Navigation menu