今年年初的时候想到的,基于浏览器制作一个操作系统界面,类似 Firefox OS 的 Gaia 层这样的产品;
底层使用 indexDB 和 service Worker 做一个虚拟化的 File System ,基于这个 fs 就能在浏览器上做很多事情;例如之前有些页面要测试在 https 协议下的效果,但部署起来很麻烦放弃了,用这种方式就能很方便部署;
然后基于 微应用 这个概念,这个在浏览器层的“系统”,就能使用 webapp 了;
后期感觉还可以搭配 webRTC 做互联操作系统,把区块之类的概念引进来;
这种想法怎么样?现在试了下感觉可以做,但是会花很多时间,而且感觉又赚不了钱,但是很好玩啊!!!
现在好多事都没做,做这个会耽误其他进度,又导致陷入更穷的地步,想问问大家意见。
1 jiayong2793 2021-11-09 18:38:08 +08:00 操作系统的定义是核心还是皮肤? |
2 GPLer 2021-11-09 18:38:38 +08:00 很好的想法,分享一个纯前端的 git 实现 https://github.com/creationix/js-git.git |
![]() | 3 pikay OP @jiayong2793 操作系统服务于应用,既然浏览器已经把应用所需的 api 做了,那么基于浏览器的系统只需把不足的 api 补充就行了; 准确来说应该是做操作系统的交互和文件层,类似安卓的 Launcher ,可以查阅一下 Firefox OS 的 Gaia 。 |
![]() | 4 loading 2021-11-09 19:22:50 +08:00 挺好,先做个 demo 给大家看看。 |
![]() | 5 newmlp 2021-11-09 20:38:26 +08:00 挺好,先搞个线程出来玩玩 |
6 Remember 2021-11-09 20:41:29 +08:00 先做个 PPT 。 |
7 mxT52CRuqR6o5 2021-11-09 21:40:54 +08:00 搞虚拟化的 File System 直接用 File and Directory Entries API ,并不需要用 indexDB 和 service Worker 搞那么麻烦 https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API 跑 webapp 的话,StackBlitz 已经研究出现成的技术了 https://blog.stackblitz.com/posts/introducing-webcontainers/ 要搞更复杂的可以直接上 v86/qemu 等类似的技术 |
![]() | 8 wanguorui123 2021-11-09 21:45:13 +08:00 当年的 Q+ |
![]() | 9 pikay OP @mxT52CRuqR6o5 涨知识了;虚拟化就太复杂了; |
![]() | 10 pikay OP @wanguorui123 是不是 webqq ?当年还没入行就下线了,当时浏览器 api 太少了,真的很难做好啊 |
11 mxT52CRuqR6o5 2021-11-09 22:45:13 +08:00 via Android @pikay 想办法编译到 wasm 就行,肯定是比自己去开发系统成本低,可以利用的现成东西更多 |
![]() | 12 pikay OP @mxT52CRuqR6o5 虽然可以,但是不是我说的那个东西;谢谢老哥科普的 api 和平台 |
13 mxT52CRuqR6o5 2021-11-09 22:51:53 +08:00 via Android @pikay 想想 wsl 就知道了,wsl1 微软就是在 nt 内核上直接重新做了一套 linux 出,有很多优势,但实现成本实在太高,wsl2 就改用了虚拟化的方案。 虚拟化(模拟器)肯定是比重新搞个系统要简单的 |
14 mxT52CRuqR6o5 2021-11-09 22:57:12 +08:00 via Android @pikay 我只是是从工程实践的角度讲讲我自己的看法,你自己想做的项目就按照自己喜欢的方式来就行 |
![]() | 15 pikay OP @mxT52CRuqR6o5 [抱拳] |
![]() | 16 KMpAn8Obw1QhPoEP 2021-11-10 01:43:03 +08:00 via Android 我就好奇下要想做出这么个东西出来需要多少基础知识… |
17 0Vincent0Zhang0 2021-11-10 08:16:46 +08:00 via Android 希望不要在进程,线程,文件系统,网络等基础部分耗尽耐心 |
![]() | 18 wanguorui123 2021-11-10 09:32:37 +08:00 @pikay 不是 WebQQ ,是 Q+桌面 |
![]() | 19 wanguorui123 2021-11-10 09:36:24 +08:00 |
![]() | 20 SmiteChow 2021-11-10 10:48:31 +08:00 就提一个点把,怎么在浏览器的操作系统里面运行浏览器? |
![]() | td width="auto" valign="top" align="left"> |
![]() | 22 pikay OP @wanguorui123 查了一下,真的感叹 Q+生不逢时,那时候的 css 和 js 好用特性太少了,做起来肯定贼麻烦。 |
![]() | 24 pikay OP @cszchen 听君一席话,让我把商业化的路子想通了。。。绝对不是换个皮肤,你可以在这个系统内开发、安装和使用 webapp ;给我一点时间到时让你试试。 |
![]() | 25 liuxu 2021-11-10 12:19:50 +08:00 弄一个出来玩玩儿,好玩我也帮你堆代码 |
![]() | 27 Mark24 2021-11-10 13:45:51 +08:00 还记得当年 FirefoxOS 真是可惜了 |
![]() | 28 SmiteChow 2021-11-10 14:12:11 +08:00 @pikay 不行啊,你一个操作系统装不了浏览器怎么行?按你说的直接打开岂不是随便一个网站拥有的权限和操作系统一样了?那你的操作系统有何安全可言? |
![]() | 29 Nich0la5 2021-11-10 14:13:03 +08:00 感觉没必要从内核开始弄一个真实的系统,做一个中间层让浏览器和本地系统通信就好(甚至可以是远程系统 这样就就相当于云系统了) webapp 其实就类似 chrome 插件或者小程序。。等等,怎么有点像 chrome os 弄出来了给我们玩玩 |
![]() | 30 pikay OP @SmiteChow 对,所以有两个方案; 一个是应用安装在新域名上,每个应用都有一个域名容器,但这样应用数量会有限制,还要弄好多这样的域名做容器; 另一个是把 html 默认 Content-Type 改为文本,只有注册的页面才是 text/html ,这时候可预览的页面在 service worker 层植入脚本,把 indexdb 之类的涉及安全的 api 加钩子,限制住权限; |
![]() | 32 SmiteChow 2021-11-10 14:40:47 +08:00 @Nich0la5 chrome os 是正经的操作系统( linux 改的),能装浏览器的(自带 chrome 定制版) |
![]() | 33 pikay OP @SmiteChow 我懂你意思了,真正底层系统不是我想造的;我想造像 Firefox OS 的 Gaia 层类似的东西,不关注下面的抽象层(硬件、驱动、核心[ linux 或 windows ]、排版引擎、Javascript runtime 之类的);然后通过抽象 File System 达到自成系统; https://wiki.mozilla.org/Gaia |
![]() | 35 pikay OP @Mark24 老可惜了,这些概念都太超前了,还有当年的 Palm 的 WebOS ,乔布斯期望的 iPhone 通过 Safari 添加应用的 webapp 雏形。 |
![]() | 37 pikay OP @dawn4u 和 4 年前想法和实现方式基本一致,只不过是将虚拟 File System 改为了用了浏览器自带的 OPFS ,因为 4 年过去了,OPFS 支持度上来了,性能比虚拟 FS 性能更好。 |
![]() | 38 pikay OP @dawn4u 我主要使用了以前开发的 [ofa.js]( https://github.com/kirakiray/ofa.js) 来进行开发。之所以选择它,是因为 ofa.js 能够实现前端应用的无打包化,正是这种无需打包的特性,使得应用可以快速地运行起来,并且我还用到了它的微前端功能 。具体的实现方式,可能需要查看源代码才能深入了解。 |