56
Projected File System aka ProjFS is a feature similar to FUSE found on Linux (or to Dokan & WinFSP). It allows apps to create virtual file systems which appear indistinguishable from local folders, but their entire contents are generated "live" by the program. (In other words, you're seeing projections of files which might not be there.)
The primary use of ProjFS is Microsoft's "Git Virtual File System", an addon to the Git version management tool aimed at increasing its performance and reducing disk space usage when dealing with massive repositories. (Git was built for repositories containing just tens of thousands of files, such as Linux.git; but Microsoft have started using it internally for the Windows source repository, which is several orders of magnitude larger.)
Currently ProjFS doesn't seem to be publicly documented, but I expect that sooner or later third-party developers will figure out how to use it as a FUSE alternative for implementing such virtual filesystems as sshfs, ftpfs, and so on.
Note: Projected File System has nothing to do with Windows File Protection.
As noted in the comments, documentation is now available for the feature.
2Several orders of magnitude larger, to me, means Windows contains at least a billion source files. Is that accurate? – user253751 – 2018-10-25T21:33:37.567
How does WPFS differ from IFS?
– niutech – 2018-10-25T21:49:40.4906
@user20574 According to GVFS website: "Windows operating system, which clocks in at roughly 300 GB (3.5 million files)". And a MS blog post: "the Windows code base is approximately 3.5M files and, when checked in to a Git repo, results in a repo of about 300GB".
– nxnev – 2018-10-25T23:23:42.923So two orders of magnitude, then. – user253751 – 2018-10-25T23:41:47.327
1@niutech: IFS is an API for building kernel-mode filesystem drivers that can be dynamically loaded (as opposed to built in to the kernel itself). ProjFS is an API for building user-mode filesystem drivers (ie, drivers that run like a regular exe). – josh3736 – 2018-10-26T01:22:56.943
@user20574 the Windows repo includes everything in MS like Office, Windows kernel, Windows tools, Visual Studio, Skype... and not only the kernel like Linux, so no wonder it'll be a lot bigger – phuclv – 2018-10-26T09:09:20.830
@phuclv citation needed. "Windows" includes a lot of stuff (that would be extra packages on Linux; think the entire GUI, Notepad, etc.), but I can't believe that the repo contains all of Microsoft's products. – Roger Lipscombe – 2018-10-26T11:55:59.370
WOW! I've never heard of this, this is excellent! – Austin Burk – 2018-10-26T14:07:14.110
The git virtual filesystem seems to be open-source, so even if there is no documentation there is effectively public example code. – plugwash – 2018-10-26T14:39:49.217
1
@RogerLipscombe probably "all MS products" is a a little bit exaggerated but according to MS's Gabe Aul That size is actually the entire OS repo. It includes Windows OneCore, Desktop, Mobile, HoloLens, Xbox, IOT, etc. Plus tools, and other code we ingest from feeds and store in our tree. It’s the full enchilada, not just Desktop.
– phuclv – 2018-10-26T16:49:22.0901
Besides, they did think about a single repo for the whole company: The first big debate was – how many repos do you have – one for the whole company at one extreme or one for each small component? A big spectrum
– phuclv – 2018-10-26T16:49:25.573@phuclv Exactly, it is NOT everything in MS. Windows is big on its own. – Hong Ooi – 2018-10-26T16:55:16.183
The problem is not as much many files as huge files. Git was designed to store source code, but Microsoft has images and other media and various data blobs thrown in their source repositories. – Jan Hudec – 2018-10-26T21:13:50.430
7
There is now documentation here.
– NtFreX – 2018-11-01T12:29:36.397