duangsuse::Echo
859 subscribers
4.65K photos
143 videos
588 files
7.05K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): a19a0b
Download Telegram
duangsuse::Echo
有些无脑的 innerHTML=.map().join() ... 其实不需要那么多过度设计,之所以说是过度,因为它们对“推理逻辑”没有贡献。
#design HTML是反人类的,但它唯一的优点就是【所见即所得】,让你学习设计,而不是语言。 它像bash那样是种胶水语言,而且起步成本为0: 不需要刻意去命名你想做什么。

打过游戏吗?现代的《马里奥》里直接隐去了BOSS和小怪的命名,你用自制emoji 🐢在文本中指代怪物。 软件也是这样,有些技术本不需要名字,emoji 这种DSL来编码它就够用了。 “低幼”和“自动翻译”正是H5与朋友们的神性。

象形、直觉与直接指涉(Direct Manipulation),让那些看起来牛逼的设计模式、C++框架样板,最终只用一个简单的{[K]:V}或动态调用/Proxy/JSON就能实现它们,这正是H5的特点

它容错、甚至“不求甚解”,就像 class  🐢 {},一看就明白 它是绿色的;踩它一下会缩壳;踢一脚会滑行,再按F5确认一下,访问项目页就能看到截图。 而没有 trait、protocol、interface{} 、concept…… 🐢有地心引力,而这不需要起名字才能实现。

我见到不少自称【可测试】的接口,不能像 “按下PrtSc键,然后点 🔴 按钮…… 把操作视频拖到代码里,再选择几行CSS来验证操作结果” 那样设计 test case。 不对,不是【写】CSS,而是用Ctrl+Shift+C自己选中 “要检查下这部分” “那部分必须禁用”。 每几行代码,都有能点开的抓手。

有什么 “代码自动测试”,是能脱离油猴脚本(Mock)、快捷键这些生产力工具来编程的? 真是奇怪啊…… 就连面向最终用户的测试,也只是装模作样 🥱

这是对人类直觉的最高尊重:你是在游玩界面和交互本身,而不是在给编译器写汇报材料。捏一把、按 F5、屏幕亮了、角色动了。就像MC里如何【做设计】那样——或许需要自动造墙的MOD,但【创造模式--范式】已经提供了REPL般快速的活力。
duangsuse::Echo
统一的函数式接口,自动内存管理等等。
https://share.gemini.google/QJon73lAFArE #TIL #bash
GTK/QML 框架相关

- 请解释gtkmm如何实现C++闭包到gpointer的封装
auto f=new auto([=]() { g_object_set(parent_menu, "tearoff-state", TRUE, NULL); });
g_timeout_add(500, +[](gpointer uf) { auto u=static_cast<decltype(f)>(uf); (*u)(); delete u; return 0; } , f);


- 树形父子对象管理 + 智能指针引用计数 (GObject ref/unref)?
- Gtk听起来为了blueprint做了很麻烦的设计,而且似乎无法避免,还不如Tk

- 有一种说法:C++桌面移动应用需求里,90%的指针是refcount<2的,这里说的不止是画布之上,还包含一般的日历、笔记等App的所有对象状态管理
- 也就是说Rc<RefCell>或QObject的模型非常够用。unique_ptr(父持子)(跨节点访问)。
- 当按钮 B 被主容器销毁时,连接到 B 的所有信号槽会自动断开,持有 B 的 QPointer 会自动置空。只有 1 个 Owner,但允许多个安全的 Observer。

📝 完全同意你的观点:处理好那唯一一次的“所有权(Ownership)”,剩下的需求只靠“安全观察(Weak/Observer)”就足够完美覆盖了。Tkinter 和 Qt 都顺应了这种直觉
#post #statement 【有害的聪明】 

pip 依赖解析为什么那么慢,以及uv为啥快。

> 因为 CDCL(conflict-driven clause learning),这是一种形式化验证技巧,学习冲突去剪枝。渊源来自于 PubGrub…… 
> https://www.bodunhu.com/blog/posts/how-sat-solver-works/

