Canvas-hackers: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
No edit summary
m (pm2wiki)
Line 5: Line 5:
{{Canvas Frameworks}}
{{Canvas Frameworks}}


-----------
While there is a [[Mailing list]] in comparison to the forum, it's fairly inactive these days and it's primarily about C++ level CORE development.


People don't need to have fgdata commit privileges to contribute. However, you should obviously know a little about [[Nasal]] scripting, OOP and [[Canvas]].
For Canvas related things, we often also discuss core changes on the forum, because we have a dedicated subforum here, and because TheTom, as the main Canvas core developer, is very active on the forum and usually handles support requests or feature requests pretty promptly.
We're hoping to regularly sync our work with fgdata upstream - realistically, that ones once in 6-8 weeks probably.
 
Regarding wiki articles and Canvas related priorities.
 
Currently, the focus/manpower is mostly on 1) re-implementing our existing GUI on top of Canvas through custom (scripted) widgets: [[Canvas Widgets]] (mostly handled by TheTom & Zakalawe, both of them core devs).
 
And then, we're busy re-implementing existing hard-coded "glass" instruments using Canvas, i.e. stuff like the ND, PFD etc.
 
For that, we try to generalize, unify and extend existing code and make it use Canvas, by coming up with custom scripting-space frameworks for the main use-cases.
This includes things like having a dedicated [[Canvas Animation Framework]] that deals with SVG elements and animations handled via timers and listeners.
 
But also frameworks for other MFD related purposes, such as: 1) MFDs in general, 2) PFDs, 3) NDs, 4) CDUs and 5) EFBs
These are intended to be just tiny wrappers to help localize key functionality (e.g. MFD page/mode handling), so that we can easily update and optimize things, without having to touch a ton of places (aircraft/instruments/dialogs).
 
The long-term idea is to provide scripted frameworks on top Canvas, e.g. for MFDs - and each kind of MFD would implement the corresponding MFD interface.
 
Canvas-wise, the main trend is to increasingly modernize and unify our 2D rendering back-end by adopting canvas in several key areas by [[Unifying the 2D rendering backend via canvas]]:
 
 
* glass instruments (ND/PFD)
* 2D panels/instruments
* HUDs
* GUI dialogs/widgets
 
We have 3 core developers and a handful of Nasal/Canvas contributors working towards this - so this is generally considered a useful thing, and several active contributors are working towards the same goal here .
 
At the Canvas core/C++ level, there are some minor enhancements discussed/planned: [[Canvas Development]].
But anything touching the C++ code should really be coordinated with TheTom.
 
So you can basically "pick your poison" - feel free to ask via the canvas forum for more opinions/pointers and feedback.
 
Otherwise, there's also an issue tracker - and various wiki articles on getting started contributing/coding.
 
For the time being there's quite some manpower in Canvas related effort - and it allows us to get rid of a ton of legacy C++ code, while also modernizing FG quite a bit, i.e. to obtain better frame rates, a more modern GUI, better consistency etc.
 
Should you be interested in working on anything related to Canvas, we have people willing to provide mentoring through custom tutorials etc (get in touch with Hooray).
 
The priorities are mostly those mentioned above, and there are core developers willing to commit related stuff. We'd just suggest to make sure to release early & often, so that you can gather & implement feedback early on.
 
Feel free to get in touch via the canvas forum to get more pointers.
 
We'd suggest to get started with just Nasal/Canvas, because there isn't much of an entry barrier - and we're still looking to port a few layers: [[Canvas MapStructure Layers]].
 
 
{{Note|People don't need to have fgdata commit privileges to contribute. However, you should obviously know a little about [[Nasal]] scripting, OOP and [[Canvas]].
We're hoping to regularly sync our work with fgdata upstream - realistically, that ones once in 6-8 weeks probably.}}


<!--
<!--

Revision as of 14:46, 24 June 2014


The Canvas-hackers team clone on gitorious is intended to streamline collaboration among FlightGear contributors who are doing Canvas related development intended to be merged into upstream fgdata, especially related to long-term efforts to help Unifying the 2D rendering backend via canvas such as:



While there is a Mailing list in comparison to the forum, it's fairly inactive these days and it's primarily about C++ level CORE development.

For Canvas related things, we often also discuss core changes on the forum, because we have a dedicated subforum here, and because TheTom, as the main Canvas core developer, is very active on the forum and usually handles support requests or feature requests pretty promptly.

Regarding wiki articles and Canvas related priorities.

Currently, the focus/manpower is mostly on 1) re-implementing our existing GUI on top of Canvas through custom (scripted) widgets: Canvas Widgets (mostly handled by TheTom & Zakalawe, both of them core devs).

And then, we're busy re-implementing existing hard-coded "glass" instruments using Canvas, i.e. stuff like the ND, PFD etc.

For that, we try to generalize, unify and extend existing code and make it use Canvas, by coming up with custom scripting-space frameworks for the main use-cases. This includes things like having a dedicated Canvas Animation Framework that deals with SVG elements and animations handled via timers and listeners.

But also frameworks for other MFD related purposes, such as: 1) MFDs in general, 2) PFDs, 3) NDs, 4) CDUs and 5) EFBs These are intended to be just tiny wrappers to help localize key functionality (e.g. MFD page/mode handling), so that we can easily update and optimize things, without having to touch a ton of places (aircraft/instruments/dialogs).

The long-term idea is to provide scripted frameworks on top Canvas, e.g. for MFDs - and each kind of MFD would implement the corresponding MFD interface.

Canvas-wise, the main trend is to increasingly modernize and unify our 2D rendering back-end by adopting canvas in several key areas by Unifying the 2D rendering backend via canvas:


  • glass instruments (ND/PFD)
  • 2D panels/instruments
  • HUDs
  • GUI dialogs/widgets

We have 3 core developers and a handful of Nasal/Canvas contributors working towards this - so this is generally considered a useful thing, and several active contributors are working towards the same goal here .

At the Canvas core/C++ level, there are some minor enhancements discussed/planned: Canvas Development. But anything touching the C++ code should really be coordinated with TheTom.

So you can basically "pick your poison" - feel free to ask via the canvas forum for more opinions/pointers and feedback.

Otherwise, there's also an issue tracker - and various wiki articles on getting started contributing/coding.

For the time being there's quite some manpower in Canvas related effort - and it allows us to get rid of a ton of legacy C++ code, while also modernizing FG quite a bit, i.e. to obtain better frame rates, a more modern GUI, better consistency etc.

Should you be interested in working on anything related to Canvas, we have people willing to provide mentoring through custom tutorials etc (get in touch with Hooray).

The priorities are mostly those mentioned above, and there are core developers willing to commit related stuff. We'd just suggest to make sure to release early & often, so that you can gather & implement feedback early on.

Feel free to get in touch via the canvas forum to get more pointers.

We'd suggest to get started with just Nasal/Canvas, because there isn't much of an entry barrier - and we're still looking to port a few layers: Canvas MapStructure Layers.


Note  People don't need to have fgdata commit privileges to contribute. However, you should obviously know a little about Nasal scripting, OOP and Canvas.

We're hoping to regularly sync our work with fgdata upstream - realistically, that ones once in 6-8 weeks probably.


Branch Description Status Schedule People Notes
canvas-map-dialog Port the hard-coded Map dialog to Canvas 70}% completed Hopefully 3.2 Philosopher & Hooray ...
topics/fgplot 2D plotting 70}% completed Hopefully 3.2 kuijfe09 ...
canvas-airports-dialog Port the airport-selection dialog to Canvas 10}% completed unknown Philosopher & Hooray ...
yet to come Garmin gpsMap196 ported to Canvas 10}% completed unknown F-JJTH [1], Hooray ...
yet to come Procedurally-created Canvas GUI dialogs for A Failure Management Framework for FlightGear Not done Not done unknown Galvedro, Necolatis, Hooray ...