Giter VIP home page Giter VIP logo

dynamic-content's Introduction

๐Ÿ‘จโ€๐Ÿ’ป
{
  "name": "daniel",
  "likes": [
    "biking",
    "impressionism",
    "lepidopterans"
  ],
  "location": "chiberspace",
  "spirit animal": "Lockheed Martin F-22 Raptor"
}
๐Ÿš€

~active

โ€ƒ zzzync: offline replication of dynamic content on IPFS
โ€ƒ welo: peer-to-peer and localfirst database
โ€ƒ newtab.eth: a new tab site for your browser

~inactive

โ€ƒ sailplane-web: p2p dropbox web app
โ€ƒ sailplane-node: decentralized and collaborative file-system
โ€ƒ orbit-db-fsstore: file-system crdt
โ€ƒ softphone: attempt to make text/calling app using peer-account
โ€ƒ peer-account: attempt to make peer-to-peer "accounts"
โ€ƒ encrypted-docstore: encrypcted OrbitDB document store
โ€ƒ simple-chat-room: barebones chat app using OrbitDB
โ€ƒ ens-subdomainer: UI to sell subdomains on ENS

๐Ÿ“

โ€ƒ dynamic-content: host dynamic content directly on IPFS
โ€ƒ rough-opal: grant proposal to create p2p database (welo) and offline replication tool (zzzync)

๐Ÿ†

โ€ƒ HackFS 2022 Storage Wizard ๐Ÿง™โ€โ™‚๏ธ๐Ÿฅ‡
โ€ƒ HackFS 2020 Finalist ๐Ÿ

dynamic-content's People

Contributors

tabcat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

dynamic-content's Issues

Article feedback

https://github.com/tabcat/dynamic-content/blob/master/ARTICLE.md

Overall feedback

  • Needs a Table of contents
  • Great article, very well written! I'm excited.
  • I love the Sample Outputs section

Understanding Key Components

This is a great primer.

Achieving Dynamicity

  • It could be good to show a diagram of what the architecture of OrbitDB -- or other methods people have used to achieve dynamicity -- used to look like, so we could compare.

Dynamic-Content IDs

referring to this section:

### Dynamic-Content IDs
When searching the network for static content, a CID is used to find providers in the DHT. When searching for dynamic content a CID is still used. However, this CID does not belong to any static content. Instead, it is a permutation of the CID of an immutable manifest document that describes the dynamic content:
```js
manifest = { protocol: '/some-protocol/1.0.0', params: { network: 1 } }
cid = CID(manifest)
dcid = CID('dynamic' + cid)
```

Instead, it is a permutation of the CID of an immutable manifest document that describes the dynamic content

This is slightly confusing

I know there is a note that says, "there is an example using this in the bottom," but I think this section could explain more, and set expectations better.

Some questions I have when targeting just this section

  • Why do we need this dynamic CID, what is it's purpose?
  • Why do i need this manifest json/hashtable/other data?
    • what if someone used manifest = "myManifest" (maybe deserves FAQ entry?)
    • What if there are accidental manifest conflicts for different implementations? (FAQ?)

I think briefly speaking about how this DCID is used as a reference point for the implemented application is important. "This is the key used to query the DHT to determine where offline data we need is" and "This is the key used to publish data, so when we go offline, others can find it" or similar.

Viewed as a Replication Protocol

  • I feel like it could be useful to link to, or briefly discuss, orbitDB's attempts and problems earlier in this article to explain the reason for this approach.
Replication

When other collaborators are online, use an application-specific replication protocol for real-time collaboration.

It could be valuable to address this further.

  • Why bifurcate replication protocol methods?
  • Is the "app specific" replication protocol using IPFS?
  • If not, why not full IPFS?

Roadblock, Workaround, and Hopeful Future

  • Maybe this section needs more attention and breaking up? Maybe a "blockers" section and current workarounds?

Read and Write Steps - https://github.com/tabcat/dynamic-content/blob/master/ARTICLE.md#read-and-write-steps

  • I think this basic "algorithm" for your approach should be much higher in the document.

Explain dynamic-content ids better and why they exist

from @SgtPooki:

Dynamic-Content IDs
referring to this section:

dynamic-content/ARTICLE.md

Lines 48 to 56 in e4df337

Dynamic-Content IDs

When searching the network for static content, a CID is used to find providers in the DHT. When searching for dynamic content a CID is still used. However, this CID does not belong to any static content. Instead, it is a permutation of the CID of an immutable manifest document that describes the dynamic content:

manifest = { protocol: '/some-protocol/1.0.0', params: { network: 1 } } 
cid = CID(manifest) 
dcid = CID('dynamic' + cid) 

Instead, it is a permutation of the CID of an immutable manifest document that describes the dynamic content

This is slightly confusing

I know there is a note that says, "there is an example using this in the bottom," but I think this section could explain more, and set expectations better.

Some questions I have when targeting just this section

Why do we need this dynamic CID, what is it's purpose?
Why do i need this manifest json/hashtable/other data?
what if someone used manifest = "myManifest" (maybe deserves FAQ entry?)
What if there are accidental manifest conflicts for different implementations? (FAQ?)
I think briefly speaking about how this DCID is used as a reference point for the implemented application is important. "This is the key used to query the DHT to determine where offline data we need is" and "This is the key used to publish data, so when we go offline, others can find it" or similar.

It could be good to link to the https://github.com/tabcat/dynamic-content/blob/master/ARTICLE.md#read-and-write-steps section to point users to how it's used.

Reorg Achieving Dynamicity and Viewed as a Replication Protocol sections

From @SgtPooki:

Achieving Dynamicity
It could be good to show a diagram of what the architecture of OrbitDB -- or other methods people have used to achieve dynamicity -- used to look like, so we could compare.

Viewed as a Replication Protocol
I feel like it could be useful to link to, or briefly discuss, orbitDB's attempts and problems earlier in this article to explain the reason for this approach.

Add FAQ about hypothetical dynamic-content id conflict

from @SgtPooki:

Why do we need this dynamic CID, what is it's purpose?
Why do i need this manifest json/hashtable/other data?
what if someone used manifest = "myManifest" (maybe deserves FAQ entry?)
What if there are accidental manifest conflicts for different implementations? (FAQ?)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.