by Richard Littauer, Andrew Chin on 2016-03-09
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 first week of March:
The new version of station 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) 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
The list of API Commands 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.
@dignifiedquire's work on karma-peer means that it now has the ability to dynamically launch browsers, which will help @diasdavid (and hopefully more people!) write better tests for P2P browser applications. See an example of some tests, here. You can also read the discussion that lead to this module and the original tool to test P2P browser applications.
@dignifiedquire has been working on randor, 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 is already working on the first bug that randor detected. To contribute, check out the repository.
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 wrote up a more extensive blog post here, and has an introductory video here.
@diasdavid released versions of two modules for stream multiplexing: libp2p-spdy and libp2p-multiplex. As well, libp2p-swarm 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.
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 has been spearheading the process behind building this, and this week made a host of modules to resolve some of its dependencies:
- bisecting-numbers - Integer-like number system where any number can be bisected to form infinite integer subsystems.
- bisecting-between - Produces a unique value that sorts between two other given values.
- hyperswarm - Create a p2p webrtc swarm around a hyperlog.
(He also wrote a little README generator to help him out with his JS module READMEs.)
@noffle 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's orbit-db to operate without a central server for message exchange between peers.
- secure-gossip - 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 - Form a p2p swarm of nodes around a topic and exchange messages, with a traditional pubsub API.
@whyrusleeping set up Teamcity. 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.
@lgierth spent a productive week in Paris, and chatted with @cjdelisle and @ansuz at @xwiki 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 (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.
@RichardLitt gave a talk at BostonJS 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 also added get-pr-creators 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?
@dignifiedquire 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 in the first episode. He'll do another one this week. One of the viewers, @nginnever, said it "was helpful for a quick view of our components and data flow in the webui." He will announce regular showtimes on Twitter and you can subscribe to IPFS on YouTube where future episodes will be hosted.
@diasdavid 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.
Some members of c-base 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 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, too. If you're in Berlin or visiting soon, make sure to drop by.
At Archives Unleashed, a Web Archive Hackathon in Toronto, Mat Kelly (@machawk1) and Sawood Alam (@ibnesayeed) from ODU WSDL Research Group developed an IPFS based distributed and persistent archive replay system called Interplanetary Wayback.
@jbenet visited the Janelia Research Campus 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, and the requirements of the amazing FlyEM brain imaging effort. He got to see many fantastic open source research tools made by the FlyEM Team (github), the Freeman Lab (github), and other groups. Go check out their GitHub repos, and help them improve brain research!
Jeff Smith of Sitepoint released a great article on IPFS: "HTTP vs IPFS: is Peer-to-Peer Sharing the Future of the Web?".
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 and this other tool, so please let us know if your name isn't here.
- @adrian-bl (Adrian Ulrich)
- @amstocker (Andrew Stocker)
- @anarcat (anarcat)
- @bergie (Henri Bergius)
- @cevin (cevin)
- @chriscool (Christian Couder)
- @cinderblock (Cameron Tacklind)
- @clkao (Chia-liang Kao)
- @daveajones (Dave Jones)
- @davidar (David A Roberts)
- @diasdavid (David Dias)
- @dignifiedquire (Friedel Ziegelmayer)
- @greenkeeperio-bot (Greenkeeper)
- @hjoest (Holger Joest)
- @jbenet (Juan Benet)
- @jedahan (Jonathan Dahan)
- @knocte (Andres G. Aragoneses)
- @Kolomona (Kolomona Myer)
- @Kubuxu (Jakub Sztandera)
- @lgierth (Lars Gierth)
- @mappum (ᴍᴀᴛᴛ ʙᴇʟʟ)
- @MichaelMure (Michael Muré)
- @micxjo (Micxjo Funkcio)
- @mildred (Mildred Ki'Lya)
- @NeoTeo (Teo Sartori)
- @Neurone (Giuseppe Bertone)
- @nginnever (Nathan Ginnever)
- @noffle (Stephen Whitmore)
- @peteygao (Peter Gao)
- @RichardLitt (Richard Littauer)
- @richardschneider (Richard Schneider)
- @sivachandran (Sivachandran)
- @suisha (David Mai)
- @thelinuxkid (Andres Buritica)
- @tinybike (Jack Peterson)
- @whyrusleeping (Jeromy Johnson)
- @xicombd (Francisco Baio Dias)
- @yangwao (Matej Nemček)
- @yncyrydybyl (Yan Minagawa)
- @zignig (Simon Kirkby)
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! 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