Hacker News new | ask | show | jobs
by thijsvandien 2822 days ago
Interesting write-up, though it leaves me terrified how a relatively small, more or less single purpose application like the Dropbox client has over 1 million lines of code in Python alone.
7 comments

I found the Dropbox lecture [1] at Stanford one of the most riveting things ever. There is just so much technology behind Dropbox, it is staggering.

There is a reason why it is so much better than iCloud sync, Google Drive, Box or OneDrive.

[1] https://www.youtube.com/watch?v=PE4gwstWhmc

This led me to find another loosely related but very entertaining piece of dropbox history. The original "Show HN" post: [1]. It's funny to see so much skepticism knowing now what the company became.

[1] https://news.ycombinator.com/item?id=8863

Yes, this is one of the classics - right up there with the "less space than a Nomad, no wireless, lame" comment (which wasn't on HN I don't think - but we all know it could have been :)

Edit: I see the motherlode is in place earlier in the thread "Especially when you could build such a system yourself quite trivially by getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem"

ha, that's a nice counterpart to the 'trivial' thread above https://news.ycombinator.com/item?id=18071820
The iPod comment was from slashdot, if memory serves.
Yes. CmdrTaco, when posting to the home page:

https://slashdot.org/story/01/10/23/1816257/Apple-releases-i...

(that post is old enough to vote in this year's election).

You might only use a small part of Dropbox, but I bet there is a lot of functionality that you don't care about but which is critcial to Dropbox as a business/product for others.

The fact that you think it's small means they're probably doing something right!

Relevant: https://danluu.com/sounds-easy/

(FWIW I don't use Dropbox myself, but I definitely had people ask me why Google needed 3,000 employees back in the day. Apparently it now has nearly 90K employees.)

From the article

>There's also a wide body of research that's found that decreasing latency has a roughly linear effect on revenue over a pretty wide range of latencies for some businesses. Increasing performance also has the benefit of reducing costs.

I wish he cited some of that research, because Google doesn't show much except for this amazon study with the 100ms.

I'm especially interested if there's any research on engineering tools and their latency (long build times) etc., which are chronically under addressed in quite a few large corporations. I'm just wondering if there's some studies that would make the case for me if I were to present this to management.

Especially when you could build such a system yourself quite trivially by getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem!
Sarcasm doesn't translate well on the internet, so I'm really not sure if suggesting using CVS (of all things) over a mounted FTP share as a replacement for Dropbox is a joke!
> Sarcasm doesn't translate well on the internet

Given what you're replying to, I'd say irony sure does.

The size of a codebase is less about its function and more about the number of people adding code to it.
In turn this becomes the number of people required to maintain a codebase.
What would you consider the main cause(s) of that?
The job of a programmer is to write code, so that’s what they do. I doubt there are very many people at Dropbox whose job it is to remove code!
That’s an extremely narrow definition of a programmer’s job.

I think that in terms of lines if code, my contribution to many projects was net negative.

I dunno - refactoring often involves removal of a fair bit of code
Dropbox doesn't feel that small or "single purpose" to me anymore.
What does the Dropbox client do for me other than syncing files and exposing a bit of the online functionality such as generating share links? (Serious question...)
We can simply start by asking what does “syncing files” include?

Watching files. Keeping backup of files. Keeping conflicts resolved. Watching Selective Sync files and folders. Watching Smart Sync files and folders. Notifications for synced files. Etc. etc.

There’s way more the client does than what I mention.

I don't think there is much code for conflict-resolving in dropbox. Usually in case of conflicts it renames one of the involved files and add a message about conflict and the date to the name and moves on.
Perhaps there's lots of code to minimize the number of times a real conflict occurs?
I agree that syncing is far from trivial, but that doesn't change it's a single purpose.
Not to build a straw man but by this logic also a browser is a single purpose application
A rocket ship is also "single purpose."
It might be single purpose but that single purpose is a reallllllly difficult problem.
You have no idea how web development is different from desktop one