关于魔改离线版本思源的可行性咨询(持续更新进度)

由于特殊需要,我想 fork 并魔改一个完全离线的思源笔记,剔除所有登录、云同步功能以及外网请求功能(比如设置里面的谷歌统计),现在我有一些问题

  1. 思源是否允许这种魔改后的版本在商业环境使用?需要做特殊申请或版权声明吗?
  2. 删除所有外网访问相关功能是否会影响思源的本地处理?

希望 d 大能解答一下,感激不尽!

PS:现在我还没有动手,只是有这个想法而已,欢迎讨论!


更新:感谢 d 大的回复!

image.png

提前说明,本人是 C++ 选手,没有学过 go 和前端,但是我接触过一部分这方面的知识,go 的代码还是比较好看懂的,前端得再琢磨一下。也欢迎其他感兴趣的开发者与我联系,一起研究怎么删除这些功能。目前打算基于 3.15.0 版本进行魔改,简单汇总了一下可以修改的点:

  • 最快的方式是只修改前端代码,把前台页面中这些功能给删除掉,并把有开关的功能都设置为默认关闭;
  • 后端修改最快的方式是直接删除 kernel\api\router.go 中相关 API 的路由注册,这样这些函数的 API 入口没了,也就没有办法被调用了,然后再找到具体的函数,将这个函数其他调用点也剔除;

项目风险:

  • 目前还不了解怎么对思源笔记进行打包,研究中……
  • 我是一个三分钟热度的人,可能遇到困难就摆烂了,希望能有老哥时不时踢我一脚让我动起来 😂 ;
  • 后续需要从官方版本中合并 bug 修复 pr,目前暂时不考虑实时更新到最新版本的情况;

最后,我的每一步修改都会写详细的 diff 日志和修改原因,方便使用者一眼看懂到底修改了什么内容。

另外,如果这个项目真的能成,我打算基于 2.8.7(没记错的话这个版本是最后一个支持 win7 的版本)也执行一次魔改操作,这样能让这个被魔改的思源笔记能被更多的设备使用。

