It hasn’t changed, but there is a bit more nuance to it than is described above.
Imagine a hypothetical package named Bob
; the package could be installed in three different ways (including two or even all three simultaneously):
-
It could be inside of the Packages
folder that exists inside of the Sublime Text installation folder, next to the binary as a file named Bob.sublime-package
. In that case, this would be a package that ships with Sublime and is just always installed for everyone.
-
It could be inside of the Installed Packages
folder as a file named Bob.sublime-package
; this could be put there manually by you or installed by Package Control.
-
It could be inside of the Packages
folder as a folder named Bob
, within which is the contents of the files; this also could be put there manually by you or by Package Control.
Each of the layers can be overridden by the layers that follow it; for example:
-
The Python
package ships with Sublime Text, but if there is a Python.sublime-package
file in Installed Packages
, then Sublime will ignore the version of the file it ships with and use the other one instead
-
While loading the Python.sublime
package file (from either location), if Sublime notices a Packages\Python
folder. it will load those files too. If any of those files have the same name as a file inside of the sublime-package
file, Sublime ignores the version inside of the sublime-package
file and only loads the other one (i.e. it is an override
).
In all cases, the presumption is that you might want to augment a package, either by replacing it wholesale, adding files to it, or modifying the contents of files to better suit them to yourself.
The rules for package updates go like this:
-
When Sublime Text is upgraded, this is done by deleting the entire installation and replacing it with a new one. Hence, you never modify Python.sublime-package
directly, because if you did, on the next upgrade of Sublime your change will be thrown away.
-
When Package Control updates a package installed as a sublime-package
file, it does so by deleting the file and replacing it with a brand new, updated version. Hence, you never modify a sublime-package
file unless you’re the one that manually put it there, because if you did, on the next upgrade of the package your change will be thrown away.
-
When Package Control updates a package installed as loose files in the Packages
folder, it does so by moving the old package into the Backups
folder and then puts a new version of the package in place.
-
Package control never updates a package that it did not install itself.
Due to the way that package updates work, Package Control defaults to installing every package as a sublime-package
file, so that you can create an override in the Packages
folder to make a change without your change being thrown away. And of course, OverrideAudit
exists to tell you if the package update happens because even though the sublime-package
gets removed, the loose files will not (because you’re the one that put them there), so your change will remain even if you might not intend it.
Some packages have to be installed unpacked and not as a sublime-package
file, such as if they contain files that will need to be accessible from outside of Sublime. In such a case the package author needs to specifically opt in.
It’s this last case that the Backup
folder is for; if a package is installed that way, you might modify the files, and if you do your changes will get whacked when the package updates because there’s no safe way for Package Control to do the update other than by replacing everything. So, it backs up the content of such a package so that if you DID modify it, it doesn’t disrupt anything.
You can discard the Backup folder with impunity if you know you never modified anything. The folders inside of it represent the date of updates, so you could also delete any backups over a certain threshold age that you decide on, under the presumption that if you haven’t noticed in the last month (or whatever) that something is amiss, you probably don’t need the backup.