2021年7月

2021 年 7 月版的 TIOBE 编程社区指数已经出来了,榜单前几名有点拥挤。

该指数首次发布于 2001 年 7 月,当时 TIOBE 首席执行官 Paul Jansen 开始了“一个个人爱好项目,想看看哪些语言有需求”。从那时起,确定一种语言的受欢迎程度(也就是在该指数中的位置)的方法基本保持不变:通过计算列表中的热门搜索引擎的 “+<语言> programming” 的查询的点击率并将其标准化来计算评级。

2004 年,谷歌方式的改变使得 TIOBE 增加了更多的搜索引擎,以减少波动。然而,目前使用的大多数合格的引擎都属于谷歌家族,所以那里的变化仍然会影响整体结果。对该指数的批评往往归结为其意义不大,因为像新版本或临时问题这样的单一事件有可能大大改变排名的结果。

TIOBE 公司成立于 Eindhoven,主要以其 TICS 产品而闻名,这是一个测量软件代码质量的框架。它的名字是“The Importance Of Being Earnest”的缩写,意在反映该公司“真诚和专业的态度”(我们想,这也为奥斯卡•王尔德的鉴赏家提供了一点笑料)。

20 年前,TIOBE 指数的最高排名是由 Java、C 和 C++ 组成的。这与今天的情况没有太大区别,只是 Python 取代了 C++ 的位置,而且这三个顶级竞争者显然比以前更接近。

在连续 15 个月占据最高位置的 C 和排名第三的 Python 之间,这次的差距只有 0.67%。一年前,两者之间的差距约为 7.36%,因此 2020 年的年度语言似乎正处于一个清晰的轨道上。最新一期的 PYPL 指数已经看到 Python 在那里牢牢占据榜首,它在过去五年中的受欢迎程度增长最快。同时,在 TIOBE 指数中排名第二的 Java 似乎正在继续失去地位。

Jansen 解释说 Python 的持续上升与“数据挖掘和人工智能领域的蓬勃发展”有关。然而,这不可能全部的原因,因为像 R、Matlab 和 Julia 这样的语言在该领域也很常见,目前在该榜单中略有回落,要么更多是停滞不前。拥有一个比较成熟的工具生态系统,包括像 NumPy、TensorFlow 和 PyTorch 这样的重量级工具,以及相对稳固的 IDE 支持,肯定有助于 Python 的排名攀升。

除了少数例外,前十名与去年的排名基本保持一致。R 从第 8 位下降到第 12 位,Swift 从第 10 位下降到第 16 位,为中坚力量 PHP 和 SQL 腾出了一点空间。

再往下看,前 30 名中还有一点有趣的变化,Go 从第 20 名爬升到 2 月份的第 13 名。

Rust 也有些许进步,从第 30 位跃升至第 27 位。除其他原因外,这可能是由于人们对 Rust for Linux 项目的兴趣越来越大,该项目旨在为 Linux 内核带来内存安全,并在最近开始获得资金支持。


via: https://devclass.com/2021/07/05/20-years-of-tiobe-programming-community-index-go-gets-a-bounce/

作者: Julia Schmidt 选题:wxy 译者:wxy 校对:wxy

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

因不满厂商不修复被黑客入侵的游戏,玩家入侵了它的另一款游戏

2019 年年初,已经发行 5 年的《Titanfall》出现了非常严重的漏洞,黑客可以利用漏洞让其他玩家无法游戏。明知道存在这个严重问题,EA 和 Respawn 也不对其进行修复和完善,而依然在 Steam 和 Origin 上积极销售这款游戏。

因对此不满,一名黑客玩家决定以相同方式入侵该游戏开发商的另一款热门游戏《Apex Legends》,导致大量玩家无法正常游戏。黑客玩家希望能通过这种方式引起公众关注,并向 Respawn 施加压力希望修复《Titanfall》。此后,Respawn 在 Twitter 上承认了这些问题,并表示会“积极调查”这些问题。

以这种方式取得了关注和可能的解决也是够奇葩的。

BSD 中也在“传播”新冠

DragonFlyBSD 从 NetBSD 移植了一个 COVID 软件包。这个软件包包含了 COVID-19 基因组数据,以及鼓励接种疫苗和其他步骤以帮助防止新冠传播的手册页。这个 covid 工具是一个简单的 C 程序,它将打印出早已公开的 COVID-19 基因组。NetBSD 的这个 covid 工具是在 Linus Torvalds 最近鼓励大家接种这种冠状病毒的疫苗之后推出的。

这是技术人的幽默。

Ubuntu 21.10 开始利用 Zstd 压缩软件包

过去三年里,整个 Ubuntu/Debian 生态系统已经有了广泛而成熟的 Zstd 支持,它被添加到 Ubuntu 的 APT 和 dpkg 中,只读压缩支持也被移植到 Ubuntu 16.04 LTS 版本。Ubuntu 将在 Ubuntu 21.10 中切换到 zstd 压缩的 .deb 软件包,但这比最初的计划晚了三年。hello/2.10-2ubuntu3 将会是第一个 zstd 压缩的 Ubuntu 软件包。这是继 Fedora RPM 等发行版本之后,又一个主流发行版利用 Facebook 开发的 Zstandard 压缩技术。

即便是在 Linux 中,一项没有伤害的新技术的普及也需要漫长的时间。

编者按:近些年来 Rust 语言由于其内存安全性和性能等优势得到了很多关注,尤其是 Linux 内核也在准备将其集成到其中,因此,我们特邀阿里云工程师苏子彬为我们介绍一下如何在 Linux 内核中集成 Rust 支持。

2021 年 4 月 14 号,一封主题名为《Rust support》的邮件出现在 LKML 邮件组中。这封邮件主要介绍了向内核引入 Rust 语言支持的一些看法以及所做的工作。邮件的发送者是 Miguel Ojeda,为内核中 Compiler attributes、.clang-format 等多个模块的维护者,也是目前 Rust for Linux 项目的维护者。

Rust for Linux 项目目前得到了 Google 的大力支持Miguel Ojeda 当前的全职工作就是负责 Rust for Linux 项目。

长期以来,内核使用 C 语言和汇编语言作为主要的开发语言,部分辅助语言包括 Python、Perl、shell 被用来进行代码生成、打补丁、检查等工作。2016 年 Linux 25 岁生日时,在对 Linus Torvalds 的一篇 采访中,他就曾表示过:

这根本不是一个新现象。我们有过使用 Modula-2 或 Ada 的系统人员,我不得不说 Rust 看起来比这两个灾难要好得多。

我对 Rust 用于操作系统内核并不信服(虽然系统编程不仅限于内核),但同时,毫无疑问,C 有很多局限性。

在最新的对 Rust support 的 RFC 邮件的回复中,他更是说:

所以我对几个个别补丁做了回应,但总体上我不讨厌它。

没有用他特有的回复方式来反击,应该就是暗自喜欢了吧。

目前 Rust for Linux 依然是一个独立于上游的项目,并且主要工作还集中的驱动接口相关的开发上,并非一个完善的项目。

项目地址: https://github.com/Rust-for-Linux/linux

为什么是 Rust

Miguel Ojeda 的第一个 RFC 邮件中,他已经提到了 “Why Rust”,简单总结下:

  • 安全子集 safe subset 中不存在未定义行为,包括内存安全和数据竞争;
  • 更加严格的类型检测系统能够进一步减少逻辑错误;
  • 明确区分 safeunsafe 代码;
  • 更加面向未来的语言:sum 类型、模式匹配、泛型、RAII、生命周期、共享及专属引用、模块与可见性等等;
  • 可扩展的独立标准库;
  • 集成的开箱可用工具:文档生成、代码格式化、linter 等,这些都基于编译器本身。

编译支持 Rust 的内核

根据 Rust for Linux 文档,编译一个包含 Rust 支持的内核需要如下步骤:

  1. 安装 rustc 编译器。Rust for Linux 不依赖 cargo,但需要最新的 beta 版本的 rustc。使用 rustup命令安装:
rustup default beta-2021-06-23
  1. 安装 Rust 标准库的源码。Rust for Linux 会交叉编译 Rust 的 core 库,并将这两个库链接进内核镜像。
rustup component add rust-src
  1. 安装 libclang 库。libclangbindgen 用做前端,用来处理 C 代码。libclang 可以从 llvm 官方主页 下载预编译好的版本。
  2. 安装 bindgen 工具,bindgen 是一个自动将 C 接口转为 RustFFI 接口的库:
cargo install --locked --version 0.56.0 bindgen
  1. 克隆最新的 Rust for Linux 代码:
git clone https://github.com/Rust-for-Linux/linux.git
  1. 配置内核启用 Rust 支持:
Kernel hacking
  -> Sample kernel code
    -> Rust samples
  1. 构建:
LIBCLANG_PATH=/path/to/libclang make -j LLVM=1 bzImage

这里我们使用 clang 作为默认的内核编译器,使用 gcc 理论上是可以的,但还处于 早期实验 阶段。

Rust 是如何集成进内核的

目录结构

为了将 Rust 集成进内核中,开发者首先对 Kbuild 系统进行修改,加入了相关配置项来开启/关闭 Rust 的支持。

此外,为了编译 rs 文件,添加了一些 Makefile 的规则。这些修改分散在内核目录中的不同文件里。

Rust 生成的目标代码中的符号会因为 Mangling 导致其长度超过同样的 C 程序所生成符号的长度,因此,需要对内核的符号长度相关的逻辑进行补丁。开发者引入了 “大内核符号”的概念,用来在保证向前兼容的情况下,支持 Rust 生成的目标文件符号长度。

其他 Rust 相关的代码都被放置在了 rust 目录下。

在 Rust 中使用 C 函数

Rust 提供 FFI( 外部函数接口 Foreign Function Interface )用来支持对 C 代码的调用。Bindgen 是一个 Rust 官方的工具,用来自动化地从 C 函数中生成 Rust 的 FFI 绑定。内核中的 Rust 也使用该工具从原生的内核 C 接口中生成 Rust 的 FFI 绑定。

quiet_cmd_bindgen = BINDGEN $@
      cmd_bindgen = \
    $(BINDGEN) $< $(shell grep -v '^\#\|^$$' $(srctree)/rust/bindgen_parameters) \
        --use-core --with-derive-default --ctypes-prefix c_types \
        --no-debug '.*' \
        --size_t-is-usize -o $@ -- $(bindgen_c_flags_final) -DMODULE

$(objtree)/rust/bindings_generated.rs: $(srctree)/rust/kernel/bindings_helper.h \
    $(srctree)/rust/bindgen_parameters FORCE
    $(call if_changed_dep,bindgen)

ABI

Rust 相关的代码会单独从 rs 编译为 .o,生成的目标文件是标准的 ELF 文件。在链接阶段,内核的链接器将 Rust 生成的目标文件与其他 C 程序生成的目标文件一起链接为内核镜像文件。因此,只要 Rust 生成的目标文件 ABI 与 C 程序的一致,就可以无差别的被链接(当然,被引用的符号还是要存在的)。

Rust 的 alloccore

目前 Rust for Linux 依赖于 core 库。在 core 中定义了基本的 Rust 数据结构与语言特性,例如熟悉的 Option<>Result<> 就是 core 库所提供。

这个库被交叉编译后被直接链接进内核镜像文件,这也是导致启用 Rust 的内核镜像文件尺寸较大的原因。在未来的工作中,这两个库会被进一步被优化,去除掉某些无用的部分,例如浮点操作,Unicode 相关的内容,Futures 相关的功能等。

之前的 Rust for Linux 项目还依赖于 Rust 的 alloc 库。Rust for Linux 定义了自己的 GlobalAlloc 用来管理基本的堆内存分配。主要被用来进行堆内存分配,并且使用 GFP_KERNEL 标识作为默认的内存分配模式。

不过在在最新的 拉取请求 中,社区已经将移植并修改了 Rust的 alloc 库,使其能够在尽量保证与 Rust 上游统一的情况下,允许开发者定制自己的内存分配器。不过目前使用自定义的 GFP_ 标识来分配内存依然是不支持的,但好消息是这个功能正在开发中。

“Hello World” 内核模块

用一个简单的 Hello World 来展示如何使用 Rust 语言编写驱动代码,hello_world.rs:

#![no_std]
#![feature(allocator_api, global_asm)]

use kernel::prelude::*;

module! {
    type: HelloWorld,
    name: b"hello_world",
    author: b"d0u9",
    description: b"A simple hello world example",
    license: b"GPL v2",
}

struct HelloWorld;

impl KernelModule for HelloWorld {
    fn init() -> Result<Self> {
        pr_info!("Hello world from rust!\n");

        Ok(HelloWorld)
    }
}

impl Drop for HelloWorld {
    fn drop(&mut self) {
        pr_info!("Bye world from rust!\n");
    }
}

与之对应的 Makefile

obj-m := hello_world.o

构建:

make -C /path/to/linux_src M=$(pwd) LLVM=1 modules

之后就和使用普通的内核模块一样,使用 insmod 工具或者 modprobe 工具加载就可以了。在使用体验上是没有区别的。

module! { }

这个宏可以被认为是 Rust 内核模块的入口,因为在其中定义了一个内核模块所需的所有信息,包括:AuthorLicenseDescription 等。其中最重要的是 type 字段,在其中需要指定内核模块结构的名字。在这个例子中:

module! {
    ...
    type: HelloWorld,
    ...
}

struct HelloWorld;

module_init()module_exit()

在使用 C 编写的内核模块中,这两个宏定义了模块的入口函数与退出函数。在 Rust 编写的内核模块中,对应的功能由 trait KernelModuletrait Drop 来实现。trait KernelModule 中定义 init() 函数,会在模块驱动初始化时被调用;trait Drop 是 Rust 的内置 trait,其中定义的 drop() 函数会在变量生命周期结束时被调用。

编译与链接

所有的内核模块文件会首先被编译成 .o 目标文件,之后由内核链接器将这些 .o 文件和自动生成的模块目标文件 .mod.o 一起链接成为 .ko 文件。这个 .ko 文件符合动态库 ELF 文件格式,能够被内核识别并加载。

其他

完整的介绍 Rust 是如何被集成进内核的文章可以在 我的 Github 上找到,由于写的仓促,可能存在一些不足,还请见谅。


作者:苏子彬,阿里云 PAI 平台开发工程师,主要从事 Linux 系统及驱动的相关开发,曾为 PAI 平台编写 FPGA 加速卡驱动。

了解有关项目编程语言的详细信息。

 title=

近来,GitHub 添加了一个小指标来展示项目的细节,包括项目使用的编程语言。在这之前,对一个新的贡献者来说,了解他们感兴趣的项目的信息是较为困难的。

这个补充很有帮助,但是如果您想知道有关本地存储库中项目的相同信息该怎么办呢? 这正是 Tokei 派上用场的地方。这是一个当你想和精通不同语言的人想要构建一个项目时可以告诉你项目的代码数据的特别有用的工具。

探索 Tokei

据其 README,“Tokei 是一个可以展示你的代码数据的程序。Tokei 将会展示文件的数量,和这些文件中不同语言的代码、注释、空白的行数。”它的 v.12.1.0 版本 elaborates 是这样子介绍的,“Tokei 是一个快速准确的代码分析 CLI 工具和库,可以使你轻松快速地在你的代码库中看到有多少空白、评论和代码行”。它能够识别超过 150 种编程语言。

$ ./tokei ~/exa/src ~/Work/wildfly/jaxrs
==================
Language   Files Lines Code Comments Blank
Java        46    6135  4324  945     632
XML         23    5211  4839  473     224
---------------------------------
Rust
Markdown
-----------------------------------
Total

安装 Tokei

在 Fedora 上安装 Tokei:

$ sudo dnf install tokei

用 Rust's Cargo 包管理器安装:

$ cargo install tokei

使用 Tokei

要列出当前目录中的代码统计:

$ tokei
===============================================================================
 Language            Files        Lines         Code     Comments       Blanks
===============================================================================
 Ada                    10         2840         1681          560          599
 Assembly                4         2508         1509          458          541
 GNU Style Assembly      4         2751         1528          748          475
 Autoconf               16         2294         1153          756          385
 Automake                1           45           34            0           11
 BASH                    4         1895         1602          133          160
 Batch                   2            4            4            0            0
 C                     330       206433       150241        23402        32790
 C Header              342        60941        24682        29143         7116
 CMake                  48         4572         3459          548          565
 C#                      9         1615          879          506          230
 C++                     5          907          599          136          172
 Dockerfile              2           16           10            0            6
 Fish                    1           87           77            5            5
 HTML                    1          545          544            1            0
 JSON                    5         8995         8995            0            0
 Makefile               10          504          293           72          139
 Module-Definition      12         1183         1046           65           72
 MSBuild                 1          141          140            0            1
 Pascal                  4         1443         1016          216          211
 Perl                    2          189          137           16           36
 Python                  4         1257          949          112          196
 Ruby                    1           23           18            1            4
 Shell                  15         1860         1411          222          227
 Plain Text             35        29425            0        26369         3056
 TOML                   64         3180         2302          453          425
 Visual Studio Pro|     30        14597        14597            0            0
 Visual Studio Sol|      6          655          650            0            5
 XML                     1          116           95           17            4
 YAML                    2           81           56           12           13
 Zsh                     1           59           48            8            3
-------------------------------------------------------------------------------
 Markdown               55         4677            0         3214         1463
 |- C                    1            2            2            0            0
 |- Rust                19          336          268           20           48
 |- TOML                23           61           60            0            1
 (Total)                           5076          330         3234         1512
-------------------------------------------------------------------------------
 Rust                  496       210966       188958         5348        16660
 |- Markdown           249        17676         1551        12502         3623
 (Total)                         228642       190509        17850        20283
===============================================================================
 Total                1523       566804       408713        92521        65570
===============================================================================
$

下面的命令打印出了支持的语言和拓展:

$ tokei -l
ABNF
ABAP
ActionScript
Ada
Agda
Alex
Alloy
Arduino C++
AsciiDoc
ASN.1
ASP
ASP.NET
Assembly
GNU Style Assembly

如果你在两个文件夹上运行 tokei 并指定其位置作为参数,它将以先入先出的规则打印单个文件的统计数据:

 title=

默认情况下,tokei 仅仅输出有关语言的数据,但是使用 --files 标记可提供单个文件统计信息:

$ tokei ~/exa/src --files
===========================================================================================
 Language                              Files      Lines      Code             Comments     Blanks
===========================================================================================
 Rust                                   54          9339        7070             400       1869
 |- Markdown                            33          1306           0            1165        141
 (Total)                                           10645        7070        1565       2010
-------------------------------------------------------------------------------------------
 /home/ssur/exa/src/theme/default_theme.rs           130         107           0         23
 /home/ssur/exa/src/output/render/times.rs            30          24           0          6
 /home/ssur/exa/src/output/render/users.rs            98          76           0         22
 /home/ssur/exa/src/output/render/size.rs            182         141           3         38
 /home/ssur/exa/src/output/render/octal.rs           116          88           0         28
 /home/ssur/exa/src/output/render/mod.rs              33          20           3         10
 /home/ssur/exa/src/output/render/inode.rs            28          20           0          8
 /home/ssur/exa/src/output/render/links.rs            87          65           0         22
 /home/ssur/exa/src/output/render/groups.rs          123          93           0         30
 |ome/ssur/exa/src/output/render/filetype.rs          31          26           0          5
 /home/ssur/exa/src/output/render/blocks.rs           57          40           0         17
 /home/ssur/exa/src/output/render/git.rs             108          87           0         21
 |/ssur/exa/src/output/render/permissions.rs         204         160           3         41
 /home/ssur/exa/src/output/grid.rs                    67          51           3         13
 /home/ssur/exa/src/output/escape.rs                  26          18           4          4
 /home/ssur/exa/src/theme/lsc.rs                     235         158          39         38
 /home/ssur/exa/src/options/theme.rs                 159         124           6         29
 /home/ssur/exa/src/options/file_name.rs              46          39           0          7
 /home/ssur/exa/src/options/flags.rs                  84          63           6         15
 /home/ssur/exa/src/fs/mod.rs                         10           8           0          2
 /home/ssur/exa/src/fs/feature/mod.rs                 33          25           0          8
-- /home/ssur/exa/src/output/time.rs ---------------------------------------------------------------
 |- Rust                                             215          170          5         40
 |- Markdown                                          28            0         25          3

总结

我发现使用 tokei 来了解我的代码统计数据十分容易。另一个使用 tokei 的好处就是它可以用作为一个很容易集成到其他项目的库。访问 Tokei 的 Crate.io pageDocs.rs 网站来了解其更多用法。如果你想参与其中,你也可以通过它的 GitHub 仓库 来为 Tokei 作贡献。

你是否觉得 Tokei 很有用呢?可以在下方的评论区告诉我们。


via: https://opensource.com/article/21/6/tokei

作者:Sudeshna Sur 选题:lujun9972 译者:zepoch 校对:wxy

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

你永远不会知道从你的第一份工作会走到哪里!

 title=

在我从事技术工作之前,我做过一些奇怪的工作。

我是一家飞机修理厂的初级助理,这意味着我的工作要在溶剂中清洗肮脏的金属零件(哇,70 年代的事情可和现在不一样)。我在那里最有趣的工作是熨烫涤纶飞机的布料,放到一架正在修理中的漂亮的老式 比奇交错式双翼机 Beechcraft Staggerwing 的木制副翼和水平稳定器上。

在大学期间的一个夏天,我在同一个机场的一个团队工作,混合阻燃剂,然后把它注入灭火飞机(“ 水轰炸机 water bomber ”)。那可能是我做过的最脏的工作了,但是给飞机装载还是挺酷的。有一个离地面约两米的小挡板,你可以在把填充软管连接到接头后把手指伸进去。然后泵上的人启动泵。当你觉得你的手指湿了,就挥手让管理泵的人停止泵。与此同时,在你前方几米处运行的右侧径向引擎噪音极大,螺旋桨吹掉了你身上因混合阻燃剂而积聚的红色粉尘。如果你搞砸了,让飞机装得太满,他们就得滑到一块地方,把货卸在那里,否则他们会太重而无法起飞。

另外两个夏天,我在当地的百事可乐、七喜、Orange Crush 经销商那里工作,给商店和餐馆送一箱箱的软饮料。这绝对是我做过的最重的体力活了。想想看,在一辆手推车上堆放着五层高的木箱,每个木箱里装着一打 750 毫升的软饮料玻璃瓶。想想把它搬到二楼的餐厅,想想那家餐厅每周要运 120 箱……爬 24 次楼,然后又带着所有的空瓶子下来。一辆小卡车上通常会有 300 箱左右的软饮料。我们的工资是按载重计算的,而不是按小时计算的,所以我们的目标是早点完工,然后去海滩。

我的技术工作

送苏打水是我大学期间最后一份暑期工作。第二年我毕业了,获得了数学学位,还修了很多计算机课程,尤其是数值分析。我在技术领域的第一份工作,是为一家小型电脑服务咨询公司工作。我用 SPSS 对一些运动钓鱼调查做了一些分析,写了几百行 PL/1,在我们按时间租来的服务部门的 IBM 3800 激光打印机上打印演唱会门票,并开始研究一些程序来分析森林统计数据。我最终为需要林业统计的客户工作,在 20 世纪 80 年代中期成为合伙人。那时我们已经不仅仅是测量树木,也不再使用 分时服务部门 timesharing bureau 来进行计算了。我们买了一台 UNIX 小型计算机,我们在 80 年代后期升级到 SUN 工作站网络。

我在一个大型开发项目上工作了一段时间,它的总部设在马来西亚吉隆坡。然后我们买了第一个地理信息系统,在 80 年代末和 90 年代,我的大部分时间都在和我们的客户一起工作,他们需要定制软件来满足他们的业务需求。到了 21 世纪初,我的三个老合伙人都准备退休了,我试图弄明白,我是如何融入我们这个不再是小公司的,大约 200 名员工的长期图景。我们新的员工老板也不明白这一点,2002 年,我来到智利,想看看智利-加拿大自由贸易协定,是否提供了一个合理的机会,把我们的部分业务转移到拉丁美洲。

该业务在 2004 年正式成立。与此同时,加拿大的母公司由于一些投资组合受到严重影响,在 2007-2009 年的经济衰退的情况下,这些投资似乎不再那么明智,它在 2011 年被迫倒闭。然而,那时候,智利子公司还在经营,所以我们原来的雇员和我成了合伙人,通过资产出售买下了它。直到今天,它仍在运行,在社会环境领域做了很多很酷的事情,我经常参与其中,特别是当我可靠的数学和计算背景有用的时候。

作为一个副业,我为一个在印度以买卖赛马为业的人开发和支持一个赛马信息系统。


via: https://opensource.com/article/21/5/weird-jobs-tech

作者:Chris Hermansen 选题:lujun9972 译者:MM-BCY 校对:wxy

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

REvil:有史以来最大的一次全球勒索软件攻击

此次 REvil 通过 Kaseya VSA 供应链进行的勒索攻击已经影响到了 17 个国家的数千客户,大部分都是小型企业。这此事件被称之为“有史以来最大的一次全球勒索软件攻击”。Kaseya 公司周五呼吁客户立即关闭他们的 VSA 服务器,并在周日表示,希望在未来几天内推出补丁。据美联社采访的专家称,这些攻击可能是为了利用美国庆祝建国的三天周末。

一个好的迹象是,在过去的 48 小时内,从互联网上可以到达的 Kaseya VSA 实例的数量已经从超过 2200 个下降到最后一次扫描中的不到 140 个

正如我们昨天说到的,利用供应链进行的勒索攻击难以防范,也会愈演愈烈。

自由软件基金会宣布改进董事会治理的下一步举措

FSF 董事会宣布,他们聘请了一位专业顾问,以帮助自由软件基金会设计和执行所需的变革。将在半年内实现:一个透明的由社区支持的确定新董事会成员和评估现有董事会成员的过程;一份明确列出所有董事会成员责任的董事会成员协议;一套道德准则,阐明 FSF 的价值观;更加集中和精简的董事会程序。

FSF 董事会还在评估自 2002 年以来对其章程的首次修改建议。这些修订的目标是确保用户自由不会因董事会、成员或敌对法庭的变化而受到影响,特别是关注各种 GPL 许可证的未来。

作为最老牌的自由软件方面的基金会,FSF 在开放治理方面却并不“先进”,很高兴 FSF 能看到并改进这一点。

著名开源软件被收购后开始收集用户数据

著名开源音频处理软件 Audacity 于两个月前被一家叫作 Muse Group 的公司收购。该公司同时还拥有其它著名音乐电子项目。一个月前其隐私政策的变化显示该工具正在收集其用户的数据,并与其他公司共享,同时还将数据发送到俄罗斯。虽然 Audacity 并不是一个手机应用,但程序设计者依然试图利用该软件从用户电脑上获取数据。

在各大开源社区中出现了许多愤怒的回应,GitHub 和 Reddit 上的用户纷纷呼吁尽快分叉该软件。

当一个开源软件易主之后,对它之前积累的信任需要重新评估。