开整:https://github.com/musnows/siyuan-local/tree/local

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22337 引用 • 89378 回帖
5 操作
muxue 在 2024-09-07 12:36:30 更新了该帖
muxue 在 2024-09-07 09:05:44 更新了该帖
muxue 在 2024-09-07 09:05:23 置顶了该帖
muxue 在 2024-09-05 08:10:31 更新了该帖 muxue 在 2024-09-05 08:06:04 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250
    1. 只要遵循 AGPL 开源协议即可
    2. 不影响
    2 回复
  • kuangzeling

    非常期待,我也有这种需求

  • 好像其他人已经开发了去除登录的版本了

    1 回复
  • pakeh2866 1 赞同

    去登陆那个还是有联网功能吧

  • zhangjh

    大概知道你要干嘛了,哈哈

    1 回复
  • xnyshu

    是什么?

  • muxue

    收到,感谢!

  • sky2023 1 评论

    个人不希望搞这些东西,完全免费的东西会分流官方版本的用户,进而降低原作者的开发积极性

    1 回复
    开源就是能最大化满足不同用户的需求,这是合理的
    JeffreyChen 1 赞同
  • sky2023

    你能不能直说你的特殊需求是啥

  • daloo

    完全离线、免登录的思源笔记,理论上在非使用状态下可以通过百度云盘等网盘同步所有内容?说实话这样很理想,不过应该会影响思源笔记的商业化和发展壮大

    1 回复
  • xurdy

    就是保存为独立 markdown 文件一样呗,类似 typora 一样的吧?

    我倒是蛮期待的

    1 回复
  • muxue

    完全离线是为了满足信息安全要求,而不是和思源笔记本体抢市场。即便是思源本体也能通过你说的百度网盘进行同步,只不过需要把思源笔记给关闭后再启动同步操作。而且思源本身是不建议这样同步的。

  • muxue 1 2 赞同

    完全离线是为了满足信息安全要求,而不是和思源笔记本体抢市场。更何况我只是剔除了所有外网访问功能,理论上官方的版本在不登陆的时候和我这个版本完全一致,不存在抢用户的情况。

    我感觉老哥可能误解了,我是要把所有涉及外网访问功能去除,而不是破解 VIP 登录才能使用云同步功能的限制。包括 S3\WEBDAV 同步在内的功能也会被我删掉。

    这个版本又没有官网,只有一个 github 页面,除非经常上链滴论坛,不然压根不会知道这个版本的存在。而经常上链滴论坛的老哥基本都是思源的老用户了,本身就不是能被分流走的新用户。

    我认为肯定有喜欢思源笔记的朋友也因为公司的信息安全要求无法在公司内部使用思源。所以我想制作一个没有任何外网访问功能的思源笔记,这样它更有可能通过公司的信息安全审查,允许在内部使用。而现在的思源有第三方登录、同步、谷歌统计、自动上传日志这类外网访问的请求,即便这些功能在不使用的时候也不会发出外网请求,但只要这些功能存在,思源笔记就不太能轻易的通过信息安全审查。

    2 操作
    muxue 在 2024-09-05 08:16:37 更新了该回帖
    muxue 在 2024-09-05 07:55:42 更新了该回帖
  • muxue

    并不是,我这里要做的工作只是把思源的登录、云端同步功能全部删掉,让它变成彻彻底底的只能本地使用的笔记软件。思源本身的编辑处理操作不会有任何变化,和 typora 这类 md 编辑器还是会有区别的。

  • muxue 1 赞同

    进度更新:目前已经成功在 windows 下构建了 3.15.0 版本的 exe 并成功安装,走通了构建的这个步骤的全流程。

    PS:考虑到 arm windows 压根没啥用户,本项目可能不会去构建 arm 版本的 exe。而且由于慕雪没有 mac 机器,也不会去打包 mac 下的版本。有需要的用户可以在本项目魔改完毕后自行尝试打包。

    第一个删除的元素是谷歌统计,用来练手。

    • 前台的 about.ts 里面的 html 页面、按钮事件注册,谷歌统计发送 app\src\util\assets.ts,搜索里面关于谷歌的设置 app\src\config\search.ts 这三个文件里面的内容都删除了。
    • 后台 kernel\api\router.go 的 API 接口注册删除,配置文件 kernel\api\system.go 中的谷歌统计不再从配置文件里面获取,而是直接复制为 true 来默认 disable(其实这个赋值没啥意义,因为已经没有人读这个 config 条目了)。

    效果如下,原本的谷歌统计按钮已经消失。看来修改没有问题,并没有我想的那么复杂。

    image.png

    修改比较复杂的点应该是删除账户登录和云端同步这两个功能。由于 AI 功能必须要配置 api key 才能生效,而且大陆也没办法裸连,所以暂时不剔除 AI 功能。

    继续修改ing,欢迎大家持续关注本贴。

  • RenaEmiya

    想请教一波,如果要编译一个 win7 下能使用的 3.15,难度高么 ~

    1 回复
  • muxue

    由于我很久没有使用过 win7 了,不确定当前最新版本思源笔记的依赖项是否能在 win7 上安装。我记得站内有构建 3.10.0 版本的 win7 教程,你可以在站内搜索一下。

    1 回复
  • EROMIU

    windows on arm 用户落泪

    1 回复
  • 补充一下,打开集市会联网

    1 回复
  • muxue

    其实主要是没有找到构建脚本里面那个给 arm64 打包的 exe 要去哪里下。等我搞定了再问问 d 大吧。

    咳咳,找到了,https://github.com/mstorsjo/llvm-mingw/releases?q=20240518&expanded=true

    试了试,能一起打包 windows arm64 的版本,但是我不确定打包的能不能用,因为没有测试环境(理论上没问题)

    image.png

    1 操作
    muxue 在 2024-09-07 12:29:32 更新了该回帖
  • muxue 1 评论

    集市功能感觉不好删除,删掉了是不是就没办法通过本地下载插件并导入了?

    或者把本地插件列表保留,删掉云端列表?

    把需要联网的部分删掉就可以了,比如插件的获取、下载和自动检测更新
    JeffreyChen
  • muxue

    请问 D 大,在删除了云端同步功能后,本地的数据库密钥是不是也没有意义了?

    1 回复
  • 88250

    有意义的,数据仓库可以手动打快照用于备份。

    1 回复
  • muxue

    不不,我说的是数据仓库密钥(就是端到端加密的那个),不是数据库本体。打快照应该用不上密钥吧?

    1 回复
  • 88250

    需要用到的

    1 回复
  • muxue

    好的,明白了。👌 感谢解答

  • muxue

    现在出了一个删除了设置-关于页面中自动上传错误日志、下载新安装包、谷歌统计等功能的版本,欢迎大家下载体验

    https://github.com/musnows/siyuan-local/releases/tag/v3.1.5-dev1

  • RenaEmiya

    感谢!

  • muxue

    感觉删除账户登录功能和 S3 同步功能比我想象中的复杂多了,等空下来学学前端三大件再继续吧。现在只出了一个删除了关于页面中联网功能的版本。大家感兴趣可以去下载试用。

请输入回帖内容 ...

推荐标签 标签

  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 351 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 74 回帖
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 362 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    5 引用 • 107 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 8 关注
  • gRpc
    11 引用 • 9 回帖 • 73 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 764 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    75 引用 • 1737 回帖 • 5 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    340 引用 • 708 回帖
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    6 引用 • 63 回帖
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    20 引用 • 7 回帖
  • danl
    132 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    543 引用 • 672 回帖 • 1 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 1 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 1 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 614 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 537 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 67 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    8112 引用 • 37001 回帖 • 160 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 6 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 328 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    25 引用 • 191 回帖 • 16 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    690 引用 • 535 回帖
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    170 引用 • 414 回帖 • 387 关注