PBH-BTN / PeerBanHelper

BT 反吸血工具 - 自动封禁不受欢迎、吸血和异常的 BT 客户端,并支持自定义规则。PeerId黑名单/UserAgent黑名单/IP CIDR/假进度/超量下载/进度回退/多播追猎/连锁封禁/伪装检测 支持 qBittorrent/Transmission/Deluge/BiglyBT/Vuze(Azureus)/BitComet
GNU General Public License v3.0
1.51k stars 36 forks source link

[社区公告] 计划移除 Native-Image 二进制可执行文件支持 #75

Closed Ghost-chu closed 5 months ago

Ghost-chu commented 5 months ago

在 PBH 过去一段时间的维护中,native-image 制造了相当大量的麻烦。
据统计,我们约有 70% 的时间浪费在如何让一个功能在 native-image 上面正常工作。

因此,PBH 正计划删除 native-image 功能,不再发布平台二进制版本。目前正在向社区征求意见。任何好的建议都欢迎在群聊/本 Issue 下提出。


以下功能在放弃 Native-Image 后有希望继续推进:

Xeonzilla commented 5 months ago

允许将PeerBanHelper注册为Windows服务,这样静默运行更加无感

Mishasama commented 5 months ago

首先,如果坚决只发布jar,建议照旧打包JRE,或者自己打包一个专用的精简JRE,不然就为一个不常开的东西又往系统里写常驻的东西实在得不偿失。

另外,考虑到使用门槛和便携等特性,我认为要求用户自行安装运行时是非常不妥的。

而且,这操作不就是人人喊打的负优化了吗?JRE+本体可比原生的臃肿太多了。再加上先前已经推出过下载双击即用的优秀体验,突然又开历史倒车给人(特别是不能理解开发困难的用户)的感觉非常糟糕。

建议回想一下当初你发布原生版本时对优化成果的兴奋程度。 个人觉得目前要考虑的不是浪费70%的时间去实现功能,而是应该使用70%的时间去确认好目标,选定框架,做好高效的开发规划。(比如针对跨平台自动编译去调整代码、将核心剥离使功能模块化等)

Ghost-chu commented 5 months ago

首先,如果坚决只发布jar,建议照旧打包JRE,或者自己打包一个专用的精简JRE,不然就为一个不常开的东西又往系统里写常驻的东西实在得不偿失。

另外,考虑到使用门槛和便携等特性,我认为要求用户自行安装运行时是非常不妥的。

而且,这操作不就是人人喊打的负优化了吗?JRE+本体可比原生的臃肿太多了。再加上先前已经推出过下载双击即用的优秀体验,突然又开历史倒车给人(特别是不能理解开发困难的用户)的感觉非常糟糕。

建议回想一下当初你发布原生版本时对优化成果的兴奋程度。 个人觉得目前要考虑的不是浪费70%的时间去实现功能,而是应该使用70%的时间去确认好目标,选定框架,做好高效的开发规划。(比如针对跨平台自动编译去调整代码、将核心剥离使功能模块化等)

原生版本的好处显而易见,我也不愿意放弃运行即用的体验(以及更小的文件大小)。
摆在眼前的是我为了 Native Image 要额外花费几十小时的时间跑 tracing-agent 确保覆盖到每个分支,好让它尽可能地完整地生成配置文件。实际上,我甚至写了一篇文章来赞扬 GraalVM 的 Native Image 带来的优秀效果。

但是巨大的开发成本摆在这里,我不可能每天都花费数个小时就为了跑 agent。Native Image 最终并在新 WebUI 工程结构的面前倒下。在我发现仅仅是为了让 NI 正常工作就要花费大量时间后,继续维护这项技术就不再值得。

我不可能无限制的每天投入数个甚至数十个小时到这个无底洞里。同样,把文字加粗来发泄你的愤怒不会起到任何效果。如果你认为旧的原生版本更好,那你就完全没有必要升级。PBH 也是开源项目,如果你对 PBH 不满意,你大可以用 Rust、Go、Python 等语言自己搓一个。

Mishasama commented 5 months ago

把文字加粗来发泄你的愤怒不会起到任何效果

首先澄清一下,可能是我没有搭配表情或者语气助词让你感到我加粗是表达愤怒。实际上我只是想划重点(GitHub 貌似没有下划线?)主要是希望能让你明白当初的成就是有多伟大……并不是想给你带来任何的负面情感。加粗的做法让你感到困惑我在此表示抱歉。🙇‍♀️

Native Image 最终并在新 WebUI 工程结构的面前倒下。

这么说的话,反过来想会不会是后来的 WebUI 大变革出了问题反而拖累了开发,从而被迫去妥协呢? 本来 UI 的目的也是为了优化体验才弄的吧?🤔 我觉得要调整的并不只是 PBH 本身,而是应该考虑让 WebUI 模块化,甚至是外挂化,让它作为一个可选功能来存在。让 WebUI 去适应核心,而不是让核心被 UI 牵着鼻子走。这样才不会因为后来的锅让前面的来背,出现喧宾夺主的情况。


最后再次重申,既然你表示希望征求意见,那我就发表我的设想。我只是在探讨项目未来的可能性,寻找最佳的解决方案,并没有带上任何的情绪。正如你说的,不升级或者自己搓也是可以的。😅

我希望你不用为此项目而感到巨大的压力,毕竟最初这只是个人需要而弄的开源项目吧?因其他人而让自己感到不舒服就本末倒置了不是么。

Ghost-chu commented 5 months ago

