[tahoe-dev] Resurrecting Mojo Nation

Brian Warner warner at lothar.com
Wed Jun 13 20:00:02 UTC 2012


On 6/9/12 9:07 PM, Jack Byer wrote:

> Is it practical to go back to the original goal of MN instead of a
> limited subset if the reasons for the project's failure are addressed?

Great question!

So, I wasn't at Mojo Nation (I was fascinated by the concept in 97 or 99
or whenever it made a splash, but never worked there, and only joined
its descendant AllMyData in 2005, many years after MN ran aground). But
my understanding was that many of the following contributed to its
failure:

* overly ambitious scope, would have required an impossibly good
  engineering and management team to implement everything
* too much science needed inventing to make it work
* real markets require diverse motivated players. MN users didn't bother
  tweaking agent behaviors, so you didn't get diversity. Users were
  accidentally encouraged to hoard Mojo (the client displayed your
  balance like a game score, users sought to maximize that number more
  than actually using it), so motivations were broken.
* nodes were transient, so reliability was unpredictable

For Tahoe, we reduced the scope, threw out the economic games, and
narrowed the use-case to commercial grids and friendnets (where uptime
is more predictable). Bittorrent did the same, reducing the scope to
short-term transfers instead of long-term storage. Both have achieved
their own smaller goals.

> Now, ten years later, automated trading algorithms are common so
> perhaps it would be possible for a network to use dynamic pricing to
> allocate hard drive space, bandwidth, and CPU power.

> Are there any fundamental reason why a system like Mojo Nation
> couldn't work now that certain capabilities are available that weren't
> a decade ago?

I think Mojo Nation is still a promising idea, and I think it's got a
better chance of working today than 15 years ago. Many of the challenges
are still there, but yeah, some of them are easier to address:

* overambition is still a big problem. Personally I'm trying to build
  Tahoe up to the point where we can re-introduce MN ideas, but it'll be
  a long road. Strive to break it into smaller pieces, make sure you can
  tolerate missing parts (if you fail to make progress on component A,
  are components B and C still usable?), develop some plausible
  use-cases first, start with the simplest thing that could possibly
  work, let the UI and user feedback drive the design

* Bitcoin makes automated payment easier, for the tiny fraction of the
  world that is willing to use it, but it's probably the right way to
  go, and removes a big centralized engineering hassle (the MN bank). We
  need some better/safer wallet-control protocols (you want your storage
  node to have control over some small stash of BTC, and most of the
  bitcoin clients I've seen are aimed at human-scale transactions), like
  Purses in the Waterken/E/SES examples, but that's just engineering. I
  think MN's extend-pairwise-credit amortization is still important,
  since even with BTC's reduced friction (transaction fees) you don't
  want to be shuffling pennies every few minutes.

* measuring/predicting reliability of storage nodes is still an unsolved
  (and possibly unsolveable) problem. You need servers to stick around
  for a long period of time, otherwise repair costs will swamp your
  bandwidth and leave you no room for real traffic. Needing long-term
  servers interacts badly with adoption (you want to encourage
  experimentation, folks who want to install it just to play around with
  it should be able to do that quickly, but you can't afford to use them
  as servers, since many of them will get bored and delete it or let it
  break the next day, so they don't really get the full experience, so
  they may not really be motivated to stick around). As a client you
  need to distinguish between good servers and transient ones, so you
  really want everyone to monitor and publish uptime data on each other,
  but they could be lying, which gets you back into the reputation graph
  thing. There's been a lot of work on reputation graphs (starting with
  Raph Levien's Advogato, and motivated by EBay and Amazon), but I don't
  know how much of it is buried in proprietary/closed codebases (since
  it's easier to game a system when you have the source) vs being
  available as an off-the-shelf library.

* disk capacity and broadband speeds are faster. Unfortunately people
  are creating more data than ever, and disk speeds (seek times) are
  pretty flat. One metric is how long it takes to read out the full
  contents of a disk, or how long it takes to copy a disk over your
  internet connection: both numbers are kind of sobering (usually
  measured in days or months). Home internet connections remain very
  asymmetric, upload speeds are lousy. Disk prices are dropping, so
  distributed storage has to compete with cheaper local storage, which
  can be a hard sell.

* do people really want remote storage? Why? One reason is to get access
  from their data from elsewhere (sharing with friends, using it from
  someone else's computer, publishing to the world). Another reason is
  for backup. Both are handled pretty well by centralized solutions,
  especially when that solution (e.g. Facebook, Flickr) comes with some
  nice integrated display/edit/discovery/search tools for the data. A
  distributed storage solution has to compete with the incumbents, and
  many of the benefits of Tahoe/MojoNation-style storage aren't
  compelling ("no SPOF" isn't exciting when Facebook never goes down,
  "private" is not something a lot of those folks want or care about,
  "cheap" is competing with free-as-in-eyeballs).

* backup is a question of inspiring confidence. Random servers run by
  strangers does not inspire confidence.


Anyways, I think it's still a fun idea, but still big and difficult. I'd
love to see someone charge ahead on it, but as a business I'd still
consider it pretty risky.

cheers,
 -Brian


More information about the tahoe-dev mailing list