Cool first Ruby project, for sure, but "Dropbox clone" is a stretch. That phrase does help explain the idea in a nutshell, but this is essentially a script that polls at intervals and either pulls from the remote repository, or adds, commits, and pushes from the local one.
Incidentally, when I read the source I didn't notice any conflict handling, so you might want to be careful if you intend on using it for anything where conflicts are a possibility.
The biggest thing that comes to mind is native clients for every computer and device I own (PC with both Windows & Linux on dual-boot, Mac desktop & laptop, iPod Touch, iPad), complete with nice file browsers, integrated media playing, etc. I was going to put that in my original comment, but thought it was somewhat obvious: at first glance, it seems to me that this would require the most work if you wanted to actually clone Dropbox.
That, and the nicely designed website, marketing copy, clever social/viral features, etc.
FYI, dropbox does not do meaningful conflict resolving. It dumps a new file for each duplicated copy. Even worse, dropbox does not do merge even it is mergeable. This "dropbox clone" is actually better than real dropbox in this aspect.
Actually, this is one of my favorite features of Dropbox. It may occasionally make me do some additional work to merge files, but it's worth it for the peace of mind: I know that Dropbox will never delete anything I don't want it to or erase history I want left intact.
Automatic merging isn't generally useful for things besides code, and if your using Dropbox for managing code you probably want to use a real SCM.
Syncing a couple of gig of material via git will take up lots of CPU & memory, including on the server, to deal with recompression & history, won't it?
19 comments
[ 3.0 ms ] story [ 52.4 ms ] threadIncidentally, when I read the source I didn't notice any conflict handling, so you might want to be careful if you intend on using it for anything where conflicts are a possibility.
What does the dropbox client do that is significantly different from this? Does dropbox do block level replication or something?
NB I use dropbox and like it, but I do like the idea of the server component being completely open.
Using inotify (linux). Polling doesn't scale.
https://github.com/nex3/rb-inotify
https://github.com/thibaudgg/rb-fsevent
That, and the nicely designed website, marketing copy, clever social/viral features, etc.
Automatic merging isn't generally useful for things besides code, and if your using Dropbox for managing code you probably want to use a real SCM.
But there is a market for open source filesharing application for sure.
http://www.reddit.com/r/programming/comments/ebw1d/rubydrop_...
The flexibility is pretty neat. Being able to do brach-based ACL in particular is killer for some environments and larger teams.
http://sparkleshare.org
https://github.com/hbons/SparkleShare
Dropbox wins because of its seamless it-just-works OS integration. File syncing is the easy part!