Developers

Want to help?

All POH Performance are written and maintained by volunteers. The apps are free, and the source code is published to foster a community effort. You can help add 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 web application (WebApp). All POH performance apps share a common framework with aircraft-dependent pages. The apps require a lightweight PHP backend for weather and settings backup, but can function without it. Apps distributed by POH Performance LLC use the backend served by pohperformance.com.

The browser version of the app can be executed locally using any modern browser. The WebApps can be installed as icons on mobile devices and can function while disconnected from the Internet if installed correctly. 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.

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.

POH Performance LLC has a licence agreement with Textron Aviation Inc. for the use of Textron's POH data. Volunteers willing to help add model data to the existing Textron aircraft apps (C172, C182, Baron, and Bonanza) will be required to sign a temporary sub-license agreement. Developing POH Performance apps for additional Textron aircraft types will require a separate license agreement with Textron and may require a payment to Textron. Any derivative work related to Textron aircraft types will also require a separate license agreement with Textron and possible payment to Textron in addition to a licence from POH Performance LLC. Please contact info@pohperformance.com if interested.

Source

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

SourceForge also hosts a developer forum for the app. See POH Performance Discussion .

So you want to add a new aircraft model or type

As mentioned above, all POH Performance Apps are maintained by volunteers and resources are extremely limited. Almost all requests for additional models will be put at the end of a very long to-do list unless you help. On the other hand, volunteer effort usually goes to the top of the to-do list. The amount of skill and effort required from you and from POH Performance LLC varies depending on the desired outcome:

Adding to an existing POH Performance LLC app

Some coding skill is helpful but is not required. Care and attention to detail is required. Here are the typical steps to add models, options, or related types (e.g., Cessna 210 vs. Cessna 182) to an existing POH Performance LLC app:

Creating a new aircraft app to be distributed by POH Performance LLC

POH Performance LLC cannot support apps that would only be valuable to a limited number of users. Types that have less than several hundred aircraft will likely be rejected.

Creating an app requires moderate JavaScript and HTML coding skills. You must also be comfortable with Git. You'll be required to make a long-term commitment to help support the app. Here are the typical steps:

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.

Here's a list of some software digitizers:

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 and other licenses. 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 and potentially other licenses. 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, except for apps for Textron Aviation aircraft (see above). 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 Performance LLC, and potentially others. The POH Performance 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.

Infrastructure26,847
Baron33,409
Bonanza64,183
C17229,074
C18252,297
Kodiak55,967
PA2828,065
Radar3,812
TBM115,923

The infrastructure is included in each app and is the same for all apps. The TBM version is significantly larger since it includes the checklist 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.