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

笔记类软件,内部用 git 实现版本控制,用户会喜欢吗?

  •  
  •   lstz · 96 天前 via iPhone · 8156 次点击
    这是一个创建于 96 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在思考一个开源笔记类软件,它的版本控制应该怎么设计版本控制。突然想到 git 不正是我所需要的吗?

    • 有版本控制,细腻到文件级别
    • 格式开源,用户可控,遥遥领先
    • 能 push 能 pull ,还能多节点备份
    • 甚至能多用户协同

    最最重要的是,实现起来不会困难,简直就是完美的解决方案啊。

    当然,不会把命令行放在 UI 上让用户去输入,那样太硬核了,拿 git 简单包一包,应该也是不错的。

    想做个调研,问问大家,如果你们用一款开源软件,它的版本控制哪种形式最好呢?

    • 1 ,Sqlite 数据库(db 文件)    
    • 2 ,定期全量 zip 归档  
    • 3 ,定期增量 zip 归档
    • 4 ,git 版本控制

    或者更多想法期望见到,谢谢大家

    第 1 条附言  ·  95 天前
    谢谢各位大佬意见,这个产品还在开发中,欢迎拍砖 star ,https://github.com/work7z/LafTools
    第 2 条附言  ·  95 天前
    抱歉中文不好,应该是说这个开源项目
    88 条回复    2023-11-22 17:05:31 +08:00
    lonewolfakela
        1
    lonewolfakela  
       96 天前
    作为一款软件,用户为啥要关心你的底层实现技术?不是都看你上层包得好不好么。
    fortynine
        2
    fortynine  
       96 天前
    啊?你是想让用户编辑之后手动点保存吗?不能实时保存的笔记软件不可能推广出去
    qizheng22
        3
    qizheng22  
       96 天前   ❤️ 15
    曾经看到一个评论,一说要做个产品,程序员最先想到的就是笔记,天气,书签,博客。都是自娱自乐,瞎折腾。
    lstz
        4
    lstz  
    OP
       96 天前 via iPhone
    @lonewolfakela 因为产品会是开源的,不想闭门造车,关乎到性能和技术可行性,想听取一下各位大佬的建议。

    我用过一些大厂笔记类软件,他们都用的是私有文件格式,甚至还加密过的,感觉用公开格式会更让用户放心
    lstz
        5
    lstz  
    OP
       96 天前 via iPhone
    @fortynine 不不不,保存是程序自己完成的,其实说格式用 git 。

    用户感知不到内部实现
    lstz
        6
    lstz  
    OP
       96 天前 via iPhone
    @qizheng22 哈哈哈哈每个人想法都不同,追求的人生意义也不同,何必说"瞎折腾"呢

    而且这个项目将不局限于笔记,还有更多功能
    cb01435781
        7
    cb01435781  
       96 天前   ❤️ 1
    看看基于文件的笔记,比如 logseq
    choah
        8
    choah  
       96 天前   ❤️ 1
    用 git 的话,就没有安全性了吧,谁都可以看到内容
    April5
        9
    April5  
       96 天前   ❤️ 1
    git 需要用户自己解决冲突,想过这一点吗?
    lstz
        10
    lstz  
    OP
       96 天前 via iPhone
    @choah 这一点确实也是,用户也许更担心数据泄露,谢谢同学补充
    AoEiuV020JP
        11
    AoEiuV020JP  
       96 天前   ❤️ 1
    纯 git 会不会有太多 commit ,感觉并不好用,应该还是要结合一些其他技术实现短期的保存,
    另外这 git 是打算放在服务器还是各端客户端本地控制, 会不会有冲突,
    lstz
        12
    lstz  
    OP
       96 天前 via iPhone
    @April5 程序上可以实现,将命令行的冲突解决方案呈现到 UI 上。虽然是麻烦点,但不会让用户接触底层的东西
    wjx0912
        13
    wjx0912  
       96 天前   ❤️ 4
    op 说的不就是 obsidian+git 吗,超越它应该很难,创业需谨慎~~~
    lstz
        14
    lstz  
    OP
       96 天前 via iPhone
    @AoEiuV020JP git 仓库可以放本地也可以放服务端,本地就是一个 repo ,远程就是设置个 private repo ,有任何冲突就让用户解决


    (技术上我再想想)
    riluolvshe
        15
    riluolvshe  
       96 天前
    同事远程修改了文档内容,我得先打电话让同事 commit push 一下,我本地再 pull 一下么🤔
    lstz
        16
    lstz  
    OP
       96 天前 via iPhone
    @wjx0912 嗯嗯,我希望做的不只是笔记,只是顺带笔记功能,谢谢同学补充
    lstz
        17
    lstz  
    OP
       95 天前 via iPhone
    @riluolvshe 目前还没想到怎么实现多用户协同,我再想想交互 捂脸
    Masoud2023
        18
    Masoud2023  
       95 天前
    会,太会了,你能集成 Github 或者 Gitlab 就更棒了
    April5
        19
    April5  
       95 天前
    @lstz 认真的吗?等你解决完冲突,这个文件可能已经被其他人改得面目全非了。
    XavierLing
        20
    XavierLing  
       95 天前   ❤️ 1
    作为程序员的我,之前也是这个想法。然后我看了各个 Android 端的 git 客户端,使用起来或多或少都有瑕疵。后面直接装了 Termux ,上命令行搞 😂
    lstz
        21
    lstz  
    OP
       95 天前 via iPhone
    @Masoud2023 是的,有朝一日收购苹果微软,征服宇宙

    @April5 明白(⊙…⊙)
    weilai99
        22
    weilai99  
       95 天前   ❤️ 1
    git ,数据加密后上传同步,并且加锁保证先写后读
    lekai63
        23
    lekai63  
       95 天前   ❤️ 1
    logseq 不就是用 git 来控制版本吗。

    就是多端情况下,偶尔要处理 merge 冲突,对于小白用户比较麻烦。

    如果是面向 dev ,我估计你干不过 obsidian 和 logseq

    如果是面向普通人,也许你直接基于 onedrive 的版本管理来就完事了?
    bravecarrot
        24
    bravecarrot  
       95 天前
    用户自己用 git 太麻烦了, 不如花钱用印象笔记的会员
    geelaw
        25
    geelaw  
       95 天前   ❤️ 1
    楼主可以从上面的回复了解绝大多数用户的想法,但我也想鼓励楼主:存在着对底层技术在意的用户的。
    AlanBrian
        26
    AlanBrian  
       95 天前   ❤️ 1
    我感觉可以考虑 idea 的设计。git 历史记录归历史记录,应该还有个本地历史记录。你可以让用户自己手动操作 git 来归档,本地历史记录由软件来自动保存记录。
    firefoxer
        27
    firefoxer  
       95 天前   ❤️ 1
    有人做过一个 gitnote ,好像不更新了
    zypy333
        28
    zypy333  
       95 天前
    坚果云那样的是咋搞的
    cwcc
        29
    cwcc  
       95 天前   ❤️ 1
    我其实对文档类和 C/S 端 CRUD 类最后合并的分布式内容版本控制一直都有需求,但是现阶段的方案做得都不是很好。

    比如 Git ,Git 其实更适合代码类文本流片段,而文档可能会含有富文本、文件、表格、格式等内容,使用 Git 不能很好地处理这些内容,或者现阶段直接把 docx 文件放入 Git 仓库显然是个不可行的方案。

    再比如 MS Office 自带的修订,它仅适用于文本段落,对立面的表格比如删除一行的时候,它就会提示无法标记为修订。

    我现阶段还没有找到一个可以完美解决以上文档类版本管理的工具,所以插眼等个方案。
    stantoncurry
        30
    stantoncurry  
       95 天前
    这不就是 webdav + typora 吗
    smdbh
        31
    smdbh  
       95 天前   ❤️ 1
    过来人觉得不行,说的就是 obsidian ,版本冲突天天见,立即放弃
    tyzandhr
        32
    tyzandhr  
       95 天前 via Android   ❤️ 1
    git 对于解决现在笔记软件版本冲突问题的解决方案是多分支,只要吸收这个点就行了
    Betsy
        33
    Betsy  
       95 天前 via iPhone   ❤️ 1
    IntelliJ 全家桶自带一个 history 管理,要不研究下它是怎么实现的,然后抄一波?
    subframe75361
        34
    subframe75361  
       95 天前   ❤️ 1
    考虑 crdt 的方案吗
    BlueHat514
        35
    BlueHat514  
       95 天前 via Android
    @qizheng22 我要做一个聊天机器人,使用人工智能的,能进行多轮对话,还可以提供 api 接口供第三方调用,这个主意怎么样(づ ●─● )づ
    leokun
        36
    leokun  
       95 天前
    ma3252788
        37
    ma3252788  
       95 天前   ❤️ 1
    @lstz #10 私有 git 也可以呀,反正笔记是给自己看的,建个私有仓库不就行啦
    nullboy
        38
    nullboy  
       95 天前
    有 obsidia 丝滑吗
    realJamespond
        39
    realJamespond  
       95 天前   ❤️ 1
    vscode 不也有 history 功能
    lstz
        40
    lstz  
    OP
       95 天前 via iPhone
    @nullboy 会的,持续改进 ui


    @subframe75361
    @leokun
    谢谢同学,学到了新概念,去学习 ing
    justwkj07
        41
    justwkj07  
       95 天前
    直接用 obsidian
    v135ex
        42
    v135ex  
       95 天前
    你只是想用 git 做个笔记,于是有了笔记,现有的笔记满足不了你吗?你的软件亮点就是用 git 实现的笔记?
    lstz
        43
    lstz  
    OP
       95 天前 via iPhone
    @v135ex 没有打算拿这个作为软件亮点,只是探讨一下技术可行性... 我是想做一个工具软件,顺便把笔记也加进去
    starrycat
        44
    starrycat  
       95 天前 via Android   ❤️ 1
    根据我使用 logseq git 功能的经验,体验极差,经常会出现莫名其妙的报错,然后建议关掉 git 功能😅
    djangovcps
        45
    djangovcps  
       95 天前
    但凡需要操作三步的功能,用户都觉得烦,add commit push
    bequt
        46
    bequt  
       95 天前
    git 大文件会比较麻烦。
    amiaaaz
        47
    amiaaaz  
       95 天前
    @qizheng22 #3 可能还要加个记账
    yc8332
        48
    yc8332  
       95 天前   ❤️ 1
    用户管你怎么实现啊。用了你也要弄个 gui ,用户就是点一点。
    0o0O0o0O0o
        49
    0o0O0o0O0o  
       95 天前   ❤️ 1
    想起来 v 站有人发过个 git + note 的个人闭源作品,很难想象他这种维护状态下用户的感受 https://github.com/zhaopengme/gitnote/issues

    此外,我一直很喜欢这种特性,但我觉得贡献给已有的活跃社区会更好

    - https://github.com/GitJournal/GitJournal
    - https://github.com/laurent22/joplin/issues/753
    NullPointerExce
        50
    NullPointerExce  
       95 天前   ❤️ 1
    自己 DIY 了一个,大致如下:
    1. 用 typora 作为写笔记的软件,写完的笔记就是 markdown 格式,程序员狂喜
    2. typora 配置图床,图片保存在 GitHub
    3. 准备一个文件夹,比如就叫 mynote ,这个文件夹设置成 git 管理的,写的笔记都在这个文件夹里
    4. 准备一个 GitHub 仓库,用来保存笔记
    5. macOS 可以设置自动化命令,写一个脚本,每分钟执行一次,先 pull ,再 push
    6. windows 可以设置自动化任务,同样写了脚本,每分钟执行一次。
    完美~
    Nullnode
        51
    Nullnode  
       95 天前
    obsidian
    lstz
        52
    lstz  
    OP
       95 天前 via iPhone
    @0o0O0o0O0o 谢谢同学补充,我这个开源项目将会一直保持开源,而且提供其他集成的方式
    tool2d
        53
    tool2d  
       95 天前   ❤️ 1
    我项目代码是对 2 周内修改的文件,增量 zip 打包。

    单用户很少有合并文本的需求,文件都是一个人修改的。

    又不是代码,存在同时多个分支在修改。
    leconio
        54
    leconio  
       95 天前
    想问下给每个用户开一个库吗?还是让用户自己开自己的库,小白可不太会。
    GP1
        55
    GP1  
       95 天前
    你这 UI 界面还需要继续优化,这太面向开发人员了。
    jqtmviyu
        56
    jqtmviyu  
       95 天前
    obsidian 有 git 功能吗? 我都没用过.
    直接丢 onedrive 里同步了.
    OceanRs
        57
    OceanRs  
       95 天前
    语雀好像就是这样吧
    narmgalaxy
        58
    narmgalaxy  
       95 天前
    https://github.com/openneno/neno 我的笔记就是用 git 控制的
    Serif
        59
    Serif  
       95 天前
    Foam 瞭解一下
    Andywoo
        60
    Andywoo  
       95 天前
    我直接包了 git(远程管理) + hugo(部署): https://github.com/rangwea/swallow-wails
    lstz
        61
    lstz  
    OP
       95 天前
    @GP1 谢谢反馈,我们这边改进


    @leconio 明白,我们也在思考...
    SenLief
        62
    SenLief  
       95 天前 via iPhone
    一个笔记 app 如果做不到 Joplin 的水平,那也没什么发展额。
    netabare
        63
    netabare  
       95 天前 via Android
    感觉不如参考一下 git 的实现原理然后自己想一下怎么把这个机制移植到记事软件上。

    而不是说直接在 git 上面盖个记事软件。
    lstz
        64
    lstz  
    OP
       95 天前
    @SenLief 跟自己比,不断进度就好啦,发展总是需要点时间


    @netabare 可以的,谢谢同学回复,思考 ing
    xbleey
        66
    xbleey  
       95 天前 via iPhone
    参考 confluence 不就行了吗
    leang521
        67
    leang521  
       95 天前 via Android   ❤️ 1
    最好支持 webdev 。
    格式开源,方便转 word 和 pdf 。
    最重要的,方便快速搜索
    momo1pm
        68
    momo1pm  
       95 天前
    能不能有点新花样,天天搁着笔记 日历 记账来回折腾,程序员三大妈?
    haleyJen
        69
    haleyJen  
       95 天前   ❤️ 2
    所以写程序和设计程序是二回事情,下面只是我个人的观点:

    1. 版本控制真的必要吗?我想版本控制应用最广的应该是程序代码这块,因为他们有各种的版本迭代。

    2. 笔记软件?

    1. 笔记的本质是吗?因为你大脑可能是不靠谱的,所以将一些东西记下来,将来需要的时候,可以很快找到他。所以笔记最核心的功能有三个:1 、记录支持的格式; 2 、记录时的体验; 3 、智能化的搜索功能。苹果笔记没有版本控制,但依然很多人用,为什么?因为它刚好满足了这些核心功能。
    2. 你的目标用户是谁?因为不同的用户,需求是不一样的。不要想着将所有的需求全部满足,这是不可能的,因为人的精力是有限的。
    3. 为什么别人要用你的软件?本地 Obsidian 、网络 Notion ;手写 Goodnote 、Onenote ;传统笔记:Evernote 、Upnote ;轻量笔记:Apple note 、Google keep ;极简笔记:Typora + 云盘、vim 、Emacs 、记事本。

    3. 笔记的功能

    1. 核心功能:1 、记录支持的格式; 2 、编辑时的体验; 3 、智能化的搜索功能。
    1. 支持的格式:文字和图片是基本的。另外还有,声音、视频、链接、手写……
    2. 编写的体验:程序员可能需要 Markdown ,代码还需要代码高亮和代码块;理科生可以需要手写,或者公式的语法;文科生可能需要文本高亮显示、想法笔记;长文档还需要支持悬浮目录等。并且,在写内容的时候,还要尽可能的减少干扰。苹果滚动条就是一个很好的例子,可以设置只在需要的时候显示。
    3. 搜索:主要有查看和排序二大块。笔记中附件、手写的内容能否被找到,查找是否足够快;排序是否合理,用户经常使用的是否在最上面。这都需要算法的支持。
    2. 附加功能
    1. 分享功能:因为可以要分享给别人。( Notion 这块做得很好)
    2. 版本控制:因为有的时候,你需要看之前的笔记。(其实我不是很明白,除了程序代码这块,我自己几乎没有使用过版本控制这个功能)
    3. 跨平台:有的人全平台,这可能也是一个因素。
    4. 安全性 | 加密:是的,对有的人而言,这也是刚需。
    5. 页面相关
    1. 分页功能:是的,因为有的时候,你需要两者同时参考。
    2. 多个标签:就像浏览器那样,方便切换。
    3. 目录功能:长文档刚需。
    6. 好看的 UI:为什么很多人用 Mac 而不是 Windows ,有多少是因为苹果更好看?颜值也是生产力的一部分。
    7. ……

    ---——————————————————————————————————————————————

    所以,这是一条劝退建议。开源是一种很好的想法,但可能真的回不去了。就笔记软件而言,现在有名的是 Joplin ,人家为什么要用你的笔记软件呢?现在的社会是专才的社会,每个人只是干自己最擅长的事情。就笔记软件而言,有的人收集需求,有的人设计,有的人写代码,还有的人只是宣传。这种模式是好的,只是现在的社会出了某些问题,从国产软件可以看出来这点。所以根本上,不是软件的问题,而是社会的问题。在程序员眼中,也许是 XXX 软件不好;在老师眼中,也许是 XXX 学生不好;在普通消费者眼中,为什么现在工资越来越少……

    就我个人而言,现在更多的使用 Apple note ,Notion ( Typora 、Obsidian )前面是生活,后面是工作。我从来不觉得现在缺少笔记软件,相反,我觉得现在不需要笔记软件,因为缺少内容,所以根本没什么需要记的。琐碎的知识有搜索引擎,有 GPT——一个更加强大智能的搜索引擎;系统性的知识有书——一个更加系统的笔记。有没有一种可能,之所有有太多的笔记要记,是因为书没有写好?

    ……

    所以,这是一条劝退帖。
    wupher
        70
    wupher  
       95 天前   ❤️ 1
    喜欢,至少对于程序员来说
    lstz
        71
    lstz  
    OP
       95 天前 via iPhone
    @haleyJen 哇,写的很详实,感谢回复,我会根据这些意见进行软件设计调整的
    body007
        72
    body007  
       95 天前
    @haleyJen 我仔细看了你的回复,我在用的 https://github.com/zadam/trilium 感觉有些能满足。我最喜欢的是克隆笔记,以及手写 js 和 html 自定义自己的笔记(甚至让笔记实现 web 相关功能的需求,我自己的 2fa 验证码就做成笔记了)。

    cndenis
        73
    cndenis  
       95 天前
    git 只对文本友好, 笔记一般都要嵌图片和其他文件, 得想办法
    而且笔记即便要版本管理, 线性的也足够了, 我几乎想不到有啥分支的需求, 用 SVN 的逻辑可能更好
    kenvix
        74
    kenvix  
       95 天前
    git 对于你们的项目就是一个底层的库,你不要封装好不要让用户感知到不就行了吗

    @cndenis 这倒是可以用 Git-LFS 实现
    qhy0802he
        75
    qhy0802he  
       95 天前   ❤️ 1
    笔记类软件,现在的核心需求:
    1 、支持良好的文档 tree 管理
    2 、支持云文档管理
    3 、支持多种插件

    建议参考下 lark 。 历史管理只是很小的一部分需求。
    acerphoenix
        76
    acerphoenix  
       95 天前   ❤️ 1
    笔记类,图和二进制文件挺多的,git 并不天然合适,再说现在支持 git 的笔记也挺多的。反正我记笔记没什么频繁的强大的版本比较功能,一个文件,整体覆盖就行,简单的历史 dropbox 也有。
    skwyl
        77
    skwyl  
       95 天前
    感觉 git 日积月累会比较大,为啥不再开个 sqllite 做历史存档,然后用户可以选择节点删除,git 删除不了之前的记录
    skwyl
        78
    skwyl  
       95 天前   ❤️ 1
    再加上这样做导出的时候也比较简单,历史记录以及当前记录导出会比较方便。
    yelan
        79
    yelan  
       95 天前
    Metion 这个 app 是不是就是这样实现的,可以将笔记同步到 github 上。
    LavaC
        80
    LavaC  
       95 天前   ❤️ 1
    logseq 还只有网页版的时候用的 git 同步,体验糟糕到没边
    go522000
        81
    go522000  
       94 天前   ❤️ 1
    看了你的开源作品,主要是针对于程序员的工具箱。
    那么选择 GIT 来版本控制(或者说是用来自动备份),作为程序员群体,这个选择我觉得更加适合,这个作品又不是为普通用户设计。
    既然是程序员专用的工具箱,对于执行过程,反而不要无感知这个过程,建议是在底部或右侧显示 GIT 命令行过程,并支持用户自己输入 GIT 命令。
    我是支持这个项目的。
    lstz
        82
    lstz  
    OP
       94 天前 via iPhone
    @go522000 明白的,谢谢同学支持,我也是这么想的,为程序员而做的产品,技术细节更多掌控反而可能是优点
    leang521
        83
    leang521  
       94 天前 via Android   ❤️ 1
    以我项目管理的经验,SVN 确实比 GIT 好用。项目中很多 word 文档都是用 SVN 同步多人编辑的。必过 Word 不开放,做笔记用不方便。
    笔记主要需要轻量级,方便打开。然后最重要的是方便搜索。我至今还用有道的原因是很容易将我十年前的笔记搜索出来。
    但是有道越来越大。没以前好用了。
    MENGKE
        84
    MENGKE  
       94 天前   ❤️ 1
    首先版本控制无所谓。我觉得要是整合一下能把 md 和图片视频的整合到一块,并且方便备份、解析就完美了
    Lojii
        85
    Lojii  
       94 天前
    我写的: https://github.com/Lojii/TreeDiary
    基于 Git 的日记 APP ,除了几个搞技术的会感兴趣,普通用户看都懒得看
    celiachu207
        86
    celiachu207  
       94 天前
    Chipmunker
        87
    Chipmunker  
       94 天前
    @leang521 SVN 可以一眼看出版本的先后顺序,这点确实比 GIT 好。
    zbowen66
        88
    zbowen66  
       94 天前
    @qizheng22 #3 还有记账
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2443 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 02:51 · PVG 10:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.