链接缓存,多大点事。 pip最开始是面向非破坏性升级的,没人会说它复杂,pnpm也不会很复杂。uv直接把实现细节的画风都变成红黑树一样了。CDCL直接把画风都变了,与之相比,pnpm完全没有需要算法

复杂的算法并不是强大,仅仅是没有“GPU加速”的思考而已。简单的hash、LRU、channel、x86/arm栈模型,其实比这些树和状态机转来转去的破烂好太多,只是要系统思维

把一个明确有注意点的“递归下降”和list回退,搞成和DP一样二维N维的破烂,让我想到CS教育里对YaCC这些玩意的迷信。严谨吗?真正的严谨从来不需要思考,它不会让人脑像左手拿筷子一样无法“GPU加速”,那很蠢。

Node.js 允许版本多存,从根上规避了 Python 的难题。pnpm 看到的问题是“文件冗余”,而不是“逻辑冲突”。如果apt的依赖解析是最快的,把两个仓库的文件格式一对接,同样完美解决了当下的性能问题。反正退一万步,用户的需求是简单的,技术深奥?都砍了也不影响交互。它们最终是没有生命力的,因为不被测试。如果烂了,是因为制造依赖问题的库本身烂

如果你天生有一个反直觉的,左手拿筷子的思维方式,那当然显得IQ很高。 但其实这些人的IQ不适用于游戏、舞蹈、创造一种工具、雕塑MC的存档,他们反应不过来也没有充足的动力。 


我非常讨厌聪明的技巧,因为它们对社区没有贡献。倒不如说,他们和制造这种需求的蠢人更合得来。


> "Everyone wants people they like to be right, that's why popular people are fucking dumb" -Rick Sanchez

这里的蠢不是指他们完不成uv这样我也会日用的工具,而是指【有害的聪明】 (dumb in a systemic way),过度工程。 就像一个人用十位数的密码保护3位数的资产,而这十位数,如果你足够有智慧的话,会发现它是电话号码+生日。我会像逃避瘟疫那样避免这些【十位数的代码量】。


如果你这样想计算机和CS的问题,你就会明白 Scratch、Alan Kay,还有 "Bret Victor, Human Being" 这个slogan有多大含金量了。 

高深和小众不是真理,只有真理是真理。在代码的源头不意味着必须小众,MC、Flash、Scratch的世界里,你可以尝到“复杂性是甜的”(比如光影和红石支持的minigame)。 我非常怀疑只是做到一件事对【生而为人】来说的价值。 

OOP之父首先是一个“会说话(Smalltalk)的”人,他的敌人是“不透明的codebase”和“添加间接性”。  很多编程者并不是一个【人】,而更像机器的外设。 ——真是一个单点故障的外设呢。


声明式就是声明式,不需要与任何 functional bullshit 捆绑。他们也并不真懂什么是纯函数。没有“重新赋值”,整体扔掉重算就是纯的咯? 他们并不懂一个赋值的影响范围和箭头函数的因果链,有多静态。 “不允许一个框的赋值变化,但每次都删掉整个屏幕重来。”
1
Forwarded from 螺莉莉的黑板报
我没有在看尼古喵喵,但是这部剧在台湾被下架了我觉得是一个非常糟糕的文化审查。而且,上关于香烟的文化审查并不少见。比如,如果你足够老,应该记得 QQ 里面香烟表情被拿掉的新闻。如果你比较年轻的话,相信你也知道 Emoji 里面的枪被各个厂商换成水枪。这次尼古喵喵被下架更是荒谬,因为台湾已经有相对健全的内容分级制度了。

一个文化概念不应该因为你喜不喜欢,「你觉得」对别人好或者不好而消失。这些以圣人姿态钳制公共话语空间的「权威」着实令人鄙夷。
#game 奥德赛确实在任天堂ip里MOD强度较高。

右面板的九宫格为 P.xyzr Gizmo,上面是场景动态对象池(有视锥距离限制)

传统的xyz标记和传送/地图切换/TAS优化/传统的金手指功能不在话下,可实现60FPS移速不变。 🤔
duangsuse::Echo
#game 奥德赛确实在任天堂ip里MOD强度较高。 右面板的九宫格为 P.xyzr Gizmo,上面是场景动态对象池(有视锥距离限制) 传统的xyz标记和传送/地图切换/TAS优化/传统的金手指功能不在话下,可实现60FPS移速不变。 🤔
#TIL #game Switch root

