Developers

Want to help?

The apps are free and the source code is published in order to foster a community effort. Much of the Bonanza, Baron, C172 and C182 data was encoded by volunteers. In addition, volunteers ported the Baron and PA28 apps. You can help add a new aircraft model data to an existing app even with minimal coding skills. Contact info@pohperformance.com if interested.

The POH performance apps are written in Javascript, HTML, and CSS as a single page application. All POH performance apps share a common framework with aircraft-dependent pages. The browser version of the app can be executed locally using any modern bowser. The apps require a lightweight PHP backend for weather and settings backup, but can function without it.

The iOS and Android versions of each app are generated using Cordova, which produces a native application with an embedded WebView along with the code.

Source

The source is published on SourceForge here. There is extensive documentation included with the source. See README.html.

License

The code is provided under license. The license is free for non-commercial use. The purpose of the license is to protect the developers and to ensure that derivative works are not confused with POH Performance versions.

Adding aircraft types and models

Adding a new aircraft type requires reasonable Javascript skill. It is best approached by starting from a similar existing aircraft type. Simple model additions to an existing aircraft type app, only require minimal coding skills. Most of the effort involves translating the performance tables and/or graphs into the internal JSON-like format. All performance data should be compared against the POH at least twice.

For the curious, here's a snippet from the Cessna 172S:

	climbRate: new Ptable({
		title: "Climb rate",
		parmNames:	["temperature", "altitude"],
		a: [
		{p:-20, a: [
			{p:0,		v:855},
			{p:2000,	v:760},
			{p:4000,	v:685},
			{p:6000,	v:575},
			{p:8000,	v:465},
			{p:10000,	v:360},
			{p:12000,	v:255}
		]}, {p:0, a: [
			{p:0,		v:785},
			{p:2000,	v:695},
			{p:4000,	v:620},
			{p:6000,	v:515},
			{p:8000,	v:405},
			{p:10000,	v:300},
			{p:12000,	v:195}
		]}, {p:20, a: [
			{p:0,		v:710},
			{p:2000,	v:625},
			{p:4000,	v:555},
			{p:6000,	v:450},
			{p:8000,	v:345},
			{p:10000,	v:240},
			{p:12000,	v:135}
		]}, {p:40, a: [
			{p:0,		v:645},
			{p:2000,	v:560},
			{p:4000,	v:495},
			{p:6000,	v:390},
			{p:8000,	v:285},
			{p:10000,	v:180}
		]}]
	}),

Performance graphs

Some aircraft use graphs for performance data. In this case, each curve in a graph must be digitized into a series of points in a piecewise-linear fashion. You'll need more points where the lines are curvier. Accuracy is essential: Make sure that you get it to ¼ grid-point or better. You can do this manually, but that is often error-prone. A better alternative is to use a software digitizer. Most digitizers require you to provide an image of the graph. Once the graph image is loaded you trace each axis. Do this carefully as the quality of the results depend on it. Then trace each curve to gather the points. It's better to use your eyes to get the low order digits within a grid point, as most scanned graphs have some skew that makes sub-grid accuracy difficult.

Backend server

The apps require a backend server to retrieve weather and save, restore, and transfer user data. The PHP code for the backend server is included in the source.

Deployment

As mentioned above, all deployment is governed by a software license. There are several ways to deploy the code you create:

Contribute code to POH Performance
If you're adding models or options to an existing app, contributing your code to POH Performance LLC will make it available to the entire community and avoids licensing issues. However, you must also provide scans of all data sources (POH or AFMS) in order to allow quality checks and long-term support.

Adding a new aircraft type in a separate app needs some discussion, as each new app requires on-going support. First, the app must support a substantial number of aircraft. An app that only supports your particular model of the type probably won't make it worthwhile for POH Performance to undertake the additional burden. It helps if you sign up to help support the new app for the long-term.

Personal use
In general, derived versions of the code is free for personal use. Just contact info@pohperformance.com to get permission. You may choose to use it as a WebApp or as a native app (using Cordova). However, you may not distribute it to the general public or charge for it.

You may have to change the code to point to your backend. If the aircraft is similar to the one in an existing app, you may be able to use the POH Performance LLC backend, but get permission first.

A separately distributed app
If you'd like to separately distribute an app or WebApp for use by the general public, you must obtain a license from POH Perfromance LLC. The license will be free for non-commercial use. At the very least, plan on making your own graphics, icons, and marketing materials. POH Performance LLC must approve all such items to ensure they will not be confused with POH Performance apps. Also, plan on using your own backend server. There are other terms, as well. Read the license carefully.
In all cases, please contact info@pohperformance.com to get license permission and discuss alternatives. We can advise you on how to do the work as well.

App statistics

Here are the some lines of code statistics on the application. This includes code, JSON, and comments, but not external libraries.

Infrastructure25,242
Baron33,142
Bonanza57,460
C17224,794
C18230,619
PA2812,836
Radar3,230
TBM78,943

The infrastructure is included in each app and is the same for all apps. The TBM version is significantly larger since it includes the emergency procedures and circuit breakers for all the models, whereas the the other aircraft types do not have that functionality. The Radar app is the simplest, having only two unique pages.