Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
img feat: add remaining team and slide links (#150) Jul 8, 2019
package-managers Update README.md Jul 3, 2019
01-private-dht.md Initial draft for Deep Dive on Private DHTs (#33) Jun 11, 2019
02-scaling-up-the-dht.md 02-scaling-up-the-dht: proposal with implementation details (#136) Jul 4, 2019
03-reducing-the-information-leakage-on-a-libp2p-dial.md
04-locking-the-ipfs-repo-for-concurrent-access.md feat: add deep dive description pages Jun 6, 2019
05-ipid-master-key-ux.md feat: add remaining team and slide links (#150) Jul 8, 2019
06-live-streaming-capabilities-through-ipfs-to-x-thousand.md feat: add deep dive description pages Jun 6, 2019
07-upgrading-the-http-api-to-a-rpc-api.md feat: add deep dive description pages Jun 6, 2019
08-offline-first.md
09-package-managers-what-now-what-next.md feat: add remaining team and slide links (#150) Jul 8, 2019
10-ipfs-on-mobile.md Deep Dive - Update 10-ipfs-on-mobile doc to include team notes (#139) Jul 4, 2019
11-private-content-on-ipfs.md Update 11-private-content-on-ipfs.md (#121) Jul 3, 2019
12-building-the-ipfs-community.md
13-ipfs-for-websites-static-dynamic-search-etc.md Fill in participants for search deep dive (#147) Jul 4, 2019
14-ipfs-in-blockchain.md feat: add deep dive description pages Jun 6, 2019
15-open-research-problems-in-ipfs.md feat: add deep dive description pages Jun 6, 2019
16-revocation-rotating-of-ipns-keys.md updated 16. Rovocation/rotating ipns keys (#129) Jul 3, 2019
17-building-reusable-data-structures.md
18-service-and-content-discovery-under-partition.md feat: add deep dive description pages Jun 6, 2019
19-referencing-http-centralized-web-content-from-ipfs.md feat: add deep dive description pages Jun 6, 2019
20-how-can-ipfs-support-sharding.md feat: add remaining team and slide links (#150) Jul 8, 2019
21-a-better-http-api.md
22-garbage-collection-how-to-make-more-efficient-large-block-stores.md feat: add deep dive description pages Jun 6, 2019
23-connection-management.md docs: fix conn management deep dive formatting Jun 24, 2019
24-replication-protocol.md
25-do-not-replicate-lists-dnr.md fix copy-pasta of link to Ian's proposal (#176) Aug 7, 2019
26-fast-ipns.md feat: add remaining team and slide links (#150) Jul 8, 2019
27-multiwriter-ipns.md feat: add deep dive description pages Jun 6, 2019
28-wasm-in-js-ipfs.md feat: add deep dive description pages Jun 6, 2019
29-resource-utilization.md
30-ipfs-education-and-documentation.md Deep dive discussion (#125) Jul 3, 2019
31-mounting-an-ipfs-filesystem.md
32-faster-content-discovery.md feat: add deep dive description pages Jun 6, 2019
33-re-configuring-ipfs-on-the-fly.md feat: add deep dive description pages Jun 6, 2019
34-ipns-link-rot.md
35-deterministic-cids-reproducible-file-imports-verifiable-http-gateways.md
36-key-management.md feat: add deep dive description pages Jun 6, 2019
37-ipfs-in-web-workers.md Update 37-ipfs-in-web-workers.md with conclusions from deep dive (#122) Jul 3, 2019
38-unixfs-v2.md feat: add remaining team and slide links (#150) Jul 8, 2019
39-using-crdts-to-build-real-time-collaborative-dapps.md Add notes and solution section (#119) Jul 3, 2019
40-better-nat-traversal-so-that-relay-servers-are-a-last-not-first-resort.md feat: add nat traversal deep dive notes (#148) Jul 9, 2019
41-libp2p-connection-bootstrapping-and-protocol-negotiation-2.0.md
42-libp2p-message-orientation.md
43-ipfs-metrics-and-usage-statistics.md
44-decentralized-data-processing.md
45-building-dynamic-p2p-applications.md
46-better-file-chunking.md Deep Dive - Better File Chunking (#127) Jul 3, 2019
47-dynamic-dag-traversal.md reorder presentation so the history does not overshadow the new probl… Jul 8, 2019
48-design-patterns-for-dweb-apps.md Added notes from the user testing walk-through. (#128) Jul 3, 2019
49-ipfs-and-guix.md feat: add remaining team and slide links (#150) Jul 8, 2019
README.md Deep dive 47 on multi-protocol dynamic dag traversal (#135) Jul 4, 2019
chain.png
create-desc-pages.js feat: add deep dive description pages Jun 6, 2019
ipld_json.png
ipld_nodes.png feat(replication): add discussion notes (#134) Jul 3, 2019
merkledag_hashes.png
merkledag_numbers.png
merkledag_parallel.png feat(replication): add discussion notes (#134) Jul 3, 2019

README.md

πŸ‹ Deep Dives

Description

The Deep Dives format is designed to give all participants a taste of what it feels like to work on the big and meaty Open Problems by contributing directly to them in an intense design session - evaluating all the possible solutions, their advantages and shortcomings, and documenting the results.

This type of discussion is core to the genesis of IPFS. We’ve done multiple over the years which have yielded many valuable results such as IPLD, PubSub, GraphSync and other advancements to the original IPFS protocol.

These design sessions are not about explaining how things work, they were focused on finding the solution with the knowledge and resources we had available.

Instructions

Overview

  • Objective: Deep knowledge transfer that only happens in synchronous interactions.
  • Activity: In a group of max 4 people, dive deep on a complex technical design topic.
  • Outcome: The output of each of these sessions would be a RFC like document (can be very raw) that describes the proposed solution (even if with known shortcomings), or it could be a map of all the important concepts, obstacles, and related topics you covered in the session.

How

  • Duration: 1:45h

On the day, this is how y'all will Deep Dive πŸ‹:

  1. Large cards with Deep Dive topics will be displayed
  2. You choose a deep dive to participate in and take a slip from the card
  3. Groups assemble and the topic owner explains the problem
    1. Existing solutions should be briefly enumerated!
  4. Groups discuss their topic
    1. New ideas are suggested πŸ’­
    2. Groups aim to come up with one good solution
      1. It can be a completely new solution or a change/fix to an existing one
  5. After 1 hour, groups take a 10 minute break (phew) β˜•οΈ
  6. Groups reconvene and send a PR to ipfs/camp with their proposal
    1. Didn't come up with any solutions?
      1. List your ideas, and why they weren't suitable so we can bootstrap future discussions
  7. Groups customise their slide for presenting their solution at the graduation ceremony
  8. Groups are free to iterate on their PR or their slide overnight

The next day (graduation day), this is what happens:

  1. Each group gets 2 minutes to present a summary of your solution
  2. You get one slide in the shared slide deck
  3. The best solution(s) win an award πŸ†

Topics

Topic Owner Description
Scaling up the DHT πŸ“¦ Kubuxu @Kubuxu What can we do to optimise the performance of our DHT? Are there alternatives?
IPID - Master key security and user-experience πŸ“¦ satazor @satazor IDM (Identity Manager) aims to support several DIDs methods and IPID was chosen as the first DID method to be integrated.
Package Managers: What Now, What Next? πŸ“¦ jessicaschilling @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.
IPFS on Mobile carsonfarmer @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.
Private content on IPFS πŸ“¦ ianopolous @ianopolous Can we have a private group chat implemented on IPFS?
Building the IPFS Community stefanhans @stefanhans Community, evangelism, engagement, on ramp.
IPFS for websites (static, dynamic, search, etc) dietrich @autonome What are the best practices and open questions for using IPFS for static / dynamic websites? What about indexing and searching?
Revocation/Rotating of IPNS Keys aschmahmann @aschmahmann The idea of using a public key to identify mutable data is cool, but what happens when that key becomes compromised?
How can IPFS support sharding πŸ“¦ hsanjuan @hsanjuan How to best pin an arbitrary part of a DAG.
Connection management jacobheun @jacobheun How can we better manage connections in libp2p to create stable overlays and reduce the impact on connection resource consumption?
Replication protocol πŸ“¦ hannahhoward @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
Do not replicate lists - DNR olizilla @olizilla How to stop your node from replicating content due to take down notices or other reasons
Fast IPNS πŸ“¦ hugomrdias @hugomrdias How to increase the IPNS resolution speed
IPFS Education and Documentation meiqimichelle @meiqimichelle What are the biggest improvements we can make to documentation for IPFS?
Mounting an IPFS filesystem πŸ“¦ djdv @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.
IPNS link rot alanshaw @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.
Deterministic CIDs! Reproducible File Imports! Verifable HTTP Gateways! lidel @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?
IPFS in Web Workers gozala @gozala Where we are, limitations, known problems.
UnixFS v2 πŸ“¦ mikeal @mikeal Latest spec iteration and implementation work
Using CRDTs to build real-time collaborative DApps jimpick @jimpick What are the hurdles to using CRDTs in dapps with IPFS? How can we make peer-base easier to understand and use?
Better NAT traversal so that Relay servers are a last (not first) resort raulk @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.
libp2p message orientation bigs @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.
IPFS metrics and usage statistics πŸ“¦ lanzafame @lanzafame How to collect telemetry like application metrics and usage in a distributed world
Decentralized Data Processing alari @alari How could we process large amounts of data in permissionless networks? Use cases, verifiable state transitions, aggregations and bulk updates, etc.
Building Dynamic P2P Applications jkarni @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.
Better file chunking πŸ“¦ mib-kd743naq @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.
Dynamic DAG traversal maparent @maparent Extend IPLD to cross between immutable and mutable references
Design Patterns for DWeb Apps leshokunin @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!
IPFS and Guix πŸ“¦ ambrevar @ambrevar Exploration into existing or potential issues with integrating IPFS with Guix

Note: topics relevant to package managers have a πŸ“¦ suffix.

Topic description template

Use this template to create your one-pager description about your topic. Send a PR to https://github.com/ipfs/camp/tree/master/DEEP_DIVES with your topic description page e.g. FAST_IPNS.md

# <Deep Dive Topic NAME>

<Short summary of topic including Open Problem(s) to solve>

## Goal

<Define what we would get if the Open Problem(s) are solved for this Deep Dive>

## Requirements to consider

<Do we have requirements (i.e. work with 1MM nodes)?>

## Where to learn about it

<List of talks, links to github issues, code, notes and so on>
You can’t perform that action at this time.