4 ms·
I've always liked the everything-is-an-object paradigm. This makes me realize how close we are to a universal standard for them. Imagine an executable zip file
by peterwwillis 8y ago
I've always liked the everything-is-an-object paradigm. This makes me realize how close we are to a universal standard for them.
Imagine an executable zip file with a few default files that define things like metadata, or actual data. Then imagine another zip file that can inherit this first zip file as defaults, and override them. Imagine the second one can be included in the first. Now imagine that changes to any of these files creates a new zip with just the deltas. And finally, an API wraps the zip files so that when you operate on the last one, it transparently maps the previous changes, copy-on-write style.
I think this should be an operating system extension, but the great part is, you can implement it all as libraries and ship it to any OS. You then have all the features of zip (archive, compression, encryption, etc), the simplicity of simple key-value data objects in JSON, a copy-on-write mechanism, and since it's both an executable and an archive, it can provide all its own dependencies.
This would effectively solve the need for Docker, and not impose the problems of statically compiled single-platform binaries, because everything is in a ZIP file, so you can provide all dependencies (including for multiple platforms), version them, and write changes to new versioned objects. And self-extracting ZIP files already exist.
Tie this to HTTP so you can pull objects from a remote store and you've mostly solved application deployment.
- nemothekid 8y agoThis sounds exactly like Docker, just replace "zip" with "tar"
- deleted 8y ago[deleted]
- pjc50 8y agoSounds rather like an executable git archive - but the security properties sound like a total nightmare. I believe the Amiga had some sort of "unversal extension mechanism" too, but it predates internet security being critical.
- bitwize 8y agoThe Amiga had datatypes, which allowed an application program to install a reader and writer for its peculiar file format, OS wide. So say you had Photoshop for the Amiga. Not sure if that was a thing, but bear with. It would install a datatype for .psd files that would allow you to view such files in your favorite image viewer, or even a web browser. The only other OS to offer this feature was BeOS.
- fredsanford 8y agoAnd OS/2 with SOM (System Object Model).
- pjc50 8y agoThe Amiga equivalent was Deluxe Paint.
- pjmlp 8y agoAnd Oberon.
- setpatchaddress 8y agoAnd classic Mac OS. http://mirror.informatimago.com/next/developer.apple.com/documentation/mac/MoreToolbox/MoreToolbox-414.html#HEADING414-0 http://mirror.informatimago.com/next/developer.apple.com/doc...
- NeedMoreTea 8y agoFor the most part it was done via datatypes library, so had that survived into an era of internet security most of the fixes would have been in the shared libraries. Same went for a lot of shared common features. Update the OS and every program would update look and file requesters etc. None of the strange Windows mix of software that clearly looks of the previous release, or sometimes of the next. Or half a dozen legacy file requester dialogues.
- zamalek 8y ago> I've always liked the everything-is-an-object paradigm. Powershell works like this, somewhat. Also, Java (.jar files are no different to .zip files).
- WorldMaker 8y agoThat zip system you describe isn't far from how most of the App Stores work today. Android's APK and Windows' MSIX (fka APPX) are "just" zip files with particular metadata. Updates are often delivered as delta zip files. MSIX even uses a copy-on-write methodology to support in-place updates, modifications, and extensions. (Yes, there are tools to modify MSIX installs to extend apps or customize them. Most of them are targeted to corporate needs, but some of them are already used for games, too, thanks to the Xbox.)
- repolfx 8y agoThat's basically Maven and Java, no? Java JARs are zips that contain files defining code and data. Other JARs can sub-class that code and change how the data is processed or returned. Maven is (amongst other things) a protocol for exporting versioned sets of JARs that can express dependencies on each other via a filesystem accessible using HTTP. You can specify a versioned zip with a simple coordinate like "com.example:zipname:LATEST" and it'll download and cache the zips with all their dependencies. And it's all cross platform and standardised, with multiple implementations of all these components.
- m1sta_ 8y agoSounds like npm