ipfs / camp

🏕 IPFS Camp is a 3 day hacker retreat designed for the builders of the Distributed Web.
https://camp.ipfs.io
323 stars 80 forks source link

IPFS Camp

IPFS Camp is for those who want to bend the arc of the Internet to be more open, efficient, and secure.

IPFS Camp is back in 2024

2022

2019

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
@autonome
An IPFS Gateway acts as a bridge between traditional web browsers and IPFS. Video
The intricacies of DWeb Addressing lidel
@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
@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
@b5
A protocol to synchronize graphs across peers. Video
KeyStore gozala
@gozala
A secure and simple way of storing and managing keypairs (for IPFS services). Video
NPM-on-IPFS achingbrain
@achingbrain
Let's take NPM and put it on IPFS. Video
DAG walking facilities in IPLD warpfork
@warpfork
The goal of IPLD is to enable decentralized data-structures that are universally addressable and linkable. Video
IPFS/libp2p PubSub whyrusleeping
@whyrusleeping
Publish-Subscribe, called ‘pubsub’ for short, is a pattern often used to handle events in large-scale networks. Video
CRDTs parkan
@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
@carsonfarmer
A general overview of what it means to be/implement an IPFS node. Video
IPFS DHT gpestana
@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
@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
@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
@jimpick
PeerPad is a decentralized editor that allows concurrent writing of text. Video
go-ipfs Infrastructure stebalien
@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
@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-1
Video Part-2
Textile internals andrewxhill
@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
@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
@bigs
The IPFS routing system utilizes "content provider records" hosted on a distributed key-value store to resolve content providers. Video
Circuit Relay ianopolous
@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
@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
@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 📦 Kubuxu What can we do to optimise the performance of our DHT? Are there alternatives? Video
IPID - Master key security and user-experience 📦 satazor 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? 📦 jessicaschilling 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 carsonfarmer 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 📦 ianopolous Can we have a private group chat implemented on IPFS? Video
Building the IPFS Community stefanhans Community, evangelism, engagement, on ramp. Video
IPFS for websites (static, dynamic, search, etc) dietrich 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 aschmahmann 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 📦 hsanjuan How to best pin an arbitrary part of a DAG. Video
Replication protocol 📦 hannahhoward 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 olizilla How to stop your node from replicating content due to take down notices or other reasons Video
Fast IPNS 📦 hugomrdias How to increase the IPNS resolution speed Moved to Lightning Talk
IPFS Education and Documentation meiqimichelle What are the biggest improvements we can make to documentation for IPFS? Video
Mounting an IPFS filesystem 📦 djdv 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 alanshaw 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! lidel 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 gozala Where we are, limitations, known problems. Video
UnixFS v2 📦 mikeal Latest spec iteration and implementation work Video
Using CRDTs to build real-time collaborative DApps jimpick 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 raulk 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 bigs 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 📦 lanzafame How to collect telemetry like application metrics and usage in a distributed world Video
Decentralized Data Processing alari 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 jkarni 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 📦 mib-kd743naq 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 maparent Extend IPLD to cross between immutable and mutable references Video
Design Patterns for DWeb Apps leshokunin 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 📦 ambrevar 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 PDF 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 PDF Video
Makoto Inoue (@makoto) ENS + IPFS: Using ENS as a naming system for IPFS PDF 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? PDF Video
Pierre Neidhardt (@ambrevar) Package distribution using IPFS on Guix 📦 PDF Video
Adrian Lanzafame (@lanzafame) A quick look into the Pinning API proposal PDF Video
Dmitry Starodubcev (@xhipster) CYB: Your personal robot on the Great Web PDF Video
Eric Myhre (@warpfork) Solving the distributed naming problem (!) in the applied cases of package management 📦 PDF 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 PDF Video
Andrew Hill (@andrewxhill) Content addressing and personal data sovereignty PDF Video
Kinuko Yasuda (@kinu) and Jim Pick (@jimpick) Signed exchanges in Chrome PDF Video
Edgar Lee (@hinshun) Containerd meets IPFS PDF Video
Antoine Eddi (@aeddi) Implementing libp2p over Bluetooth Low Energy PDF Video
Irakli Gozalishvili (@gozala) Inter Planetary Data Feed (IPDF) PDF Video
Gonçalo Pestana (@gpestana) Privacy in P2P networks: DHTs and IPFS PDF Video
Victor Grishchenko (@gritzko) An overview of RON PDF Video
Rüdiger Klaehn (@rklaehn) Actyx's experiences on building with IPFS PDF Video
Jonathan Budd (@cesarosum) Peergos: E2E encrypted storage and social network on IPFS PDF Video
André Cruz (@satazor) Introducing Nomios Website Video
Alexandre Trottier (@postables) Why open source matters and how individuals can further the movement PDF Video
Andrew Hill (@andrewxhill) Textile PDF 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:

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