This tech tip explores how you can legally distribute your P3 project.
The P3 platform is open, meaning anyone can write applications for it. The P3 SDK is available for free from the Multimorphic support site.
The P3 SDK contains an open-source sample application named P3SampleApp. A typical P3 project starts by copying P3SampleApp to use it as a template. P3SampleApp is distributed under the MIT license. This is a very permissive license that allows you to copy the source, modify it as you wish and distribute your derivative work. The main requirement is that when distributing the software (or substantial portions of it), you must retain the original copyright notice and license notice.
The P3 SDK contains the P3 libraries in compiled form, separate from the sample application. The P3 libraries are not open-source and they are not covered by the MIT license. In fact, Multimorphic reserves all rights, meaning the P3 libraries are proprietary non-distributable files.
The P3 libraries are required to build and run a P3 application. Multimorphic understands that you will need the libraries on your computer for development and on your P3 machine for testing. However, you are not allowed to distribute a p3p package because it contains a copy of the P3 libraries.
What about the P3 applications distributed in the P3 online store? In that case, the developer signed an agreement with Multimorphic and that covers the necessary licensing.
Another option is to release the application as an open-source project. End users can download the source and rebuild the application themselves. This is somewhat inconvenient since the certificate will only last 3 days. This approach makes sense for educational projects like tutorials, where the end user is encouraged to study the source code.
The template code inherited from P3SampleApp is covered by the MIT license granted by Multimorphic. The project owner can distribute the application-specific code under the license of their choice.
The P3 libraries cannot be distributed with the project source code. Instead, the project instructions must clearly explain how to obtain the P3 libraries by downloading the P3 SDK and copying the files to the correct location.