attachment

<div dir="ltr"><div><div><div><div>Just right for the start of 2018 I want to introduce two little things to</div><div>you. I created...</div><div><br></div><div>-  ...a prototype AppImage for the IPP Sample Software together with...</div><div>-  ...a short mini-tutorial introducing some of the IPP Sample utilities.</div><div><br></div><div><br></div><div>I. AppImage</div><div>===========</div><div><br></div><div>An AppImage is a cross-distro Linux packaging method which follows the</div><div>philosophy of "One App == One File".</div><div><br></div><div>Imagine a macOS ".app" AppDir (application directory) which holds all the</div><div>required files for the application at runtime that are not provided by the</div><div>base system in the default installation. A Linux AppImage provides a similar</div><div>structure -- but with the added improvement of keeping everything in a single</div><div>SquashFS-compressed image. This saves disk space and makes managing the file</div><div>trivially easy. When executed, the AppImage gets mounted automatically and</div><div>its payload application gets invoked by an embedded "AppRun". Apple and Mac</div><div>users will most likely feel very comfortable with handling AppImages.</div><div><br></div><div>The AppImage technology is not a competitor to the Snap and Flatpak</div><div>packaging, but it is a different thing altogether:</div><div><br></div><div>-   It is not and does not want to be a package manager.</div><div>-   It does not need any specific preparation for the target system in order</div><div>    to work.</div><div>-   It does not require any extra framework or runtime environment to be</div><div>    present in order to function.</div><div>-   It does not need "installation".</div><div>-   It does not need root privileges for preparing it to work on a system --</div><div>    runs completely in user space.</div><div>-   Not being a "package", it simply is an executable which directly runs on</div><div>    almost any recent Linux distro from the last 3 years.</div><div>-   It can run from any location (USB thumb drives -- even from remote</div><div>    shares).</div><div>-   It can run different versions of the same software without conflict.</div><div>-   It usually saves disk space (IPP Sample "installed" the traditional way</div><div>    occupies about 22 MByte on disk; my equivalent AppImage takes only 10</div><div>    MByte)</div><div>-   It is easy to get rid of again, should you not like it (just delete the</div><div>    file).</div><div><br></div><div>I can hardly imagine any simpler and more elegant method for distributing</div><div>software from developers to its users. Thinking of it, an "installation-less"</div><div>software package is the perfect match for "driver-less" printing :-)</div><div><br></div><div>The AppImage project now has more than 10 years of development under its belt</div><div>(though the name is relatively new). AppImages have become pretty popular in</div><div>the last 6 months. Meanwhile even Linus Torvalds uses it for an (almost</div><div>not-known) end-user GUI application he started a few years ago (which is a</div><div>logging, reporting and planning software for hobby and professional divers</div><div>called "Subsurface"). He switched to AppImage because he famously thinks that</div><div>"Linux sucks" when it comes to the desktop eco system created by the many</div><div>competing Linux distro packaging formats and their library naming crazyness.</div><div>Another prominent AppImage user is Microsoft -- they build an AppImage to</div><div>provide their PowerShell v6.0.0rc for various Linux distros.</div><div><br></div><div>With this AppImage I "pushed the envelope" a bit:</div><div><br></div><div>1.  AppImages originally were designed for packaging desktop GUI</div><div>    applications. However, I packaged CLI software with it. This works even</div><div>    pretty well -- as you will see if you decide to give my IPP Sample</div><div>    AppImage a spin.</div><div><br></div><div>2.  While AppImages usually embed ONE executable, I stuffed SEVERAL in: you</div><div>    can invoke them as 'sub-commands' to the shell 'ippsample', similar to</div><div>    how 'busybox' works:</div><div><br></div><div>        ippsample ipptool [ipptool args ...]</div><div>        ippsample ippproxy [ippproxy args ...]</div><div>        ippsample ippfind [ippfind args ...]</div><div>        ippsample ippserver [ippserver args ...]</div><div><br></div><div>This is implemented by way of a custom "AppRun" script I wrote for this</div><div>AppImage. It also added a few convenience parameters, which may be used:</div><div><br></div><div>    --listtest    List all '.test' files embedded in AppImage</div><div>    --listtestdoc List all documents which may be used for tests</div><div>    --listman     List all manpages embedded</div><div>    --listhtml    List all HTML docs embedded</div><div>    --listexe     List all executables ('sub-commands') which can be invoked</div><div>    --listreadme  List all embedded README and other text files</div><div>    --listdir     List all directories making up the AppImage</div><div>    --listfile    List all files which make up the AppImage</div><div><br></div><div>Additional options then are:</div><div><br></div><div>    --man <manpage-name>    Display named manual page in terminal</div><div>    --html <HTML-doc-name>  Show named HTML doc in default browser</div><div>    --readme <README-name>  Display named README in terminal</div><div><br></div><div>Every (recent) AppImage supports these generic CLI parameters:</div><div><br></div><div>    --appimage-help     List other CLI params with short description</div><div>    --appimage-extract  Extract AppImage into the AppDir 'squashfs-root'</div><div><br></div><div>This last option, after extraction, lets you hack on my AppRun script should</div><div>you feel an itch for this :-)</div><div><br></div><div><br></div><div>II. Mini-Tutorial</div><div>=================</div><div><br></div><div>My tutorial comes in the shape of an "asciinema" ASCIIcast, running about 9</div><div>minutes. It should serve as an introductionary HOWTO for the IPP Sample</div><div>utilities, as well as a short intro into IPP in general.</div><div><br></div><div>Since it uses an AppImage, it can be reproduced immediately after download,</div><div>by almost any Linux user who is interested to play with IPP Sample software.</div><div>You can watch it here:</div><div><br></div><div>-   <a href="https://asciinema.org/a/155588">https://asciinema.org/a/155588</a></div><div><br></div><div>Two usage tipps:</div><div><br></div><div>1.  You can pause or scroll back and then replay a scene it any time if it</div><div>    was passing by too fast.</div><div>2.  You can copy'n'paste whatever is interesting for you directly from the</div><div>    terminal window.</div><div><br></div><div><br></div><div>III. Self-promotion</div><div>===================</div><div><br></div><div>My AppImage is automatically built by Travis CI from a forked</div><div>istopwg/ippsample repository on GitHub. If you like it well enough, I can</div><div>prepare a pull request for the official istopwg/ippsample repo, and a working</div><div>AppImage will automatically be built and published upon each push</div><div>("continuous" release), or upon each officially tagged release, or both.</div><div><br></div><div>I'm planning to add a few more functions for user convenience when playing</div><div>with this AppImage. Mainly, this is to create a sample of pre-defined print</div><div>queues which then can be used for '-C config-dir' invocations of 'ippserver'.</div><div><br></div><div>The download location of my current 'xperimental' AppImage is here:</div><div><br></div><div>-   <a href="https://github.com/KurtPfeifle/ippsample/releases/">https://github.com/KurtPfeifle/ippsample/releases/</a></div><div><br></div><div>Please do not miss reading my text-style supplement to the tutorial on the</div><div><a href="http://asciinema.org">asciinema.org</a> website. I'd like you to check (and tell me about) if I have</div><div>any factual errors in it.</div><div><br></div><div>Please let me know about any distro where my AppImage thingie does NOT work!</div><div><br></div><div>Cheers, Kurt</div><div><br></div><div>P.S.: </div><div>------</div><div><br></div><div>1.  Also please tell me about any other issues you may encounter [1] -- unless</div><div>    it is a problem with the IPP Sample software itself [2].</div><div>2. I promise to not take offense if you consider both, my ASCIIcast and the</div><div>   AppImage, as two things which put some more weight behind my request from</div><div>   10 weeks ago to provide *official* AppImage releases by the PWG (see issue</div><div>   on GitHub here: <a href="https://github.com/istopwg/ippsample/issues/56">https://github.com/istopwg/ippsample/issues/56</a>)</div><div><br></div><div><br></div><div>[1]:  <a href="https://github.com/KurtPfeifle/ippsample/issues">https://github.com/KurtPfeifle/ippsample/issues</a></div><div>[2]:  <a href="https://github.com/istopwg/ippsample/issues">https://github.com/istopwg/ippsample/issues</a></div></div></div></div><div><br></div></div>