As you may know, Canonical is already using snappy packages and the snappy package manager on its Ubuntu Snappy Core, the Ubuntu system for Internet of Things.
The current deb (or rpm packages – they are similar) are archives that get extracted by the package manager, the content inside the archive gets moved system wide, depending on their type and that’s about it.
Well, so far so good. The main problem is that packages depend on other packages, files depend on other files to work and manually fetching this so called dependencies may be a difficult job. The repositories always contain both the desired packages and the dependencies and apt-get does all the job for you.
The problem is when you download the deb/rpm package yourself and want to install it, but discoverer that you have missing dependencies, which are not available via any repository. In this scenario you have to search and download the dependencies for yourself, install them (they may require other dependencies) and next install the desired package.
This is where the snappy packages come in. Canonical’s .snap packages are archives like debs and rpms, but they already contain the required dependencies inside the archive, and this is good, since the storage space is cheap nowadays.
Getting dependency issues on smartphones or IoT operating systems really insn’t an option, so the snappy packages were invented from necessity and most likely will succeed.
Main advantages of the .snappy packages:
- the apps get installed in separate directors, isolated from other packages, for security reasons
- before an app is updated, it is backed up locally, so if the update fails, the current version remains unharmed
- delta updates are supported, meaning that only the “changes” get downloaded and installed, not the entire app
Yes, I really believe that repositories combined with packages with embedded dependencies are the best thing possible for Linux and I don’t know how a better approach can be found in the next couple of years.