juliangruber / backer

wip distributed backup / file mirroring tool
MIT License
60 stars 2 forks source link

collaborative editing #2

Open juliangruber opened 11 years ago

juliangruber commented 11 years ago

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.

buschtoens commented 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.

marcusandre commented 11 years ago

This may be self-evident, but it should also use Growl/OSX like notifications.

juliangruber commented 11 years ago

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.

juliangruber commented 11 years ago

For example realtime editing doesn't play well with revisions.

buschtoens commented 11 years ago

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?

juliangruber commented 11 years ago

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.

juliangruber commented 11 years ago

I'd go with permanent connections for now, as we then can just use streams

buschtoens commented 11 years ago

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).

juliangruber commented 11 years ago

would you mind crossposting that to https://github.com/juliangruber/backer/issues/3, as that's more about the transport layer?

buschtoens commented 11 years ago

Ah, haven't seen that. Of course.

dominictarr commented 11 years ago

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.