BioforestChain / dweb_browser

BioforestChain Infrastructure
https://docs.dweb-browser.org
MIT License
13 stars 4 forks source link

【提案】🎉 模块协议 #47

Open Gaubee opened 11 months ago

Gaubee commented 11 months ago

“模块协议”,参考 Obj-C/Swift 里的 Protocol、Golang 里的 Interface,这将是 microModule 支持 POP(面向过程)的重要一环,这里。它基于 deeplink 的协议进行扩展,如上诉格式:它的 hostname 是一个.dweb结尾的标准 domain。

  1. 模块新增字段 protocols: List<Mmid>,这意味着当前模块可以替代指定的 mmid 来实现对应的功能,从而可以实现模块的替换。理论上这种替换对 dns.std.dweb 模块也是有效的 这是否会存在被人恶意利用不好说,但 dweb 的标准中不会明确说明有什么限制,所有各个平台可以自己做一些实现,如果顾及到安全性,在某些平台上,可以选择性忽视某些安全性模块或者强制性模块,这完全取决于平台 在 dweb-browser 这个平台中,我们尽可能探索一种在可视化可控制的环境下,给用户完全的自主选择的权利,因此我们暂时不对此做出任何限制,但是会从底层引擎那里告知用户发生了什么事情。 这需要我们提供一个依赖图谱、互联图谱 来告知用户所有模块的状况,有必要的情况下,用户可以随时掐断这个图谱中的某一个节点,将它冻结,因此对于开启启动项,我们目前需要谨慎给出“记忆功能”,这可以确保用户可以通过重启来恢复整个系统。
  2. dns 模块需要提供一个选择器,当某个模块可以被其它模块替代的时候,提供选择器
  3. dns 需要记忆该选择,有几种记忆模式:
  4. 保持不变(如果有之前的记忆)
  5. 允许一次
  6. 该选择只对当前应用有效
  7. 该选择为全部应用有效
  8. 当模块升级,或者有新的可替换模块出现的时候,选择器需要重新弹出,无关的模块减少不需要重新弹出选择器
  9. 未来 dns 需要为这个选择器提供管理器,也就是“依赖图谱”