https://www.youtube.com/watch?v=v3ECI513pSU
https://smoo.it/
https://github.com/Amethyst-szs/smo-lunakit

LunaKit和SMOO基于ImGui和 sead,al::PuppetActor 显然用心,达到了 PC 级游戏开发工具/内建调试引擎的水平(2024),可以zip安装,模拟器+鼠标操作

可以开飞行无伤,像F12那样悬停高亮的场景对象池,按颜色可视化敌友的碰撞判定,可即改关卡内和存档状态,实现为无混淆的 C++ hook ::exl

对象池面板,比如可搜索 Shibaken(会显示柴犬的日文名),播放出场动画,瞬移到狗身边(可惜不能距离太远)

美中不足是无法用下一次碰撞做对象池选中,也不能在鼠标xyz居中放置fav对象,甚至不能加载和生成fav。如果有,配合SMO的摄像模式应该更加有趣。全实体附身、生成附身怪物、月球重力、GUI滚轮等应该也能实现

蘑菇王国的火箭stage拼图,玩家可简单涂抹场景(Splatoon Ink)同样是深度调试功能,比CE里搜个数值强太多了。 这样,游戏里不可变的就只有操作逻辑、玩法脚本和3D资产。(听说Switch-Toolbox连角色模型都能替换)

https://github.com/Amethyst-szs/smo-lunakit/blob/stable/src/program/devgui/settings/SettingsHooks.cpp#L74

《任天堂明星大乱斗 特别版》《塞尔达传说 BotW》《赛车8》的MOD质量更是高于LunaKit,二开的赛道更多,也算是弥补了主机游戏没有联机这一块(以及部分高玩认为马里奥不够难……)
duangsuse::Echo
这样,游戏里不可变的就只有操作逻辑、玩法脚本和3D资产。
虽然视频中的画质比较Low-poly (不像MC,因为游戏本体都是上个世纪画质,哈哈哈)

但该有的脚本,甚至官方不会做到的设计都是PoC过可以做的。 考虑到以后AI建模的发展,或许MOD老游戏也会成为一种社区化的、有意义的创作?

可惜端游不可能有Steam创意工坊。 端游的好处是一口价,而且省心,这一点在越来越浮躁的当代真是太稀缺了 💭
duangsuse::Echo
#game 奥德赛确实在任天堂ip里MOD强度较高。 右面板的九宫格为 P.xyzr Gizmo,上面是场景动态对象池(有视锥距离限制) 传统的xyz标记和传送/地图切换/TAS优化/传统的金手指功能不在话下,可实现60FPS移速不变。 🤔
#asm 然后那个LunaKit还带了一个渲染管线GPresets+天空盒,以及布娃娃服装一键切换功能, 其实都是非常通用的(环境光hack/纹理替换)

至于Vulkan图层和mesh调试,可以用 ~/.local/bin/ryujinx-*.AppImage --appimage-extract
然后直接跑 ~/squashfs-root/usr/bin/Ryujinx 的说

可以附加到任何 LD_PRELOAD=/lib/librenderdoc.so 的带HUD的进程

看起来可用于SDF字库破解一样。如果能联动Switch-Toolbox或许会更好?不过现代端游平台不再需要汉化什么了,随卡带都自带i18n发行……

docker pull devkitpro/devkita64

git clone --recursive https://github.com/switchbrew/nx-hbmenu.git && cd nx-hbmenu
docker run --rm -it --net=host -v "$(pwd)":/app -w /app devkitpro/devkita64 /bin/bash

接着 make nx 就可以交叉编译,游戏的话 raylib.com; love2d.org 都支持。建议开发完了然后移植到龙神测试?
cp app.nro ~/下载/app.nro; ~/squashfs-root/usr/bin/Ryujinx $_


nxlink -a "$SWITCH_IP" -s app.nro

== 技术栈复用 ==

