tssh 新增 --udp 功能 https://github.com/trzsz/tsshd ,可以像 mosh 那样工作,基于 QUIC 和 KCP 协议,支持 ssh 端口转发、agent 转发和 X11 转发。这两个协议都升级到 go1.21 了,tssh 也被迫跟着升级。
go1.21 不再支持 Win7 https://github.com/golang/go/issues/57003 ,而 Win7 在国内的用户量还高达 22% https://gs.statcounter.com/windows-version-market-share/desktop/china ,也就是每 5 个 Windows 用户中,就有一个 Win7 用户。
tssh 升级到 go1.21 是迟早的事,不能因为部分不升级的用户,而影响了其他愿意升级的用户。后来想到,可以在 release 时,通过 github action 将 QUIC 和 KCP 协议降到支持 go1.20 的版本,然后编译出能在 Win7 运行的专用版本,详见 https://github.com/trzsz/trzsz-ssh/blob/main/.github/workflows/publish.yml
Win7 用户可以在 https://github.com/trzsz/trzsz-ssh/releases 下载带 win7 关键字的版本,在 Cygwin 、MSYS2 或 Git Bash 内使用。个人建议,别再用 Win7 了,尽早升级吧,新版本 Windows 更香和更安全。
你开发软件时,会紧跟当前最新的编译器版本吗?如 Go 。
你开发的软件,会支持市场已放弃的旧系统吗?如 Win7 。
既然说是推广,那就加点推广内容吧:
tssh 作为 ssh 客户端的替代品,除了兼容 ssh 外,支持很多原生 ssh 没有的功能 https://github.com/trzsz/trzsz-ssh#extra-features ,欢迎大家体验。
1
baozhibo 171 天前
选择 go1.21 ,现在很多网站都不支持 IE 了,一样的道理。
|
2
ixixi 171 天前
我没有需要伺候的这么好的客户 😭
|
3
afxcn 171 天前
为什么一定要升 go1.21,有什么好处?
我还在用 go 1.18 |
4
dfkjgklfdjg 171 天前
1. 不会,一般会使用 LTS 版本,
2. 不会,默认不考虑已经结束维护周期的兼容,除非确定有关键用户在使用旧版本。 从 10 年前开始新的 win 设备默认就是安装的 win10 。这两年开始默认 win11 了。 所以看你的客户群体是什么。其实取舍的问题,投入的精力是否会带回来足够的回报。 |
5
beginor 171 天前 via Android
是否升级,取决于有多少付费用户还在使用 win7 ,能带来多少收入。
如果有,旧版本又不是不能用,如果没有,为啥不升级呢? |
6
huangzhiyia 171 天前 1
1. 不会即时跟上,起码半年后再更新。
2. 旧系统用户给钱了吗?不给不更新,愿意给钱的用户大概率有钱换新电脑了,剩下用不被支持的系统的愿意给钱的用户,那几个钱需要考虑是否值得有精力去维护? 对待那些始终使用旧系统的群体,最好的办法就是出一个公告,上游 xxx 不再支持 xx 系统,然后说没有那么精力维护 xx 系统,但是考虑部分用户的需求,xx 系统版本的软件将以收费的形式提供,建议用户升级系统继续免费使用。巴拉巴拉吧 |
7
LonnyWong OP @afxcn #3 新版本往往会带来新特性,有些代码写起来会优雅很多。KCP 协议是用了 go1.21 的 clear 方法,避免了原来要 copy 内存的写法。QUIC 协议是只支持 go 最新的两个版本,当前也就是 go1.21 和 go1.22 ,用 go1.20 是编译不过的了,具体我没细看。
|
8
BeautifulSoap 171 天前 via Android 9
仔细一看,这帖子应该发到推广节点吧。看是讨论问题实际上是在宣传自己项目。。。
非收费项目的话,留下最后一个 win7 支持的版本,然后出的版本不再支持 win7 ,想要用新版本新功能就让他升级系统呗 |
9
vocaloid 171 天前
这俩问题都取决于你公司和客户的要求,如果没有其他要求那肯定是哪个方便哪个来
不过我个人开发软件有奇怪的 xp ,会尽可能兼容旧系统 |
10
skuuhui 171 天前
你坚持使用 win7 的原因是什么
|
11
LonnyWong OP @BeautifulSoap #8 你要这么说,我也不反驳。我也就看看大家是如何做的,决定一个放弃 Win7 的时间。
|
12
kokutou 171 天前
你实际试过 win7 吗....
就算是打了最新的补丁, 打了 esr 补丁, 也还是好多软件都没法用的... |
13
0o0O0o0O0o 171 天前 via iPhone
希望免费开源软件能激进点
|
14
dode 171 天前
文档说明 win7 自己可以用旧版程序
|
15
LonnyWong OP @skuuhui #10 我不用 Win7 ,只是有部分用户用,详见 issue:
https://github.com/trzsz/trzsz-ssh/issues/13 https://github.com/trzsz/trzsz-ssh/issues/22 |
17
LuckyLauncher 171 天前
给钱就兼容,一直给钱就一直兼容
没钱爱用用,不用拉倒 |
18
LonnyWong OP @0o0O0o0O0o #13 都是权衡,一边是与时俱进,一边是近 1 / 5 的 Windows 用户。
|
19
afxcn 171 天前
谢谢 #7
那就必需要升级了,我升到 1.18 也是为了用 any ,以前一直用的 1.13 的,自己定义了个 Any ,自己定义的 Any 用起来还是不方便。 |
20
LonnyWong OP @LuckyLauncher #17 纯用爱发电!但也是爱用就用,无所谓。
|
21
tool2dx 171 天前
我还在用 win7 ,使用存量老硬件的用户,一般来说是不太会主动升级操作系统的。除非换新的硬件,买新电脑。
|
22
wwqgtxx 171 天前 8
我选择在编译的时候给 golang 打 patch ,对于 golang1.21 撤销掉一个 commit 即可恢复对 win7 的支持
https://github.com/golang/go/commit/9e43850a3298a9b8b1162ba0033d4c53f8637571 如果需要对 win7 打 KB2533623 之前的版本做兼容,那就再撤回一个 commit https://github.com/golang/go/commit/a17d959debdb04cd550016a3501dd09d50cd62e7 |
24
0o0O0o0O0o 171 天前 8
|
25
enihcam 171 天前 via Android
投入到 win7 兼容的收益一定是临时的、短暂的。从投资角度讲,不要做逆时间线的工作,比如 win7 用户早晚会升级,不管是主动还是倒逼。
|
26
LonnyWong OP @wwqgtxx @0o0O0o0O0o #22 #24 感谢两位大佬!这种做法比我的好多了。
|
27
zackzergzeng 171 天前
@LonnyWong #7 新版本也往往带来新鲜的安全漏洞
|
28
LonnyWong OP @zackzergzeng #27 旧版本可能更可怕,明知安全漏洞而不修。
|
29
tool2dx 171 天前
@enihcam 用户升级 win10 的背后逻辑,并不是软件升级,而是硬件升级。
但是电脑硬件这东西,很难坏掉或者自然淘汰,特别是企业里的老电脑。 几年后估计还是 20% win7 占比,因为电脑没坏。如果一定要开发者选择,只能放弃这部分用户。 |
31
milukun 171 天前
虽然 ios 和 macos 也经常挨骂,但是忽悠用户升级还有便于升级这点,真的没话说
做这些相关的 app 根本不用过于考虑低版本,甚至低版本不作为目标用户即可 但 win7 是真的顽固啊 |
33
zackzergzeng 171 天前
做 toB 做定制,客户用 window 98 也得兼容
做 toC 就自由了,方便兼容就做,不方便该放弃就放弃 |
35
zackzergzeng 171 天前
@LonnyWong #28 我遇到过新特性带来的新漏洞,旧版本没漏洞的;我也遇到过旧版本有漏洞,新版本新特性就没漏洞的。反正升级不升级都挺麻烦的🤣
|
36
wwqgtxx 171 天前
还有一些比较麻烦的方法,比如手动分叉一些需要高版本 golang 的依赖,恢复对旧版的支持
https://github.com/MetaCubeX/randv2 https://github.com/MetaCubeX/quic-go/tree/v0.45.0-mod-meta https://github.com/MetaCubeX/gvisor/tree/meta-20240320-6368c171a198 当然这种做法有点费力不讨好 |
38
pkoukk 171 天前
咋不考虑兼容 XP 呢?我记得 win10 刚出的时候还有好多 XP 钉子户呢
该升还是升吧,这些所谓的钉子户也钉不了几年了 |
39
feiyan35488 171 天前
收费软件,需要尽可能满足用户需求
开源软件则不需要 |
40
LonnyWong OP @pkoukk #38 XP 不到 2% ,Win7 是 22%,换句话说,每 5 个 Windows 用户就有一个是 Win7 用户。
https://gs.statcounter.com/windows-version-market-share/desktop/china 如果可以支持,又不是特别的麻烦,又何乐而不为呢?本来就是用爱发电,不单单只是取悦自己了。 |
41
augustheart 171 天前
如果是作为一个稳定的产品,在足够满足需要的情况下,没任何必要升级编译器。
甚至是有漏洞的类库也可以酌情不升级 |
42
PiersSoCool 171 天前
让客户给钱,或者让他自己升级;或者给他写个 sleep 10 ,告诉他 win10 性能更好,结束了
|
43
janus77 171 天前
跟 windows 本身一样,多版本共存不就行了,一个老版本还支持 win7 ,但不再发布新功能更新,只有必要的安全更新,新版本正常更新,并不再兼容 win7 。
|
44
loolac 171 天前
22% 的 win7 用户中有多少是 tssh 用户呢?使用 win7 的估计都用不到 tssh ,最起码我感觉从事开发,运维等人员不会还在用 win7 了吧。
|
46
cshwen 171 天前
支持 Win7 ,得加钱
|
47
nikenidage1 171 天前
不是,你不先看看这部分 win7 用户是不是你的目标用户群体啊?你这软件明显是要放弃这些人的。
总结:你这明显就是一篇软广 |
48
LonnyWong OP @nikenidage1 #47 我放弃了吗?不是编译出了 Win7 专用的版本?感谢 #22 wwqgtxx 大佬的回复,让我找到了更好的支持 Win7 的办法。
你要坚持是“软广”,那就是吧。我是写了个开源软件,遇到了个问题,也想到了个解决办法(不是很好的办法)。所幸,因为这个贴子,让我找到了更好的办法。“软广”就“软广”吧,无所谓。 |
49
0o0O0o0O0o 171 天前 via iPhone 1
@nikenidage1 #47
@BeautifulSoap #8 这算推广吗?我怎么读不出来,OP 有思考有作品,言之有物,还属于不获利的开源项目,就算有宣传自己项目的考虑,也不该放到推广 /go/promotions 这个言“商”的节点。换作是我我也会犹豫,因为要么选择发在分享创造 /go/create ,但又担心无人将它视作一个疑问来解答。综上我认为 OP 发在这里没有什么不妥。 |
50
BeautifulSoap 171 天前
@0o0O0o0O0o 我觉得是在变相宣传自己的项目。当然,有点的确搞错了,我不知道推广节点是放商业项目的地方。相比之下这个帖子的确应该放到推广个人开源项目的节点
|
51
liuguang 171 天前
go 一般都是搞服务端开发的,难道你用 go 写桌面程序?
|
53
BeautifulSoap 171 天前
@0o0O0o0O0o 如果你认为这种在技术讨论帖子里插入很多对个人项目的软性介绍不算宣传的话,那么是不是意味着,任何一个项目开发者想宣传自己的项目的话,那就隔三岔五随便找个项目开发时遇到的技术问题仍到技术讨论节点(帖子用和 lz 一样的写法)是正常的呢?
|
54
LonnyWong OP @BeautifulSoap #90 我是在背景中讲了我的项目,因为升级 go1.21 不是心血来潮的,是有原因的。另外,我在 V2 也基本只讲与我项目有关的事情,一是能引起我兴趣的话题不多,二是我不想(也不敢)参与其他敏感话题,因为我算是半实名了(有关部门能查到我是谁)。最后,花了大力气写出来的东西,有人用也就足够了,不求 star ,更不求打赏。
|
55
0o0O0o0O0o 171 天前 via iPhone 1
@BeautifulSoap #53 我觉得可以参考 hackernews https://news.ycombinator.com/newsguidelines.html
保持好奇心、有自己的思考、有实质内容,如果你说的这些开发者可以隔三岔五但持续地对人们展示这点,我觉得**完全没有问题**。例如我正在阅读的: https://news.ycombinator.com/from?site=thegreenplace.net |
56
panda1001 171 天前 via Android
在 github 上看到 go 取消 win7 支持,解释是 ci 没有 win7 的机器不好做测试
|
57
ExplodingFKL 171 天前
无需考虑太过陈旧环境的用户了,针对这部分用户开一个单独的分支仅修复漏洞即可,又不是商业软件,没必要保证太强的兼容性
|
58
suyuyu 171 天前
go 都放弃 win7 了你还要支持 (
|
59
laobobo 171 天前
推广就推广,整这么多事
|
60
duluosheng 171 天前
单独给 Windows 7 增加一个打包
|
61
charslee013 171 天前
一般来讲当决定选用某个软件的时候就已经确定该功能是符合需求的,很少为了某个新功能而对系统进行升级
|
62
Yadomin 171 天前 via Android
建议加个遥测看看你到底有多少 Win7 用户
|
63
kero991 171 天前
说那么多,我觉得你得先搞清楚一件事,你是乙方(甲方用 go 我不理解)
既然你是乙方,用什么,兼不兼容 win7 真的是你决定的吗? 我们这省一级机关,除了信创 linux 机器,win 机器 99.99%都是 win7 ,有单子你不接? |
65
HFX3389 171 天前
|
66
HFX3389 171 天前
@enihcam #32 但是要让用户掏,用户就觉得硬件值钱,很多老电脑跑 Win7 的原因就是没固态硬盘,单位/公司又不给买,用电脑的人又不愿意自己掏钱买 SATA 固态...那就只能跑 Win7 咯..
|
70
lysShub 171 天前
|
71
wwqgtxx 171 天前 1
@HFX3389 #65 自然是对着 golang 仓库一个 commit 一个 commit 翻找相关的,然后撤回后在 win7 上实验能不能正常运行喽
@lysShub #70 我在代码中也留了注释,这种撤回方法还是需要对特定版本进行适配的,不过从我这边的 github action 来看,直到最新的 golang1.21.11 和 1.22.4 上工作都是正常的 至于为什么 action 中 1.21 系列是直接从 golang 官方仓库取 diff ,而 1.22 自己放了一份 patch 文件就是因为 1.22 的修改需要额外修改一些对应行数才能正常撤回 如果想应用到未来发布的 1.23 那肯定还是要重新写 patch 的 |
72
just1 171 天前
我比较激进,公司内我维护的项目都是跟随 PATCH version 的。MINOR version 会慢一两个月等待 1~2 个 PATCH version 。因为确实有很多功能或者修复是被需要的(这句话不仅仅是针对 go ,很多依赖都是)。
|
73
zfyStars 170 天前
如何选择 快十年没用 win7 了
|