Talk:Canvas ND framework: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 21: Line 21:


</syntaxhighlight>
</syntaxhighlight>
it may make sense to come up with a generic framework for API versioning (possibly by looking at Tom's work) and using the same approach to also support versioning at the MapStructure level itself. Ideally, multiple instances of different versions could co-exist without issues.

Revision as of 21:41, 30 January 2014

Versioning

As more and more aircraft start adopting the framework, we should consider adding some "versioning" support, so that people can request a certain version and assume a certain API that won't change over time. TheTom is already doing this in the Canvas APIs - and we basically need a similar mechanism, so that the APIs can evolve, without breaking unmaintained aircraft - redneck and omega95 were extremely frustrated with the lack of backwards compatibility when the route manager/fplan APIs were reworked, because they didn't have the time to update their aircraft - so this is a valid point and we should make sure that we're not causing any unnecessary frustration here. I am proposing a hash/namespace-based lookup for APIs, unless Philosopher can convince me that we need something more sophisticated than that...

var VersionedAPIContainer = {};
VersionedAPIContainer.new = func(version);
...


var NavDisplay = {};
NavDisplay[ "1.0" ] = VersioonedAPIContainer.new( "1.0" );

...

# request a certain API version
var ND = NavDisplay["1.0"];
ND.new();

it may make sense to come up with a generic framework for API versioning (possibly by looking at Tom's work) and using the same approach to also support versioning at the MapStructure level itself. Ideally, multiple instances of different versions could co-exist without issues.