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>