2024-03-29

25 篇热帖

1. The race to replace Redis (lwn.net)

Redis 许可证变更引发开源替代竞争

2024年3月21日,Redis公司宣布Redis 7.4及后续版本将从开源的BSD许可证转向非自由的“源码可用”许可证(SSPL和RSAL)。此举旨在限制云服务商直接利用Redis提供托管服务,但背离了其过去对开源社区的承诺,并立即引发了社区的分裂和替代项目的竞争。

背景与争议

Redis由Salvatore Sanfilippo创建,自2010年起先后被VMware、Pivotal等公司支持,并迅速成为主流内存数据库。Redis公司(原Redis Labs)曾多次调整其附加模块的许可证,并承诺核心数据库将保持BSD开源。然而,面对巨大的商业压力和投资回报期望,公司最终改变了核心许可证。

公司声称此变更是为了应对云服务商“免费利用”开源代码的垄断行为。但数据显示,自Redis 7.0以来,腾讯、阿里巴巴、AWS等外部公司贡献了超过60%的代码提交。此次变更意味着,未来只有与Redis公司达成商业协议的云服务商才能提供Redis 7.4以上的托管服务,这对依赖Redis的开发者和企业构成了潜在风险。

主要替代项目涌现

许可证变更后,多个开源替代方案迅速出现:

  1. Valkey:由Linux基金会于3月28日宣布支持,是Redis 7.2.4的直接分叉,沿用原始BSD许可证。获得了AWS、Google Cloud、Oracle等科技巨头的支持,被视为最有可能的社区继承者。

  2. KeyDB:一个2019年创建的、技术导向的Redis多线程分支。2022年被Snap收购后完全开源(BSD许可)。但它在功能上落后于Redis 7,维护重心偏向Snap内部需求。Snap已参与Valkey项目,KeyDB的长期角色有待观察。

  3. Redict:由SourceHut创始人Drew DeVault创建的Redis 7.2.4分叉,选择LGPLv3许可证。该许可证具有copyleft特性,旨在平衡商业使用与社区贡献,且不要求贡献者许可协议(CLA)。

  4. Garnet:微软研究院开发的远程缓存存储,兼容Redis序列化协议,采用MIT许可证。它并非直接替换品,但可作为许多Redis客户端的起点,目前仍在完善功能兼容性。

发行版与用户的抉择

Linux发行版面临紧急的打包和迁移问题。Fedora、openSUSE、Debian的开发者正在评估替代方案。其中,Valkey因其广泛的行业支持和与Redis的高度兼容性,被多数发行版视为首选的未来替代品。然而,迁移不仅涉及打包更新,还包括调整依赖Redis的软件服务(如代码托管平台Pagure、论坛软件Discourse)。

商业逻辑与行业影响

Redis的决策反映了风险资本驱动的软件公司的一种趋势:在获得足够市场地位后,转向限制性许可证以寻求更高的货币化(如MongoDB的SSPL先例)。尽管公司盈利不稳定,但资本市场对此反应积极。然而,此次Redis可能低估了开源社区和云厂商的快速反应能力。迅速出现的Valkey等替代项目表明,单方面脱离开源可能导致项目主导权流失。行业竞争格局正在重塑,开源社区与商业利益之间的平衡再次成为焦点。

2. PostgreSQL maintainer Simon Riggs has died in a small airplane crash (m6n.io)
3. What Boeing did to all the guys who remember how to build a plane (prospect.org)

文章讲述了波音公司前质量经理约翰·巴内特(绰号“沼泽人”)的经历,揭示了公司如何系统性排挤那些重视安全和质量的资深员工,导致制造标准严重下滑。

个人经历与公司压制 巴内特是一位经验丰富、重视细节的质量经理,但在波音查尔斯顿工厂受到上司的刁难。他的绩效评分被故意压低,理由包括“通过电子邮件沟通”等琐碎问题。文章指出,波音在CEO吉姆·麦克纳尼领导下,推行新理论,将知识简化为知识产权和数据,贬低有经验的技工和工程师的价值,称他们为“才华横溢的混蛋”。这导致大量资深员工被排挤或退休,公司出现“人才流失”。

质量体系崩溃 为加速生产、降低成本,波音实施“多功能流程执行者”计划,要求质量检查员将90%的职责外包给被监督的技工,这既违反了美国联邦航空管理局的规定,又使自我检查成为常态。巴内特坚持记录违规行为,发现了诸如氧气面罩失灵、超过400个不合规零件遗失并被违规安装等问题。员工反映工作环境存在欺凌现象,缺陷记录被系统性忽略;卡塔尔航空曾拒绝接收查尔斯顿工厂生产的飞机。

