@Fanboi :-
Hoo. Well....
Puppy's 'Portable-Apps' came about partly by accident, but mostly because I'd always wanted to emulate what PortableApps.com had been producing for Windows for a long time.
For my very last annual re-install of Windows XP, prior to EOL in 2014, I'd recently discovered Portable Apps.com, and thought it sounded like a very, very neat solution......especially given that each PortableApp contained its own 'mini-registry', and didn't write to the main registry at all. Which - being the case - meant that the things really were truly portable, and could even be run from a flash drive if so desired.
Accordingly, that last re-install got stocked entirely with PortableApps; I didn't 'install' a single app in the normal way at all. And you know what? That last few months, Win XP ran the smoothest & most glitch-free I'd ever known it to. It was almost unrecognisable as Windows....
When I made the switch to Linux in May 2014 - I began with Ubuntu - I wanted to try and copy that same behaviour if it was at all possible. I knew it might be a while before I could begin to investigate the concept; after all, I had a whole new type of OS to get used to. I got a 'push' from Canonical around October that year; as part of their ongoing kernel customization, they decided to drop support for the ATI graphics chip in the old clunker I was using at that time. Graphical freeze-ups became the order of the day.....which I very soon got fed up with. An acquaintance on the Ubuntu Forums suggested I take a look at Puppy; philb666's 'take' on 14.04 'Trusty Tahr' had just been released - 'Tahrpup' - so I decided to investigate.
Everything worked literally OOTB. I was impressed with this, given that most distros I'd tried needed quite a bit of 'tweaking' to work with my ancient hardware. Puppy always used bog-standard kernels direct from kernel.org.....and lo and behold, there was nowt wrong with my graphics chip at all. This was my first introduction to Mark Shuttleworth's mindset; that of wanting to make Ubuntu a direct competitor to Windows.....and support ONLY modern hardware. Which ran counter to the general principles of Linux, from what I understood; that of keeping old hardware productive and still useful.
Strange bloke.
~~~~~~~~~~~~~~~~
I fell in love with Puppy then and there. Both of my elderly 'puters were behaving themselves beautifully; within 48 hrs, Ubuntu was but a distant memory.....and Windows had been given the bum's rush when I switched the previous year. I went in 'cold turkey', y'see; wiped it out of my life, and dived head-first into the depths of the Linux ocean. And it wasn't as hard as I'd been led to believe!
Fast forward about 4-5 years. I'd half-heartedly toyed with the portable app concept on and off, but it was on the back burner at that stage. I knew my scripting and general Linux skills still needed to improve, so I bided my time. I was having a lot of fun, anyway; with Windows, you kinda got blind-sided by the drudgery of keeping the thing functional, and lost sight of the fact that computing COULD be fun. Puppy brought that sharply back into focus.
Mid-2018, one of our more active community members, the dev behind the 'DebianDogs', published on the forum a 'portable' version of Firefox. I was intrigued by this, and it awakened my old interest with a vengeance. I stripped the package down, and studied what Fred had done....and did some research. Turns out the script he'd used was a modification of one that had been floating around the web for a long time, originally developed back during the final days of NetScape Navigator, as it was in the throes of morphing into early Firefox.
I experimented with one of my own. Puppy has used the Pale Moon browser for a long time, essentially a FF 'cloned' fork from around FF v27/8, although with its own Goanna 'engine'. I tried a 'portable' build of this......and after a couple of false starts, soon had it working nicely. Yay! Progress.....
This was soon followed by a portable build of Thunderbird; again, working sweetly. I was very heartened by this success, and turned my attention to the Chromium-based browsers.....a Linux 'portable' Google Chrome was my ultimate aim here, though it was to take a while before it materialized.
These took a bit more figuring out, partly due to the need for a suite of required dependencies, plus the need to modify the launch 'wrapper-script' that fired them up. Eventually, I got the first attempt to work very nicely - with some help & assistance from Fred - a 'portable' build of Opera. Whoo!
I'd got the bit between my teeth now, and there was no stopping me. In short order, I had portable builds of Iron, Brave, Slimjet, and even one of M$ Edge! Eventually, the long-awaited Chrome-portable became a reality. Yes!
~~~~~~~~~~~~~~~~~~~~~
I've always been a fan of AppImages. The one thing I didn't like about them was that for every OS you ran 'em in - even if only once - you got another bunch of config files hanging around. You soon ended up with serious over-duplication, along with the need to have to set the things up again from scratch every time. Why not create those config files just the once, and package them up, along with the AppImage itself, so that you could switch between OSs, launch the thing again, and simply carry straight on with whatever you might be in the middle of doing? To my way of thinking, this made FAR more sense.
So that's what I did. A whole string of AppImage-based 'portables' followed, many of which keep up-to-date with their own built-in updaters. Fred developed a bunch of scripts which allowed us to build our own AppImages, tailored to work, OOTB, with Puppy's slightly oddball way of doing things. Essentially, an AppImage is a squash file-system image......and Puppy has used what are called SFS packages since the very early days, over 20 years ago. This, I understood very well, and could work with.
~~~~~~~~~~~~~~~~~~~~~
The reason why 'portable' apps are such a good fit for Puppy is simple. Every Puppy uses what's called either a 'save-file' (older Puppies) or a 'save-folder' (newer Puppies). This is a self-contained readable/writable file which contains all changes/personalizations/customizations, and is loaded into RAM when Puppy boots. Most of us try to keep this as small as possible, and many use SFS packages for all their apps, which load or unload, 'on-the-fly', as and when needed.
Many Puppians tend to run multiple Puppies. She's rather addictive in that way. By carefully building the portables to contain any necessary deps (called by LD_LIBRARY_PATH; I had help with these from
battleshooter, an amazing lass who is, unfortunately, no longer with us), it's perfectly possible to 'share' a single portable application between multiple Pups, by running it from a location outside the 'kennels'....merely sym-linking the LAUNCH script into /usr/bin, so you can fire-up the linked app, running it from within its self-contained directory. I include scripts which will add or remove a Menu entry. This way, you have the option to run the portable directly from its launcher, OR to run it from a traditional Menu entry.
You have to understand one thing. These are built specifically to work with Puppy's way of doing stuff. She runs AS root all the time.....so these wouldn't work with mainstream distros, which use the 'sudo' mechanism, and expect everyone to run as JUST a 'user'. No admin rights.....except via the 'sudo' mechanism.
Modification would be possible, I guess......but since I run Puppies exclusively, I have very little inclination to even attempt this.......it simply wouldn't benefit me
personally. My 'modus operandi' has always been thus; I initially build something for my own use. IF it proves to work as well as I would hope it to, then - and ONLY then - am I happy to 'share'.
I also build various small scripted utilities and other stuff which makes use of existing stuff already within the system. These also get packaged as 'portables'; it's rare that I package stuff any other way these days....
~~~~~~~~~~~~~~~~~~~~~~~~
The 'portable' app-system for Puppy has been very much a collaborative effort. Many community members have provided input, or made useful & sensible suggestions, many of which have been incorporated into later revisions. I won't take credit for the work of others; only for the packaging & publishing of the things, which currently number somewhere between 150 and 200. I lost track of the tally some time ago....
It's very much an 'in-house' project....just for the Puppy community. That's why you won't find it mentioned anywhere else......and why I've never bothered publishing the mechanics of how they work. Most of our members could figure that out in 2 minutes flat, since they make use of several totally unique Puppy concepts...
(
shrug...)
Mike.