> Except for a few inconsistencies in xml style that already have been 
> mentioned I think it's worth adding it then.

Maybe I am misunderstanding this issue, but I have been involved in using 
FlightGear at work for a number of simulation related projects during the last 
couple of years, and to me some things are still unclear:

Personally, my understanding of the property tree is that of an IPC enabling 
mechanism, that ties together all FlightGear subsystems and often also many 
non-FlightGear related tools/software even outside its own address space.

So from my point of view, it is seems important to keep in mind that the 
property tree is not only about global variable storage but that it's also 
FlightGear's one and only standardized IPC mechanism, all subsystems and many 
FlightGear related tools that work outside the fgfs process space communicate 
with each other using the property tree and its natively supported types.

With this in mind, it really seems of paramount importance that all property 
tree users (fgfs subsystems or external tools) have a concept and way of 
dealing with the native data types represented in the property tree. This 
exactly is it what makes the property tree, and more generally, FlightGear so 
intuitive, unobfuscated, powerful and easy to extend. 
This has been my experience when interfacing FlightGear to other software.

Enhancing the property tree to support new component-specific native types that 
cannot be directly accessed, manipulated or processed by all or at least many 
other FlightGear related subsystems and tools seems like a troubling idea to 
me, in particular when it's not even foreseeable that other subsystems are 
going to develop a demand to also benefit from such a change eventually (just 
because they can already do all of this simply by using a more verbose, 
user-friendly and self-explanatory format that's been in use for years).

Just think about some of the more complex systems that depend on having a full 
understanding of all property tree data and types, such as Nasal, the XML 
protocol system, the telnet interface to the property tree or the multiplayer 
system, all of which depend on working with arbitrary native property types. 

In its current form the property tree and its potential is virtually 
unrestricted and many new features were and still can be implemented on top of 
this very genericity without requiring modifications to the core implementation 
of the property tree.

The natural tree-structure of XML and the natively supported data types allow 
users to emulate even complex data structures just by using the existing 
-admittedly verbose- syntax. But that's simply the cost of directly mapping XML 
to the key/value format used by the property tree.

So the question really appears to be if FlightGear wants to end up with 
property types that are so purpose- and system-specific that only certain 
subsystems really know how to deal with them, essentially resulting in "second 
class properties" that cannot be processed by much of the currently existing 
FlightGear infrastructure?
Basically, this is introducing a form of forced encapsulation into the property 
tree.

I am not trying to dramatize this issue, this is just my current understanding 
of the likely repercussions.

For the time being, the property tree system doesn't have a single feature (to 
my knowledge) that is really specific to just one single FlightGear component 
or purpose - the property tree code has been so well generalized that it can be 
equally used by all components, without restrictions. 
It just consists of primitives, building blocks that can be used to model more 
complex data structures on top of it.

Changing this would probably not only result in second class properties but 
eventually also in second class subsystems and after some time also in second 
class software interfaces and tools, because not every property tree "user" may 
be able to deal with all of FlightGear's internals represented by such non-POD 
types.

According to my understanding of the situation, this would be a very 
unfortunate situation.

It seems logical and plausible from that from this point of view, this proposal 
would actually contribute to obfuscating FlightGear and degrading the current 
property tree system, which really is currently fully self-documenting and 100% 
open and accessible to all components.

So adding new non-POD types raises not only the issue of inter-type conversions 
for such non-POD types, but also the issue of serialization for 
persistence/network transfer purposes (i.e. custom protocols, multiplayer). It 
seems to me, such additions may cause a whole new dimension of potential issues.

It's obvious and understandable that, in the light of Tim Moore's very 
significant and highly appreciated contributions to FlightGear, it is very easy 
to overlook the potential architectural implications and ramifications in this 
proposal.

Even if this is ultimately accepted for the time being: where is the line to be 
drawn?

Are there going to be aggregate types that can be directly mapped to C++ data 
structures such as arrays, structs or unions?

Or might there even be binary blobs one day in the property tree in order to 
directly store textures, audio files or 3D models and animations in the 
property tree?
I'm sure there are scenarios where having support for something like that would 
be useful.

And how are those non-POD types going to be serialized (i.e. for network or XML 
use)?

Finally, it seems very likely that there are always going to be more 
aircraft-set.xml files than there'll ever be XML/effects files - if aircraft 
developers manage to cope with the verbosity of these aircraft-related XML 
files, they surely won't bother too much about some self-documenting 
explicitness in an XML/effects files?

best regards

-hfitz
----------

Get even more from your private email hosting service. Visit the pages of Zoner 
Software and download your free copy of the Zoner Photo Studio 11 program 
today! Learn more - www.zoner.com.
------------------------------------------------------------------------------
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to