长期后果与调查 这种忽视质量和经验的做法最终反噬。787梦想客机项目严重超支和延期;随后,737 MAX飞机因软件缺陷导致两起致命空难。美国联邦航空管理局加强了对787项目的审查,发现大量问题,导致交付多次暂停。波音公司长期承担了本应由监管机构履行的部分职能,但公司内部对风险漠不关心。文章指出,737项目员工的平均在职年限仅为5年,远少于777项目的15至20年,导致解决问题的集体经验严重缺失。

结局 巴内特在2017年提前退休,并开始了漫长的举报人诉讼。2024年,他在出庭作证期间被发现死亡,官方称是“明显的”自杀,但其前同事普遍对此表示怀疑,并暗示可能存在的阴谋。他的律师在上周发布的修改后的诉状构成了本文的大量依据。文章最后引用前高管的话暗示,巴内特的死或许与公司掩盖的违法行为有关。

4. OpenVoice: Versatile instant voice cloning (research.myshell.ai)

OpenVoice 是一种多功能即时语音克隆方法,仅需参考说话人的短音频片段即可复制其声音,并生成多种语言的语音。该方法不仅能准确克隆参考音色,还支持对语音风格进行精细控制,包括情感、口音、节奏、停顿和语调等参数。此外,OpenVoice 实现了零样本跨语言语音克隆,能够处理训练数据中未包含的语言。与商业API相比,OpenVoice 计算效率更高,成本仅为前者的数十分之一,且性能更优。技术报告和源代码已公开发布。

5. NotepadNext – a cross-platform reimplementation of Notepad++ (github.com)

NotepadNext:跨平台的 Notepad++ 重新实现

NotepadNext 是一个跨平台的 Notepad++ 重新实现项目。虽然该应用程序整体稳定可用,但存在众多 bug 和未完善的功能实现,因此不建议用于关键重要工作。项目欢迎社区提交 Pull 请求以改进。

安装方式

该项目为 Windows、Linux 和 macOS 提供了官方安装包。其他非官方途径可能无法获得项目支持。

Windows

  • 可在 Release 页面下载安装程序或独立 ZIP 文件。
  • 安装程序提供自动更新和右键菜单集成等附加组件。
  • 支持使用 winget 安装:
    winget install dail8859.NotepadNext
    

Linux

  • 可下载 Release 页面提供的独立 AppImage 文件。
  • 或通过 Flatpak 安装:
    flatpak install flathub com.github.dail8859.NotepadNext
    
  • Ubuntu 22.04 及以上版本可使用 PPA 安装:
    sudo add-apt-repository ppa:quentiumyt/notepadnext
    sudo apt update
    sudo apt install notepadnext
    

macOS

  • 可在 Release 页面下载磁盘镜像。
  • 或通过 Homebrew 安装:
    brew tap dail8859/notepadnext
    brew install notepadnext
    

macOS 字体优化

macOS 默认启用的字体平滑可能导致文字显示效果与 Windows 版本差异较大。可通过以下命令全局禁用(需重启生效):

defaults -currentHost write -g AppleFontSmoothing -int 0

翻译与开发

  • 翻译 由社区贡献,使用 Crowdin 平台管理。如需贡献缺失语言,可在 Crowdin 上发起讨论。
  • 开发环境 主要使用 QtCreatorMicrosoft Visual C++ (msvc) 编译器,当前支持 Qt 6.5。较旧 Qt 版本可能兼容但未测试。项目已在多种 Linux 发行版和 macOS 上成功构建。
  • 许可证:代码基于 GNU 通用公共许可证第 3 版 (GPLv3) 发布。

许可证

本项目代码在 GNU General Public License v3 许可下发布。

6. Doom Captcha (2021) (vivirenremoto.github.io)

Doom Captcha (2021) 项目总结

Doom Captcha 是一个基于经典游戏《Doom》的验证码项目,创建于2021年,旨在提供一种趣味性的验证码体验。项目最初在周末构思并开发,随后在 Product Hunt 平台上发布并获得高度关注。

主要功能与结构

  • 验证码形式:通过游戏化方式验证用户,玩家需在《Doom》风格界面中击杀敌人以完成验证。
  • 参数配置
    • countdown:启用或禁用倒计时(on/off)。
    • label:验证码前的文本标签(可为空)。
    • enemies:需击杀的敌人总数(默认为4)。
  • 作弊码(彩蛋):仅在桌面模式下有效,输入 iddqd 可立即完成验证码,输入 idkfa 可解锁超级霰弹枪。
  • 代码示例:提供了一个简单的 HTML 表单代码示例,可能用于取消订阅功能,但核心验证码逻辑未完整展示。

技术实现

  • 源代码:项目开源在 GitHub 上,欢迎开发者通过 pull requests 贡献或 fork 项目。
  • 最后更新:2021年5月30日。
  • 安全提醒:开发者注明项目仅为娱乐用途,如果具备编程知识,验证码的安全性容易被破解。

社区贡献与反响

  • 贡献者:列出了多位贡献者,包括 Jelle Witteveen(JS 优化)、Steve(修正拼写错误)、Adam Stachowicz(代码格式化和图像优化)、Lee Reilly(修正拼写错误)、makc(原始《Doom》游戏背景)和 Jaap Brasser(idkfa 作弊码)。
  • 成就:在 Product Hunt 上成为当日排名第一的产品,获得大量正面反馈。
  • 名人认可:2021年5月26日,《Doom》创造者 John Carmack 对该项目表示喜欢。

作者信息

  • 作者在周末快速开发并发布项目,希望借此展示创意开发能力,并鼓励用户查看其其他项目。
  • 项目目的是带来怀旧感和娱乐性,作者感谢社区的积极回应。
7. You can't leak users' data if you don't hold it (seancoates.com)

这篇文章主要讲述了Matter应用的核心隐私保护理念及技术实现,其核心理念是:“不持有用户数据,就无法泄露它”。文章从作者作为前技术副总裁的视角,阐述了团队如何将隐私作为产品设计的基石。

背景与原则确立

  • 作者在开发初期对收集敏感个人数据(如情绪评分、私人照片)提出质疑,促使团队将“用户隐私”确立为核心价值观。
  • 确立了三条核心原则:1)通过透明度和可验证性建立用户信任;2)保护用户免受因公司自身失误(如代码漏洞)导致的数据泄露;3)抵御未来潜在的强制性数据索取(如被恶意收购或政府胁迫)。

具体技术实现

  • 数据最小化与本地化:私密数据(如情绪评分、记忆内容、原始照片)仅存储在用户设备上(通过Apple的Core Data和加密iCloud同步),服务器端永不接收或存储这些原始私密信息。
  • 加密存储与匿名化:用户添加的图片等资产在设备上加密后再上传至服务器存储,服务器只能看到无法解读的加密数据(二进制密文)。应用甚至不知道照片的具体内容。
  • 不建立用户身份关联:目前不强制用户注册账户或提供邮箱,不关联用户身份。服务器仅通过编号账户识别用户,即使团队也无法将数据与特定个人对应。
  • 有限的数据处理:服务器仅接收非私密的衍生数据或聚合指标(如“记忆评分”),且无法反向推导出原始输入。例如,服务器只知道某记忆的评分为600,但不知道构成该评分的具体情绪等级。

优势与代价

  • 优势:从根本上杜绝了因公司失误或外部胁迫导致的用户隐私泄露风险。
  • 代价:由于服务器不持有用户数据,无法提供基于身份的数据恢复服务(如密码重置、数据找回)。数据丢失后无法恢复,用户必须自行通过应用的本地备份功能进行保护。

未来展望

  • 团队计划发布相关开源工具,并正在探索如何安全地协助用户存储备份(在不访问其内容的前提下),计划在测试版结束前完善此功能。
  • 尽管技术实现极具挑战,但作者认为这种以隐私为核心的设计理念是正确且富有价值的。

(注:作者已于2024年10月离职,本文仅代表其在职时的设计哲学与实践。)

8. Jamba: Production-grade Mamba-based AI model (www.maginative.com)

AI21 Labs发布了Jamba,这是全球首个基于创新性Mamba架构的生产级AI模型。当前主流模型如GPT、Gemini和Llama多采用Transformer架构,而Jamba结合了Mamba结构化状态空间模型(SSM)与传统Transformer架构的优势,通过混合专家(MoE)层在推理时仅调用其52B参数中的12B,实现高效性能。

Jamba具备256K令牌的上下文窗口,相当于约210页文本,在单个80GB GPU上可容纳140K令牌。相比Meta的Llama 2(32K令牌窗口),Jamba能够处理更长文本且保持高吞吐量和效率。其在长上下文处理任务上,比同规模的Transformer模型(如Mixtral 8x7B)吞吐率提升3倍。

模型结构上,Jamba采用混合架构,由Transformer、Mamba和MoE层组成,并优化内存、吞吐量与性能。具体为块与层的结构,每个Jamba块包含一个注意力或Mamba层,后接多层感知机(MLP),整体实现每八层中有一层是Transformer层。这种设计最大化了单GPU上的模型质量和效率,保留了足够内存以适应常见推理工作负载。

Jamba在各类基准测试中表现突出,匹配甚至超过同规模的先进模型。模型已开放权重,采用Apache 2.0许可证,用户可在Hugging Face获取,也将通过NVIDIA API目录(NVIDIA NIM推理微服务)和NVIDIA AI Enterprise平台部署,便于企业开发者应用。

当前Jamba为研究版,尚未具备商业应用所需的安全保障,AI21 Labs计划未来数周内推出精调及更安全版本。Jamba白皮书已发布,未来随着新架构探索和优化,AI模型的性能、效率与可用性有望持续提升。

9. Group buys up large tracts of land in Romania to create 'European Yellowstone' (english.elpais.com)

一个由环保慈善家支持的团体正在罗马尼亚的喀尔巴阡山脉购买大片土地,旨在建立一个类似“欧洲黄石公园”的巨型保护区。该地区拥有欧洲重要的野生动物生态系统,包括狼、棕熊、猞猁和海狸,并且已重新引入野牛。基金会已购得27,027公顷土地,并计划扩大至200,000公顷,同时开展重新造林工作。然而,项目面临来自当地社区和伐木利益集团的阻力,部分居民对意图持怀疑态度。基金会通过创造就业、发展生态旅游和保护措施(如设立猎人协会以打击偷猎)来争取支持,并计划最终将土地捐赠给国家,条件是建立一个既保护自然又促进经济发展的国家公园。

10. Ross Anderson has died (alecmuffett.com)

Ross Anderson的离世令人痛心。作者Andy Farnell回忆,Ross是其工作中持续的鼓励者,让他感到有人真正理解其工作的意义。Ross深刻理解公民网络安全的重要性,认为数字安全、隐私和自主权是每位普通人在日常生活中应享的基本权利,而这不仅是企业或政府的责任,也需要公众的主动参与。

Ross的工作对作者的网络安全课程和安全思考产生了深远影响。他将“安全工程”确立为一个严肃、可量化、可复制的学科。Ross为人慷慨,观点真诚,并通过与出版商协商,将早期著作完整上线,践行开放出版,为学界树立了榜样。他领导剑桥团队在安全领域做出了富有社会意义的研究,在相对枯燥的学术环境中成为一道亮光。

作者与Ross曾计划在爱丁堡会面共饮威士忌,如今却无法实现。最后,作者向Ross的家人表达了诚挚的慰问。

11. Blue Ball Machine (blueballfixed.ytmnd.com)

该内容呈现的是一个YTMND网站页面的HTML结构片段,但页面标题、作者、描述及媒体资源(前景、背景、声音)等关键字段均为空白。从导航元素和字段设置可看出,这是YTMND站点的个人资料或内容发布页面的模板框架,但实际的具体内容缺失。

12. Deep Learning in JavaScript (github.com)

JS-PyTorch 库摘要

JS-PyTorch 是一个完全从头构建的 JavaScript 深度学习库,其语法紧密模仿 PyTorch。该库利用 GPU.js 实现了 GPU 支持。

主要特性

  • 已实现的张量操作:包括加减乘除、矩阵乘法、平方根、指数、对数、求和、均值、方差、转置、索引、掩码填充、重塑等。
  • 已实现的深度学习层:涵盖 nn.Linearnn.MultiHeadSelfAttentionnn.FullyConnectednn.Blocknn.Embeddingnn.PositionalEmbeddingnn.ReLUnn.Softmaxnn.Dropoutnn.LayerNormnn.CrossEntropyLoss

安装与使用

  • 通过 npm install js-pytorch 进行本地安装。
  • 支持在浏览器中使用,通过引入 CDN 脚本标签即可。
  • 提供 Node.js 和浏览器环境下的代码示例,展示自动求导(Autograd)功能。
  • 包含一个复杂的 Transformer 解码器构建与训练示例,演示了自定义模块、损失函数、优化器及训练循环。
  • 支持模型保存(torch.save)与加载(torch.load),使用 JSON 格式。

开发与分发

  • 使用 npm run build 构建分发版本,输出 CJS、ESM 模块和 TypeScript 声明文件。
  • 集成 ESLint(npm run lint)、Prettier(npm run prettier)进行代码检查与格式化。
  • 包含测试(npm test)和性能基准测试(npm run bench)。

未来工作

  • 目前库的优化程度不及 PyTorch,但旨在提高可解释性。
  • 效率改进计划进行中,并欢迎社区通过向 develop 分支提交合并请求来参与贡献。
13. The rev.ng decompiler goes open source (rev.ng)

rev.ng 反编译器开源及重要更新公告

rev.ng 项目宣布其反编译引擎(后端 revng-c)现已完全开源。同时发布了一系列新进展,包括新网站、文档、云端入口 rev.ng Hub,并即将启动用户界面(UI)的封闭测试。

核心发布内容

  1. 反编译引擎开源:后端 revng-c 开源,意味着整个反编译流程现已开源。
  2. 新网站与文档:发布新官网及初始使用文档。
  3. 云端平台与封闭测试
    • rev.ng Hub 上线,作为云端版本入口,用户可在浏览器中创建项目并协作。
    • UI 封闭测试即将启动,将通过 Newsletter 订阅顺序邀请用户。
  4. 寻求演示:开始接受私有演示的咨询。

如何试用 rev.ng

  • CLI 安装与使用:通过提供的脚本一键安装,无需 root 权限。可以编译简单 C 程序并使用 revng artifact 命令进行反编译,输出为 C 代码。
  • UI 体验:需订阅 Newsletter 以进入封闭测试等待名单。本次测试旨在展示 UI 及反编译在二进制文件上的效果,并收集反馈。

rev.ng 的设计目标与功能

  1. 自动数据结构恢复:通过“数据布局分析”过程,能自动恢复结构体布局(如数组大小、指针字段),并生成语法正确的 C 代码。此功能已可用。
  2. 现代化用户体验
    • UI 基于 VSCode,支持浏览器与独立应用。
    • 提供快捷键操作(如跳转定义、重命名、编辑类型),并支持交互式编辑,仅重新计算受影响部分。
    • 目前处于封闭测试阶段。
  3. 协作逆向工程:UI 采用客户端-服务器架构,允许多用户同时操作同一项目。云端版本提供类 GitHub 的项目管理界面。此功能可用,但用户体验仍在优化中。
  4. 广泛的平台支持
    • 利用 QEMU 的前端将可执行代码提升(lift)为中间表示,再转换为 LLVM IR 进行处理,从而相对容易地支持 QEMU 所支持的所有架构。
    • 支持 x86, x86-64, ARM, AArch64, MIPS, s390x 等架构(成熟度不一),以及 ELF, PE/COFF, Mach-O 等二进制格式。主要 QA 集中在 Linux x86-64 上。
  5. 可扩展性
    • 项目文件(model)为 YAML 文档,易于脚本化。
    • 提供 Python 和 TypeScript 包装器用于操作模型,但完整的分析执行和结果获取 API 仍在开发中。
    • 可与 LLVM 生态系统工具(如 KLEE、fuzzer)及 clang 静态分析器集成。

版本、许可与路线图

  • 开源与版本
    • rev.ng 框架完全开源(交互式 UI 除外)。
    • CLI 反编译完全免费。
    • UI 提供方式
      • 云端免费版:用于公共项目。
      • 云端订阅版:用于私有项目。
      • 独立许可证版:可离线使用。
  • 云端服务:后端运行在 rev.ng 的云上,用户可通过 Hub 创建和管理项目。
  • 路线图
    • Tier 1:已完成(Alpha 版本)。
    • Tier 2:已开始(Beta 版本,向 Newsletter 订阅者开放云端访问)。
    • Tier 3:即将推出(开放测试)。
    • Tier 4:未来推出(1.0 正式版)。

联系与关注方式

项目通过 X/Twitter、Discord、Discourse 论坛、GitHub、月度新闻通讯和电子邮件提供更新与支持。

14. Vultr Just Betrayed Us (mwl.io)

Vultr云服务商近期更新的服务条款(ToS)引发了用户强烈反对,被作者称为一种"背叛"。核心争议在于新条款要求用户授予Vultr对用户内容广泛、永久、不可撤销的许可权,允许其使用、复制、修改、分发甚至商业化这些内容,而无需额外同意、通知或补偿。作者指出,尽管条款声称用户仍拥有内容所有权,但细读许可条款实质上是将内容的全面控制权交给了Vultr,这种做法在其他托管公司中未见先例。

作者明确表示不会同意新条款,并已着手迁移服务。由于不依赖控制台访问,迁移可直接进行,无需被迫同意新条款。作者建议其他Vultr用户也采取相同措施,通过联系页面明确拒绝条款,并可通过特定页面取消服务(即使未登录)。

此外,作者正在积极寻找能够支持自定义安装FreeBSD和OpenBSD的替代托管服务商。

15. Is the Sun Conscious? (2021) [pdf] (www.sheldrake.org)

本文探讨了“太阳是否具有意识”这一问题,主要从泛心论、整合信息理论(IIT)和电磁场意识理论等哲学与科学角度展开分析。

核心观点

文章认为,在泛心论和有机体自然哲学的框架下,太阳作为高度复杂的自组织系统,有可能具备意识或经验。其复杂的电磁活动可能是意识体验的物理基础。

关键论据与理论

  1. 泛心论复兴:现代泛心论者(如Galen Strawson、Philip Goff)认为,意识或经验并非人脑独有,而是存在于原子、细胞等自组织系统的根本层面。
  2. 整合信息理论(IIT):该理论提出,意识水平由系统内部信息的整合程度(以Φ值衡量)决定。太阳具有高度复杂和自关联的电磁场,可能满足高Φ值的条件,尽管目前无法实际计算。
  3. 电磁场意识理论:多项理论(如McFadden的Cemi理论、Murphy的磁论点)主张,大脑的电磁场本身就是意识或意识载体。太阳拥有极其复杂、贯穿整个日球层的电磁场,这种场天然是整合性的,可能充当其“意识界面”。

太阳作为意识系统的特征

  • 电磁复杂性:太阳是由等离子体构成的动态电磁系统,其磁场延伸至整个太阳系,存在11年活动周期、日冕物质抛射等复杂现象。
  • 信息整合:太阳通过全球性电磁场整合内部(如米粒组织、超米粒组织)和外部(如行星、太阳风边界)的信息。
  • 功能推测:若太阳有意识,其意识可能关乎自我身体的调节(如调控黑子、耀斑)、通过电磁活动影响太阳系,并可能通过电磁辐射与其他恒星系统交流。

相关假说

  • 恒星意志假说(Matloff):恒星可能通过定向喷流主动调整在星系中的位置。
  • 恒星捕食者假说(Vidal):某些双星系统中,一颗星可能主动“捕食”另一颗星。

结论与意义

虽然机械唯物主义认为太阳无意识,但泛心论和IIT等理论为思考太阳意识提供了替代框架。此讨论将意识研究从人脑扩展至宇宙尺度,挑战了传统世界观,并可能推动对宇宙电磁网络与意识关系的新探索。

16. Monogon: A Linux userland in pure Go (github.com)

Monogon: 纯Go实现的Linux用户态环境

项目概览

  • 项目名称:Monogon Platform
  • 核心内容:Monogon OS的源代码仓库,一个用纯Go语言编写的Linux用户态环境
  • 项目状态:预发布软件阶段
  • 社区支持:提供Matrix(#monogon-os-community:matrix.org)和Discord交流渠道

开发环境要求

构建环境自包含,仅需以下基本依赖:

  1. 操作系统:Linux机器或虚拟机
  2. 构建工具:Bazelisk ≥ v1.15.0(或可用的Nix环境)
  3. 版本控制:git(用于检出模块)
  4. Python:python3(用于生成工作空间状态)
  5. 内核要求:较新版本的内核,建议启用用户命名空间以获得更好性能
  6. 硬件支持:可访问/dev/kvm的工作KVM(用于运行测试)

文档假设Bazelisk已作为bazel添加到PATH环境变量中,详细设置说明参见SETUP.md

代码结构与文档

  • 主代码位置//metropolis目录(Metropolis为Monogon OS的代号)
  • 开发者文档
    • 快速入门指南://metropolis/README.md
    • 用户文档:Monogon OS Handbook
18. The Great Migration from MongoDB to PostgreSQL (infisical.com)

Infisical平台因快速增长(每日处理超5000万条密钥)及用户对自托管需求的增加,决定将数据库从MongoDB迁移至PostgreSQL。

迁移原因:

  • MongoDB的不足

    • 事务支持复杂,需集群模式配置,不利于简化自托管。
    • 缺乏关系型数据库特性(如CASCADE),导致数据清理困难,产生残留数据。
    • 云服务商提供的MongoDB版本不一致,因许可证变更导致功能支持受限。
    • 用户对MongoDB运维不熟悉,增加了支持成本。
  • 选择PostgreSQL的原因

    • 原生支持事务和关系特性,简化数据管理。
    • 开源、社区成熟,且主流云厂商均提供托管服务,降低自托管门槛。
    • 通过综合评估集成存储(如SQLite)与外部存储后,认为PostgreSQL的生态和扩展性更优。

技术选型与规划:

  • 放弃ORM,选用Knex.js查询器,以平衡SQL控制与TypeScript支持。
  • 迁移策略:允许读操作,暂停写操作以保证数据一致性;使用LevelDB存储MongoDB与PostgreSQL间的标识映射;逐表迁移数据。

迁移执行与结果:

  • 通过邮件和应用内通知提前告知用户,进行多轮测试与演练。
  • 在6小时迁移窗口内完成数据转移,成功切换DNS,实现零数据丢失。
  • 迁移后收益:
    • 性能提升,查询优化使数据库成本降低50%。
    • 数据验证更严格,减少一致性问题。
    • 自托管更便捷,无需配置集群即可支持事务。

整个迁移历时3-4个月,提升了平台可靠性与用户体验。

19. Why are so many people being hit with £5 fines for 'counterfeit' stamps? (www.thisismoney.co.uk)

近年来,英国皇家邮政频发对使用“假邮票”的邮件收取5英镑罚款的事件,引发众多用户不满。自两年前推行带条码的新邮票(可追溯并提高安全性)以来,许多用户通过官方“邮票兑换计划”将旧邮票换成新条码邮票,但在寄送邮件后,收件人却被要求支付罚款,理由是邮票系“伪造”。罚款金额高达5英镑,远超过邮票本身价值。

典型案例显示,部分被标记为“假”的邮票实际来自皇家邮政官方兑换,甚至经邮票专家鉴定为真品。例如,用户托尼·马塞拉收到朋友寄来的贺卡后被罚5英镑,而朋友使用的邮票正是通过官方兑换计划获得。另一用户帕姆·詹姆斯也因收到类似邮件被罚,她认为邮票无明显异常。

对此,皇家邮政强调其邮票发行和兑换流程安全可控,并建议用户若认为误罚,可将信封连同邮票寄回调查。但用户普遍质疑:官方渠道获得的邮票为何被判定为伪造?是否因扫描设备故障或生产环节出错?尽管皇家邮政未公布罚款总数及调查计划,但此问题已导致用户对邮政系统信任度下降,部分人转向虚拟贺卡。

22. Arraymancer – Deep Learning Nim Library (github.com)

Arraymancer:基于 Nim 的深度学习库概述

核心定位 Arraymancer 是一个用 Nim 语言编写的 N维张量(ndarray)库,旨在为科学计算生态系统提供一个快速、易用的 CPU、CUDA 和 OpenCL 张量基础。其设计灵感来源于 NumPy 和 PyTorch,主要面向以下场景:

  • 数值计算(N维数组/张量)。
  • 机器学习算法(如 Scikit-learn 中的最小二乘法、PCA、分类器、回归器、聚类算法等)。
  • 深度学习。

关键特性与组件

  1. 张量操作:支持基本的数学运算、矩阵代数(矩阵乘法等)、高效的切片(含范围与步长)、广播(使用显式操作符 +.)、丰富的形状变换(连接、重塑、分割、转置等),并支持最多6维的张量。
  2. 后端支持
    • CPU:功能最完整。
    • CUDAOpenCL:为 GPU 加速提供支持,但功能目前不及 CPU 张量丰富。
    • 可通过编译标志(如 -d:cuda, -d:openmp)启用。
  3. 深度学习框架
    • 提供自动求导上下文和基于层(如 Linear, Conv2D, GRULayer)的网络定义语法。
    • 示例涵盖全连接网络、卷积神经网络(用于手写数字识别)和循环神经网络(用于序列分类)。
    • 模型可以组合,自定义层也是可行的。
  4. 数据 IO:支持读写 .csv、NumPy (.npy) 和 HDF5 文件。
  5. 依赖与分布:库本身几乎无依赖,最终二进制文件主要依赖 BLAS/LAPACK 库(如 OpenBLAS、MKL),适合部署到资源受限设备。
  6. 性能:得益于 Nim 的编译速度,开发迭代快;可通过链接 Intel MKL、OpenBLAS 等加速计算。

安装要求

  • 需要 Nim 环境(推荐通过 choosenim 安装)。
  • 必须安装 BLAS 和 LAPACK 库:
    • Windows:需下载 OpenBLAS 或单独的 BLAS/LAPACK DLL 并放入路径。
    • macOS:使用内置的 Apple Accelerate Framework。
    • Linux:通过包管理器安装 libopenblasliblapack
  • 使用 nimble install arraymancer 安装库本身。

优势与目标 作者提出 Arraymancer 旨在解决当前科学计算和深度学习生态中的一些痛点:

  • 提供一种 兼具 Python 般易用性和 C 般性能 的语言选择。
  • 实现 从研究原型到生产部署的平滑过渡,避免“两次编码”(如 Python 原型化,再用 C++ 重写)。
  • 模型可打包为近乎独立的可执行文件,易于分发和部署,包括在移动端和嵌入式设备上。

未来方向 目标包括成为深度学习视频处理的首选工具,支持更多后端(如 WebAssembly、Apple Metal),并探索在 FPGA 等硬件上的应用。

23. The Next Big Step in Mojo Open Source (www.modular.com)

Modular公司宣布,将Mojo标准库的核心模块以Apache 2许可证(包含LLVM例外)开源,进一步推进Mojo语言的开放战略。公司认为开源能让社区反馈塑造Mojo的发展,提升其设计与功能。从2023年5月起,Mojo持续迭代改进,公司认为让语言和其基础设施在开源社区协作下发展会取得更优成果。

与仅开放源代码但不接受社区贡献的做法不同,Modular 希望建立真正开放、活跃的开发社区。实际措施包括:公开标准库的代码变更历史、发布Mojo编译器的每夜构建版本、开设公开CI、允许外部开发者通过GitHub Pull Request参与。这些流程搭建成本高,但被认为对社区规模增长至关重要。

许可方面,公司选用Apache 2.0许可证并加入LLVM例外条款。这样既保留了Apache 2.0附带的专利授权,便于被广泛使用,又解决了与GPL2兼容性及署名要求等问题。公司鼓励Mojo及相关项目采用同样模式,认为其代表了面向语言和工具的先进开源许可做法。

目前公开的Mojo标准库核心模块仍处于快速开发和演进阶段,开源是一个起点,未来还将开放更多代码,包括Mojo其它部分以及MAX平台。贡献者可以在Mojo GitHub的nightly分支中根据README.md操作,文档涵盖开发、贡献、风格、愿景、治理及FAQ等指南。对于重大贡献者,公司还将赠送周边等福利。

Mojo编译器每日构建(nightly build)现已开放,便于开发者在第一时间用最新编译器测试对标准库的贡献,并对上游变化进行实时检验。随时间推进,每夜构建服务将覆盖MAX平台。公司还同步开放了标准库的版本控制历史,增加透明度,便于开发者理解功能演变过程。

注册链接、开发文档等资源均在标准库仓库README指引。公司鼓励开发者参与贡献,并通过Discord及GitHub反馈意见,共同推动Mojo及其生态发展。

24. Show HN: Spice.ai – materialize, accelerate, and query SQL data from any source (github.com)

Spice.ai:构建数据驱动AI应用的开源SQL查询与推理引擎

概述

Spice.ai 是一个使用 Rust 编写的便携式、加速型 SQL 查询、搜索和 LLM 推理引擎,专为数据驱动的 AI 应用和代理设计。它可以作为应用程序旁的 sidecar 运行,或扩展到多节点分布式集群,在 localhost 提供毫秒级数据和 AI 访问,无需额外数据管道。

核心目标

  • 快速构建:在几分钟内(而非数月)构建数据驱动的 AI 应用和代理。
  • 简单集成:无需复杂的数据管道或粘合代码,仅通过 SQL、搜索和推理即可实现数据联邦、本地加速和 localhost 服务。

核心特性

  1. 本地低延迟:通过在每个 Pod 的沙盒化工作集上执行查询,实现毫秒级响应;长尾请求透明委派给分布式集群。
  2. 技术栈先进:基于 Rust 构建,利用 Apache DataFusion、Ballista、Arrow、Iceberg、DuckDB 等开源基础设施。
  3. 分布式查询:采用 Apache Ballista 架构,支持多活动调度器,通过对象存储协调,性能优于单节点 DataFusion 和 Spark。
  4. 高性能加速:Spice Cayenne 数据加速器在 Vortex 格式上实现,比 DuckDB 更快、内存占用更低,随机访问速度远超 Parquet。
  5. 大规模混合搜索:支持 Amazon S3 Vectors、Tantivy BM25、DuckDB HNSW、Elasticsearch kNN 等多种向量引擎,通过单个 SQL 查询实现混合搜索与重排序。
  6. AI 原生运行时:提供 OpenAI 兼容 API、MCP 服务器/网关、LLM 记忆、NSQL 文本到 SQL 转换、多向量嵌入等功能。
  7. 广泛数据连接:支持 30 多种数据源连接器,包括 PostgreSQL、MySQL、Snowflake、Databricks、Iceberg、S3、Spark 等,并支持查询下推。
  8. 实时 CDC:原生支持 PostgreSQL WAL 流和 DynamoDB Streams,无需 Debezium 或 Kafka。
  9. 表格式支持:通过标准 SQL 插入操作支持 Apache Iceberg 的查询、加速和写入,保证 ACID 事务。
  10. 企业就绪:支持 HashiCorp Vault、Azure Key Vault、mTLS、只读 API 密钥、OpenTelemetry 可观测性等。

架构亮点

  • 集群-Sidecar 架构:每个应用拥有一个完整的 localhost 数据平面,轻量级 sidecar 提供本地服务,长尾请求委派给中央集群。
  • 数据沙盒隔离:sidecar 仅能访问声明的数据集,应用仅持有 sidecar 令牌而非数据源凭证。
  • 多级延迟优化:结果缓存(微秒级)→ 本地工作集(毫秒级)→ 集群委派(分布式)。
  • 多租户支持:可为每个租户或代理运行独立的 Spice 实例,实现数据集、加速器、密钥和策略的沙盒化。

应用场景

  1. 数据驱动的代理 AI 应用:集成 OpenAI 兼容网关、联邦数据访问、搜索与 RAG、LLM 记忆与可观测性。
  2. 数据库 CDN 与查询网格:协同定位加速、弹性恢复、响应式仪表板、遗留系统现代化。
  3. 多租户 AI 代理:通过轻量级运行时实现每个代理的独立数据环境。
  4. 检索增强生成:在 SQL 中实现混合搜索、语义知识层和文本到 SQL 转换。

快速开始

  1. 通过命令行工具安装 Spice CLI。
  2. 初始化 Spice 应用并启动运行时。
  3. 添加示例 Spicepod(包含数据表配置)。
  4. 启动 SQL REPL 查询数据。

部署方式

  • 本地开发:单二进制文件或容器运行。
  • 容器化:支持 Docker 和 Helm(Kubernetes)部署。
  • 分布式集群:基于 Apache Ballista 的多节点集群,调度器通过对象存储协调。

总结

Spice.ai 是一个功能全面的开源引擎,将数据查询、搜索和 AI 推理统一在一个运行时中,支持从边缘到云的灵活部署。其性能优势、广泛的数据源连接和 AI 原生特性,使其成为构建高效数据驱动应用的强大工具。