Quick to install, safe to run, easy to update, and dramatically easier to maintain and support, snaps represent a big step forward in Linux software development and distribution. Starting with Ubuntu and now available for Arch Linux, Debian, Fedora, Gentoo Linux, and openSUSE, snaps offer a number of significant advantages over traditional application packaging.\nCompared to traditional packages, snaps are:\n\nEasier for developers to build\nFaster to install\nAutomatically updated\nAutonomous\nIsolated from other apps\nMore secure\nNon-disruptive (they don't interfere with other applications)\n\nSo, what are snaps?\nSnaps were originally designed and built by Canonical for use on Ubuntu. The service might be referred to as \u201csnappy,\u201d the technology \u201csnapcraft,\u201d the daemon \u201csnapd,\u201d and the packages \u201csnaps,\u201d but they all refer to a new way that Linux apps are prepared and installed. Does the name \u201csnap\u201d imply some simplification of the development and installation process? You bet it does!\n\nA snap is completely different than other Linux packages. Other packages are basically file archives that, on installation, place files in a number of directories (\/usr\/bin, \/usr\/lib, etc.). In addition, other tools and libraries that the packages depend on have to be installed or updated, as well \u2014 possibly interfering with older apps. A snap, on the other hand, will be installed as a single self-sufficient file, bundled with whatever libraries and other files it requires. It won\u2019t interfere with other applications or change any of the resources that those other applications depend on.\nWhen delivered as a snap, all of the application\u2019s dependencies are included in that single file. The application is also isolated from the rest of the system, ensuring that changes to the snap don\u2019t affect the rest of the system and making it harder for other applications to access the app's data.\nAnother important distinction is that snaps aren't included in distributions; they're selected and installed separately (more on this in just a bit).\nSnaps began life as Click packages \u2014 a new packaging format built for Ubuntu Mobile \u2014 and evolved into snaps\nHow do snaps work?\nSnaps work across a range of Linux\u00a0distributions in a manner that is sometimes referred to as \u201cdistro-agnostic,\u201d releasing developers from their concerns about compatibility with software and libraries previously installed on the systems. Snaps are packaged along with everything they require to run \u2014 compressed and ready for use. In fact, they stay that way. They remain compressed, using modest disk space in spite of their autonomous nature.\nSnaps also maintain a relatively low profile. You could have snaps on your system without being aware of them, particularly if you are using a recent release of the distributions mentioned earlier.\nIf snaps are available on your system, you'll need to have \/snap\/bin on your search path to use them. For bash users, this should be added automatically.\n$ echo $PATH\n\/home\/shs\/bin:\/usr\/local\/bin:\/usr\/sbin:\/sbin:\/bin:\/usr\/games:\/snap\/bin\n\nAnd even the automatic updates don't cause problems. A running snap continues to run even while it is being updated. The new version simply becomes active the next time it's used.\nWhy are snaps more secure?\nOne reason for the improvement is that snaps have considerably more limited access to the OS than traditional packages. They are sandboxed and containerized and don\u2019t have system-wide access.\nHow do snaps help developers?\nEasier to build\nWith snaps, developers no longer have to contemplate the huge variety of distributions and versions that their customers might be using. They package into the snap everything that is required for it to run.\nEasing the slow production lines\nFrom the developers' perspective, it has been hard to get apps into production. The open source community can only do so much while responding to pressure for fast releases. In addition, developers can use the latest libraries without concern for whether the target distribution relies on older libraries. And even if developers are new to snaps, they can get up to speed in under a week. I've been told that learning to build an application with snaps is significantly easier than learning a new language. And, of course, distro maintainers don't have to funnel every app through their production processes. This is clearly a win-win.\nFor sysadmins, as well, the use of snaps avoids breaking systems and the need to chase down hairy support problems.\nAre snaps on your system?\nYou could have snaps on your system without being aware of them, particularly if you are using a recent release of the distributions mentioned above.\nTo see if snapd is running:\n$ ps -ef | grep snapd\nroot 672 1 0 Jun22 ? 00:00:33 \/usr\/lib\/snapd\/snapd\n\nIf installed, the command \u201cwhich snap\u201d, on the other hand, should show you this:\n$ which snap\n\/usr\/bin\/snap\n\nTo see what snaps are installed, use the \u201csnap list\u201d command.\n$ snap list\nName Version Rev Tracking Developer Notes\ncanonical-livepatch 8.0.2 41 stable canonical -\ncore 16-2.32.8 4650 stable canonical core\nminecraft latest 11 stable snapcrafters -\n\nWhere are snaps installed?\nSnaps are delivered as .snap files and stored in \/var\/lib\/snapd\/snaps. You can cd over to that directory or search for files with the .snap extension.\n$ sudo find \/ -name "*.snap"\n\/var\/lib\/snapd\/snaps\/canonical-livepatch_39.snap\n\/var\/lib\/snapd\/snaps\/canonical-livepatch_41.snap\n\/var\/lib\/snapd\/snaps\/core_4571.snap\n\/var\/lib\/snapd\/snaps\/minecraft_11.snap\n\/var\/lib\/snapd\/snaps\/core_4650.snap\n\nAdding a snap is, well, a snap. Here\u2019s a typical example of installing one. The snap being loaded here is a very simple \u201cHello, World\u201d application, but the process is this simple regardless of the compexity of the snap:\n$ sudo snap install hello\nhello 2.10 from 'canonical' installed\n$ which hello\n\/snap\/bin\/hello\n$ hello\nHello, world!\n\nThe \u201csnap list\u201d command will then reflect the newly added snap.\n$ snap list\nName Version Rev Tracking Developer Notes\ncanonical-livepatch 8.0.2 41 stable canonical -\ncore 16-2.32.8 4650 stable canonical core\nhello 2.10 20 stable canonical -\nminecraft latest 11 stable snapcrafters -\n\nThere also commands for removing (snap remove), upgrading (snap refresh), and listing available snaps (snap find).\nA little history about snaps\nThe idea for snaps came from Mark Richard Shuttleworth, the founder and CEO of Canonical Ltd., the company behind the development of the Linux-based Ubuntu operating system, and from his decades of experience with Ubuntu. At least part of the motivation was removing the possibility of troublesome installation failures \u2014 starting with the phones on which they were first used. Easing production lines, simplifying support, and improving system security made the idea compelling.\n\nFor some additional history on snaps, check out this article on CIO.