V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pikay
V2EX  ›  程序员

想做一个操作系统,问问大家意见

  •  
  •   pikay ·
    kirakiray · 2021-11-09 18:33:34 +08:00 · 3618 次点击
    这是一个创建于 860 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今年年初的时候想到的,基于浏览器制作一个操作系统界面,类似 Firefox OS 的 Gaia 层这样的产品;

    底层使用 indexDB 和 service Worker 做一个虚拟化的 File System ,基于这个 fs 就能在浏览器上做很多事情;例如之前有些页面要测试在 https 协议下的效果,但部署起来很麻烦放弃了,用这种方式就能很方便部署;

    然后基于 微应用 这个概念,这个在浏览器层的“系统”,就能使用 webapp 了;

    后期感觉还可以搭配 webRTC 做互联操作系统,把区块之类的概念引进来;

    这种想法怎么样?现在试了下感觉可以做,但是会花很多时间,而且感觉又赚不了钱,但是很好玩啊!!!

    现在好多事都没做,做这个会耽误其他进度,又导致陷入更穷的地步,想问问大家意见。

    第 1 条附言  ·  2021-11-09 22:44:28 +08:00
    决定了,一定要搞出来,立帖为证。(其实是因为太想玩了)
    35 条回复    2021-11-10 17:49:15 +08:00
    jiayong2793
        1
    jiayong2793  
       2021-11-09 18:38:08 +08:00
    操作系统的定义是核心还是皮肤?
    GPLer
        2
    GPLer  
       2021-11-09 18:38:38 +08:00
    很好的想法,分享一个纯前端的 git 实现
    https://github.com/creationix/js-git.git
    pikay
        3
    pikay  
    OP
       2021-11-09 19:09:02 +08:00 via Android
    @jiayong2793 操作系统服务于应用,既然浏览器已经把应用所需的 api 做了,那么基于浏览器的系统只需把不足的 api 补充就行了;

    准确来说应该是做操作系统的交互和文件层,类似安卓的 Launcher ,可以查阅一下 Firefox OS 的 Gaia 。
    loading
        4
    loading  
       2021-11-09 19:22:50 +08:00
    挺好,先做个 demo 给大家看看。
    newmlp
        5
    newmlp  
       2021-11-09 20:38:26 +08:00
    挺好,先搞个线程出来玩玩
    Remember
        6
    Remember  
       2021-11-09 20:41:29 +08:00
    先做个 PPT 。
    mxT52CRuqR6o5
        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 等类似的技术
    wanguorui123
        8
    wanguorui123  
       2021-11-09 21:45:13 +08:00
    当年的 Q+
    pikay
        9
    pikay  
    OP
       2021-11-09 22:35:53 +08:00
    @mxT52CRuqR6o5 👍涨知识了;虚拟化就太复杂了;
    pikay
        10
    pikay  
    OP
       2021-11-09 22:40:09 +08:00
    @wanguorui123 是不是 webqq ?😂当年还没入行就下线了,当时浏览器 api 太少了,真的很难做好啊
    mxT52CRuqR6o5
        11
    mxT52CRuqR6o5  
       2021-11-09 22:45:13 +08:00 via Android
    @pikay 想办法编译到 wasm 就行,肯定是比自己去开发系统成本低,可以利用的现成东西更多
    pikay
        12
    pikay  
    OP
       2021-11-09 22:51:14 +08:00
    @mxT52CRuqR6o5 虽然可以,但是不是我说的那个东西;谢谢老哥科普的 api 和平台
    mxT52CRuqR6o5
        13
    mxT52CRuqR6o5  
       2021-11-09 22:51:53 +08:00 via Android
    @pikay 想想 wsl 就知道了,wsl1 微软就是在 nt 内核上直接重新做了一套 linux 出来,有很多优势,但实现成本实在太高,wsl2 就改用了虚拟化的方案。
    虚拟化(模拟器)肯定是比重新搞个系统要简单的
    mxT52CRuqR6o5
        14
    mxT52CRuqR6o5  
       2021-11-09 22:57:12 +08:00 via Android
    @pikay 我只是是从工程实践的角度讲讲我自己的看法,你自己想做的项目就按照自己喜欢的方式来就行
    pikay
        15
    pikay  
    OP
       2021-11-09 23:10:31 +08:00
    @mxT52CRuqR6o5 [抱拳]
    enchilada2020
        16
    enchilada2020  
       2021-11-10 01:43:03 +08:00 via Android
    我就好奇下要想做出这么个东西出来需要多少基础知识…
    0Vincent0Zhang0
        17
    0Vincent0Zhang0  
       2021-11-10 08:16:46 +08:00 via Android
    希望不要在进程,线程,文件系统,网络等基础部分耗尽耐心😂
    wanguorui123
        18
    wanguorui123  
       2021-11-10 09:32:37 +08:00
    @pikay 不是 WebQQ ,是 Q+桌面
    wanguorui123
        19
    wanguorui123  
       2021-11-10 09:36:24 +08:00
    SmiteChow
        20
    SmiteChow  
       2021-11-10 10:48:31 +08:00
    就提一个点把,怎么在浏览器的操作系统里面运行浏览器?
    cszchen
        21
    cszchen  
       2021-11-10 10:52:55 +08:00 via iPhone
    这不就是把网址导航,做个皮肤吗
    pikay
        22
    pikay  
    OP
       2021-11-10 10:55:49 +08:00
    @wanguorui123 查了一下,真的感叹 Q+生不逢时,那时候的 css 和 js 好用特性太少了,做起来肯定贼麻烦。
    pikay
        23
    pikay  
    OP
       2021-11-10 10:56:50 +08:00
    @SmiteChow 浏览器上的系统不需要浏览器,就直接打开就行了,拭目以待吧👊🏻
    pikay
        24
    pikay  
    OP
       2021-11-10 11:00:09 +08:00
    @cszchen 听君一席话,让我把商业化的路子想通了。。。绝对不是换个皮肤,你可以在这个系统内开发、安装和使用 webapp ;给我一点时间到时让你试试。
    liuxu
        25
    liuxu  
       2021-11-10 12:19:50 +08:00
    弄一个出来玩玩儿,好玩我也帮你堆代码
    pikay
        26
    pikay  
    OP
       2021-11-10 13:14:35 +08:00 via Android
    @liuxu 好咧👌
    Mark24
        27
    Mark24  
       2021-11-10 13:45:51 +08:00
    还记得当年 FirefoxOS
    真是可惜了
    SmiteChow
        28
    SmiteChow  
       2021-11-10 14:12:11 +08:00
    @pikay 不行啊,你一个操作系统装不了浏览器怎么行?按你说的直接打开岂不是随便一个网站拥有的权限和操作系统一样了?那你的操作系统有何安全可言?
    Nich0la5
        29
    Nich0la5  
       2021-11-10 14:13:03 +08:00
    感觉没必要从内核开始弄一个真实的系统,做一个中间层让浏览器和本地系统通信就好(甚至可以是远程系统 这样就就相当于云系统了) webapp 其实就类似 chrome 插件或者小程序。。等等,怎么有点像 chrome os
    弄出来了给我们玩玩
    pikay
        30
    pikay  
    OP
       2021-11-10 14:33:03 +08:00
    @SmiteChow 对,所以有两个方案;

    一个是应用安装在新域名上,每个应用都有一个域名容器,但这样应用数量会有限制,还要弄好多这样的域名做容器;

    另一个是把 html 默认 Content-Type 改为文本,只有注册的页面才是 text/html ,这时候可预览的页面在 service worker 层植入脚本,把 indexdb 之类的涉及安全的 api 加钩子,限制住权限;
    SmiteChow
        31
    SmiteChow  
       2021-11-10 14:38:26 +08:00
    @pikay 额,你完全没 get 到我的点,算了,你加油吧。
    SmiteChow
        32
    SmiteChow  
       2021-11-10 14:40:47 +08:00
    @Nich0la5 chrome os 是正经的操作系统( linux 改的),能装浏览器的(自带 chrome 定制版)
    pikay
        33
    pikay  
    OP
       2021-11-10 15:00:18 +08:00
    @SmiteChow 我懂你意思了,真正底层系统不是我想造的;我想造像 Firefox OS 的 Gaia 层类似的东西,不关注下面的抽象层(硬件、驱动、核心[ linux 或 windows ]、排版引擎、javascript runtime 之类的);然后通过抽象 File System 达到自成系统;

    https://wiki.mozilla.org/Gaia
    pikay
        34
    pikay  
    OP
       2021-11-10 15:02:35 +08:00
    @Nich0la5 哦对对,后期感觉还能搞个 webRTC 做文件传输,弄个跟群辉差不多的东西
    pikay
        35
    pikay  
    OP
       2021-11-10 17:49:15 +08:00
    @Mark24 老可惜了,这些概念都太超前了,还有当年的 Palm 的 WebOS ,乔布斯期望的 iPhone 通过 Safari 添加应用的 webapp 雏形。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3989 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 10:23 · PVG 18:23 · LAX 03:23 · JFK 06:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.