App Creation Process

Well, after months of planning and failures, the pafl process is finally ready! Here's the process of creating a pafl app, in order:

  1.     Obtain the application's source and all dependencies

First off, let's define "dependency". In a pafl context, a dependency is something that does not come with the stock versions of the major Linux distributions (we'll define them as Ubuntu, Fedora, Debian, openSUSE), for all releases over the past 1-2 years. To be specific, that includes Ubuntu 8.10+, Fedora 9+, Debian 5+, and openSUSE 10.1+. This means that if I install any of those distributions, I will be able to run a pafl app on it without installing anything additional. Of course, if there are serious problem with a certain distro and a certain app, let me know, we can always make exceptions.

Of course, you can cheat. The alternative involves much less work, but it only works sometimes. The alternative would be connecting to a distribution's package repository, downloading all of the packages and dependencies from there. However, this will involve some serious testing, again, on stock, legacy distributions. This means that if you do take this approach, mention that you did so when you're submitting the application, and it will undergo extra testing. (I highly recommend the SLAX modules (http://slax.org/), which I used to make many of the apps.)

2.     Combine the application and dependencies into one directory.

If you're compiling the application and dependencies, this probably means using the '--prefix' option when running ./configure. The important thing is to make sure the paths aren't hard-coded when using --prefix, because the application will be running from an environment where the libraries will be in /usr/lib, not in the --prefix.

If you're using the package repository shortcut, this simply involves unpacking the deb/rpm files into one directory. For example, for .deb files, just run ' dpkg -x something.deb ./ '

3.      Create a compressed squashfs image of the directory.

The actual application part of pafl is stored in a file called programname-programversion.img (for example, abiword-2.8.2.img). The file format is a squashfs compressed image (an iso file with compression). Read this article for a tutorial on creating squashfs images. We refer to the compressed image you just created as a 'blob'.

4.     Package with the pafl launcher.

Now, visit our wiki, and download the pafl launcher template. This is a .zip file with the launcher and necessary directory structure for a pafl app. Simply drop the application blob you created into the blobs folder, edit app.conf as per the instructions, and you're done! (This is where the entire pafl magic is contained. If you're interested in how pafl works, read our architecture page in the wiki. I really recommend it.)

5.      Test your application.

If you have more than one Linux computer, great! Test it on as many of your machines as you can before posting. If you only have one, no problem! At least try running and using the basic functions of the application (when run via the portable launcher).

6.      Post the application on our Development/Testing forums.

Once you've tested your application at least once, you're ready to post it! Read our detailed instructions on how to post an application in our forums, and what will happen afterwards.

7.      It will undergo a beta phase, and (hopefully) be released.

I'll test the application on my array of virtual machines, then compress and package it, and post it on the Development and Testing forums with an "official beta" label, for all to test. Afterwards, if it is successful, I'll officially release it on the Apps page!

Many thanks in advance for those who decide to compile apps for pafl. Your help is very much appreciated.