Open juliangruber opened 11 years ago
In addition to the tray icon thingy we could also do an app, that enables live
text file editing. Just like Google docs.
As many people, wouldn't really like to use an extra editor for that, we could also try to build plugins for editors. I'm primarily thinking of Sublime Text here.
This may be self-evident, but it should also use Growl/OSX like notifications.
I'm strongly inclined to make this feel like dropbox and not be realtime, but when that's done implement the realtime thing with all the software and experience we got while doing the simpler one.
For example realtime editing doesn't play well with revisions.
Okay, so Dropbox mimicry is first priority for now. :)
One thing I always disliked about Dropbox, was its unpredictable / not influenceable syncing behaviour. I sometimes spent upt to 15 minutes waiting for a file, that was not yet added to the box. I'd really like to be able to set priorities and get instant notifications, when files are added.
Do you think permanent connections between the clients are good or rather bad?
It doesn't have to be mimicry, but that kind of feature set seems right and if we support most of the features dropbox has people can just switch over.
I'd go with permanent connections for now, as we then can just use streams
If we're gonna use a p2p structure, we should probably have one permanent connection per client, that's used for sending events and what not. Actual file transfers would open additional connections. This way we can use the real power of a p2p network (BitTorrent).
would you mind crossposting that to https://github.com/juliangruber/backer/issues/3, as that's more about the transport layer?
Ah, haven't seen that. Of course.
there is one significant benefit of multiplexing, that then you can implement a protocol that is decoupled from any particular form of networking, https://github.com/dominictarr/rpc-stream#rant
And then backer can easily be made to work over any streaming "transport" like websockets, or webrtc. Also, in somecases (like full p2p) it can be expensive to open new connections.
Although, we need an improved multiplexing module for node.
Using the file system as base abstraction can make it rather hard to incorporate features like collaborative realtime editing.
I think the way this works with Dropbox is when A saves a file, it syncs the diff to B and on her side merges B's local changes with the diff. The software B is using to edit the file would then be required to prompt B for the correct action, like accepting the changes.
Maybe a git like thing, where revisions are explicit can make this less awkward.
At the same time, we already have git for software and it's working, backer's original idea was just to secure your files in a distributed manner.