Poster Projects are one of the all time favorite IPFS events. These sessions are designed to propagate knowledge by having small teams of people explore one of the many pieces of the IPFS stack together, with the goal to understand it so well that they can present it to the whole group aided by a poster.
This session is inspired by the famous Feynman Technique, developed by Richard Feynman himself. The technique is simple and powerful, it suggests that for one to understand something well, they need to be able to explain it.
These sessions are a lot of fun, and enable you to meet new friends, learn in depth DWeb topics and overall boost your knowledge as a builder.
- Objective: Get people to learn some part of the code base in depth and through that process of learning, create materials that can be used by others to learn that part of the code base. Promote collaboration, knowledge transfer through deep dives and generation of materials that can be used by others in the future.
- Activity: These sessions consist on gathering people into small groups (2~4) to explore and understand in depth one of the selected topics. At the end of the session, everyone should have a poster ready (this will be fun!). At the end of each day, all of the poster groups will give a one-minute presentation of their poster.
- Outcome: The posters and discussions will then be converted into a blog post and published to https://blog.ipfs.io/.
Have fun working in small groups to create posters and other documentation, then give a one-minute presentation of your work.
- Purpose: Get people to learn some part of the code base in depth and through that process of learning, create materials that can be used by others to learn that part of the code base.
- Length: 1:45h
- Details: During this session, use your time to learn some part of the code base in depth together with a small team of collaborators. Together, create a poster that others can use to learn about that part of the code base.
Some of the things to do during this session together with the other people on your poster team:
- Review any formal documentation relevant to the topic you've chosen
- Find and read all the "pseudo-specs" -- gather and read through all the partial documentation that's floating around. Discuss it together.
- Look through the related code
- Look for relevant reference materials: papers, recordings of talks, etc.
- Clarify and test your understanding by discussing all of this information
- Interact with experts in the room - people like Tech Leads will be circulating around the groups
- Compile all of this information into something that's easy to consume (a poster)
- Plan how this information can be incorporated into the existing documentation and repositories.
- Choose who will present your poster.
- If you have time, submit a PR with your new info into the corresponding repository.
At the end of the day, each group will have 1 minute to present their poster. Make sure to choose in advance who will be presenting.
Poster teams should have a maximum of 4 people and a minimum of 2. People will choose which poster to work on using this process:
- For this event we have a list of topics below.
- The meeting organizers will draw a spot on the ground for each of the poster topics.
- Before the start of the session, everyone must stand on the poster topic they want to work on. If more than five people try to join a topic, you must re-balance people to other topics.
- When everyone has chosen a topic and no topics have more than five people, write down the list of participants for that topic.
- Take a flip chart, markers, etc and work wherever you want to work.
Topic | Owner | Description | |
---|---|---|---|
Unixfs | @mikeal | Unixfs is the data format used to represent unix-like data in IPFS. | |
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. | |
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. | |
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. | |
Pinning & GC on IPFS | @Kubuxu | IPFS nodes treat the data they store like a cache, meaning that there is no guarantee that the data will continue to be stored. Pinning a CID tells an IPFS server that the data is important and mustn’t be thrown away. | |
HTTP gateways | @autonome | An IPFS Gateway acts as a bridge between traditional web browsers and IPFS. | |
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. | |
js-ipfs Infrastructure | @alanshaw | This poster should cover what it takes to initialize a go-IPFS node, and connect it to a public P2P network. | |
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. | |
KeyStore | @gozala | A secure and simple way of storing and managing keypairs (for IPFS services). | |
IPFS Nodes | @carsonfarmer | A general overview of what it means to be/implement an IPFS node. | |
Rendezvous Protocol | @stefanhans | The Rendezvous protocol is intended to provide a lightweight mechanism for generalized peer discovery. | |
Libp2p Connection Flow | @raulk | Libp2p uses a multitude of techniques and protocols to connect peers together. | |
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. | |
IPFS DHT | @gpestana | IPFS uses a Distributed Hash Table (DHT) to keep track of various types of data, such as content provider records. | |
IPNS | @aschmahmann | IPNS is a system for creating and updating mutable links to IPFS content. | |
IPFS/Libp2p content routing | @bigs | The IPFS routing system utilizes "content provider records" hosted on a distributed key-value store to resolve content providers. | |
IPFS/libp2p PubSub | @whyrusleeping | Publish-Subscribe, called ‘pubsub’ for short, is a pattern often used to handle events in large-scale networks. | |
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. | |
IPFS HTTP API libs | @hugomrdias | IPFS nodes expose an API that developers can use to quickly change between a local and a remote node without having to change their applications. | |
Core API & ipfsx | @olizilla | New API's that are similar to the HTTP APIs but are higher level and not dependant on a single IPC method. | |
CRDTs | @parkan | A "Conflict-free replicated data type" is a data structure which can be replicated across multiple computers in a network, without conflicts! | |
PeerPad internals | @jimpick | PeerPad is a decentralized editor that allows concurrent writing of text. | |
Textile internals | @andrewxhill | Textile is a set of tools and trust-less infrastructure for building censorship resistant and privacy preserving applications. | |
IPLD Resolver | @lanzafame | IPLD resolvers handle IPLD formatted objects via a common interface, allowing for cross compatibility between formats and resolvers. | |
IPLD Selectors | @maparent | IPLD Selectors are expressions that identify ("select") a subset of nodes in an IPLD dag. i.e. subsets of IPLD objects. | |
DAG walking facilities in IPLD | @warpfork | The goal of IPLD is to enable decentralized data-structures that are universally addressable and linkable. | |
Graphsync | @b5 | A protocol to synchronize graphs across peers. | |
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. | |
NPM-on-IPFS | @achingbrain | Let's take NPM and put it on IPFS. |
(If you would like to propose a topic, add them under camp/POSTER_PROJECTS/topic-<topic-name>.md
)
# <TOPIC NAME>
<Topic description: what it is, where it gets used, etc.>
## Questions to Answer
<Series of questions to which the group should look answers for>
## Where to learn about it
<List of websites, code repos, communities, notes, etc.>
Example:
# Inter-Planetary File System (IPFS)
A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.
## Questions to Answer
What is IPFS? What can I use it for? How does it impact various peoples and tasks?
## Where to learn about it
https://ipfs.io/
https://github.com/ipfs/
https://docs.ipfs.io/#community
IRC: #ipfs, #ipfs-dev