IPFS (opens new window) 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 (opens new window) or join us on IRC (opens new window) (#ipfs on the Freenode network).

If you would like to get this update as an email, sign up for our weekly newsletter (opens new window)!

Here are some of the highlights for the first week of March (opens new window):

# Updates

# station (opens new window)

Station

The new version of station (opens new window) is ready for developer preview! station is one of the easiest ways to get an IPFS daemon running on your machine. It acts as a service and you get many convenient features, such as the ability to turn an IPFS node on through a GUI and drag and drop to share through IPFS. To try it out, you need Node.js 4 (installation instructions here (opens new window)) and npm 3 (which comes with Node) installed. Then, do the following:

> git clone https://github.com/ipfs/station.git && cd station
> npm install
> npm start

# website (opens new window)

The list of API Commands (opens new window) on the website has been updated. This provides a single place to look through all of the CLI commands for go-ipfs, at once; it is a good reference point if you're not sure exactly which command to use next, and ipfs commands seems sparse.

# AUR

@Kubuxu (opens new window) has made sure that gx, gx-go, and ipget are available on AUR (opens new window), the arch-linux user repository. This means that it will be easier to get and install these on some linux platforms.

# karma-peer (opens new window)

@dignifiedquire (opens new window)'s work on karma-peer (opens new window) means that it now has the ability to dynamically launch browsers, which will help @diasdavid (opens new window) (and hopefully more people!) write better tests for P2P browser applications. See an example of some tests, here (opens new window). You can also read the discussion (opens new window) that lead to this module and the original tool to test P2P browser applications.

# randor (opens new window)

@dignifiedquire (opens new window) has been working on randor (opens new window), a testing framework that will be able to send huge files and lots of requests into IPFS in order to test how it works for edge cases and how it scales. Randor is now able to rerun tests predictably based on stored data, so it's easy to find and fix bugs. @whyrusleeping (opens new window) is already working on the first bug that randor detected. To contribute, check out the repository.

# WebRTC Explorer (opens new window)

WebRTC Explorer 2.0.0 has been alpha released! WebRTC Explorer is a P2P Routing Overlay Network, using WebRTC Data Channels as the transportation layer between nodes. WebRTC Explorer enables communication between browsers without needing mediators (servers), enabling users to route packets between machines, using only Web technologies. WebRTC Explorer is inspired by the Chord DHT, to create a routing scheme with finger tables that are evenly balanced across nodes. @diasdavid (opens new window) wrote up a more extensive blog post here (opens new window), and has an introductory video here (opens new window).

# libp2p (opens new window)

@diasdavid (opens new window) released versions of two modules for stream multiplexing: libp2p-spdy (opens new window) and libp2p-multiplex (opens new window). As well, libp2p-swarm (opens new window) has a new API, more tests, less magic, and more flexibility. There is an open PR to track these changes; if you'd like to get involved, follow it (opens new window).

# js-ipfs (opens new window)

Some of you have been asking about ways to contribute to the JavaScript implementation of IPFS: well, wait no more! Now you can read the latest captain.log (opens new window) entry and learn about the state of the project and have a list of issues of things that you can contribute. We appreciate all your help.

# ipfs-pad

We want to build an Etherpad-like product on top of IPFS. There's a lot of
technical ground to cover to do this: how do we know how to sort edits? How do
we deal with high latencies (days/weeks), or with simultaneous edits? How is the
data transported? @noffle (opens new window) has been spearheading the process behind building
this, and this week made a host of modules to resolve some of its dependencies:

(He also wrote a little README
generator (opens new window)
to help him out with his
JS module READMEs.)

# pubsub

@noffle (opens new window) also published a couple of early mad science modules that enable a
peer-to-peer overlay network for gossip-based message exchange. These aren't
strictly built for IPFS, but are an experimental shim to enable projects like
@haad (opens new window)'s orbit-db (opens new window) to operate without a
central server for message exchange between peers.

  • secure-gossip (opens new window) - Secure, transport
    agnostic, message gossip protocol. Any peer in the network can publish
    messages, which will eventually propagate to the entire network via rounds of
    gossip between each node's peers.
  • pubsub-swarm (opens new window) - Form a p2p swarm of
    nodes around a topic and exchange messages, with a traditional pubsub API.

# go-ipfs (opens new window)

@whyrusleeping (opens new window) set up Teamcity (opens new window). This cuts down on the long waits for Travis to run, and hopefully will mean faster CI tests. Teamcity also gives us awesome metrics on our tests and nice statistics on failures and failure rates. Teamcity has nice integration with a large array of test runners, from go tests to karma and sharness. It will give us more detailed feedback about our test runs, even when successful.

# fc00 (opens new window)

lgierth in Paris

@lgierth (opens new window) spent a productive week in Paris, and chatted with @cjdelisle (opens new window) and @ansuz (opens new window) at @xwiki (opens new window) about the state and future of cjdns/fc00, layed out ideas for routing improvements, and drafted spec documents for the switch and cryptoauth layers. You can find those specs here (opens new window) (they'll be updated soon). Work will continue on these for the rest of March. The switch and routing layers of fc00 might be the foundation of a smarter swarm for IPFS/libp2p, so this is all very exciting.

# Community

# name-your-contributors (opens new window)

@RichardLitt (opens new window) gave a talk at BostonJS (opens new window) on Thursday to around fifty people, about how the name-your-contributors module is used in this newsletter. The theme of the meetup was community building; if you have any ideas for improving the Contributor list below, check out this repository and let us know. Since the talk, @RichardLitt (opens new window) also added get-pr-creators (opens new window) to the module, so that everyone who opens a PR (even if it isn't merged) gets added to the contributors list. Has your name been included?

# dignifed hacks

@dignifiedquire (opens new window) launched a live-stream of him coding, which he is calling "dignified hacks". Last Monday he recorded himself doing a new feature for the WebUI (opens new window) in the first episode. He'll do another one this week. One of the viewers, @nginnever (opens new window), said it "was helpful for a quick view of our components and data flow in the webui." He will announce regular showtimes on Twitter (opens new window) and you can subscribe to IPFS on YouTube (opens new window) where future episodes will be hosted.

# Lisbon Blockchain Workshop (opens new window)

@diasdavid (opens new window) participated on the last Lisbon Blockchain Workshop on March 5, hosted by Kwamecorp. The workshop gathered many Blockchain, IPFS, ethereum and zerocash enthusiasts that were organized in working groups to build solutions with these distributed technologies.

# IPFS Dead drop (opens new window)

cbase deadrop

Some members of c-base (opens new window) have written a dead drop-like system that automatically uploads files from a USB memory stick to IPFS. When you plug a USB memory into the device, it will automatically access the memory stick and publish all the files on the web. Thanks to IPFS the files are instantly available to the whole world. Check out deaddrops.com (opens new window) for more information about dead drops.

They also have an installation available: the node is run in the above device. When you plug it in, you get to see this (opens new window), too. If you're in Berlin or visiting soon, make sure to drop by.

# Interplanetary Wayback (IPWB)

At Archives Unleashed (opens new window), a Web Archive Hackathon in Toronto, Mat Kelly (opens new window) (@machawk1) and Sawood Alam (opens new window) (@ibnesayeed) from ODU WSDL Research Group (opens new window) developed an IPFS based distributed and persistent archive replay system called Interplanetary Wayback (opens new window).

# Science Data

@jbenet visited the Janelia Research Campus (opens new window) to learn about scientific data tools and use cases. He gave a talk about IPFS, data versioning, package management, and more (video forthcoming). He learned about DVID (opens new window), and the requirements of the amazing FlyEM brain imaging effort (opens new window). He got to see many fantastic open source research tools made by the FlyEM Team (opens new window) (github (opens new window)), the Freeman Lab (opens new window) (github (opens new window)), and other groups. Go check out their GitHub repos, and help them improve brain research!

# Press

Jeff Smith (opens new window) of Sitepoint released a great article on IPFS: "HTTP vs IPFS: is Peer-to-Peer Sharing the Future of the Web?" (opens new window).

# Contributors

Across the entire IPFS GitHub organization, the following people have committed code, created issues, or made a comment on GitHub between February 29th (noon, GMT) and March 7th. We're autogenerating this list using this tool (opens new window) and this other tool (opens new window), 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 weekly repo (opens new window)! 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 and Andrew Chin

Submit feedback about this issue here (opens new window), or send us feedback about the IPFS Weekly in general (opens new window).