Hacker News new | past | comments | ask | show | jobs | submit login
RubyDrop - A Ruby-based Dropbox clone that uses Git as a backend (github.com/meltingice)
55 points by fogus on Nov 26, 2010 | hide | past | favorite | 19 comments



Sounds much like SparkeShare which also uses Git as a backend but is written in C#/Mono:

http://sparkleshare.org

https://github.com/hbons/SparkleShare


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.


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.


"polls at intervals and either pulls from the remote repository, or adds, commits, and pushes from the local one"

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.


"What does the dropbox client do that is significantly different from this?"

Using inotify (linux). Polling doesn't scale.


Yeah, I'm looking into inotify to see how I can implement that with Ruby. Would definitely be nicer than simply polling the directory.



I'd assumed the "poll" there was the connection to the server - I hadn't even thought about polling for modified files!


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.


Calling this a dropbox clone is making the same mistake all those before dropbox did (and their competitors continue to make).

Dropbox wins because of its seamless it-just-works OS integration. File syncing is the easy part!


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?


I'm considering doing a Git/rsync hybrid, or something similar to avoid this problem.


May be it's too bold to call this project as Dropbox clone (is there native client for major OSes?)

But there is a market for open source filesharing application for sure.


Well, it's Ruby and Git, so technically yes.


Im not sure I would be that bold. Here is my take on it from reddit:

http://www.reddit.com/r/programming/comments/ebw1d/rubydrop_...


For the server git configuration part, if you're wondering how, Gitosis might be helpful: http://www.hackido.com/2010/01/installing-git-on-server-ubun...


Gitosis is indeed pretty good, but I've recently found better and migrated to gitolite: https://github.com/sitaramc/gitolite

The flexibility is pretty neat. Being able to do brach-based ACL in particular is killer for some environments and larger teams.


Whoa, that is neat! Thanks for sharing this with me.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: