-
-
Notifications
You must be signed in to change notification settings - Fork 425
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: Support Hypercore/IPFS #1064
Comments
Beaker is built on top of Electron, so I assume it's leveraging WebEngine for Hypercore looks very cool. Also very similar to IPFS. Any idea about the I don't have a strong opinion about making this an extension or integrating it About valid-url-p: no problem in moving this to a BROWSER class slot. Good catch! |
It is using WebEngine, you're right.
Hmmmm. I'm not sure -- they look similar conceptually, so it's only an implementation and particular hashing algorithms that differ, probably. One thing that I noticed is that IPFS computes the hash of the data, and stores it in a global hash table indexed by this exact hash. Hypercore uses sequential structure that doesn't rely on hashes. So, potentially, IPFS may have difficulties with hash collisions in the future, while Hypercore will not have these. However, I haven't looked that deep into the these, so my reasoning can be flawed.
There are two strategies for implementing it -- requiring a JS library dependency or writing our own Hypercore client. Whatever strategy we use, it will take some space in the source tree (and possibly introduce optional dependencies!), distracting the potential code reader from the core of Nyxt. |
I believe this should be an extension. |
IPFS doesn't require just one specific hashing algorithm, it actually uses what's called multihash which is basically a string that includes the hash algorithm along with the hash itself, so in theory if collisions were a problem with one type of hash, it would just be a matter of using a different type for the item you're trying to refer to. Since the hash algorithm is specified with every IPFS CID (content identifier) collisions are basically no longer a problem. |
Again, probably an extension. :-D |
Now that Beaker got 1.0 release, it seems that Hypercore protocol (a decentralized content publishing system with non-erasable hash-checked history) can be a good thing to support in a browser. Given that we're trying to replace Emacs, we can do a good job of creating an environment for decentralized publishing, comparable to Beaker's built-in editor.
However, implementing this protocol and accompanying handlers doesn't sound as a thing to add to Nyxt core. It rather sounds like independent extension on top of what Nyxt provides.
Implementation problem: list of valid schemes is hard-coded in
valid-url-p
and one cannot alter it. An author of the extension for Hypercore will need to addhyper://
scheme to the valid schemes list, but won't be able to do so. Should we make it global/*browser*
-based?The text was updated successfully, but these errors were encountered: