ipfs/camp
IPFS Camp is a 3 day hacker retreat designed for the builders of the Distributed Web.
repo name | ipfs/camp |
repo link | https://github.com/ipfs/camp |
homepage | https://camp.ipfs.io |
language | JavaScript |
size (curr.) | 91819 kB |
stars (curr.) | 177 |
created | 2019-02-26 |
license | |
IPFS Camp 2019 is over! Thank you to everyone that joined us for 3 days of amazing conferencing, we are so proud and joyful for being part of such a wonderful community.
If you missed IPFS Camp or want to revisit its content, everything will remain available in this repo. Soon we will start publishing the videos as well.
Camp Content
You can find the content description, speakers and trainers at:
👨🚀 👩🚀 Keynotes // YouTube Playlist
Title | Recording |
---|---|
Introduction to IPFS Camp - Molly Mackinlay | Video |
Welcome to IPFS Camp 2019 - David Dias | Video |
Why IPFS? - Juan Benet | Video |
IPFS Ecosystem Progress Report - Molly Mackinlay | Video |
Space Training Program & IPFS Camp Content - David Dias | Video |
Camp Sendoff - Juan Benet | Video |
Space Training Program Graduation & Awards - David Dias & Molly Mackinlay | Video |
👩🏽🏫 Core & Elective Courses // YouTube Playlist
Course | Title | Trainers | Short Description | Materials | Video Recording |
---|---|---|---|---|---|
CORE | |||||
Core A | Understanding how the InterPlanetary File System deals with Files | @alanshaw @Stebalien @mikeal | Deep exploration of the reasons behind immutable data, how we address immutable data, the data structures IPFS creates and the different ways of interacting with files in IPFS. | Course Repo, Slides (PDF) | Video |
Core B | Solving distributed networking problems with libp2p | @bigs @jacobheun @achingbrain | An interactive deep dive into the capabilities of libp2p | Course Repo, Slides (Google Slides) | Video |
Core C | Developing Apps with IPFS API | @lidel @jimpick @hugomrdias | Local, Remote or Embedded? go-ipfs or js-ipfs? Core API interface in command-line and HTTP contexts | Course Repo, Slides (PDF, Google Slides) | Video |
Core D | The lifecycle of data in DWeb. | @olizilla @kishansagathiya @meiqimichelle | Providing (Share), Pinning (Store) and Blocking (Delete) Data | Course Repo, Slides (Google Slides, PDF) | Video |
ELECTIVE | |||||
Elective A | Identity on the DWeb | @satazor @paulobmarcos @joaosantos15 | Understand the state of decentralized identity on the DWeb and current efforts on creating open and interoperable models to solve self-sovereign identities. | Course Repo, Slides (Google Slides) | Video |
Elective B | Managing pinsets with IPFS Cluster | @hsanjuan @lanzafame @meiqimichelle | A workshop on operating and using IPFS Cluster to orchestrate a common pinset among multiple IPFS nodes | Course Repo, Slides (PDF) | Video |
Elective C | TBA (But will have cats with lasers…) | @gorhgorhi | Course Repo | Video | |
Elective D | Building DApps with Textile, the iCloud for the DWeb | @balupton @carsonfarmer @andrewxhill | Course Repo, Slides (PDF) | Video | |
Elective E | Deploying IPFS Infrastructure | @mburns @obo20 | Take your IPFS game to the next level by learning how to deploy and manage your very own IPFS node in the cloud. | Course Repo | Video |
Elective F | Starting, Growing, and Stewarding your IPFS Community | @nukemandan @kk3wong @stefanhans | Let’s get Meta! A workshop on effective workshops! And how to foster a community | Course Repo, Slides (Google Slides) | Video |
Elective G | Managing Datasets with QRI | @b5 | An open source tool for versioned, scriptable, exportable, collaborative datasets | Course Repo | Video |
Elective H | Making the Browser a True User Agent | @autonome @Gozala @soapdog | We’ll show how browsers act as a value filter on our world, teach some approaches to making the browser truly be an agent that represents you, and break into groups to start building our own true user agents. | Course Repo, Slides (HackMD) | N/A |
📃 Poster Projects // YouTube Playlist
Topic | Owner | Description | Recording |
---|---|---|---|
HTTP gateways | @autonome | An IPFS Gateway acts as a bridge between traditional web browsers and IPFS. | Video |
The intricacies of DWeb Addressing | @lidel | Systems like IPFS use hashes of data to reference content by itself, rather than by an arbitrary location/name. With this comes compatability and human concerns around referencing data. | Video |
IPLD Selectors | @maparent | IPLD Selectors are expressions that identify (“select”) a subset of nodes in an IPLD dag. i.e. subsets of IPLD objects. | Video |
Graphsync | @b5 | A protocol to synchronize graphs across peers. | Video |
KeyStore | @gozala | A secure and simple way of storing and managing keypairs (for IPFS services). | Video |
NPM-on-IPFS | @achingbrain | Let’s take NPM and put it on IPFS. | Video |
DAG walking facilities in IPLD | @warpfork | The goal of IPLD is to enable decentralized data-structures that are universally addressable and linkable. | Video |
IPFS/libp2p PubSub | @whyrusleeping | Publish-Subscribe, called ‘pubsub’ for short, is a pattern often used to handle events in large-scale networks. | Video |
CRDTs | @parkan | A “Conflict-free replicated data type” is a data structure which can be replicated across multiple computers in a network, without conflicts! | Video |
IPFS Nodes | @carsonfarmer | A general overview of what it means to be/implement an IPFS node. | Video |
IPFS DHT | @gpestana | IPFS uses a Distributed Hash Table (DHT) to keep track of various types of data, such as content provider records. | Video |
Mutable File System (MFS) | @leshokunin | Mutable File System (MFS) is a tool built into IPFS that lets you treat files like you would a normal name-based filesystem. | Video |
Bitswap | @jacobheun | Bitswap is the data trading module for IPFS. Its purpose is to request blocks from and send blocks to other peers in the network. | Video |
PeerPad internals | @jimpick | PeerPad is a decentralized editor that allows concurrent writing of text. | Video |
go-ipfs Infrastructure | @stebalien | This topic should cover what it takes to initialize a go-IPFS node, and connect it to a public P2P network. | Video |
IPFS Cluster | @meiqimichelle | IPFS Cluster is a stand-alone application and a CLI client that allocates, replicates, and tracks pins across a cluster of IPFS daemons. | Video Part-1Video Part-2 |
Textile internals | @andrewxhill | Textile is a set of tools and trust-less infrastructure for building censorship resistant and privacy preserving applications. | Video |
The design of the IPFS Repo | @dignifiedquire | A repo is the storage repository of an IPFS node. It is the subsystem that actually stores the data IPFS nodes use. | Video |
IPFS/Libp2p content routing | @bigs | The IPFS routing system utilizes “content provider records” hosted on a distributed key-value store to resolve content providers. | Video |
Circuit Relay | @ianopolous | The circuit relay is a means to establish connectivity between libp2p nodes (e.g. IPFS nodes) that wouldn’t otherwise be able to establish a direct connection to each other. | Video |
Swarming (concept) | @mburns | Swarming is a software method that takes advantage of multiple peers (the “swarm”) to fulfill a task which may be easily distributed. | Video |
IPNS | @aschmahmann | IPNS is a system for creating and updating mutable links to IPFS content. | Video |
🐋 Deep Dives // YouTube Playlist
Topic | Owner | Description | Recording |
---|---|---|---|
Scaling up the DHT 📦 | What can we do to optimise the performance of our DHT? Are there alternatives? | Video | |
IPID - Master key security and user-experience 📦 | IDM (Identity Manager) aims to support several DIDs methods and IPID was chosen as the first DID method to be integrated. | Video | |
Package Managers: What Now, What Next? 📦 | Community evaluation and ideation session to recap the current (as of late June) state of the IPFS-enabled package manager landscape, discuss happiness and pain points, and do some ideation/co-creation around the direction of our next rounds of package manager efforts. | Video | |
IPFS on Mobile | Increasingly, everyday computing is happening in mobile environments. At the same time, many features of IPFS and related technologies work best on an ‘always-connected’ network that simply doesn’t exist in the mobile world. In this deep dive, we will explore the issues inherent to p2p systems operating in mobile environments, discuss some existing solutions, and hopefully outline a research/development agenda that will help catalyze a wave of new IPFS-based mobile solutions. | Video | |
Private content on IPFS 📦 | Can we have a private group chat implemented on IPFS? | Video | |
Building the IPFS Community | Community, evangelism, engagement, on ramp. | Video | |
IPFS for websites (static, dynamic, search, etc) | What are the best practices and open questions for using IPFS for static / dynamic websites? What about indexing and searching? | Video | |
Revocation/Rotating of IPNS Keys | The idea of using a public key to identify mutable data is cool, but what happens when that key becomes compromised? | Presenter Opted Out of Recording | |
How can IPFS support sharding 📦 | How to best pin an arbitrary part of a DAG. | Video | |
Replication protocol 📦 | How can we more quickly sync a DAG or part of a DAG between two nodes? A compliment to bitswap, affectionately overloaded as GraphSync | Video | |
Do not replicate lists - DNR | How to stop your node from replicating content due to take down notices or other reasons | Video | |
Fast IPNS 📦 | How to increase the IPNS resolution speed | Moved to Lightning Talk | |
IPFS Education and Documentation | What are the biggest improvements we can make to documentation for IPFS? | Video | |
Mounting an IPFS filesystem 📦 | Is there a way to efficiently mount IPFS as a filesystem? FUSE support is here. What are current limitations, challenges? What needs to happen to enable mounting of MFS? WebDAV is often used in network storage drives, and mainstream operating systems come with native support for mounting WebDAV as drives. It could supersede Writable Gateway and create a surface for interop with apps that provide built-in client-side support for WebDAV. | Video | |
IPNS link rot | Right now, IPNS needs to be refreshed by original publisher every day, otherwise it stops working. There should be a way to pin IPNS address so that other peers keep refreshing the last valid entry when original node goes offline, keeping the last version alive even if the original publisher disappears forever. | Video | |
Deterministic CIDs! Reproducible File Imports! Verifable HTTP Gateways! | How to deterministically get the same CID for the same data, even if default parameters of ipfs.add change? How to validate data read via HTTP Gateway without running full IPFS node? |
Video | |
IPFS in Web Workers | Where we are, limitations, known problems. | Video | |
UnixFS v2 📦 | Latest spec iteration and implementation work | Video | |
Using CRDTs to build real-time collaborative DApps | What are the hurdles to using CRDTs in dapps with IPFS? How can we make peer-base easier to understand and use? | Video | |
Better NAT traversal so that Relay servers are a last (not first) resort | The current cost of running relay servers for IPFS is unsustainable. We need to implement better NAT hole punching mechanisms in libp2p to reduce the usage of relay servers by NAT’d hosts. TCP hole punching has a success rate of ~60%, so we should be preferentially hole punching. TCP simultaneous open is one example. STUN servers are another example; yet another is making every non-NATed host in a libp2p network a relay node. | Video | |
libp2p message orientation | libp2p is currently stream-oriented. We want to enable message-oriented communication (e.g. UDP). Help us envision what the APIs would look like, and how an application could simultaneously hold stream-based and message-based conversations with peers in the world via libp2p. | Did not Present | |
IPFS metrics and usage statistics 📦 | How to collect telemetry like application metrics and usage in a distributed world | Video | |
Decentralized Data Processing | How could we process large amounts of data in permissionless networks? Use cases, verifiable state transitions, aggregations and bulk updates, etc. | Video | |
Building Dynamic P2P Applications | IPFS and its associated technologies are mostly static. Radicle is an attempt to build a dynamic P2P web on top of IPFS; one which can host applications with the same abilities of the centralized servers of today to receive inputs from various people or sources. | Video | |
Better file chunking 📦 | Within the IPFS stack/ecosystem, just as within computing as a whole, an uncompressed stream of untagged octets is a fundamental unit of exchange. As a general-purpose data storage system IPFS needs to handle an unbounded variety of content represented by such streams. Handling the maximum amount of this variety efficiently ( ideally by default ) would likely have an outsized impact on the future adoption of IPFS as a long-term data interchange medium/format. | Video | |
Dynamic DAG traversal | Extend IPLD to cross between immutable and mutable references | Video | |
Design Patterns for DWeb Apps | Most IPFS apps have UX issues. We will pick a feature of an existing app, and improve its UX by simplifying how to interact with it, how it works. Textile.io lowered the permission and roles system from ~15 methods to 2 this way! | Video | |
IPFS and Guix 📦 | Exploration into existing or potential issues with integrating IPFS with Guix | Video |
Note: topics relevant to package managers have a 📦 suffix.
⚡️ Lightning Talks // YouTube Playlist
Presenter | Name & GitHub handle | Topic | Slides | Recording |
---|---|---|---|---|
Justin Maier (@justmaier) and Victor Rortvedt (@twoirtter) | Introducing The Gathering, a web app built with Libp2p to improve in-person networking at conferences and gatherings | Video | ||
Alex Potsides (@achingbrain) | npm on IPFS: Using IPFS to install your JavaScript dependencies 📦 | HTML | Video | |
Shokunin (@leshokunin) | Building a Dropbox replacement on IPFS and Textile | Video | ||
Makoto Inoue (@makoto) | ENS + IPFS: Using ENS as a naming system for IPFS | Video | ||
Benjamin Kampmann (@gnunicorn) | Changing the record: Using substrate to add a custom blockchain to your IPFS dweb app | PDF - Google Slides | Video | |
Andrew Nesbitt (@andrew) | Republishing a project’s npm dependencies to IPFS as a micro-registry 📦 | N/A (video talk) | Video | |
Blake Joyce (@bjoyce3) | Who wins in a fight: Superman, HTTPS, or IPFS? | Video | ||
Pierre Neidhardt (@ambrevar) | Package distribution using IPFS on Guix 📦 | Video | ||
Adrian Lanzafame (@lanzafame) | A quick look into the Pinning API proposal | Video | ||
Dmitry Starodubcev (@xhipster) | CYB: Your personal robot on the Great Web | Video | ||
Eric Myhre (@warpfork) | Solving the distributed naming problem (!) in the applied cases of package management 📦 | Video | ||
Héctor Sanjuán (@hsanjuan) | go-ds-crdt: CRDT KV stores arrive in go-land | HTML | Video | |
Brendan O’Brien (@b5) | Using dsync for point-to-point DAG transfer | Video | ||
Andrew Hill (@andrewxhill) | Content addressing and personal data sovereignty | Video | ||
Kinuko Yasuda (@kinu) and Jim Pick (@jimpick) | Signed exchanges in Chrome | Video | ||
Edgar Lee (@hinshun) | Containerd meets IPFS | Video | ||
Antoine Eddi (@aeddi) | Implementing libp2p over Bluetooth Low Energy | Video | ||
Irakli Gozalishvili (@gozala) | Inter Planetary Data Feed (IPDF) | Video | ||
Gonçalo Pestana (@gpestana) | Privacy in P2P networks: DHTs and IPFS | Video | ||
Victor Grishchenko (@gritzko) | An overview of RON | Video | ||
Rüdiger Klaehn (@rklaehn) | Actyx’s experiences on building with IPFS | Video | ||
Jonathan Budd (@cesarosum) | Peergos: E2E encrypted storage and social network on IPFS | Video | ||
André Cruz (@satazor) | Introducing Nomios | Website | Video | |
Alexandre Trottier (@postables) | Why open source matters and how individuals can further the movement | Video | ||
Andrew Hill (@andrewxhill) | Textile | Video | ||
Matt Ober (@obo20) | IPFS Industry Trends | Video | ||
Zhanna Sharipova (@sharipova) | Anytype | Video |
Note: topics relevant to package managers have a 📦 suffix.
🧬 Sci-Fi Fair // YouTube Playlist
Project | Presenter | Description | Interview |
---|---|---|---|
RPi cluster | @hsanjuan, @lanzafame | ipfs-cluster… on Raspberry Pi | video |
Actyx | @rklaehn | Industrial automation on IPFS | n/a™ |
npm-in-a-box | @achingbrain | what is says on the tin | n/a™ |
The Gathering | @JustMaier | conference networking on decentralized networks | n/a™ |
Textile Photos | @andrewxhill, @carsonfarmer, @balupton | a decentralized photo booth | video |
Lazer Catbot | @gorhgorh | 😼 | n/a™ |
FAPRS | @MarneeDear | IPFS over Ham Radio | n/a™ |
Brave | @yrliou, @darkdh, @emerick | native IPFS in Brave browser! | video |
ENS | @makoto | resolving ENS/IPFS with DNS | video |
IPFS Spider | @magnshen | crawling the IPFS network | n/a™ |
Cluster Labs Horizon + more | @vasa-develop | viz for the RPi cluster + more | n/a™ |
Berty | @aeddi | IPFS over other kinds of radio! | video |
MetaMask | @kumavis | DHT visualizer and more | video |
Janus | @solangegueiros | an IPFS search engine | video |
🧩 Unconf
Host | GitHub handle | Topic | Notes/Artifacts |
---|---|---|---|
@vasa-develop | Dappbase: Firebase for Dapps | Notes | |
@pepoospina | Underscore Protocol | Notes | |
@caojingbin | Video Website Based on IPNS | ||
@mairkur | Medwish: A Decentralized Health Ecosystem | Notes | |
@soapdog | Secure Scuttlebutt | Notes | |
@steven004 | ForcePlatform: A New Layer to Bridge IPFS and HTTP Apps and Users | Notes | |
@xavivives | Knowledge Graphs | Notes | |
@gnunicorn | Blockchain & IPFS, yay?!? | Notes | |
@shishkabab, @worldbrain | Don’t Get Punished for Early Architecture Decisions | ||
@jbenet | Structuring IPFS Research | Notes | |
@gpestana | P3LIB: Privacy-Preserving Primitives for libp2p | Notes | |
@ambrevar | Next Browser | Notes | |
@solangegueiros | Index and Search in Web3 | Notes | |
@adria0 | Zk-Snarks & IDEN3 Circom Compiler | Notes | |
@jkarni | The Radicle Stack | ||
@prtfw | Federated Learning on the Chain/IPFS | Notes | |
@codynhat | Retiring Web 2.0 | Notes |
🎤 Project Interviews
We will be listing the interviews done throughout camp as we publish them.
🐚 Quiet Room
The quiet room was a place for resting, reflecting, and taking space from the excitement of camp. Let your brain cool after a full day of learning. Learn more about it at 🐚 Quiet Room.
Wanna join the Community Conversation?
Meet us at:
- IPFS Weekly Call
- #ipfs@freenode using any IRC client or through the Matrix bridge
Photos and Media
For 📸 Photos, join our Textile feed with this invite url
You can upload photos, videos, documents, etc. at our public Peergos folder.
You can edit an _Prtcl-powered shared notepad for the IPFS Camp. Just make sure you have a web3 provider (like Metamask) connected to the Rinkeby Testnet and head to The Notepad.
Schedule Overview
The schedule for the event can be found at https://camp.ipfs.io/schedule
Chat #ipfs-camp@freenode using any IRC client or through the Matrix bridge