hb-app.store 为声明式UI,t轴动画, libcurl (网络)Jansson (JSON)lodepng
github.com/XorTroll/Goldleaf 支持弹框UI, libjpeg-turbolibusbhsfs
github.com/duangsuse/smo-lunakit ImGui构建修复版
github.com/joel16/NX-Shell ,同框架。vgedit是HBAS同框架

github.com/Ryuzaki-MrL/tetriswitch LÖVE贪吃蛇
lovebrew.org/development/gnu-debugger
duangsuse::Echo
但该有的脚本,甚至官方不会做到的设计都是PoC过可以做的。 考虑到以后AI建模的发展,或许MOD老游戏也会成为一种社区化的、有意义的创作?
#statement #vibe 一些游戏开发与试错工具的灵感 🎮

如果那种快速hack,比如说60FPS移速不变、飞行无伤/月球重力/第三人称镜头、可视化碰撞和关卡/区域、对象池体感选择与收藏夹放置/Splatoon Ink,可以无源码以<1day/每个卡带的成本达成,那二开在调试上就可以媲美原作了。

帧率锁和Puppet联机的问题可以说本来不该是个问题(移动计算莫名绑定fps而不是dt..),所以说很多二开在这方面超过了原版。最新的显卡可以4K但不能不锁帧实在是太操蛋了,就算一周目可以用掌机画质,二刷和直播也不可能用那种玩意吧

RenderDoc联动Switch-Toolbox对于有源码的情况也是一种更好的F12调试逻辑,可惜rdc本身不重视内容寻址(而更操心sdf管线),如果从画面直接指向资源文件做 Hot Reload 的话,结合对象池的游玩中 Live Edit,无论有没有源码也会非常容易修好瑕疵呢。


不是你去查资产列表,去拖放,而是你在 main() 检查点开始往前走,看到有哪些资产或游戏操作以什么样的频率出现,就像 Bret Victor 的“跳跃轨迹”那样。不是像 strings xxx.so 或翻译工具,而是 html[ContentEditable] +右键自动翻译那样。

不是在grep,是真正的game,只是多视角/多if一些而已。 就像Mario先一周目把🗳放好,然后在HUD里戴上【紫帽子】,决定哪些方块隐藏,哪些是支线剧情,哪个NPC讲剧本成稿的哪几句更好。这是一个游戏引擎的元编程。

在美术上,可能和MC和《我的三体》那样,是从【方方正正】逐步球精的,除了场景框架全都边玩边做的,更适合vibe。不能玩的代码,必须【投影编辑】般足够方便——其实这不难做,HTML a节点和Ctrl+K就是这样

这确实非常复杂,但如果你设计好了(完全可以对卡比/Mario主流系列复用),这些“编程语言”会像Ctrl+S检查点和读档、地址栏和a节点、JSON持久化、F5刷新、颜色选择器那样直观且一致,而不需要什么IDE。


你可能需要一些快捷键来【切换视角】,需要一个MC式的“任务栏”和“工作台”来展示和组合fav对象池,但,这比完全割裂的两个窗口好得多,也没有精确度上的问题(创建+微调优于编辑+编辑)。

而现在的游戏引擎,只能引用计数一个asset,不能像有几条“官方TAS”/曝光率那样根据流程来优化内容。

如果要为AIGC优化的话,首先要把3D资产和音画创作从精力的中心拉下来,先玩一周目,然后慢慢替换美术。 这样的话,没有F12那样程度的理解,是做不到高效的

ps. raylibtech.itch.io/rguilayout ,NX上没人用,因为不能触发布局更新

如果太【高效】了,感知不到运行时的需求,适得其反。 软件不是一堆按钮表单而已啊……
duangsuse::Echo
但该有的脚本,甚至官方不会做到的设计都是PoC过可以做的。
https://www.bilibili.com/video/BV15VEa6bE7Q/

这个Mod二开(原BOSS脚本换皮+敌人混搭)工程量就挺大的,虽然主线比较单一,茶杯头的恶魔、月亮,还有酷霸Jr、马里奥赛车都有。

其中就用到了上文的GPresets和录制回放(与黑暗路易吉赛车),值得注意的是,自月亮之后的BOSS最终效果都不错,不是纯粹堆难度。为了弥补3D没有动画的不足,在对话上做了很多

@massayyy
3年前
Guys this took me over a month to make... hope you enjoyed it :)

King boo:cap kingdom
Demon of cuphead:sand kingdom
Shadow Luigi:metro kingdom
Bowser JR:bowser kingdom
Hilda berg:sea kingdom
Baldi:lost kingdom
Cagney clavel:tree kingdom
Pac man:cascade kingdom
Dr.Kharl(cuphead):lake kingdom
Von bon(cuphead):food kingdom
Bouldergeis:ruin kingdom
King K Rool:moon kingdom


1063万次观看 2024

😓 有四五个MOD的视频,没有公开下载也没有开源。开源的没有能玩的,连截图都没有。

视频游戏社区经典的: 效果能看^工程开源 XOR命题。LunaKit和manim这样的是究极少数,至少资源文件有credit,但没有地图。

https://github.com/Amethyst-szs/MoonFlow
https://github.com/Amethyst-szs/yoshi-star-kingdom
https://github.com/octember8/SMO-Kingdom-18

如果你想从二开练习游戏设计,即便是SMO这种自由度可能也不合适,因为只有源码,而成品有结果无程序……

我开始好奇, #game #dev 除了MC的各种兴趣小组以外,是否没有能看的开源成品呢?

相比于其他可编程领域,游戏领域似乎处于GNU之前的“黑暗时期”,只比RISCV的领域好一点点。
duangsuse::Echo
相比于其他可编程领域,游戏领域似乎处于GNU之前的“黑暗时期”,只比RISCV的领域好一点点。
https://kbhgames.com/game/friday-night-funkin-pibby-apocalypse

#game 一旦涉及到 media tag 或3D模型,就连二开都不开源,也真是种诅咒了。

你几乎找不到真正的公共素材,无论视频特效or游戏MOD,哪怕只是鬼畜或Vocaloid翻调,只要不是开源世界的,全部是【完成度惊人的闭门造车】,如同师傅收徒那样的隐形知识。


这样依赖摸索和杂七杂八工具的领域,还真是“不受AI影响”呢(又或者是最受ComfyUI开源影响), 你上次能看到黑盒,还是在医疗和微电子领域。

A面:效果能看,但工程不开源(如 massayyy 的视频)
B面:工程开源,但效果不能看(如各种 GitHub 链接,好像和DMCA没关系)

《Friday Night Funkin'》的原版游戏就是基于 MIT 许可证 开源的。它的引擎 (HaxeFlixel) 也是开源的。

工程文件公开可用的【音画成品】,哪怕忽视流行度这一点来说,也没有一个“MediaHub”来供人学习。Sketchfab、Blendswap可以用,但midi和乐谱、vfx、绑骨又少很多了,Live2D那种程度的协作,都可以说是【前无古人】了


讽刺的是,在这方面AIGC反而更可能超过人类的吧。而在开源世界,codex其实不能端到端的解决每个repo。
duangsuse::Echo
相比于其他可编程领域,游戏领域似乎处于GNU之前的“黑暗时期”,只比RISCV的领域好一点点。
#statement #game 有些人认为AI “最危害”程序员,但是祸比祸看来,还是画家建模师的知识壁垒“受害”更多吧?

全他妈是教程,作者能上、有货写毛的教程? 直接分享导出能看的模板啊! 所以我认为,AIGC 是大好事。 👉 就像那种抗癌药,编程世界得到的,其实比失去的多太多。

你在学校里是得不到10万播放的技术力的,那些是“天才”,但现在AI已经很好了。(虽然应用的只是少量小模型,webui程度的应用很少)


如果你用编程世界的Workflow来衡量,就会发现CAD、游戏、音画创作,复用率太低了,连个demo都没有。哪怕是开源世界,也没法实现“下软件送素材库”。

🐧 🚘 STK这个大众游戏在Linux世界里算是前三(工程量排第一),但它与现实世界相比,算得了什么呢?

OpenRA (Open Red Alert)、OpenMW、仙剑奇侠传,这些开源移植都很老了,不能作为学生的范本

🎛 信号处理领域真是太重要了,虽然他们的编程水平一般(API简单但冗余也多,比如Shadertoy的部分页),但是数理效果很好,对创作者就起到大用途。

