May 08, 2016

IPFS Weekly #10

IPFS is a new hypermedia distribution protocol, addressed by content and identities, aiming to make the web faster, safer, and more open. In these posts, we highlight some of the development that has happened in the past week. For anyone looking to get involved, follow the embedded hyperlinks, search the wealth of information on GitHub or join us on IRC (#ipfs on the Freenode network).

If you would like to get this update as an email, sign up for our weekly newsletter!

Here are some of the highlights for the time period from April 6th through April 25th.



go-ipfs 0.4.0 has been released! Among the many changes are a revamped implementation of the IPFS communication protocols, increased performance, improvements to IPNS (the Interplanetary Naming System), many bugfixes, and lots of new features to make IPFS even more powerful.

See the blog for more details.


@haadcode upgraded all of his projects to use 0.4.0, got orbit-db and ipfs-log working in the browser, and improved Orbit's UX. As a result, Orbit is much faster and more stable than it was under 0.3! We now have working distributables for orbit-db and ipfs-log in the browser. They still require a local daemon to run to work but this will change when js-ipfs ships. @haadcode added some new features to Orbit: preview files directly in the chat with code highlighting, players for audio and video, and improved the files browsing functionality in general. You can now also copy the hash of a file to clipboard. It looks like this:

Finally, @haadcode also created a simple JavaScript logging module called logplease, which works in Node.js and browsers. logplease does two simple things: output log messages to the console and/or to a file (Node.js only) and display the log messages with nice colors. It was inspired by log4js and debug.


AEgir has been officially released. Formerly called dignified.js, this is our toolset for JavaScript modules, which cuts down on development time immensely by standardizing the process of testing, building, linting, releasing, and generally scaffolding out JS modules. It is now deployed over nearly all active JavaScript projects on IPFS. Check out the npm package or the github repo.

We've also overhauled the community JavaScript guidelines to reflect this change, and to make them more accessible to new developers.

go-libp2p and go-ipfs refactoring

We're modularizing go-libp2p, aiming at module parity with js-ipfs. This makes the codebase less daunting to newcomers, and makes maintenance and testing of everything much easier.

As part of this, @whyrusleeping removed over 9000 (yes, over 9000) lines of unused godeps dependencies from the go-ipfs repo. Its a good deal more manageable now, and we are getting ever closer to having a purely gx managed package.


@dignifiedquire shipped an updated version of js-ipld which now conforms to the latest spec of IPLD. In addition js-ipfs-ipld was created, which implements the building blocks to use IPLD in js-ipfs. The third package that was published is js-ipfs-cli which gives you a cli tool to interact and experiment with IPLD.

ipfs-blob-store v1.0.0 released

One of the benefits that comes from the new Files API in 0.4.0, is that we can emulate any kind of file system expectations on top of IPFS, and by doing so, enable applications that use a file system, to use IPFS without any modification. One perfect example of that are all the applications that use a module that implements the abstract-blob-store interface, now with ipfs-blob-store, with a simple npm install, you can swap out your current blob-store implementation by the IPFS one.

js-ipfs-api now supports the Files API

On the same lines, js-ipfs-api now offers all the Files API calls through a convenient and easy to use library. You can find all of the function declarations on the js-ipfs-api docs

Making js-ipfs and js-libp2p modules awesome

@JGAntunes, @dignifiedquire, @nginnever, @diasdavid, and @noffle have been working hard to bring the pantheon of js-ipfs modules up to snuff: detailed READMEs with examples and full API docs, as well as 100% test coverage. We made significant inroads last sprint on js-peer-id, js-multiaddr, js-peer-info, js-ipfs-blocks and more! There are a lot more modules that still need good READMEs and docs, so dive in and give us a hand!

go-ipfs and the Prometheus monitoring system

We've had Prometheus integrated with go-ipfs for some time already. In case you're unfamiliar, Prometheus is an open-source systems monitoring and alerting toolkit. It allows you to monitor diverse services, visualize the collected metrics in dashboards, and define rules for alerting. Together with the Grafana dashboard UI, it's the perfect monitoring system.

The scraping endpoint of go-ipfs is exposed at :5001/debug/metrics/prometheus by your go-ipfs daemon. Check Prometheus' Getting Started guide to try it out.

go-ipfs and restricting dialing

go-ipfs has support for restricting peer connections to certain IP address ranges, by using the Swarm.AddrFilters config setting. The following config example illustrates how to exclude all IPv4 peers, and all IPv6 link-local peers.

json // .ipfs/config "Swarm": { "AddrFilters": [ "/ip4/", "/ip6/fe80::/ipcidr/64" ] }


Berkman Center

@jbenet and @nicola spoke about IPFS with fellows at the Berkman Center. They discussed the core motivations of the IPFS Project, how it works, the state of the implementations, and a wide array of issues IPFS tackles. The discussion was excellent, starting with important ethical problems present in the web today, going through critical features our web should exhibit to solve them, and ending with how to get there. We look forward to tighter collaboration between our communities. Thank you very much for having us!

MIT Meetup

We had the first ever IPFS meetup in Cambridge, at MIT. It was sponsored by Consensys, and hosted by the MIT Bitcoin Club. @jbenet, @nicola, and @CReckhow each gave talks. A full writeup will appear on the blog as soon as we have edited the videos and posted them on the IPFS YouTube channel. We'll let you know when that happens, here.

*Photo by [@nicocesar](*


Work on Peergos, a decentralised, secure file storage, sharing and social network using IPFS, is progressing well; @ianopolous is close to getting a FUSE binding working. Throughput hasn't been as bad as he was expecting with all the encryption and erasure coding, and it's looking likely that it will end up being network IO bound, instead of CPU bound for non trivial writes.

SpaceX Landing

Things are awesome and getting awesomer. Specifically, SpaceX landed a reusable Falcon 9 booster, which puts us that much closer to having a human colony on Mars. When that happens, we're betting they'll be using IPFS.

Content-Type of The Week

This week's Content-Type is the non-standard chemical/x-chemdraw. ChemDraw is a molecule editor first released in 1985, and still maintained as of today. We don't know which molecules were added to IPFS, but will do our best for IPFS to be around in 30 years just like ChemDraw is still around.

Every week we highlight a Content-Type that we've seen on the public HTTP-to-IPFS gateway at If you're waiting to see one particularly interesting Content-Type in one of the next Weeklies, propose it by ipfs add -w'ing a file of that type, and requesting it from the public gateway:<hash>.


Across the entire IPFS GitHub organization, the following people have committed code, created issues, or made a comment on GitHub between April 6th (noon, GMT) and April 25th. We're autogenerating this list using this tool and this other tool, so please let us know if your name isn't here.

This newsletter is also a community effort. If you have cool things to share for the next weekly, drop a comment about it in the next weekly sprint issue! The more people mention items they want to see in the weekly there, the easier it is to make this and send it out.

Thanks, and see you next week!

  • Richard Littauer

Submit feedback about this issue here, or send us feedback about the IPFS Weekly in general.