Wow that’s a great explanation of what’s going on under the hood! Thanks for that
The future is here. amazing
Oh that’s looking nice, keep it up! we’ll be rooting for ya.
Just to answer this directly (it’s also addressed in the inner workings description above):
With smaller files you’d see the data transferred as if between two real drives, i.e. fast. In theory same would go for bigger files, but I haven’t tested that with chunking the data for the SQLite row size limit.
The upload of the data to the network happens with a slight delay, it’s like Dropbox synchronization actually.
That transfer speed would be limited by your upload bandwidth. Unless you need to login, upload and quickly log out, or access it directly on another device, you wouldn’t notice that.
But basically: actual data transfer to network won’t be slower than any other way to upload data from your machine to some remote location, and the user experience will hopefully be almost as if it was a local drive.
Bravo. You get it oetyng. Ever consider working for MaidSafe?
@oetyng, You and Mark @happybeing are going to create the killer product that will make SAFE useful to just about everyone who has ever used an extra drive, USB drive, thumb drive or wanted to with their phone.
It will be one of the most used programs for the SAFE network in my opinion.
Might even get people to backup their data
I take my hat off to both of you.
Amazing work, this is a very powerful but simple interface for users. That’s no easy thing to achieve so congrats on the work so far. I think (and probably you too) that the backend is the ‘interesting’ part but the UI is the most important so I’m happy to see it looking so tight!
What is ‘Location’ and ‘Secret’ in this prompt?
The location is your account secret and secret would be your account password ?
I’m concerned with how it says each SAFE drive is tied to one SAFE account. From what I understand people can create multiple public IDs to preserve their privacy and interaction with one another. Could one tie a drive, partition, or folder to a particular public ID? What I’m thinking here is if you give permissions to, or share as, a particular Public ID, a certain face if you will, you don’t want your different identities and their data getting mixed up. You don’t want your employer going through your activist materials or your porn collection and you might not want to advertise on the SAFE Dating site your theory that the moon landings were a hoax perpetrated by the ghost of Elvis reincarnated as an alien or something. Point being keep your reds, blues and greens separate. So with physical thumb drives you can give different people different drives, that’s why we love them. But if the SAFE drive pulls from one entire account that could be a problem as a lot of different data could be stored on there. So by what mechanism does the SAFE drive “sort” this data for sharing with other users?
For that matter if I want to set up a safe site do I need to use the SAFE web hosting app thing or can I link directly to the file since it is uploaded to the SAFE network after all? And if so where is the url?
@Blindsite2k I’d say that the employer example etc is not going to happen since your personal account would not be used as your business account the Boss, or girlfriend sees etc
Of course you should be able (later on) to “send” files to other people, which would be sending them the datamap.
But you make a good point. It would be good to have multiple drives in the one account that can be treated as one treats the thumb drives. So one for business, one for personal (relationships) sharing, one for that secret stuff, etc. Oh and ones to give to other people as one does with thumb drives
Another idea for a SAFE drive would be a drive where you could grant someone access to it for a given time period. Kind of like having someone borrow a thumbdrive with the expectation they would return it after a given period. That way the drive becomes reusable much like the thumb drive one would loan out would be as well.
Given that files are permenantly stored on the SAFE network and once one copied the data to their drive it would be theirs indefinitely this might have limited applications. Still the idea being one might want to give one only temporary access to a given amount of data.
This can certainly be changed, but the initial idea was exactly this, to create a new account for the drive. It is not tied to anything or connected to any of your other accounts. So it is the absolute isolation of that drive. If you share the credentials, it is like sharing a thumb drive, because after all, someone who’s got the thumb drive can do anything with it.
If you want to give a copy, then create a new drive, copy over the data (will be deduplicated so minimal waste of space) and give the credentials to that new drive.
In addition to that, or instead, one could choose to share access to the MDs, since they have fine grained access control. But if it’s about sharing write access, that would be a much more convoluted and work intensive way to do the same thing.
As for sharing read access, it would have to be implemented in the protocol to maintain a certain access level to all MDs (ADs), according to input from owner. It’s definitely a use case, so something like it will be there.
Thank you @mav! Yup, it’s like you say I find backend more interesting in many ways, but I totally agree about the importance of UI and I find all of it very interesting.
As @vigneshwara says, this is the SAFENetwork login credentials. I’ve been a bit hesitant to call it by the low level implementation names that they are used at SAFENetwork level, since it doesn’t make any sense if you don’t know about that (which most people won’t).
To any mortal it is a username and password, but in the network, the “location” string will give the hash for the MD address in XOR space, and “Secret” will be used for encryption.
Actually, the copy as it is done now would be a bit slow and unnecessarily wasteful, as you would download and upload the content again (even if it is deduplicated).
When I get the snapshots feat finished in SAFE.AppendOnlyDb, I can do something like this instead:
Get latest snapshot plus all events since (at most 997), produce a new snapshot of it and initiate a new drive with that snapshot (first slot in the drive AD gets the datamap to the snapshot).
That would mean no content download/upload (other than the small size content that fits in AD slots), just compress the set of pointers and put into a new account.
In theory this might be possible to accomplish (I don’t know if it is desirable though), but right now there would be protocol incompatibilities. The data in the two different apps (safe browser and SAFE.NetworkDrive) are stored and read in different ways.
I don’t know, would it be a neat thing? Put all files and folders of a site on a drive, and somehow expose that as a site? Maybe a bit overkill.
Yes, as I understand it SAFE.NetworkDrive and SAFE Drive are different in how the data is stored on the network. We will have to see how the APIs develop I think. At the moment there’s a standardisation for file and website content being stored in the same data structures (using SAFE NFS), and SAFE Drive uses that so anything stored using SAFE Drive can be read by anything that understands SAFE NFS, and vice-versa, such as SAFE Browser, or a file manager etc.
But the underlying structures may change with the inclusion of support for RDF, so we’ll have to see how this develops. I think it is useful for different apps to be able to access data stored on the network, but there are pros and cons.
really cool @oetyng, as already said, I like that you are hiding soooo much complexity, giving the user a simple interface. Can you please confirm where I can pre-order the USB stick which mounts my drive linked to a SAFE account when plugged-in, securely storing the SAFE account credentials in it?
What is username and password in this prompt? Is it different to Location and Secret? Is it SAFE or is it Windows? Just a bit unclear about the workflow and naming conventions; a small thing but I’m just curious.
The ‘Username’ and ‘Password’ of the Login window are the ones in this part
You create a user on your machine, by providing a username and a password. The password will be used to encrypt the user and drive configuration that you store locally on the machine, as well as the data in the local WAL db.
In your encrypted configuration file (one per user), you will store the SAFENetwork credentials to each drive.
So, you create a user for SAFE.NetworkDrive app, and it is stored on the machine you use (or even better, as @bochaco suggested, on a thumb drive, but that’s not implemented yet ).
The user (called user config in the code) is stored as an encrypted file.
Every drive you add, has its own SAFENetwork account (which uses ‘Location’ and ‘Secret’ naming for the login credentials to the network).
The drive letter and the SAFENetwork credentials are stored in a list in the user config.
So, it goes like this:
- Start app.
- Login screen shows.
- Entered credentials (the password) will either decrypt an existing file (located one folder up from the executable, named by scrambled username) or create one.
- If a decrypted file has drives added to it, they are displayed in the main window.
From there you add drives, remove (removes from the local config file), mount/unmount. If you choose to delete the user, that means all drives will unmount, the WAL db is emptied, the user config is deleted from disk and the application shuts down.
Warning is given that if you don’t have the SAFENetwork credentials stored some other place, all data is lost forever.
I’m going to make a video to demo it all (tagging you @Nigel ) . Was waiting for some sound equipment that arrived just today and tomorrow the carpenter is doing the very last thing on my home office that’s been in the making for one and a half year (it’s not that fancy, just got delayed ). Let me get myself installed and there will come some more material on everything