而且曾经只写代码是不能当主创的,现代哪怕只开发一个创作工具,也能参加共同投稿或独立游戏。 做游戏不会DSP技巧可不行

AIGC一来,状况就彻底颠倒了: 反而是玩法、脚本、灵感占主导地位,创造者就不那么受闭门造车的【隐形知识】威胁了。

这样发展下去的话,说不定真的能减少整个因特网的rework。
duangsuse::Echo
hb-app.store 为声明式UI,t轴动画, libcurl (网络), Jansson (JSON), lodepng
github.com/XorTroll/Goldleaf 支持弹框UI
#post 不要重复造轮子

如果你认为Switch .nro独立开发圈有一大堆SDL重复造轮子,你就错了。因为他们至少能勉强编译,虽然是rework也可以被remix,而且抛开UX优化不谈,功能正常。

但是各种MOD录屏、术曲音MAD,就不一样。 每个人想改都要从头开始扒,更无法获得踩坑提示,你 “必须把二创当个事来办”,时刻准备着遇到他们不分享的经验和工程量。

😂

是基于共同蓝图(开源库)的“建筑练习”。虽然过度工程,但也算是各有特色,可以取长补短的。

gamedev就不一样。他们没有超过demo级的开源模板,就连demo,对小众引擎而言,也是一票难求的。 真是很好奇:明明人类最擅长的创作模式(3D大世界),开发圈子却是最小的。连二创都不开源。

你要靠大兴趣,但是架构范本,也可能数年局限在单个游戏的圈子里,绝不能像在那个【废物GNU/知错不改的Archwiki】身边一样,三五天一个点即改即走,还和GNOME/Niri的工作区那样遍地开花,因为没有PoC和方案给你remix。

如果没有AI,真不知道那些上限锁死的“最高杰作”怎么像FNF或东方那样存续到未来。

Bill Gates 曾以一封《An Open Letter to Hobbyists》讽刺“玩家社区”偷了别人的BASIC解释器,让【Specialist和专家】没钱写出“更优质,教程更完善的软件”。 我看这个问题根本没变,反而微软自己的azure面板和outlook越来越臃肿,还不如十年前的注册表顶用了。但是你要问解决进度如何,开源世界居然是发展最均衡的


(虽然往往也靠Bellard、SQLite、Linus、BSD这样的个人/小圈子宽容,但真顶用)

这些所谓的Specialist对内容创作和【零摩擦软件】的贡献也不怎么样,很多时候反倒要开源的玩具杀死比赛,比如 React和 Delphi/Apple KVO 的故事,比如KDE就是比微软自己适合Steam,人家可没像“拥有了BASIC”那样指责玩家偷走KHTML。

那人渣就是不分蓝绿的,Hobbyists和Specialist跟赚多少钱,它没大关系,纯粹是有没有货、愿不愿意【帮助未来的自己】的区别

符合人类直觉的工程量投入才是真理。 另外,Gates应该也听过另一句话

> ...prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." -- Edsger W. Dijkstra


做【独立开发】的多觉得GNU是20前的废物,做前沿的又认为GNU只是更精致的UNIX笼子,但musl和各种“小设备”的生态依旧打不赢glibc和gcc-libs的兼容性。GTK3(没想到吧这也是你的GNU朋友)同样在简单页面上完成了Qt做不到的事

