-
Notifications
You must be signed in to change notification settings - Fork 669
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Virtual Filesystem (VFS) #4341
Comments
Since the source problem motivating this solution is that managing very large shares is cumbersome with the client, here are some specific problems/solution to consider that could be incrementally improving the quality of the sync client to also solve the issue instead of a risky and costly file system solution: I'm subscribed to a large shared folder, but from time to time huge files that I don't need appear on my diskDo shared folders need to be synced by default? Your own files, or files that you favorited in the web interface should be included in the selective sync by default. Other files could simply not be synced until you ask for them. The folder was shared with you, congratulations you have access, but in most cases you might not want all of them on your disk. A notification when you gain access could already ask you if you want to sync the new shared folder in totality. I want to work on my own files in the company shared folder, but activating it in the selective sync now means that I get every new files included and I need to keep deselecting themThe selective sync UI currently only allows excluding files. If you have the structure a/b/c, and you want the directory a/b/c/d1, but not a/b/c/d2, the UI will allow you to deselect d2, but if d3 appears it will be synced by default. There is no way to say that you just want a/b/c/d1, you can only say I don't want all other files, and you need to update this list every time a new folder appears. We could provide a way to include and exclude folders, so that you can exclude a/b/c, but override this by then including only its a/b/c/d1 child, thus also excluding d3 by default when it appears. The control panel for the indexing service on Windows is an example of a UI that allows this. It's a bit more complicated, but allows to have both an include and exclude hierarchy. The selective sync UI is slow and it shows arrows to expand folders even if they don't have childrenWe currently PROPFIND the server each time you click in the UI, we could keep the whole file structure and store it in the database, updating it on each sync so that the UI is fast and complete. I want to have access to all files quickly even though I just want to access it once, I'll see later if I want to sync itThe selective sync UI could allow to jump quickly to the web interface with a context menu in the selective sync UI "Open in the ownCloud web interface" where the user can download the files in this folder. The files themselves could also be shown in the selective sync UI and an "Open locally" menu could allow opening the file without syncing it, but there should be something making the user aware that modifications won't be synced back if it was excluded (either the file is readonly, or a popup tells him). |
There is another one: I have files that I create on my desktop, that are in my sync directory, that I don't want to sync - but I still want them to remain on my desktop. Example: I rip a copy of a DVD I own, and it is in my video folder, but it is 45 GB (blue ray) and I don't want to sync that...but I don't want it deleted. |
Great feedback. Thanks a lot @jturcotte There is definitely something that we could do to make selective sync more intelligent. But this might lead to even more config options that users need to understand. I also think that this is not the best option for a lot of scenarios. |
Got here from #2633 (thanks to @guruz @RealRancor). I think the best way of having this is http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/ view-source:http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/src/bbfs.c The solution on the client would look in a following way: // pseudo-c++
class FilesystemOnDemand : FSCache // [0:cache-fs] | [1:github:/contantine/fscache] | [2:offlinefs] | [3:bcache]
{
FilesystemOnDemand(const char* path):path(path)
{
}
bb_readdir(path)
{
require('zipfs');
if (folder~='*zip' && listZipFilesInsteadOfDownloading) return Functor(SmartZipFilesListing(owncloudDataProvider, path));
else return Functor(readingFolderGenerator, path);
// functor returned because in fact listing directories is stateful on low-level;\
note that this could allow even smart listing
}
bb_open(path, ...)
{
return super.createFile(path); // opening a file requires creating a file in a caching filesystem
}
bb_filetype(path)
{
return filename.isDir(ptah) or fileExtension(path)=='zip' && DIR &&
}
bb_read(file, begin, end, ...)
{
file=super.open(getPathOfFile(file));
super.write(file, begin, end, owncloudDataProvider([user, login] | ssid, relativePath(path), begin, end);
file.close();
// smart-read, retrieving only needed part of a requested file
}
// in first releases read-write access might break a lot, so I suggest first versions allow read-only access
int bb_access(const char *path, int mask)
{
return 0440 // owner+r,group+r;
}
} (btw. is even writing posts like this allowed here? if no, then forgive me, but I need to highlight that the only acceptable way of implementing such a solution is filesystem-level file access, otherwise accessing files will not be transparent from the user point of view and will be not compatible with all the programs available out there) and I think we want to allow for example users to be able to watch not only their 20KB text-files, but also their 4GB videos, which - if stored in webm format, can be played even if partly-fetched RFC-6386 or webm-docs. I think in first version this could be mounting additional folder
and whenever somebody tries to watch photos from What do you think? Those are technologies to be researched: |
I think the first step is done which was the requirement for the 2.2.0 milestone. I will move this on. |
Hi guys, I expect you've already seen this, but Dropbox are previewing this at the moment it seems. |
Thanks for the link! We are looking, just to see how they are thinking about the topic. |
@dragotin are you working on this feature now or it's on your bucket list?? |
This is getting more popular. From @dragotin: This project seems even more interesting: This project implements VFS for various clouds, and it should be relatively easy to adopt it to ownCloud, because there is already a backend implementation for WebDAV. Worth a check? |
The new Cloud Filter API seems to be the modern way to achieve this on Windows 10 (Version 1709+) without implementing a full FUSE filesystem. I'm assuming that this is how OneDrive's Files On-Demand feature was implemented in the Fall Creators Update. |
@XA21X Thanks for the link! |
@ckamm what exactly should be tested here? Could you please provide the scenarios? |
@HanaGemela This is a high-level feature issue, I can only outline a few scenarios:
|
@michaelstingl is there any chance we'll have documentation on VFS? @ckamm I don't think it works on macOS 2.6.0alpha2 (build 12128) but hard to decide without documentation. Please confirm if this is the intended behaviour Scenario 1
Scenario 2
Scenario 3
|
Both scenarios 1 and 2 would be the same bug. (does the pin state not apply properly on OSX?) (EDIT: Can reproduce, likely my fault in a recent change, am surprised the tests didn't catch that and will fix.) Bad notifications in scenario 3 would also be a bug. |
I will need to look at that later. |
@ckamm what is the expected result when I copy a virtual file? Currently the copy disappears. But it should behave as normal file which means to create a copy, am I right? |
@ckamm on Windows when I turn on VFS, the icons show 'Sync pending'. What does that mean? When I force sync now, it is still Pending. |
@ckamm What should happen when I try to download a placeholder offline? Could it give me a nice message? Currently macOS doesn't do anything, Windows gives Error 0x800701AA: time-out |
Delete: Also discussed here: #6875 |
@HanaGemela Download while offline: Currently it should be queued to be downloaded when the next sync happens. I was saying a warning message would be good to have, but that it should be targeted for 2.6.1. |
Closing this high level issue. Bugs and enhancements will be solved in separate issues |
Is it possible to implement it without the |
@theJian macOS 10.15 Catalina will come with a "all-new FileProvider API". Plan is, to use this for the ownCloud desktop sync client. No ETA yet. https://www.apple.com/macos/catalina-preview/features/
Here you can find the technical details: |
@michaelstingl This API was removed from Catalina features page. Does Apple decide to not to bring this API to macOS Catalina? |
Sadly no information from Apple. They also rolled back their iCloud improvements during beta, but those are planned for Spring 2020: |
Great news at Apples wwdc21: |
any chance for osx version to behave like windows version (using apples' new APIs) thanks! |
Team is working on it. We'll let you know as soon there's something to test… |
This is a research task, to look into and define what it would take to make this happen. Basic user story looks like this:
As a user, I want to see all of my files on my desktop, regardless of if they have synced or not so that I can access my files at any time, from anywhere.
Acceptance Criteria:
And much more.
@karlitschek @dragotin @danimo for your continued discussion and additional requirements.
The text was updated successfully, but these errors were encountered: