2023年10月

马斯克希望 X 接管用户全部财务活动,超越微信

在埃隆·马斯克入主 X 公司一年后,这个前身名为 Twitter 的平台的财务状况仍不稳定,但持续的资金问题并没有阻止马斯克继续推进将 X 转变为银行的计划。在财报电话会议上,马斯克告诉 X 的员工,他预测 X 的支付系统将于 2024 年底推出,这将包括用户的“整个财务活动”,用户将“不再需要银行账户”。作为 PayPal 的联合创始人之一,马斯克重申,他对 X 的计划是全面实现他最初在 2000 年为 PayPal 写的路线图。马斯克说,他努力将 Twitter 打造成一个无所不能的应用程序,有朝一日将超过中国的微信。

消息来源:Ars Technica
老王点评:即便有珠玉在前,也未必能实现。

近 80% 的开发人员在考虑换工作

根据 Stack Overflow 的一份调查,与过去两年相比,现在有更多的开发人员正在寻找或愿意接受新工作。超过 1000 名开发人员参加了该调查,79% 的人即使没有积极寻找,也至少在考虑新的机会。更好的薪水是他们寻找新工作的首要原因。其次是对其他公司的好奇心,如新技术和发展机会。此外,8% 的开发人员已退出技术行业,越来越多地在制造和供应链公司任职。

消息来源:Stack Overflow
老王点评:IT 行业的“活力”也体现在频繁换工作方面。

印度 Infosys 联合创始人呼吁年轻人每周工作 70 小时

Infosys 联合创始人、前 CEO 纳拉亚纳·穆尔西 Narayana Murthy 在接受采访时表示,他认为印度拥有巨大的经济潜力,但其生产率仍然很低。他要求年轻人必须说“这是我的国家,我想每周工作 70 小时”,他要求印度所有优秀青年“在未来 20 年、50 年(无论长短)每天工作 12 小时,使印度成为国内生产总值排名第一或第二的国家。”具有讽刺意味的是,Infosys 最近报告称,其员工利用率目前为 81.8%,还不到 70 小时的一半。

消息来源:The Register
老王点评:天下老板的想法都是一样(黑)的。

KDE Plasma 6 进行了一些修改,需要小部件作者进行调整。开发人员,移植时间到了!

KDE Plasma 6 是备受期待的桌面环境版本升级版本。

最近,其发布时间表公布,第一个 Alpha 版本将于 2023 年 11 月 8 日上线,最终 Beta 版本于 2023 年 1 月 31 日上线,稳定版计划于 2024 年 2 月 28 日上线。

考虑到 KDE Plasma 5.x 系列包含多项改进和功能添加,许多用户对 KDE Plasma 6 带来的功能感到期待。

如果你好奇,我们已经介绍了 KDE Plasma 6 的主要变化。因此,它会发生重大变化也就不足为奇了。

然而,在进行重大修改后,可能会出现一些破坏体验的改动,例如无法在 Plasma 6 上运行任何旧版小部件。

给小部件开发者的移植通知

在 KDE 的 Nate Graham 最近发表的一篇 博客文章 中,向 Plasma 5 小部件作者发出了正式的警告。

其重点指出的信息是:

你需要将你的小部件移植到更新的 API,以使它们与 Plasma 6 兼容!

Plasma 小部件 API 已随着即将发布的版本进行了修改。而且,为了适应这种变化并保持运行,小部件开发人员必须将他们的创作移植到更新的 API。

如果开发人员不移植小部件以使用更新的 API,它将无法在 KDE Plasma 6 中运行。

当然,流行的小部件开发人员很可能会进行移植。但是,如果你使用的小部件虽然还能使用,但没有积极维护,那么你将不得不在 KDE Plasma 6 中放弃它。

他们已提供了一份 移植指南 供开发人员遵循。

你可以在 “Plasma 6 扩展” 下找到与 Plasma 6 兼容的小部件。在撰写本文时,只能看到列出了两个第三方小部件。

因此,当你喜欢的小部件被移植到 KDE Plasma 6 并由相关开发者上传后,你就会发现它们的踪迹。

? 你期待移植哪些 KDE 小部件? 你认为你会错过某些不再维护的小部件吗?在下面的评论中分享你的想法。


via: https://news.itsfoss.com/kde-plasma-6-widgets/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

最近,我首次尝试了 Mac。直至现在,我注意到的最大缺点是其软件包管理比 Linux 差很多。一段时间以来,我对于 homebrew 感到相当不满,因为每次我安装新的软件包时,它大部分时间都花在了升级上。于是,我萌生了试试 nix 包管理器的想法!

公认的,nix 的使用存在一定困惑性(甚至它有自己单独的编程语言!),因此,我一直在努力以最简洁的方式掌握使用 nix,避开复杂的配置文件管理和新编程语言学习。以下是我至今为止学习到的内容, 敬请期待如何进行:

  • 使用 nix 安装软件包
  • 为一个名为 paperjam 的 C++ 程序构建一个自定义的 nix 包
  • 用 nix 安装五年前的 hugo 版本

如同以往,由于我对 nix 的了解还停留在入门阶段,本篇文章可能存在一些表述不准确的地方。甚至我自己也对于我是否真的喜欢上 nix 感到模棱两可 —— 它的使用真的让人相当困惑!但是,它帮我成功编译了一些以前总是难以编译的软件,并且通常来说,它比 homebrew 的安装速度要快。

nix 为何引人关注?

通常,人们把 nix 定义为一种“声明式的包管理”。尽管我对此并不太感兴趣,但以下是我对 nix 的两个主要欣赏之处:

  • 它提供了二进制包(托管在 https://cache.nixos.org/ 上),你可以迅速下载并安装
  • 对于那些没有二进制包的软件,nix 使编译它们变得更容易

我认为 nix 之所以擅长于编译软件,主要有以下两个原因:

  • 在你的系统中,可以安装同一库或程序的多个版本(例如,你可能有两个不同版本的 libc)。举个例子,我当前的计算机上就存在两个版本的 node,一个位于 /nix/store/4ykq0lpvmskdlhrvz1j3kwslgc6c7pnv-nodejs-16.17.1,另一个位于 /nix/store/5y4bd2r99zhdbir95w5pf51bwfg37bwa-nodejs-18.9.1
  • 除此之外,nix 在构建包时是在隔离的环境下进行的,只使用你明确声明的依赖项的特定版本。因此,你无需担心这个包可能依赖于你的系统里的其它你并不了解的包,再也不用与 LD_LIBRARY_PATH 战斗了!许多人投入了大量工作,来列出所有包的依赖项。

在本文后面,我将给出两个例子,展示 nix 如何使我在编译软件时遇到了更小的困难。

我是如何开始使用 nix 的

下面是我开始使用 nix 的步骤:

  • 安装 nix。我忘记了我当时是如何做到这一点,但看起来有一个官方安装程序 和一个来自 zero-to-nix.com非官方安装程序。在 MacOS 上使用标准的多用户安装卸载 nix 的 教程 有点复杂,所以选择一个卸载教程更为简单的安装方法可能值得。
  • ~/.nix-profile/bin 添加到我的 PATH
  • nix-env -iA nixpkgs.NAME 命令安装包
  • 就是这样。

基本上,是把 nix-env -iA 当作 brew install 或者 apt-get install

例如,如果我想安装 fish,我可以这样做:

nix-env -iA nixpkgs.fish

这看起来就像是从 https://cache.nixos.org 下载一些二进制文件 - 非常简单。

有些人使用 nix 来安装他们的 Node 和 Python 和 Ruby 包,但我并没有那样做 —— 我仍然像我以前一样使用 npm installpip install

一些我没有使用的 nix 功能

有一些 nix 功能/工具我并没有使用,但我要提及一下。我最初认为你必须使用这些功能才能使用 nix,因为我读过的大部分 nix 教程都讨论了它们。但事实证明,你并不一定要使用它们。

我不去深入讨论它们,因为我并没真正使用过它们,而且网上已经有很多详解。

安装软件包

nix 包在哪里定义的?

我认为 nix 包主仓库中的包是定义在 https://github.com/NixOS/nixpkgs/

你可以在 https://search.nixos.org/packages 查找包。似乎有两种官方推荐的查找包的方式:

  • nix-env -qaP NAME,但这非常缓慢,并且我并没有得到期望的结果
  • nix --extra-experimental-features 'nix-command flakes' search nixpkgs NAME,这倒是管用,但显得有点儿冗长。并且,无论何种原因,它输出的所有包都以 legacyPackages 开头

我找到了一种我更喜欢的从命令行搜索 nix 包的方式:

  • 运行 nix-env -qa '*' > nix-packages.txt 获取 Nix 仓库中所有包的列表
  • 编写一个简洁的 nix-search 脚本,仅在 packages.txt 中进行 grep 操作(cat ~/bin/nix-packages.txt | awk '{print $1}' | rg "$1"

所有的东西都是通过符号链接来安装的

nix 的一个主要设计是,没有一个单一的 bin 文件夹来存放所有的包,而是使用了符号链接。有许多层的符号链接。比如,以下就是一些符号链接的例子:

  • 我机器上的 ~/.nix-profile 最终是一个到 /nix/var/nix/profiles/per-user/bork/profile-111-link/ 的链接
  • ~/.nix-profile/bin/fish 是到 /nix/store/afkwn6k8p8g97jiqgx9nd26503s35mgi-fish-3.5.1/bin/fish 的链接

当我安装某样东西的时候,它会创建一个新的 profile-112-link 目录并建立新的链接,并且更新我的 ~/.nix-profile 使其指向那个目录。

我认为,这意味着如果我安装了新版本的 fish 但我并不满意,我可以很容易地退回先前的版本,只需运行 nix-env --rollback,这样就可以让我回到之前的配置文件目录了。

卸载包并不意味着删除它们

如果我像这样卸载 nix 包,实际上并不会释放任何硬盘空间,而仅仅是移除了符号链接:

$ nix-env --uninstall oil

我尚不清楚如何彻底删除包 - 我试着运行了如下的垃圾收集命令,这似乎删除了一些项目:

$ nix-collect-garbage
...
85 store paths deleted, 74.90 MiB freed

然而,我系统上仍然存在 oil 包,在 /nix/store/8pjnk6jr54z77jiq5g2dbx8887dnxbda-oil-0.14.0

nix-collect-garbage 有一个更具攻击性的版本,它也会删除你配置文件的旧版本(这样你就不能回滚了)。

$ nix-collect-garbage -d --delete-old

尽管如此,上述命令仍无法删除 /nix/store/8pjnk6jr54z77jiq5g2dbx8887dnxbda-oil-0.14.0,我不明白原因。

升级过程

你可以通过以下的方式升级 nix 包:

nix-channel --update
nix-env --upgrade

(这与 apt-get update && apt-get upgrade 类似。)

我还没真正尝试升级任何东西。我推测,如果升级过程中出现任何问题,我可以通过以下方式轻松地回滚(因为在 nix 中,所有事物都是不可变的!):

nix-env --rollback

有人向我推荐了 Ian Henry 的 这篇文章,该文章讨论了 nix-env --upgrade 的一些令人困惑的问题 - 也许它并不总是如我们所料?因此,我会对升级保持警惕。

下一个目标:创建名为 paperjam 的自定义包

经过几个月使用现有的 nix 包后,我开始考虑制作自定义包,对象是一个名为 paperjam 的程序,它还没有被打包封装。

实际上,因为我系统上的 libiconv 版本不正确,我甚至在没有 nix 的情况下也遇到了编译 paperjam 的困难。我认为,尽管我还不懂如何制作 nix 包,但使用 nix 来编译它可能会更为简单。结果证明我的想法是对的!

然而,理清如何实现这个目标的过程相当复杂,因此我在这里写下了一些我实现它的方式和步骤。

构建示例包的步骤

在我着手制作 paperjam 自定义包之前,我想先试手构建一个已存在的示例包,以便确保我已经理解了构建包的整个流程。这个任务曾令我头痛不已,但在我在 Discord 提问之后,有人向我阐述了如何从 https://github.com/NixOS/nixpkgs/ 获取一个可执行的包并进行构建。以下是操作步骤:

步骤 1: 从 GitHub 的 nixpkgs 下载任意一个包,以 dash 包为例:

wget https://raw.githubusercontent.com/NixOS/nixpkgs/47993510dcb7713a29591517cb6ce682cc40f0ca/pkgs/shells/dash/default.nix -O dash.nix

步骤 2:with import <nixpkgs> {}; 替换开头的声明({ lib , stdenv , buildPackages , autoreconfHook , pkg-config , fetchurl , fetchpatch , libedit , runCommand , dash }:)。我不清楚为何需要这样做,但事实证明这么做是有效的。

步骤 3: 运行 nix-build dash.nix

这将开始编译该包。

步骤 4: 运行 nix-env -i -f dash.nix

这会将该包安装到我的 ~/.nix-profile 目录下。

就这么简单!一旦我完成了这些步骤,我便感觉自己能够逐步修改 dash 包,进一步创建属于我自己的包了。

制作自定义包的过程

因为 paperjam 依赖于 libpaper,而 libpaper 还没有打包,所以我首先需要构建 libpaper 包。

以下是 libpaper.nix,我基本上是从 nixpkgs 仓库中其他包的源码中复制粘贴得到的。我猜测这里的原理是,nix 对如何编译 C 包有一些默认规则,例如 “运行 make install”,所以 make install 实际上是默认执行的,并且我并不需要明确地去配置它。

with import <nixpkgs> {};

stdenv.mkDerivation rec {
  pname = "libpaper";
  version = "0.1";

  src = fetchFromGitHub {
    owner = "naota";
    repo = "libpaper";
    rev = "51ca11ec543f2828672d15e4e77b92619b497ccd";
    hash = "sha256-S1pzVQ/ceNsx0vGmzdDWw2TjPVLiRgzR4edFblWsekY=";
  };

  buildInputs = [ ];

  meta = with lib; {
    homepage = "https://github.com/naota/libpaper";
    description = "libpaper";
    platforms = platforms.unix;
    license = with licenses; [ bsd3 gpl2 ];
  };
}

这个脚本基本上告诉 nix 如何从 GitHub 下载源代码。

我通过运行 nix-build libpaper.nix 来构建它。

接下来,我需要编译 paperjam。我制作的 nix 包 的链接在这里。除了告诉它从哪里下载源码外,我需要做的主要事情有:

  • 添加一些额外的构建依赖项(像 asciidoc
  • 在安装过程中设置一些环境变量(installFlags = [ "PREFIX=$(out)" ];),这样它就会被安装在正确的目录,而不是 /usr/local/bin

我首先从散列值为空开始,然后运行 nix-build 以获取一个关于散列值不匹配的错误信息。然后我从错误信息中复制出正确的散列值。

我只是在 nixpkgs 仓库中运行 rg PREFIX 来找出如何设置 installFlags 的 —— 我认为设置 PREFIX 应该是很常见的操作,可能之前已经有人做过了,事实证明我的想法是对的。所以我只是从其他包中复制粘贴了那部分代码。

然后我执行了:

nix-build paperjam.nix
nix-env -i -f paperjam.nix

然后所有的东西都开始工作了,我成功地安装了 paperjam!耶!

下一个目标:安装一个五年前的 Hugo 版本

当前,我使用的是 2018 年的 Hugo 0.40 版本来构建我的博客。由于我并不需要任何的新功能,因此我并没有感到有升级的必要。对于在 Linux 上操作,这个过程非常简单:Hugo 的发行版本是静态二进制文件,这意味着我可以直接从 发布页面 下载五年前的二进制文件并运行。真的很方便!

但在我的 Mac 电脑上,我遇到了一些复杂的情况。过去五年中,Mac 的硬件已经发生了一些变化,因此我下载的 Mac 版 Hugo 二进制文件并不能运行。同时,我尝试使用 go build 从源代码编译,但由于在过去的五年内 Go 的构建规则也有所改变,因此没有成功。

我曾试图通过在 Linux docker 容器中运行 Hugo 来解决这个问题,但我并不太喜欢这个方法:尽管可以工作,但它运行得有些慢,而且我个人感觉这样做有些多余。毕竟,编译一个 Go 程序不应该那么麻烦!

幸好,Nix 来救援!接下来,我将介绍我是如何使用 nix 来安装旧版本的 Hugo。

使用 nix 安装 Hugo 0.40 版本

我的目标是安装 Hugo 0.40,并将其添加到我的 PATH 中,以 hugo-0.40 作为命名。以下是我实现此目标的步骤。尽管我采取了一种相对特殊的方式进行操作,但是效果不错(可以参考 搜索和安装旧版本的 Nix 包 来找到可能更常规的方法)。

步骤 1: 在 nixpkgs 仓库中搜索找到 Hugo 0.40。

我在此链接中找到了相应的 .nix 文件 https://github.com/NixOS/nixpkgs/blob/17b2ef2/pkgs/applications/misc/hugo/default.nix

步骤 2: 下载该文件并进行构建。

我下载了带有 .nix 扩展名的文件(以及同一目录下的另一个名为 deps.nix 的文件),将文件的首行替换为 with import <nixpkgs> {};,然后使用 nix-build hugo.nix 进行构建。

虽然这个过程几乎无需进行修改就能成功运行,但我仍然做了两处小调整:

  • with stdenv.lib 替换为 with lib
  • 为避免与我已安装的其他版本的 hugo 冲突,我把包名改为了 hugo040

步骤 3:hugo 重命名为 hugo-0.40

我编写了一个简短的后安装脚本,用以重命名 Hugo 二进制文件。

postInstall = ''
    mv $out/bin/hugo $out/bin/hugo-0.40
  '';

我是通过在 nixpkgs 仓库中运行 rg 'mv ' 命令,然后复制和修改一条看似相关的代码片段来找到如何实施此步骤。

步骤 4: 安装。

我通过运行 nix-env -i -f hugo.nix 命令,将 Hugo 安装到了 ~/.nix-profile/bin 目录中。

所有的步骤都顺利运行了!我把最终的 .nix 文件存放到了我自己的 nixpkgs 仓库 中,这样我以后如果需要,就能再次使用它了。

可重复的构建过程并非神秘,其实它们极其复杂

我觉得值得一提的是,这个 hugo.nix 文件并不是什么魔法——我之所以能在今天轻易地编译 Hugo 0.40,完全归功于许多人长期以来的付出,他们让 Hugo 的这个版本得以以可重复的方式打包。

总结

安装 paperjam 和这个五年前的 Hugo 版本过程惊人地顺利,实际上比没有 nix 来编译它们更简单。这是因为 nix 极大地方便了我使用正确的 libiconv 版本来编译 paperjam 包,而且五年前就已经有人辛苦地列出了 Hugo 的确切依赖关系。

我并无计划详细深入地使用 nix(真的,我很可能对它感到困扰,然后最后选择回归使用 homebrew!),但我们将拭目以待!我发现,简单入手然后按需逐步掌握更多功能,远比一开始就全面接触一堆复杂功能更容易掌握。

我可能不会在 Linux 上使用 nix —— 我一直都对 Debian 基础发行版的 apt 和 Arch 基础发行版的 pacman 感到满意,它们策略明晰且少有混淆。而在 Mac 上,使用 nix 似乎会有所得。不过,谁知道呢!也许三个月后,我可能会对 nix 感到不满然后再次选择回归使用 homebrew。

(题图:MJ/f68aaf37-4a34-4643-b3a1-8728d49cf887)


via: https://jvns.ca/blog/2023/02/28/some-notes-on-using-nix/

作者:Julia Evans 选题:lkxed 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

HashiCorp 放弃开源原则这件事并无新意。

在加利福尼亚蒙特利召开的 Linux 基金会成员峰会 Linux Foundation Members Summit 上,最受关注的议题是人工智能和开源。而第二重要的话题涉及到 HashiCorp 放弃 Terraform 的 Mozilla 公共许可证 Mozilla Public License (MPL),转而采用 商业源代码许可证 Business Source License (BSL)1.1,以及由此引发的 OpenTofu 项目复刻。因 Linux 基金会对 OpenTofu 项目的支持,HashiCorp 的 CEO David McJannet 表现出极度的不满。

关于许可证切换、源代码复刻以及由此产生的争议,火热的讨论并未减少。但在我看来,有一点被人们忽视:人们一直误认为这是新鲜事物,实则不然。

之前已经有过不止一次,甚至不止十次,公司将开源代码转变为专有程序,或者隐藏在一个专有的包装中。

首先,人们经常拿走开源代码,但却抹去其许可证信息,然后就此继续下去。虽然这并不一定构成窃取行为,实际上,有些许可证,比如 MIT 许可证和两句版 BSD 许可证,完全允许公司和开发者在他们的专有程序中使用这些代码。例如,我们都熟知以下基于 MIT 许可证的程序,比如 Angular、.NET、Node.js、Ruby on Rails 和 React。

其次,有一些程序最初以开源的形式开始,但随着时间的推移,原始所有者和许可证规则发生了变化,以至于许多人甚至都不知道它们曾经是开源的。举例来说,苹果公司的 macOS 就是其中的一个典型。

你是否知道 macOS 曾经是开源的?确实,它曾经是。

macOS 的核心基于 Darwin,这是一种 Unix 操作系统。 史蒂夫·乔布斯 Steve Jobs 回归苹果公司时,引入了他的基于 Unix 的 NeXTStep 操作系统。到了 2000 年,苹果公司逐步放弃了他们的经典 Mac 操作系统,转而支持 macOS Darwin。除了来自 NeXTStep 的部分,Darwin 还大量借鉴了开源的 FreeBSD 和 Mach 操作系统的设计。

如今,如果你深入研究,仍然可以在 macOS 中找到 Darwin,它在 苹果公共源代码许可证 Apple Public Source License 2.0 下开源。虽然还有一项名为 PureDarwin 的工作正在努力制作一个独立的 Darwin 操作系统,但进展甚微。在这个过程中,苹果公司巧妙地减弱了一个重要的开源操作系统的影响力。更为常见的方式是开源软件以 “ 开放核心 open core ” 的方式融入商业程序中。简而言之,开放核心,与开源不同的是,这是一种商业模式。在这种模式中,公司基于一个免费的、开源的核心程序,然后通过加入商业版本或者专有的附加组件来发展。

此术语由 Andrew Lampitt 在 2008 年提出,虽然代表的并不是一个新的概念。他提出这个术语是为了替代混乱的术语 “ 双重许可 dual licensing ”。这个命名更改是为了 “消除误解,推广一个对于开源社区、付费客户和供应商都有利的商业模式”。同时,其目标也是为了消解我们现在在 HashiCorp 看到的 “ 诱捕并切换 bait and switch ” 类似的争议。

尽管我们可以辩论这是否是一个 “出色的商业模式”,但无可争议的是它已经成为一个非常流行的模式。然而,近年来,我们看到的趋势是,许多企业从开放核心模式退回到 源码可得 source-available 模式。在源码可得模式下,你可以查看所有的代码,但在某些情况下你不能修改或使用它。

例如,MongoDB 创建 了一种非开源许可证,即 服务端公共许可证 Server Side Public License (SSPL),以应对那些通过提供自托管版本和服务从其代码中获利的超级云计算公司。

并非只有 MongoDB 做出了这样的决定。Elastic 在开源核心模型运作的很好,但当亚马逊 AWS 等公司通过提供 ElasticSearch 服务赚取巨额利润时,Elastic 在 2021 年做出了 策略调整。它放弃了开源的 Apache 2.0 许可,转而采用非开源的 SSPL 和 Elastic 许可证。

Elastic 和其他几家公司(如 Redis 等)的此类做法,主要目的是阻止云服务公司将他们的开源程序作为一种服务而提供。然而,这个做法反过来对 Elastic 产生了负面影响,因为 AWS 对这个项目进行了 复刻。这一切是否让你想起了 HashiCorp?是吧。

尽管这些向非开源许可的转变惹怒了一些用户和很多开发者,但这些公司的业绩仍表现相对稳定。你可能对此感到不满,但事实是,对于这些公司来说,这种转变在一定程度上取得了成功。

接着,我们来看红帽公司的情况。红帽公司对其红帽企业 Linux(RHEL)代码的使用 施加了限制,只允许其客户使用。几十年来,红帽公司一直在权衡作为开源领导者与处理 RHEL 克隆产品(例如 CentOS,以及最新的 AlmaLinux 和 Rocky Linux)的关系。

随着时间的推移,红帽公司对与他人共享其代码表现出越来越大的犹豫。现在,你可以(且很多人确实正在这么做)辩论红帽公司不再是一个真正的开源公司。批评者认为,红帽公司虽然仍然严格遵守 GNU 通用公共许可证(GPL)的条款,但已经失去了开源精神。

虽然 RHEL 和与其相关的一系列程序仍在产生可观的利润,但红帽公司希望能够从中获取更多的收益,因此,它也开始逐步偏离开源原则。

实际上,所有这些案例的共同之处在于:对更大财富的欲望。如圣经所言,“贪财是万恶之根”。我不确定这一句话的真假,但我确实知道,对金钱的热爱和开源原则很难两全。

对于从开源软件中赚钱并没有错误之处。 理查德·斯托曼 Richard M Stallman (RMS)曾言:“工作寻求报酬,或者寻求尽可能增加收入,这并没有错,只要不采用破坏性的方式即可。” 然而,在 RMS 看来,“通过限制它们的使用来从程序的用户中挤取金钱,是一种破坏行为。”

尽管在现今开源软件与商业实践交汇的情况下,RMS 的观点可能并不如过去那样深受欢迎,但他仍然拥有众多的支持者。

(题图:MJ/b06e9a62-5c0d-49c5-a7b3-fd5af60ac0b1)


via: https://www.theregister.com/2023/10/27/open_source_vs_sort_of_open_source/

作者:Steven J. Vaughan-Nichols 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

微软的人工智能投资稳定了其云业务

据报道,微软在生成式人工智能方面的投资开始促进销售,最明显的是扭转了公司重要的云计算产品增长放缓的趋势。微软向推出了 ChatGPT 的 OpenAI 建立了合作伙伴关系,并向其投资了 130 亿美元,因此微软被许多公司视为领先的人工智能供应商。财报显示,微软的旗舰云计算产品 Azure 增长了 29%,高于上一季度的 26%。微软 CEO 称,超过 1.8 万家企业正在使用微软的 Azure OpenAI 服务,这其中包括以前没有使用过 Azure 的客户。但是,虽然微软在必应搜索引擎中集成了人工智能驱动的聊天机器人,但 “没有证据” 表明必应的搜索市场份额有实际增长。

消息来源:《纽约时报》
老王点评:操作系统业务不好时,投资云计算;云业务缺少增长点时,投资人工智能。

苹果推出了三年的私人 Wi-Fi 一直未能隐藏地址

如果设备在所有网络中始终使用相同的 Wi-Fi MAC 地址,该地址就很容易与设备的网络活动和位置联系起来。私人 Wi-Fi 地址旨在通过为每个不同的 Wi-Fi 网络生成不同的 MAC 地址来避免这种跟踪。但苹果从 2020 年 9 月推出该功能以来,一直未能真正隐藏 MAC 地址,原因是与苹果 Bonjour 网络协议相关的 mDNSResponder 进程存在漏洞。安全专家发现,当 iPhone 加入一个网络时,它会发送组播请求以发现网络中的 AirPlay 设备。在这些请求中,iOS 会发送设备的真实 Wi-Fi MAC 地址。

消息来源:The Register
老王点评:百密一疏,隐藏了三年的 MAC 地址,其实一直在偷偷泄露。

Linux Mint 将获得 Wayland 试验性支持

Linux Mint 是最后一个仅支持 X11 的重要 Linux 桌面之一,它正开始发生变化。计划于 2023 年圣诞节发布的 Linux Mint 21.3 将是第一个提供 Wayland 会话的 Linux Mint 发行版,但还处于试验状态,其默认会话仍将是 X11 会话。开发者认为 Linux Mint 在 2026 年 23.x 发布之前,不需要 Wayland 支持。“Wayland 会话不会像默认会话那样稳定。它将缺少一些功能,也有自己的局限性”,也就是说还需要几年的时间来完善。

消息来源:9to5linux
老王点评:从反馈来看,全面迁移 Wayland 确实在很多方面都没做好准备。

Moosync 音乐播放器是一个适用于本地收藏与流媒体音乐的魅力十足的跨平台应用。

想听好音乐吗??

首次亮相的跨平台开源音乐播放器 Moosync ,希望成为“欢迎全社区参与”的音乐播放器。

过去我们曾介绍过像 HarmonoidMusicPod 这样的应用,但是它们主要是专注于离线使用

与之不同的是,Moosync 的独特之处。让我告诉你为什么。

Moosync:概况 ⭐

Moosync 是一个主要基于 VueTypeScript 编程语言开发的音乐播放器。

Moosync 高度可定制且支持 YouTubeSpotify 以及 LastFM 等多种服务。其关键特性包含:

  • 支持显示歌词
  • 无广告播放
  • 支持本地音乐文件

初次体验 ?‍?

在我在我的 Ubuntu 系统上安装它之后,我开始了快速设置向导

首先设定我的音乐库的位置,它将会从此处获取本地音乐文件,过程包含了许多步骤。

然后,显示了可以连接的服务选项

试图连接我的 Spotify 账户,然而尽管我向 Moosync 提供了需要的信息,操作无法成功。不过幸运的是,这一步并非必要,所以我选择跳过。

随后,它显示了空白的 “ 所有歌曲 All Songs ” 标签页,由于目前我未连接任何服务或者本地文件,所以这里是空的。

考虑我没有本地音乐或 Spotify 音乐,我点击了 YouTube 过滤器并搜寻我喜欢的曲目以填充 Moosync。

搜索功能还包括歌曲、艺术家、播放列表和专辑的过滤器。

我可以以右键点击单曲,并添加至播放队列或者立即播放。除此之外还有其他选项,会有所不同。

我在 Spotify 数据库进行搜索时,尝试做相同操作,但不幸的是,我必须要登录 Spotify 才能在 Moosync 使用它 这一计划之前被搁置。

? 如果你在寻找更好的 Spotify 支持,我建议你尝试一下 BlackHole 这个音乐应用。

而我选择继续,去了解这个音乐播放器。进入 “ 队列 Queue ” 标签页或者点击应用程序右下角向上指向的箭头都可以访问它。

整齐的布局使人感到熟悉和舒适。

在 “ 所有歌曲 All Songs ” 标签页,我添加进 Moosync 的所有歌曲都在这,我可以选择从列表开头播放,或者添加到当前队列,甚至可以在其中随机播放 100 首歌曲

在 “ 播放列表 Playlists ” 标签页,我保存的所有来自 YouTube 的播放清单都在这。它还提供了本地文件和 YouTube 间的排序选项。

在 “ 专辑 Albums ” 标签页,我保存的所有专辑都以一个整齐的网格布局排列。

类似的,“ 艺术家 Artists ” 标签页展示了我添加到 Moosync 库的艺术家。出于某种原因,它没有加载缩略图。

类别 Genres ” 标签页我也跳过了,因为它似乎不能正常工作

最后是 “ 探索 Explore ” 标签页,这里显示了我听过多少分钟的音乐

此外,你可以在 Moosync 中找到许多有用的自定义设置来优化你的使用体验。

首先在 “ 主题 Theme ”设置中,你可以在三个主题两种布局视图中选择,还有选项上传或设计自定义主题

应用还有许多扩展,一种是在 Discord 上开启丰富的存在支持,另一种是与 Soundcloud 集成,此外还有很多。

显然,Moosync 支持键盘快捷方式,你可以根据个人的喜好进行设置。

在我写这篇文章的时候,Moosync 这里和那里都有一些小瑕疵,但我认为它作为 最适合 Linux 的音乐播放器之一 的竞争者非常有竞争力。

? 下载 Moosync

Moosync 适用于 LinuxWindows 以及 macOS。你可以在其官方网站下载你需要的安装包。

Moosync

对于 Linux 用户,你也可以在 Flathub 商店Snap 商店AUR 下载 Moosync。

你还可以浏览他们的 GitHub 仓库,获取源代码以及更多信息。

? 对这款应用有何看法?欢迎在评论区告诉我。


via: https://news.itsfoss.com/moosync/

作者:Sourav Rudra 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出