虽然GIMP可能被诟病为不如H5的Photopea,但它还是比LibreOffice好看不少的。(GIMP是“开源只是简陋玩具”的典型论据 😅

人家本来就是框架顺带的PoC,而且手动抠图什么的,就有一定专业性。 并不是二创就一定不如原作、开源不如商业,而是起步较晚、功能繁杂(比如hb接盘了任天堂没有的需求)的原因。

倒不如说,开源大佬的人均技术力很牛,而且很酷,最酷的是他们满不在乎的探索和分享精神——这一点不是优化个UIUX就能体验到的。
duangsuse::Echo
绝不能像在那个【废物GNU/知错不改的Archwiki】身边一样,三五天一个点即改即走,还和GNOME/Niri的工作区那样遍地开花
#freedom 社区运营与软件质量

🐮👎 在 Richard Stallman 和GNU之前:软件与设备厂商绑定、源代码闭门造车、禁止分享安装包、MOD与功能点移植?自求多福!

当年,软件世界从编译器开始,倡导的就是师傅带徒弟那样落后的、【隐形知识】主导的生产关系。

🐮👍 GNU 和后来的开源运动:倡导 运行、复制和镜像站、教程学习、修改甚至fork/再版软件的【四大自由】,打破了没有“维修权”甚至“Rootless”的黑暗时期。

就像你想学游戏开发时那样 ——断然没有 component-party.dev 派乐迪和WebGL的一堆模板给你做设计,你要从Vec3f开始认识你本来就会的“走路” “骑自行车”。

“这很难”,但他们是不会有这种感觉的,看那摊效果拔群的面条代码就知道。——欢迎来到软件市场。

你不能指望每个人都像RMS那样仁慈,或像Pythonic那样聪明,他们才是”不平庸“的大多数,相比之下,自由世界的限制就太多了——至今有人为Live2D、Telegram甚至FFMpeg而争议


是啊:即便如此的失败(尤其是在开源游戏、“零摩擦”为标准的Apps、智能硬件领域),我还是要替GNU和Linux辩解,不是因为它们“更免费”,而是它们可以MOD,而且接纳第三世界。——比如,你没听过【GitHub/GH汉化组】吧? 如果你任务栏里的“那个图标”缺少一个功能,或多一个超赞的设计,它是否能像油猴脚本那样【可移植】【可复现】呢?

你拥有的软件。 它就只是一个图标而已吗?

💰 “拥有” 一个超赞的软件,哪怕没读过源码,本身就是自由的象征,就像那些人明明花不完却还是在“攒钱”一样。

使用开源软件,就是在为你的数字生活“攒钱”。 今天你可能不会自己编译内核或“古老”的Yuzu模拟器,但它未来不会背叛你(即便可能被fork)

🤖 设想一下,如果一个【小而美】的输入法在更新里添加100MB的无法关闭的离线AI并【修复了一些已知问题】,你,是否能相信它?但是我肯定相信RIME,而且 it works fine,我的整个频道都是地球拼音写的,没有什么流行词库和云输入,没有搜狗和QQ的地盘。 哪怕它们“更流畅”(比如输入乘法弹出×号、成语名言首字母、直接加减乘除什么的)

虽然GNU被现代的“高产人士” 理解为【没有成果】【有开源污染性】或【越来越微弱】,就连“币圈”也不在乎用户自由与知识共享, 我们却知道,优秀的软件作者至少不会吝啬他使用的技术。比如,图形学之神iq,YC游戏区的Blow,openDAW的André,或者一个MC的多边形版 survivalcraft.dev ,会特意分享亮点实现,即便许多工作仍是仅SDK开源

为什么GNU这边反而不说基于CMake和pkgconf的整个地基是【被偷走的BASIC解释器】,而GCC和各种移植,是RMS官方呢? 因为他们不希望人人都围着官转,人人为了干活提升QoL,都要去伺候官方。GNU世界就是不搞社区和社媒,但是做的软件有70%你用不到(比如全兼容性的胶水),而剩下30%其实没什么技术含量,比如点击滑滑的手势和拉风配色。所以大众觉得GNU没做什么,但是缺了可不行。

一言以蔽之:GNU做的,都是 declarative UI/HTML 没法压缩的工作。虽然tar可能不如7z,但这正是7z能够开源,而不是和rar一样被【许可证传染性】带偏的理由。正是因为吃到自由,所以开源了,而且UX体验更好。


每次都是那些只管写和裁缝,不管维护的人,用蹩脚的XML和某个“官方UI库”写两个layout,然后就把风头抢光了。但是现在,我们应该能知道,那些【零摩擦的设计】,反而是最容易vibe走的。它们本质上就是需要编译的油猴脚本,哪怕开源也难以拖下来编辑。

GIMP没有浮层滤镜和HDR,Audacity竟然基于LISP而不是Lua/Py做插件,这些都是 Pro Users 攻击这些项目的论据。当然,拿 WPS 【国产系统版】挑战历史悠久的LO就太极限了(@Losses_don 也表示过LO确实没啥好说的。很遗憾,它的Wx组件还不如Audacity和Inkscape,充满塑料感)

如果说VimScript和EL还有些“怀旧爱好者”,甚至是学院派treesitter给它们做LSP,LISP插件系统这回事就真是太【落后】了。可以说“商业质量Pro用户”是对的 ——毕竟连CSS都支持mask和浮层滤镜,但尽管开源在生产力上还有很多问题,Blender, Krita, KODI, KoReader, KiCAD 的成功和移植也证明了Linux有一个【有爱】的环境,这不是维护方式本身的问题。


在Linux上开发专业软件,难度其实和Qt移植一样,你可以完全忽略包管理的差异化(在现代也能避免ldd .so not found 的尴尬),倒不如说,现代 Wayland WM 圈的生产力和创新速度,可是就差逆向输出到win和mac的桌面风格上了。

与这种赏心悦目的【碎片化】相比,Win8出尔反尔的闭源metro也好意思比么?

再比如,歌声合成领域最近的OpenUTAU,以及大模型里可自托管的DeepSeek/GLM,同样在质量上做到了惊人的上限。我们很少聊Python世界是否开源,因为在DL里计算图和权重开源才是主流😁

所以,不能用源码保护与否,甚至是 “收费与否” 来判断软件质量。 垃圾是不分蓝绿的,只是垃圾作者不好意思收费/好意思但被榜单刷掉,罢了。

闭源也是反破解不了的,只是个心理安慰。现代的ML界功能这么强,没有开(tou)放(dao)数据集是怎么实现的?
duangsuse::Echo
你拥有的软件。 它就只是一个图标而已吗?

💰 “拥有” 一个超赞的软件,哪怕没读过源码,本身就是自由的象征,就像那些人明明花不完却还是在“攒钱”一样。

使用开源软件,就是在为你的数字生活“攒钱”。
#rust 的这种 重造轮子 风气,其实说明了软件的开发难度,也要取决于主创的动力(甚至是虚荣心)

上文的 Pro 用户, 其实是把GNU的理念和整个开源世界对立起来了。


实际上,只要你排除应用层和一堆游戏和音画的生产力工具,框架和兼容层是非常丰盛的,包括整个 Blink/CEF/ Ruffle.rs 、OBS/SRS栈、raylib/box2d、Vue和Svelte,许多已经完全 get rid 了塑料用户体验,甚至在社区(尤其是DX)上比付费软件更好。

我必须点名指出 manim/movyjs 这样的“无界面视频特效”与kwin的ShaderToy桌面壁纸支持。这说明:虽然无法做好面板和操控,但在结果上技术并不落后。(尤其是Radare2编辑器那样CLI比WebUI好太多的场景,UI模态是选择而非优劣)

(毕竟地主家的傻儿子,大多是伸手党,Python套壳都要收费。Archwiki/AUR 和WaylandUI那种完成度他们可做不来)

乍一看,把所有Apps和游戏,甚至Adobe和Office排除在外,等于是把整个操作系统删到只剩驱动(功能该比嵌入式还残),但如果你理解从KHTML/X11到WebKit/苹果桌面的这段历史,就会发现这才是代码量的 80%,是重头戏。


其他的靠 declarative UI 本来能解决,只是执行坏了,导致开源平替用起来完全不能零摩擦。当代的H5套壳没有这种问题,能说明一切上层并非主要矛盾,只要用正确的心智模型来做软件。

苹果能从KHTML fork出WebKit,并以此为基础构建出统治移动时代的iOS和现代macOS的UI/Web核心,这本身就证明了:那个“开源核心”蕴含的巨大价值。

它打开是黑框,但确实可以致胜,这就是实际情况。

其实GNU的愿景即便在Apps里,也没有失败,社区形成共识总需要一段时间,然后才会发现 free software 的真正生产力。就像Rust仅凭一个名号,就莫名使得一大堆sh工具重获新生一样,只是换个方法,困境自然会解决。

一个强大的新理念(如Rust的“Fearless Concurrency”)本身就具有号召力,它能吸引新一代的开发者,用新的方法去解决老的问题。