什么是 dweb-browser
dweb-browser 是一个遵循 Dweb 标准构建起来的浏览器平台,并将浏览器的能力、以及浏览器相关的系统原生系统能力通过各种 dweb 模块暴露出来。目前我们实现了 Android、IOS、MacOS、Windows、Linux 这些主流平台的支持。
我们将操作系统的各项功能模块化,然后用统一的通讯标准将它们互联起来,从而组装成一个新的平台。注意,这里的组装不单是面向一台设备,而是面向用户可信的所有设备,那么当用户将他们的设备安装上 DwebBrowser 后,每一台设备的能力都会被模块化,从而同时为用户提供服务。重新组装出来的将会是更加强大的平台。比方说我可以在 PC 上运行我的 AIGC 程序,但是在移动端使用它,而开发者全程不需要去干预这里头的设备应该如何去互联的问题,开发者可以全程当作是在本地开发一个应用而已,最终服务背后的提供商可以是设备本机也能是云端服务。
我们热爱推动 Web 技术的发展,我们在本地部署了一个 JsRuntime,对于开发者来说,它就是类似 Nodejs 或者 Deno 这些知名的 JsRuntime,只不过后者始终运行在云端服务器上。而我们则是将这些能力下方到移动设备上,开发者可以使用传统服务端开发的思维额技术,在用户本地部署运行它们的站点。这一切都发生在本地,这也意味着开发者与用户并不需要支付任何部署成本,我们将服务端的技术搬迁到了本地移动设备上,这是一个巨大的创新。
使用本地服务端技术部署应用,不像传统 WebApp,它们需要消耗大量的内存,并且运行得越久,内存占用不可避免地越高。我们是后端优先的概念,因此我们可以在本地部署 SSR 技术,这会比 SSG 更加先进,有着更快的首屏加载体验,内存也会更加节省。
这样,用户的隐私在这种编程模型下,也可以更好地被保护。并且因为是在本地部署服务,开发者可以更加容易地解决离线可用性问题。
我们将一切开源,我们不做任何的垄断,我们只是将 Web 技术交还给用户,用户可以自由地部署它们的程序。
为了实现跨平台的编程,我们提供了跨平台的窗口化的窗口视图标准,在移动设备上也统一使用了多窗口技术。这是我们之所以能承诺跨平台的一个核心点,如果没有多窗口技术,我们很难让用户与开发者在多个平台上达成统一的编程接口。
我们还将为用户隐私做出更多的努力,未来我们会加入“身份卡包”这样的功能,使得用户可以更加方便地管理他们在应用和网页中的账号密码,以及个人信息。社区可以围绕这些 dweb 提供的标准化基础设施来为用户提供更好的体验。
我们希望开发者将自己的应用通过标准互相开放。现在的互联网世界就像是一座座信息孤岛,这是利益使然,对此我们并不是要否定这些客观存在的现象,而是希望推出一系列全新的技术规范,给到用户一个更加美好的 Web 环境,让它更好地真正成为“互联网”。
试想一下,你可以跟你的朋友一起下棋,而这个过程你甚至不需要连接下棋服务器,而只是通过某一个聊天软件来与你朋友联机,然后就可以跟你的朋友一起下棋。而这一切不需要下棋软件开发者去购买什么服务器,也不需要聊天软件开发者开发什么下棋功能。它们能通过开放标准进行互联。
同时,聊天服务器甚至也不需要购买,在 dweb 的技术标准框架下,所有节点都是服务器,这种开放的前提是对用户设备的保护,用户当然可以选择自己信任的运营商来为自己的开放带来保护,这个运营商可能就是用户自己家里头的桌面设备。因此用户不需要担心自己的任何数据出卖给运营商。
什么是 dweb?
Dweb 是一种去中心化的 Web 共识标准。
它直接体现在您的域名上,如: example.dweb
然而正是因为 dweb 这个跟域名并不在互联网上真实存在,也就意味着它不归属于任何组织,也就是说,如何解释example.dweb
这个域名,完全由您自己(的设备)执行决策。 dweb 共识标准由几个部分联合组成:
通讯标准
借鉴于 http 协议,我们使用 JSON 与 CBOR 这种 web 数据格式定义了两个模块的通讯标准,而遵循这种给予消息的通讯的模块,我们将其称为 dweb-micro-module(中文:“dweb 模块”)。 这种通讯标准,我们使用file:
协议头配合.dweb
跟域名来进行定义它的 URL,比如说:file://dns.std.dweb/
。
通用标准
dns.std.dweb
是 dweb 的共识标准的核心部分,它定义了两个 dweb 模块 的 互联、注册、查询 等功能,是 dweb 模块互联所需的核心技术http.std.dweb
是 http 服务的标准,任何模块都可以通过它得到专属的.dweb
域名,从而与 Web 技术进行互操作file.std.dweb
是文件服务标准,它以模块为单位,每个模块都拥有独立的文件服务,它们互不干扰,但又可以安全地相互协作permission.std.dweb
权限管理标准。数据属于用户,包括模块所管理的数据也是,因此模块可以通过权限注册,来确保数据服务是通过用户授权
系统标准
这里涵盖了常见操作系统模块的一些标准,包含各个平台独立的标准与统一抽象的标准:
file.sys.dweb
camera.sys.dweb
camera.harmonyos-sys.dweb
camera.android-sys.dweb
camera.ios-sys.dweb
camera.windows-sys.dweb
status-bar.sys.dweb
status-bar.android-sys.dweb
status-bar.ios-sys.dweb
toast.sys.dweb
share.sys.dweb
process.sys.dweb
account.sys.dweb
- 等等
这些 *sys.dweb
的标准属于操作系统的标准接口的封装,我们不会去篡改它,只会随着原生系统的更新去跟进它,因此它是长期稳定的,会被作为应用开发的标准库被使用。
深度链接标准
dweb-deeplink
是一种以 dweb://action?params
为格式的链接,它为 dweb 模块之间提供了一种定义共识的平台,比如说模块之间可以依赖共识而不是依赖实际的 dweb 模块。 举个具体的例子,比如说实现分享功能:我可以在我的分享按钮中绑定:dweb:share?title=hello_world&files=http...
,那么 dweb 内核就会去寻找哪个模块声明了该dweb:share
的实现,并将请求路由到该模块去。如果共识被多个模块同时实现,那么在不同的平台上会通过平台标准的交互来进行偏好选择。
在有命令行的环境里,dweb-deeplink
还可以通过命令行来进行访问:dweb-browser install app --url=xx
会被解析成:dweb:install/app?url=xx
注意:这里的 DwebBrowser 只是一个实现 dweb 协议的软件,社区中可能会有其它实现,或者未来我们也会推出 dweb-cloud 这种面对云端的运行时服务