把文字加粗来发泄你的愤怒不会起到任何效果

首先澄清一下,可能是我没有搭配表情或者语气助词让你感到我加粗是表达愤怒。实际上我只是想划重点(GitHub 貌似没有下划线?)主要是希望能让你明白当初的成就是有多伟大……并不是想给你带来任何的负面情感。加粗的做法让你感到困惑我在此表示抱歉。🙇‍♀️

Native Image 最终并在新 WebUI 工程结构的面前倒下。

这么说的话,反过来想会不会是后来的 WebUI 大变革出了问题反而拖累了开发,从而被迫去妥协呢? 本来 UI 的目的也是为了优化体验才弄的吧?🤔 我觉得要调整的并不只是 PBH 本身,而是应该考虑让 WebUI 模块化,甚至是外挂化,让它作为一个可选功能来存在。让 WebUI 去适应核心,而不是让核心被 UI 牵着鼻子走。这样才不会因为后来的锅让前面的来背,出现喧宾夺主的情况。

最后再次重申,既然你表示希望征求意见,那我就发表我的设想。我只是在探讨项目未来的可能性,寻找最佳的解决方案,并没有带上任何的情绪。正如你说的,不升级或者自己搓也是可以的。😅

我希望你不用为此项目而感到巨大的压力,毕竟最初这只是个人需要而弄的开源项目吧?因其他人而让自己感到不舒服就本末倒置了不是么。

在 WebUI 之前 Native Image 其实就有很多问题了,但通过一些手段 workaround 之后还能勉强运行。开发体验挺痛苦的,这次彻底砍掉也算是从这种痛苦中跑出来。
PBH 不应该被拆分成多个模块,因为它一开始就被设计为一种工具,而不是一个核心/依赖库。Java 自然也不适合做这个,与其他语言交互性太差,JVM 等等都在拖后腿。如果要设计成某种核心,用 Rust/C/CPP/Go 可能更加合适。

说白了,被语言决定了定位。如今再去改沉没成本太高了。还是希望社区里能出现一个其它语言的更加替代品,我选择 Java 也仅仅是因为 Java 用着顺手一些,最初作为一个个人使用的临时项目,完全没考虑到发展到今天这个规模和样子。

Mishasama commented 5 months ago

如今再去改沉没成本太高了。还是希望社区里能出现一个其它语言的更加替代品,我选择 Java 也仅仅是因为 Java 用着顺手一些,最初作为一个个人使用的临时项目,完全没考虑到发展到今天这个规模和样子。

那现在的 PBH 你自己够用了吗? 如果够用……干嘛要为了别人而让自己痛苦呢?又不欠谁的,直接开摆让别人自个想办法去就好了😏 说不定是因为看到你还在努力而没想到该另起炉灶呢。

如果你还想继续为这个项目掉点头发……那按照目前来看只要像以前那样打个包应该就可以解压即用了吧?

以下为题外话(闲聊)

话说 Java 有这么糟糕吗……?我看那个很火的游戏《我的世界》也是用 Java 写的吧?它的扩展性貌似还是挺不错的,不知道有没有可以参考的地方?

不过说到沉没成本…… PBH 到现在连 UI 都是直接 Hardcode 的吗?那你对自己是真的狠了,完全都没给自己留个甩锅的机会😂 我个人比较喜欢什么都模块化,哪怕是简单的 JavaScript 也喜欢到处用变量来填充主功能部分。虽然前期成本会高不少,但后面找人接手或者追加内容啥的都会少不少事。有锅也不会甩到自己做的核心身上,让别人“自适应”就完事了🤣

synodriver commented 5 months ago

还是希望社区里能出现一个其它语言的更加替代品

或许这些可以为py版本的peerbanhelper出一份力 aria2 qb tr deluge

pullingtab commented 5 months ago

配置java环境确实有些门槛。我看jetbrains的IDE,比如Android studio,也是java的。但是它并不需要自己配置java环境就能启动。有人知道这是怎么做到的么?

Ghost-chu commented 5 months ago

配置java环境确实有些门槛。我看jetbrains的IDE,比如Android studio,也是java的。但是它并不需要自己配置java环境就能启动。有人知道这是怎么做到的么?

暂无支持计划。你让PBH整个安装包也能自动配置,但目前暂无这么做的计划。保持绿色,保持轻量。

pullingtab commented 5 months ago

配置java环境确实有些门槛。我看jetbrains的IDE,比如Android studio,也是java的。但是它并不需要自己配置java环境就能启动。有人知道这是怎么做到的么?

暂无支持计划。你让PBH整个安装包也能自动配置,但目前暂无这么做的计划。保持绿色,保持轻量。

我之前做过一点C++,用到了CLion。CLion是不需要安装的,直接执行主程序就行了。而且CLion启动后,系统中也是没有java命令的。CLion对于系统中有没有java环境也没有要求。

Ghost-chu commented 5 months ago

配置java环境确实有些门槛。我看jetbrains的IDE,比如Android studio,也是java的。但是它并不需要自己配置java环境就能启动。有人知道这是怎么做到的么?

暂无支持计划。你让PBH整个安装包也能自动配置,但目前暂无这么做的计划。保持绿色,保持轻量。

我之前做过一点C++,用到了CLion。CLion是不需要安装的,直接执行主程序就行了。而且CLion启动后,系统中也是没有java命令的。CLion对于系统中有没有java环境也没有要求。

JB全家桶安装是会自带一个Java的,目前PBH的Windows懒人包已经自带了,其它平台暂不考虑。