MailBoox - your local and distributed mega-liberary

This application was first distilled and prototyped on the Go version of Holochain at a hackathon back in January of 2018!

Rust version repo:

It is still a very needed application where I am at and I think it would have a lot in common with many other “sharing economy” apps, so I’ll share what we have made so far here in case it can inspire others or someone feels like they can bring it up to current speed!

Basically what we want to build is a way for everyone in a location (possibly based on GPS) to make their bookshelves available to others in their local community for borrowing.

The back-story of the idea is that I live in a village that has around 1000 people, way to few to have a municipal liberary but with a 1000 people having at least 10 books each on average we still have 10 000 books that are sitting around locally. How can we share in a simple way? Maybe it could look like this:

  1. Alice starts the application

  2. Alice inputs books that she has in her home (eventually this would be nice to have completed by scanning a bookshelf (OCR) and pulling open metadata on the books)

  3. Alice browses books available in the vicinity*

  4. Alice asks to borrow the wonderful sci-fi novel “the Foundation” by Isaac Asimov from Bob who lives just a 3 minute walk away.

  5. Bob gets the request to borrow the book and approves it, he notifies Alice that he’ll put it in his mailbox when he gets home that afternoon.

  6. Alice takes her evening walk and walks by Bobs house, picking up the book from the mailbox

  7. Having devoured the book in just 3 days, Alice returns the book to Bobs mailbox and taps the “book returned” icon in the application

  8. Bob, having found the book in his mailbox, opens the app and confirms it being returned

*your vicinity or your “Bookshelves” of available books could be compiled by either things like “calculated GPS max distance from me” or by joining a book community group and probably lots of other ways. Guessing that in urban settings, having a separate bookshelf for just your apartment building for instance would make sense. Also specialized communities, like say "the radical gardening learners, could also want to create a common bookshelf that is made available by invite. Much like rooms on HoloChat might work.

Other things that have been talked about is how to build an automatic “reputation” around how good people are at returning books in time and how long they borrow books for by simply calculating based on previous borrows in the DHT. This could naturally be combined with a bunch of other linked info from other apps to help the person lending out their books know whether or not to lend to someone.

Creating an application like this would of course also lend itself to things like tool liberaries or car pools. Lots of similar patterns would likely emerge from many similar uses. But I am especially looking forward to this one :slight_smile:

As I said, we created a Go version a long time ago and during a devcamp late last year I started to re-build it in Rust.

So the rust version is obviously very out of date with the current Rust implementation of Holochain and needs updating but some of the main functions are defined at least :slight_smile:. There is also a basic but nice little UI that was created during the hackathon which should be able to be brought forward and connected.


Exciting stuff; I love hearing about your full vision for the project. It strikes me that this could help avoid the ‘tragedy of the commons’ in some situations… I hate to say it, but maybe cases of private ownership like this are better than holding everything in common, because you’re answerable to a neighbour in a way that’s publicly auditable. I wouldn’t mind having something like this in my town / community garden / etc!


Yeah, when it is things we already hold individually and that are not all that expensive to get individually, then this is probably a good pattern?

Would be interesting to combine with things held commonly, like the expensive wood chipper which moves around but could be owned together. How does that connect into this? We’ll see :slight_smile:


BTW, a thought on implementation… I grabbed a few books off the shelf and tried scanning their ISBN with my phone’s ZXing Barcode Scanner… worked great for getting the title! Apparently they use Google Books for metadata lookup. Could be a fast way of cataloguing your collection (though not as fast as OCRing an entire bookshelf at once).


As I’m reading this, what comes to mind is a “Tool Pool” of all the tools a handy person needs, beyond a hammer which everyone may have (I don’t here in Chiang Mai, but my neighbour does). And it could go beyond that to all kinds of items.

Thinking of the 2nd hand clothes “parties” we had in Berlin in the 80ies… So if this was properly generalized the specific “groups” could self-define and start a kind of “pool ownership” going, bootstrap it into existence…

My 2 cents…


Great idea. As has been suggested before, this tool could be used for a huge number of object-sharing scenario.

Its easy for objects of small value (books, hammers, etc.) but might become a bit risky for objects of larger value (chainsaw, telescope, bicycle, etc.).

One way to address this could be a “deposit-system” where you have to put a certain amount of currency (Holo fuel?) into escrow. The size of your desposit determines the value-level of tools you are allowed to borrow.

The tricky part is figuring out what to do with the funds, when something goes wrong.
Imagine I borrowed a BBQ grill and returned it broken. Does the owner get my deposit to purchase a new one? How do we prevent him from simply claiming the BBQ grill was broken and cashing out my desposit?

Could an additional reputation-system help?

Maybe a bilateral evaluation tool could also help: Both the borrower and the lender fill out a quick survey of the tool’s condition prior to and after the borrowing period.
That way one can see how their subjective perception differs and over time trends could become visible (Alice is over-critical and complains about every scratch but also takes great care of tools she borrows. Bob is a bit careless with other’s tools, but also forgiving when it comes to his own tools).


@jakob.winter yeah, this is a very tricky thing. I’ve heard that tool libraries often suffer from the traditional ‘tragedy of the commons’.

I have a hunch that your deposits + bilateral evaluation idea is a very promising one. That is, in fact, exactly what my wife and I are going through right now with a tenant who let his dog trash the carpet. The residential tenancy laws in our province say that:

  • The landlord and tenant are to fill out and sign a move-in condition inspection report together.
  • A landlord is permitted to require a security deposit at beginning of tenancy that’s no more than half a month’s rent (and is also permitted to require a pet deposit of the same amount).
  • The landlord and tenant are also to fill out and sign a move-out condition inspection report together.
  • The landlord can withhold either of the deposits to pay for the delta of condition between move-in and move-out reports, but only if the tenant agrees to it in writing.
  • If the tenant doesn’t agree to relinquish their deposits, the landlord can appeal to the provincial residential tenancy board (sort of a tribunal) who can review the case and issue an order allowing the landlord to keep the deposit.

So you can see there are two mutual inspections that protect both landlord and tenant, and checks and balances and recourse to an arbitrator in case things go south and they can’t come to agreement. Maybe third-party arbitration is another important part of protecting people’s property.