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

本贴最后更新于 203 天前,其中的信息可能已经沧海桑田

由于特殊需要,我想 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

  • 思源笔记

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

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

    24815 引用 • 102084 回帖
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

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

  • llej via Android

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

    1 回复
  • pakeh2866 1 赞同

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

  • zhangjh

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

    1 回复
  • xnyshu via macOS

    是什么?

  • muxue via Android

    收到,感谢!

  • sky2023 1 评论

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

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

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

  • daloo

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

    1 回复
  • xurdy 1 评论

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

    我倒是蛮期待的

    1 回复
    能不能魔改成可以打开独立 md 文件的那种?不是思源现在这种目数树的文档结构
    xurdy
  • 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 via Android

    想请教一波,如果要编译一个 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 同步功能比我想象中的复杂多了,等空下来学学前端三大件再继续吧。现在只出了一个删除了关于页面中联网功能的版本。大家感兴趣可以去下载试用。

  • xurdy

    能不能魔改成可以打开独立 md 文件的那种(类似下图)?不是思源现在这种目数文档树的结构。我觉得既然要彻底离线,把文件的打开方式也一起本地化为妙。

    image.png

    1 回复
    1 操作
    xurdy 在 2025-01-18 16:13:55 更新了该回帖
  • muxue via macOS

    思源笔记不是一个 markdown 编辑器,“魔改”成你这样比重新写个 markdown 软件还难

请输入回帖内容 ...

推荐标签 标签

  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 34 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 7 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 413 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    239 引用 • 224 回帖 • 1 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    5 引用 • 34 回帖 • 1 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 617 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 260 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 18 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖 • 1 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 1 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    99 引用 • 367 回帖
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 488 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 250 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 7 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    21 引用 • 245 回帖 • 233 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 7 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    132 引用 • 796 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 678 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 86 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 642 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 2 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    31 引用 • 108 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 355 关注