分类 观点 下的文章

引言

2022 年末,openEuler Summit 2022 上,中国 Linux 内核圈最有影响力的开发者之一——吴峰光博士做了名为《面向全场景操作系统的构建服务发布》的主题演讲,正式向开发者披露了 openEuler 统一构建服务 EulerMaker

Linux 中国开源社区就此采访了吴峰光博士,为读者挖掘到一些在峰会上亮相的 EulerMaker 背后的有趣细节。

? 吴峰光博士是著名的 Linux 内核贡献者、华为计算操作系统首席专家、openEuler 社区技术委员会委员。他在 Linux 内核领域上拥有卓越贡献,在 I/O 和内存管理、内核测试服务方面做出了重要的贡献。有关他的故事,可以参阅《新程序员》杂志的专访《吴峰光杀进 Linux 内核》。

openEuler 的全场景

2021 年 9 月,openEuler 宣布将支持全场景,在服务器、云计算之外,还支持编译计算和嵌入式场景,这就引来了很多人的关注,但也有一些怀疑的眼光。因为,服务器和嵌入式分处两端,中间有着巨大的鸿沟。

“30 年前,服务器 OS、嵌入式 OS,界限非常清晰,像是两个村,中间全是农田。但后来 IT 越来越深入千行百业,云、边缘、IoT 兴起,各种场景涌现,发生了交叠。所以我们认为这是一个新的历史机会,来做一个全场景 OS。”吴峰光说。

? 关于多场景的支持和融合,请参考我们之前对欧拉技术委员熊伟的采访:《操作系统专家解读 openEuler 22.09 最新技术特性》。

“要做全场景 OS,就引入了一个需求:原来的构建系统,如何转化为全场景统一构建系统?”

什么是 OS 构建系统?

OS 构建系统以 OS 源代码作为输入,以用户可安装使用的软件仓或OS镜像作为输出。

? 服务器领域的 OBS、嵌入式领域的 Bitbake,是各自领域的代表性构建系统,历史悠久。

为什么需要新的构建系统?

“openEuler 社区一开始是用 OBS 来构建的,”吴峰光介绍说,“OBS 最初由 SUSE 贡献开源,功能强大。但随着使用的深入,我们发现一些复杂的新需求很难在它上面改进,这就对 openEuler 的演进造成了困难。”

就一般的 OS 来说,OBS 构建可能够用;但是当一个操作系统要支持全场景,复杂度就大大增加,对构建系统提出了更严苛的要求。

吴峰光博士对 OBS、Bitbake 做了深入调研。他解释了这些老牌构建系统,为什么满足不了openEuler的需求:

“服务器领域的 OBS 主打能力是什么?几大主流的 Linux 发行版它都支持,比如可以给 Redhat 打包,也可以给 Debian 打包。兼容并包是它的核心设计目标,适应了 Linux 多样化的现状。但我们认为,多样化在早期对 Linux 发展有利,但长期而言,Linux 生态的碎片化是一个需要被解决的问题。”

“嵌入式领域的 Bitbake 采用了面向任务和过程的 DSL 描述语言,这使得它非常灵活强大,但自由度和复杂性过高,以学习曲线陡峭知名。现在流行的理念是如 YAML、JSON 等通用、声明式的配置语言,和函数式编程,以实现低门槛、易理解、可控可重复的构建过程。”

在吴峰光看来,在 30 年后的今天,构建系统有着新的时代目标

2022 年 3 月,openEuler 团队开始设计新的构建系统 EulerMaker。

EulerMaker 构建系统

OS 构建系统的核心流程是,用户给定一组软件包后,按照包依赖关系,对它们发起并行构建任务。“那么搭一个 Kubernetes 集群,上面叠加一个包构建调度模块,是不是就可以了呢?”

“这里的包依赖管理和调度,的确非常复杂:既有源包的依赖,又有二进制包的依赖,还有构建环境的依赖;既有构建依赖,又有运行依赖,还有传递依赖;成千上万的依赖关系,形成一个巨大的图,要考虑怎么破环,把它变成一个有向无环图(DAG),用于最大化并发调度。随着包构建的推进,新输出的 RPM 包需要成为之后 RPM 包构建的环境,还会提供新的依赖信息,动态更新这个 DAG 图。还要考虑各种包构建的失败情况,多用户并发任务之间的干扰,或者任意机器、模块随时崩溃重启后如何接力,避免单点故障,等等,这需要一整套精巧的架构设计。”

看到这样的难题,可能有工程师大牛们要摩拳擦掌,跃跃欲试了。但是在难题面前,吴峰光不慌不忙,踩了一脚刹车——

“我们先把发动机放一边,追根溯源,回到最初的那一个问题:用户到底需要一辆什么车?

做架构设计,首先要考虑用户场景,然后推导出功能,最后才能确定数据和流程。设计时全盘考虑了所有的用户需求,数据和流程在未来才会稳定,才不会变来变去。

“我们对用户需求的考虑,真的全面了吗?”

吴峰光继续展开分析:“在 Linux 发展的最初阶段,需求是简单的:只要功能实现了,跑一下 gcc / make 能构建出来,用户能用,构建系统的工作就完成了。那时侯 Linux 社区对测试不重视,也还没有 CI / CD 的概念,测试基本全靠用户踩坑。现在情况就不一样了,时代的要求在提高:开发者期望有质量把控,要做测试,要有一整套的构建测试 CI / CD,要覆盖一整个开发流程,一站式全部搞定,出来的 RPM 包已经是经过测试的、用户能放心用的。这已经被开发者认为是标配,是开发者的正常预期。”

所以,新的构建系统要集成测试流程。

那么,是不是直接集成现在流行的通用 CI / CD 测试工具就可以了呢?

“市面上的 CI / CD 通用测试服务,适合测试上层的应用;而操作系统需要测试的,既有上层软件,又有基础软件;既面向应用开发者,又面向内核开发者,还有软件厂商、硬件厂商、OS 厂商,他们都有独特的测试需求;既要做功能测试,还要做性能测试。这些不是市面上通用 CI / CD 能做的。”

“所以,我们需要一套全栈系统,既能构建,又满足上述所有测试需求。”

早在 2020 年,吴峰光就综合分析上述需求,设计了 Compass-CI。Compass-CI 被设计为一个通用的任务执行系统,可以执行构建、功能测试、性能测试等各类任务。Compass-CI 也被设计为一个异构调度系统,可以调度物理机、虚拟机、容器等各种资源。

“Compass-CI 已经在 2020 年上线服务,在这个基础上补足构建相关的模块,就可以作为 EulerMaker 的后端,服务 openEuler 的构建。”

“当我们可以用一套系统,来服务好业界各方的需求,就会有硬件厂商问我们,能不能远程接入他们的硬件?然后,我们就需要支持工作机远程接入,分布式调度,数据共享,立足云端,连接各类线下机房,x86、ARM 等各类硬件,方便开发者之间、厂商之间、开发者与厂商之间的分布式协作。”

“资源有了,功能有了,开发者来了,也会有很多需求:我打包了,能不能看见进展?出问题了能不能复现当时的环境?能不能登录调试修复?能不能 DIY 验证?这些需求都需要一一满足大家。现在 EulerMaker 的可视化界面可以显示构建的进展,每个包会显示其依赖关系图以及其构建的进度,哪些包已经构建了,哪些包还没有构建,预计还有多少分钟,它前面还有哪几个依赖都一目了然。而且每个开发者都可以有专属队列,可以大大缩短等待时间。”

EulerMaker 怎么解决全场景

一个 OS 怎么支持全场景?

“首先这个 OS 要足够通用。但这还不够。”吴峰光继续说到:“一个通用的 OS,所带的软件往往要求大而全,把常见的功能都编进去。但很多场合有着不同的需求,比如启用一个不常用的功能,或者在嵌入式设备上,因为资源受限,需要把不必要的功能裁减掉。”

一个通用软件,往往会提供一组编译期的定制功能,方便不同场景的开发者和用户针对自己的需求,构建出不同功能组合的二进制程序。

“类似的,当我们说一个 OS 支持全场景,是只需维护一套 OS 源代码,通过源码级 + 镜像级定制,即可构建生成各类场景化的二进制 OS 发布。强大的定制能力,是赋能一套 OS 源码支持全场景的‘究极魔法’。”

吴峰光进一步介绍什么是定制能力:

“最简单的定制能力,体现在软件打包上,就是对用户提供定制选项。一般是把上游软件的可选功能做一个封装,让用户在做包构建的时候可以打开或者关闭。比如 RPM SPEC 文件中通过宏定义了 %{with xxx} 选项,用户就可以通过 rpmbuild --with xxx 来打开 xxx 选项对应的软件功能。”

“然而 SPEC 文件中往往只封装了少量选项,对于没有被 SPEC 维护者封装的上游软件功能,用户就只好自行修改 SPEC 文件来实现定制,这样就很杂乱了。”

“事实上 OS 的用户和场景多种多样,他们需要的定制项,往往远超包维护者所能提供。比如有人想升级版本号,有人想加个补丁,有人想加个编译选项,或者修改编译器。我们需要一种开放式的定制规范,即允许用户在不修改打包文件的情况下,实现对打包文件的定制,且允许定制任意字段,不限于包维护者事先提供的一个封闭选项集合。”

“这时候就会发现 SPEC 文件的定制能力不够用了。”

EulerMaker 怎么解决这个问题呢?

“我们引入了开发者们都很熟悉的 YAML 配置语言,用它来声明式的描述一个软件包。然后允许用户再定义一个 YAML 文件,来选择性覆盖或者修改 OS 软件包 YAML 文件里的任意字段。这样不但实现了开放式定制,而且用户定制选项都可以以 YAML 配置文件的形式,集中存储管理,或者代码化 Git 管理。”

不过,事情并没有这么简单。

“当用户可以非常方便的定制任意字段,随之而来一个风险:很多包字段之间有条件依赖和约束,用户一不小心,就容易在不知情的情况下,破坏一些关联约束。在过去,很多这种约束在 Git 日志里隐式维护的。比如开发者首先修改一个 SPEC 文件里的版本号,同时去掉一个只适用于老版本的补丁,完成对软件包的一次升级。当暴露在定制环境下,这就是一大脆弱性,会造成事实上难以自由定制。”

而 EulerMaker 的解决办法,是把该补丁适用的版本范围,用条件语句显式的写在软件包 YAML 里。“这样用户随便改版本号,都不会出错,其它关联字段会自适应的变化,从而实现定制自由。”

如此一来,定制能力是强大了,那么易用性又如何?

“一般用户要的不是一堆零件,而是套装。成千上万的定制项,小白用户眼花缭乱,不知道拿它们怎么办,他可能只知道我用的是 OrangePI,那有没有对应的一组定制项可以拿来就用的?”

针对这个问题,EulerMaker 的解决思路如下:

“这组定制项,要由这个专业领域的开发者或者厂商,在社区里提供,我们称之为一个定制层。每一种硬件、场景都可以有这样一个个的定制层。这样场景化 OS 的开发任务就简化为,菜单式选择所需的层,像搭积木一样组合,轻松完成 OS 的场景化分层定制。”

以上,就是 EulerMaker 解决全场景的整体思路。最后,吴峰光总结说:

“一个好用的全场景 OS,一定会是一种生态协作的组织形态。首先把各个场景的公共知识下沉到 BaseOS,统一描述,汇聚复杂枯燥的字段间条件依赖,方便在各个场景中复用。然后创建一个个薄薄的场景化定制层,简单描述各场景下“我要什么”的问题。BaseOS + 多样化场景层,成为 openEuler 社区共同维护和提供的公共组件,通过搭积木的方式,让开发者 DIY 菜单式定制,成就一个轻松愉悦的 OS 创造体验。”

为了让读者们对分层定制有一个直观的概念,吴峰光举了两个例子:

1、Redis 容器裁剪:

env.CC: /usr/bin/musl-gcc -static
env.CFLAGS: -I/usr/musl/include
env.LDFLAGS: -L/usr/musl/lib

buildRequires:
    - musl-gcc

subpackage.redis-server:
    meta.summary: redis-server
    files: %{_bindir}/%{name}-server

redis.yaml 示例

该示例使用十行 YAML,即可裁剪出 1MB 的 Redis 。

​以下视频演示了分层定制 Redis 的过程:

2、内核定制维护:

env.kconfig: CONFIG_BTRFS_FS=y
patchset.my-xxx-improve: xxx.patch

kernel.yaml 示例

该示例使用一个 YAML 文件,两行搞定 Linux 内核的定制维护。

“比如您在一家大公司的基础设施团队,需要在 openEuler 基础上定制 Linux 内核,改一下 kconfig,加一个补丁。在过去,您可能需要拷贝一份 kernel.spec,然后直接在上面修改。这意味着维护上百行的 SPEC 文件,且时不时要从上游回合新的改进,这一过程枯燥而繁琐。现在从 Fork 模式转为搭积木模式,只需维护好一个小小的 kernel.yaml 文件。然后每次拉新的 BaseOS 重新构建,都会自动拿到上游欧拉内核的最新错误修复。这样就很好的降低了开发维护成本,提高了安全性。是一种更加可持续的上下游协同演进方式。”

统一的包格式

在吴峰光的介绍中,我发现了一件令我很感兴趣的事情,就是 openEuler 在探索自己独有的软件包规范。

我们知道,openEuler 现在采用的是业界主流的软件包格式之一:RPM 。这种软件包格式不仅仅被 Redhat Linux 使用,也被 openSUSE、OpenMandriva、Oracle Linux、Tizen 等使用。

而在 openEuler 中,RPM 软件包不仅仅用在我们熟知的服务器、云计算领域,还应用在其它场景中,比如嵌入式。

为了一统软件包的定义,openEuler 采用了新的 YAML 配置语言进行包描述,并接管 RPM 的 SPEC 文件,成为新的开发者界面。吴峰光说,SPEC 文件中采用了大量复杂的宏定义,而 EulerMaker 将这些复杂性隐藏到YAML后面。换言之,openEuler 新的统一构建系统采用的 YAML 配置语言制定了一种更通用、更灵活的包定义。

这是不是代表着 openEuler 会逐渐发展自己的软件包格式?吴峰光表示,在保持兼容性的同时,openEuler 会走出一条自己的路。

别出心裁创建一种新的包格式容易,但是能在兼容既有架构的基础上,又能开拓新的特性,乃至于支持更广泛的场景,这应该很值得期待。

迈向开源开放

经过半年的努力,统一构建系统服务 EulerMaker 已经上线,已经在欧拉社区发挥作用,但是作为一个开源社区的产物,笔者更希望看到它能开源出来,惠及更广大的开源社区,也接受开源社区的批评和贡献。对此,吴峰光博士表示,一定是会开源的,但是目前还需要进一步打磨成熟。对于这样的回应,笔者很认可,毕竟吴峰光博士对开源社区的贡献一向以精益求精而著称。非常期待能早日见到一个强大而完善的统一构建系统开源出来。

作为一个偏爱 在桌面电脑上使用 Linux,并鼓励使用开源软件的人,你可能期待就标题中提出的问题得到一个响亮的肯定回答。

然而,我并不打算仅限于讨论开源软件的优点。让我们一起探索更多观点!

在本文,我计划分享我关于开源软件是否安全的思考,以及哪些事情与开源软件的安全性相关。

为什么你需要关注开源软件是否安全?

不论你是使用 Linux 系统还是使用其他类型的操作系统,你都会在某种程度上(直接地/间接地)被开源软件所包围。

举个例子,大多数专有软件工具依赖于某种形式的开源库来保证其正常工作。

此外,各种规模的公司(包括谷歌、微软和 Facebook)依赖开源软件或者以某种途径向开源社区贡献资源是有原因的。

因此,开源软件的安全性是有必要了解的。

有关开源软件安全性的迷思

虽然有多种理由证明开源软件在安全性方面的缺陷,然而其中一些实际毫无意义。

任何人都可以查看并恶意利用开源软件代码

是的,开源软件代码对于任何人都是可访问的。但是你可以查看代码并不意味着你可以利用它。

不现实。

即使任何人都可以复刻(或者拷贝)该软件,原始软件也不能轻易地被修改使用。

通常,项目维护人员(或者维护团队)管理代码仓库,并且接受来自贡献者的提交。开源软件代码在接受之前会被审查。没有人可以就这样劫持代码。

不论是开源软件还是闭源软件,攻击者都需要付出努力来利用软件中的代码漏洞或者添加恶意代码。

没有专职团队,安全性无从谈起

很多人相信如果开源软件没有专职人员或者专职团队,维护软件安全性是困难的。

恰恰相反,由于各种各样类型的贡献者的加入与离开,开源软件获得了来自更大范围的开发者的更多关注。

他们可能比由专有软件所聘用的少数开发者更能够发现安全问题。

一些来自 Mozilla 等同类公司的项目拥有自己的专职团队来高效处理安全问题。同样的,大部分成功的开源项目拥有大量的资源用于保障安全性。

因此,开源软件的生态系统是安全性的组合包。即使没有专职团队,开源项目也可以得到来自各类贡献者的帮助,他们中的一些很大程度上是有利可图的,这有助于他们投入更多的精力。

开源软件是安全的,以下是原因

既然我们已经澄清了这些有关开源软件安全性的迷思,让我重点展示一下开源软件是如何处理安全问题的。

换句话说,开源软件在安全性上的优势。

请不要忘记,开源软件的优势也是 Linux 比 Windows 更好 的一些原因。

更多的眼晴关注开源软件代码

不像专有软件,(对开源软件的)代码访问并不局限于少数几个开发者。

一些开源项目甚至可能拥有数以万记的开发者可以查看代码、审查它们并标记和修复其中的安全性问题。

相比闭源软件,这给予了开源项目拥有快速识别问题并尽快修复它们的能力的优势。

不仅仅限于拥有更多的开发者,企业通常也会参与他们所使用的开源项目。当他们这样做的时候,他们也会查阅代码并审查它们。

这提供了另一条外部审查的途径,而这可能有助于提升开源软件的安全性。

反之,就闭源软件而言,数量有限的开发者可能并不能找出所有种类的安全问题。而且他们可能需要花费更长的时间来一一修复发现的问题。

社区决定安全问题的优先级

闭源软件的开发者可能在处理什么问题和什么时候解决问题等方面有某些限制或者优先等级。

而如果是开源项目,贡献者社区可以自行决定优先级,并自行安排他们想解决的问题以及决定合适修复问题。你不需要依赖于供应商的决定或者按照他们的指示来解决一个安全问题。

着手处理和修复安全问题的决策在开源软件项目中更加透明和灵活。因此,它可以被证明是更有效的,并为你带来以下三个益处:

  • 透明度
  • 不依赖供应商
  • 更快的安全更新

开源软件不是防弹的,以下是原因

虽然在某些情况下,开源软件可能在安全性上具有优势,然而仍有一些因素影响它。

承认这些问题的存在是很重要的,据此,企业或者个人可以就开源软件的安全情况做出更好的决定。

并无足够的眼睛来审查代码和不确定性

即使开源软件代码可以被全世界的开发者自由访问,项目没有足够的贡献者/开发者彻底审查开源代码的可能性仍然存在。

既如此,我们不能对开源软件的同行审查抱有极高的信心,因为它恰好缺失了这一点。

开源软件可能“声称”拥有最高的安全性因为它们是开源的。在没有足够的开发者致力于该项目时,这是一种误导。

同样,我们也无从得知有多少开发者在查看/检查代码,也不知道代码的检查进行到什么程度了。

举例而言, 心脏出血漏洞 Heartbleed 是在一个被广泛使用的项目(OpenSSL)中引入了 2 年以后才被发现的。

软件责任与问责

对于个人用户这可能并不重要,但是开源项目通常并无任何保证

因此,如果一家公司使用它,它们必须自行承担任何由该软件使用造成的数据丢失与损坏。

这告诉你,没有什么是 100% 安全和没有漏洞的。无论有多少眼睛聚焦在代码上或者贡献者的技术多么精湛,总会存在某种形式的风险,无论是安全风险还是数据丢失。

这告诉我们一个现实:开源软件并非防弹的。

开源软件有其更高安全性的优势,但是...

就安全性而言没有什么优胜者。不论是闭源还是开源,当涉及安全问题时都适用同一套原则。

有很多外部因素可以影响软件安全性,而其中很多因素并不依赖于源代码

必须以某种形式监控代码,以保证安全。

是的,开源道路提供了闭源软件所不具备的优势,但是这并不意味着开源软件是防弹的。

你对开源软件安全状况有何思考?你又是否认为开源软件比专有软件解决方案更好呢?

提前感谢你在下面的评论中提出的宝贵意见。


via: https://news.itsfoss.com/open-source-software-security/

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

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

想知道如何为你的开源软件项目收集使用指标?考虑一下使用这些替代方案的利弊。

我们这些支持开源项目社区的人经常被问到很多有关使用指标的问题。这些指标通常是为了通过用户量和知名度来衡量软件的重要性。我们一般都想知道有多少人使用该软件,有多少次安装,以及有多少人生活接触过它。

但简而言之,我们尚无法直接回答上述问题。

如果你想要寻找一个明确的解决方案,那很抱歉要让你失望了。有关使用指标的问题,没有人有完美的答案,至少没有准确的答案。

好消息是,有一些近似的和替代指标至少能够部分地满足你对软件使用情况了解的渴求。本文探讨了这些替代方案以及它们的优点和缺点。

下载量

当你浏览提供软件的网站时,你通常可以看到软件的下载次数。映入我脑海的一个例子是 Firefox ,它曾经有一个下载计数器。Firefox 的下载量是一个印象深刻的数字,给人的印象是 Firefox 是一个流行的浏览器,在一段时间内确实如此。

然而,个人行为会直接影响这一数字的准确性。举例而言,当一个人定期重置他们的设备时,每一次重建都会引发一次独立的下载。考虑到这一现实,需要设计一种方法从下载量中去除几十次(或许是几百次)的下载次数,因为那是一个人。

下载量不仅会高估使用量,还会低估使用量。例如,一个系统管理员可能会下载一个新版本的 Firefox 一次并将其拷贝到 U 盘上,然后安装到数百台设备上。

下载量指标是易于收集的,你可以在服务器上记录每一个下载请求。问题在于你不知道在这些软件下载以后会发生什么。下载它的人是否如预期的那样使用软件,还是遇到了问题而放弃了它。

对于开源项目而言,你可以考虑各种下载量指标,比如来自以下途径的下载指标:

  • 项目官网
  • 包管理器,比如 npm、PyPi 和 Maven
  • 代码仓库,如 GitHub、GitLab、Gitee 等

你可能还对源代码的下载量感兴趣,因为下游项目更可能使用源代码形式(参见 《如何衡量你的开源项目的影响》一文)。相应的下载指标包括:

  • 从代码仓库克隆的数量,比如 GitHub、GitLab 和 Gitee
  • 从官网下载的归档文件(tar、zip)的数量
  • 通过像 npm、PyPi 和 Maven 这样的包管理器下载的源代码数量

源代码的下载指标比二进制代码的下载指标更不可靠(虽然尚无相关研究表明如此)。试想一下,一名开发人员想要你的最新版本的源代码,并将他们的构建管道配置为每次构建都克隆你的仓库。再想象一下,一个自动构建过程失败了,它试图重新构建而不断地克隆你的版本库。你还可以考虑这样一个下载量低于预期的场景——源代码仓库在某些地方缓存了,下载来源是由这些缓存所提供的。

相关阅读:跟踪你的开源社区的 5 个指标

总而言之,下载量指标是用于提供当前使用情况和探测趋势的很好的指征。我们无法明确地定义一次下载是如何转化为使用的。不过我们可以认为增加的下载量是更多潜在用户的标志。举例而言,如果你为你的软件做了广告并在活动期间得到了更高的下载量,可以合理地假定广告推动了更多人下载该软件。下载行为的来源与元数据还可以提供额外的与使用行为相关的内容。你的软件的哪些版本仍在使用中?什么操作系统或者特定语言的版本更加流行?这有助于社区决定将哪个平台的软件作为支持与测试的优先选项。

议题

作为一个开源项目,你可能有一个议题追踪器。当某个人提出一个议题时一般有两个目标,报告一个漏洞或者请求增加一项功能。提议者很可能已经使用过你的软件了。作为一名用户,他可能发现了一个漏洞或者发现了对一个新功能的需求。

很明显,大多数用户不会执行额外的步骤来提交议题。提议者是我们的忠实用户,我们对他们表示感谢。此外,通过提出议题,他们已经成为了非代码贡献者,他们也有希望成为代码贡献者。经验法则是大约每 10000 名用户中,可能有 100 名提议者,以及 1 名代码贡献者。当然取决于用户类型,上述比例可能有出入。

回到指标问题,你可以将提议者数量作为评估使用量的下界。相关的指标包括:

  • 提议者数量
  • 活跃提议者的数量(在过去 6 个月内提出议题的提议者)
  • 同时有代码贡献的提议者的数量
  • 尚未解决的议题的数量
  • 对议题发布的评论数量

邮件列表、论坛和问答网站

很多开源项目都拥有用户邮件列表、论坛,并且出现在类似 Stack Overflow 的问答网站上。与提问者一样,在这些地方发帖的人可被视作用户的冰山一角。与邮件列表、论坛和问答网站上的社区活跃程度相关的指标也可用于反映用户数量的上升或下降。相关指标可以集中于以下地方的活动,包括:

  • 用户邮件列表的订阅量
  • 论坛用户的数量
  • 问题的数量
  • 答案的数量
  • 发布信息的数量

上报功能

为了获得精确的用户数量,一个方案是让软件在使用时上报信息。

这是令人毛骨悚然的。想象一下,系统管理员的防火墙报告了一个非预期的到你的服务器的网络连接,你不仅无法再收到软件报告(被防火墙拦截了),恐怕连你的软件也可能在未来被禁止使用。

负责任的设置上报功能的方式为设置一项可选服务来检查更新并让用户知道使用最新版本。另一项可选功能可以集中在使用遥测上,你可以通过该功能询问用户是否允许匿名上报软件使用情况。如果经过深思熟虑的实施,这种方式可以允许用户通过他们使用软件的方式帮助优化软件。用户可以持有这样的意见:我一般不允许这种使用信息的分享;但对于一些软件,因为希望开发人员在长期内将软件优化得更好,我愿意这样做。

星标与复刻

星标与复刻是如 GitHub、GitLab、Gitee 等社交化编程平台的功能。这些平台上的用户可以给一个项目加星标。为什么他们要给项目加星标呢?GitHub 的文档作出了解释:你可以给一个仓库和主题加星标,以跟踪感兴趣的项目,和在你的新闻订阅中发现相关的内容。给一个项目加星标与将其加入书签的效果一样,并且还提供了一种向项目仓库的维护者展示赞赏的方式。星标的数量已经成为了项目流行程度的标志。当一个项目发布重大公告并获得相当的关注时,项目的星标数量会呈上升趋势。星标的数量指标并不反映软件的使用量。

在社交化编程平台上的 复刻 Fork 是将项目仓库复制一份在自己名下。仓库的非维护者可以在他们自己的克隆仓库中做修改,并将修改通过 拉取请求 pull request (PR)的方式提交审核。复刻比星标更能反映软件社区的规模。开发者也可能为了保存一份代码副本而克隆一个项目,以便在原始仓库消失后他们仍能访问代码。因为复刻功能在代码贡献工作流中的应用,复刻量是衡量开发社区的良好指标。复刻量通常也不反映非开发人员的使用,因为非开发人员一般不创建复刻。

社交媒体

包括 Facebook、Instagram、LinkIn、Reddit、Twtter 等社交媒体平台提供了相同兴趣的人们聚集的平台。采用社交媒体策略,开源项目可以通过在平台上设置相应的聚集空间来吸引对项目感兴趣的人们。通过这些社交媒体途径,开源项目可以分享项目新闻、更新,指出贡献者和用户。这些社交媒体途径还可以用于认识那些本不会通过其他途径与项目互动的人。

我在犹豫是否建议关注以下指标,因为它与软件的真实使用量没有清晰的联系,并通常需要分析其中的积极、消极和中性的情绪。人们可能因为很多不同的原因对你的项目感到激动而关注它,但并不实际使用它。然而与之前已经讨论过的指标一样,能够在社交媒体上吸收人群本就是项目受关注的整体指标。不同社交媒体平台的指标包括:

  • 关注者与订阅者的数量
  • 消息的数量
  • 活跃的消息作者的数量
  • 喜欢、分享、回复以及其他交互的数量

网站分析与文档

网站流量也是一个有用的指标。这一指标主要受到你的服务范围以及市场营销活动影响,而不是用户量。然而,我们还有一张王牌:我们的用户文档、教程、手册以及 API 文档。我们可以发现我们的网站以及文档中的什么主题更引人注意。文档的访问者数量应当大致随着软件的使用者数量增长而增长。因此我们可以通过网站的访问量探知对项目的普遍兴趣,并进一步通过观察文档的访问者来观察用户风向。这些指标包括:

  • 网站访问者数量
  • 文档访问者的数量
  • 访问者在你的网站与文档上所花的时间

活动

活动的指标可以在你主持与项目相关的活动时使用。这是建立社区的很好的方式。有多少人提交摘要想要在你的活动中发言?有多少人出席你的活动?不论是在线下活动还是线上活动这可能都很有趣。当然,你如何推广你的活动在很大程度上决定有多少人到场。同时你可以将自己的活动与人们出行的大型活动放在一起以方便人们参加你的活动。只要你使用一贯的活动策略,你可以通过演讲者提交的材料与参会者注册的增加来表征软件受欢迎程度与用户群的增加。

你并不需要举办你自己的活动来收集有用的指标。如果你在开源活动中主持有关你项目的讨论,你可以衡量有多少人出席主要关注你的项目的会议。像 FOSDEM 这样的活动,一些讨论特别聚焦于开源项目的更新与发布,会议室中都挤满了人(像 FOSDEM 的所有会议一样)。

你可以考虑如下指标:

  • 以你的项目为中心的活动的出席人数
  • 提交到以你的项目为中心的活动的演讲数量
  • 以你的项目为中心的演讲的出席人数

关于估算开源软件使用的结论

正如我们已经如上展现的,有很多指标可以反映软件使用的趋势,没有一个指标是完美的。在大多数情况下,这些指标可能被个人行为、系统设计和噪音所严重影响。因此,考虑到每一个指标的相对不确定性,我们建议你不要孤立地使用任何一个指标。但是如果你从不同的来源收集了一系列的指标,你应当能够探测到用户行为与软件使用的趋势。如果你有办法在多个具有共性的开源项目中比较同一组指标,例如类似的功能、强大的相互依赖性、在同一基础设施上托管,以及其他特征,你就可以提升你对用户行为基线的感知。

需要注意的是,在这篇概述中,我们选择突出能够评估直接使用情况的指标。而大多数软件都依赖于其他各种软件包,如果我们不提及作为软件依赖链的一部分而被间接使用的严重影响,这就是我们的疏忽。因此,我们建议将上下游依赖的合计数量作为你的分析中的另一层内容。

最后,作为数据与指标的使用者,我们鼓励你认识到你的利益相关方的权利与责任。你发布的任何指标都有可能影响用户行为。最好的做法是经常一同分享你的背景信息——基础、来源、估算方法和其他关键上下文信息,这有助于其他人解释你的结果。

感谢 CHAOSS 社区在爱尔兰都柏林举行的 CHAOSScon EU 2022 上的富有洞察力的对话,上述对话激发这篇博文的想法。我们还要感谢 CHAOSS 社区的成员审阅并帮助优化本文。


via: https://opensource.com/article/22/12/open-source-usage-metrics

作者:Georg Link 选题:lkxed 译者:CanYellow 校对:wxy

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

在这篇文章中,我回顾了 2022 年最好的 Linux 发行版 —— 而剧透一下:它们并不都是基于 Ubuntu 的!

我知道:我每年都会开这样的玩笑。但是,嘿:我写的是 Ubuntu。我使用 Ubuntu。你可能希望我把所有的东西都放在 Ubuntu 上。但是 Linux 生态系统呢?它不仅仅是 Ubuntu。有很多顶级的 Linux 发行版都值得赞扬、庆祝和认可。这个名单是我给它们的一个小表扬。

也就是说,下面的内容并不代表着优越性,也不代表着重要性的排名。这只是我个人对今年的一些最好的 Linux 版本表示赞许。它是全面的吗?它也不是一个评比,所以如果你喜欢的操作系统没有出现在下面,并不是因为我认为它很糟糕!这只是我的个人观点。

随着 SEO 之神(希望)对这些冗长的介绍感到满意,让我们来看看我的 2022 年五大 Linux 发行版吧!

1、Ubuntu 22.04 LTS

a screenshot of ubuntu 22.04 desktop

对我来说,2022 年最好的 Linux 发行版可以说是 Ubuntu 22.04 LTS,它早在 4 月份就已经到来。

长期支持版本总是大事,因为有数千万人使用它们。值得庆幸的是,Ubuntu 的专业开发者推出了一个值得关注的版本。

撇开 Snap 的问题不说,Jammy Jellyfish 采用了GNOME Shell 42、可配置的强调色、默认使用 Wayland、新的多任务选项、新的停靠区选项、更好的桌面图标扩展、Linux 内核 5.15、支持树莓派 4,再加上成堆的更新的应用、工具和软件包。

虽然我是一个喜欢尝试短期版本的人 —— 一直都是,可能永远都会是 —— 但大多数人都坚持使用 LTS 版本。在 Ubuntu 22.04 中,他们得到了一个真正足够好的版本,可以在其支持期内使用,而且 没有恐惧感

2、Fedora Workstation 37

A desktop screenshot of Fedora 37 Workstation with the Settings app and Nautilus file manager open

Fedora Workstation 成为桌面 Linux 旗舰发行版是有原因的:它很强大、很可靠,制作无懈可击 —— 它提炼了很多人最想追求的东西:“纯粹” 的 GNOME 体验,并且按照开发者的意图,在一个强大而稳定的基础上提供。

秋季提供的 Fedora 37 Workstation 带有 GNOME 43 —— 一个通过 快速设置 Quick Settings 大大改善 GNOME Shell 用户体验的更新。还有一个用 GTK4/libadwaita 重建的功能更丰富的 “ 文件 Files ” 应用;一个改进的“ 日历 Calendar ”应用;一个设备安全面板;对树莓派 4 的支持;GRUB 代替了 BIOS 上的 syslinux;以及更多。

人们经常忽略 Fedora Workstation,因为作为 Linux 发行版,它相当低调,不显眼,而且没有惊喜。然而,它是一个精巧而实用的发行版,放弃了花哨的装饰,完全专注于它的性能、集成度和凝聚力。

如果你从来没有尝试过 Fedora,你就错过了,所以请试试吧!

3、Manjaro 22.0 “Sikaris”

a screenshot of the Manjaro Linux distribution with a terminal and web browser open

很明显,Manjaro 的一个版本必须出现在这个列表中。而作为基于 Arch 的 Linux 发行版,Manjaro 是最好的 Linux 发行版之一。哦,我知道:在更广泛的 Linux 社区中,围绕着 Manjaro 有很多争论,但对我来说,这些茶杯中的风暴从未影响到该发行版本身的质量(或者应该是味道 ☕️)。

12 月发布的 Manjaro 22.0 版本就是这样的例子。带有 KDE Plasma 的 “主” 分支版提供了一个完美的体验。从 Shell 到包管理器,再到定制的触摸动作和应用程序,一切都很有凝聚力,经过深思熟虑,并经过精心编排。

Manjaro 22.0 不仅仅是一个发行版,它是一种体验。

Manjaro 的特定桌面 “版本” 也组织得非常好。它们从不觉得自己是 Manjaro 加 Xfce、加 GNOME,等等。每一个版本都是精心策划的,并且漂亮地整合了各自桌面的优势 —— 或者用不太华丽的术语来说:无论你选择哪一个 Manjaro 版本,你都感觉它是“主”分支版。

另外,Manjaro 社区很大,很活跃。对于任何出现的问题,我都能在 Manjaro 论坛上找到关于它的帖子(或者有人愿意为我指出解决方案的方向)。社区是发行版的重要方面。Linux 内核是大多数发行版的核心,但社区才是其生命线。

Manjaro 是一个完整包装,绝对是年度发行版。

4、Linux Mint 21

a desktop screenshot of Linux Mint 21.1 with new folder icons showing in the Nemo file manager

Linux Mint 21.1 稍微新一些,在视觉上有些有趣的更新(比如新的小程序和更新的艺术设计),在这两个版本中,最初的 Linux Mint 21 版本在今年带来的影响更大。

作为经常被宣传的 “新手” 发行版,Linux Mint 的核心目标是提供一种轻巧和熟悉的计算体验,并保持不受影响,这一点继续得到了与 Windows 工作方式相适应的用户的共鸣。

Linux Mint 21 “Cinnamon” 是轻量级和高效的,使它成为低端硬件和旧机器上的一个很好的选择。除了易于使用之外,Linux Mint 还提供了有趣的预装软件,旨在满足大多数用户的需求,包括一些相当特别的 自制应用程序

总的来说,Linux Mint 21 是想要一个可靠和易于使用的操作系统的用户的完美选择。

5、Ubuntu 22.10

一个列表中出现了两次 Ubuntu?这有点多,但 PipeWire 的加入意味着我应该选择 22.10。说实话,这是我作为本网站编辑的义务 —— 什么? 是的,我自己写的合同……你为什么这么问?

不过说真的,Ubuntu 22.10 的上述 PipeWire 的加入(虽然已经逾期)意味着大多数蓝牙音频设备现在都能在 Ubuntu 上 “正常工作”。再加上 GNOME 的 “ 快速设置 Quick Settings ” 中的音频设备切换器,意味着 Ubuntu 22.10 在现代音频设备上的表现是正确的。

其次,GNOME 43 和一连串 libadwaita 移植的上线意味着 “Kinetic Kudu” 的出现具有真正的活力 —— 就其背景而言,它是最早尝试 GNOME 43 的方式之一 —— 这一点从早期的 Unity 时代就已经消失了。

最后,毫无疑问,最重要的、最关键的和决定性的元素是 “Kinetic Kudu” 吉祥物墙纸 —— 这是自 “Hardy Heron” 以来最好的 Ubuntu 默认墙纸,我认为。

荣誉提名

将我的选择限制在 5 个是必要的,否则这将是一个非常长的列表,需要列出在过去 12 个月中推出的每一个 Linux 发行版。

一些额外的呼声是:最近 EndeavourOS 的 “Cassini” 版本对于任何想要使用可靠的滚动发行版的人来说是一个理想的跳板。最新的 Zorin OS 是基于较早的 Ubuntu 基础上的,但开箱即用的特点对于刚接触 Linux 的用户来说仍然是令人振奋的。

游戏玩家、程序员和创作者都很喜欢 Pop!\_OS 22.04,这是 System76 发行版的最新版本,默认搭载 GNOME Shell;轻量级 Linux 发行版 MX Linux 也受到了很多人的喜爱,它为旧硬件注入了新的活力。

还有一个值得一提的就是 SteamOS,Valve 在 Steam Deck 掌机上预装的基于 Arch 的发行版。

该你了

这就是我列出的 2022 年最佳桌面 Linux 发行版。在选择它们时,我试图权衡各种功能集、变化和关键技术,并牢记其吸引力和受欢迎程度。顺便说一下,MX Linux 差一点就能占到一席之地 —— 希望能听到更多关于这个和其他发行版的消息。

总之,谁会在乎我怎么想呢?

我想听听你在过去 12 个月里对发行版的选择。所以,请在评论中写下你的看法(以及提示,比如:“老式” Disqus 主题又可以在选项中选择了,耶)。尽量保持积极的态度,把重点放在你喜欢的发行版和发展上,而不是你不喜欢的那些。

在许多方面,我们的工作性质塑造了我们。那么,未来工作的性质将发生巨大变化,我们又该做何准备呢?

 title=

如果我们将“工作”定位为获得某种回报的任何形式的付出,那么工作是,并且一直是,决定我们是谁的主要因素之一。工作是我们生活的一个重要方面。在工作中(不论这对我们意味着什么),我们结识朋友,我们获得智力激励和情感满足的源泉,我们得到成长,我们感受自身无穷的创造性。对于我们的家人、朋友、社区和社会而言,工作极其重要,我们不应轻视工作的重要性亦或视其为理所当然。

因此如果未来 工作的性质将发生变化,这可能意味着恰恰是我们 自我认知 中的某些关键要素将发生变化。我们应该认真准备应对这些转变。

考察自第一次工业革命(18、19世纪)以来的工作转变,很多人从从事农业劳动转为进入城市工厂工作,这从根本上改变了他们的生活方式。新的工作方式需要全新的、更专业的工作技能,而不再是农村经济中常见的手艺。接下来的几十年里,当我们检视我们的个人工作环境时,我们可能会发现工业时代以来的这一趋势可能发生逆转:从层级制度、可代替的通用技术与活动,重新转变为横向协作与对专业知识的熟练掌握的更高要求(回到手艺时代)。

不过,这一次,这些转变的到来将是全球性的而非区域性的,而且转变的速度要快的多。

在这一新的工作环境中,开放组织原则 将扮演关键性的角色。

本系列中,我将回顾 Lynda Gratton 教授的作品《转变》(LCTT 译注:中译本:《转变:未来社会工作岗位需求变化及应对策略》,ISBN:9787121152894),本书成书于 2014 年(LCTT 译注:本书原版有 2011 版2014 版),书中数据于 2010 年收集,但今天仍然适用(将来也一样)。本书中,Gratton 教授指出了工作将在 2025 到 2050 年间如何变化。这是关键信息,因为它有助于我们在准备和发展我们的职业生涯时作出正确的选择。

Gratton 教授阐释了在上述时间段内影响未来工作的主要因素。本系列中,我们将对它们做一个总结并解释开放组织原则如何融入它们之中。

影响未来工作的五个因素

煤炭与蒸汽动力的发明推动了第一次工业革命。Gratton 教授 说,今天,五种微妙的力量导致了类似的转变:

  1. 日益增长的全球化活动
  2. 技术的快速进步
  3. 人类寿命与人口数量
  4. 社会与家庭结构变化
  5. 低碳经济的需求

简而言之,计算机更快了,材料更强了,药物能治疗更多的疾病使得人类的寿命更长。这些都在不同程度上影响了我们未来的工作方式。以下针对上述每一点的一些说明。

1、全球化

在以前的文章 《全球化:开放的历史》 中,我讨论了全球化的多种动力与影响因素,其中之一就是贸易。从 1950 年到 2010 年的 60 年间,全球贸易量增加了 60 倍,与此同时运输成本降低了,发展中国家不仅看到了贸易增长,而且看到了新的创新。我还在我的另一篇文章 《历史变迁中的开放组织》 中讨论了历史早期的全球化。我另外在我的文章 《全球性的开放组织是怎么样的》 中探讨了从现在到未来全球治理的重要性。如 Gratton 教授所言,全球化在未来工作中将发挥不可否认与不可避免的影响。

如果未来工作的性质将发生变化,这可能意味着恰恰是我们自我认知中的某些关键要素将发生变化。我们应该认真准备应对这些转变。

2、技术

计算成本一直在以惊人的速度下降,它还将继续下降。这有助于连接到目前为止仍然大部分被隔离在更大的全球经济之外的数十亿人。他们将开始进入劳动力市场并成为更有影响力的消费者。与此同时,计算机与高级自动化在未来将 取代人类工作,这都将影响未来的工作转变。

3、人口数量与寿命

Gratton 教授还记录了不同世代的人对未来工作的影响,尤其是在美国。年轻一代在未来将扮演主要角色,他们的态度将不同于上一代。此外,全球不同地区的出生率将影响经济繁荣。由于一些地区的人口降低而另一些的将会增加,将会出现更多的移民。他们将移民至 Gratton 教授谓之“创新集群”的地方。最后,Gratton 教授认为全球预期寿命将会变化。截至 2025 年,世界人口的 10% 将超过 65 岁,这些人口将更可能希望继续工作,以得到持续的收入、精神刺激、身体活动,与他人的联系以及生活的意义与目的的源泉。考虑到今天的很多儿童都更可能拥有超过 100 岁的寿命,如果他们在 65 岁退休,他们余下的至少 35 年里将做不了太多事情。基于这样的考虑,在未来职业道路的多次转换以及在社区与志愿服务项目中的积极参与将会大大拓展。

4、社会

常规的变化之外,Gratton 教授还描述了一些社会变化。她说,未来女性在工作上的角色将会变化,人们将比以往拥有更多的选择来塑造他们希望的生活;随着个人劳动生产率的提升,平均空闲时间将比以往更多。

5、能源

我在 资源工业革命 上的一篇演讲中讨论了资源节约型工业的扩张。格拉特教授为该对话补充了一些有价值的观点。她认为气候变化将逐渐成为主要议题,并导致运输与消费的降低。尤其是世界范围内的水资源供给将无法跟上用水需求。海水淡化项目将大幅扩张(可能由正在开发的 第四代 分布式小型模块化核电站提供动力)。环境灾难将使人们背井离乡,并在世界范围内形成移民社区。更多能效高的生活方式将会被发现和引入,这将影响未来工作。

为未来提前准备

上述五种力量将推动未来工作方式发生根本性的改变,Gratton 教授认为我们现在就需要开始为这样的未来提前做准备。本系列的下一篇文章中,我将介绍 Gratton 教授对未来的展望以及应对快速变化的未来的一些情境。个人如何将这些变化视作职业机会?另一方面,如果简单地选择对即将到来的变化 视而不见 又会发生什么?我将回顾 Gratton 教授在这些问题上的思考。同样的,我也将解释开放原则如何形成必经的变革的核心。


via: https://opensource.com/open-organization/21/1/open-is-future-of-work

作者:Ron McFarland 选题:lujun9972 译者:CanYellow 校对:wxy

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

利用太阳能、硬件和开源来建立你自己的电动车充电站。

也许你讨厌在寒冷或者酷热的时候加油,也许你关心环境问题。也许不断上涨的油价和通胀让你不得不考虑怎么更合理的安排开支。也许你只是认为电动汽车看起来很酷。不管什么原因,你都会因为即将拥有一辆电动汽车而感到激动,激动的不仅仅只有你。电动汽车的市场份额将在 2040 年增长到 30%美国政府提供了一个简易的比较工具,用来展示维护一辆电动汽车的花费比维护一辆化石燃料汽车要少很多。尽管如此,电动汽车的充电费用仍然会给你的钱包带来沉重的负担。

通常,解决成本问题的最优雅的方法之一是应用开源原则来加速创新。幸运的是,在电动汽车充电领域已经找到了一种获得低成本电力和充电桩的方法。

为了控制电动汽车充电的成本,首先,你需要低成本的电力。在过去,这意味着从石油倒退到煤炭。如今,能将太阳能直接转化为电能的 光伏发电 solar photovolataic (PV) 设备提供的电力通常被认为成本是最低的。煤炭公司正在因为无法继续与清洁的太阳能竞争而破产。这也是 太阳能发电在世界各地都爆炸性增长 的原因。许多房主把 太阳能电池板放到他们的房顶 或者后院的支架上,以满足他们家庭的电力需求。但是,如果你的屋顶面积有限或者后院很小,你怎样才能使用太能能给你的电动汽车充电呢?

开源光伏停车篷

大型企业正在采取的一个方法是在他们的停车场上建造一个光伏顶篷。如果你自己想做一个,一个新的 研究 提供了三种新型开源光伏顶篷系统全面的机械和经济方面的分析。

  • 使用纯木材的单一停车位横跨系统
  • 使用木材和铝的双停车位横跨系统
  • 使用木材和铝的悬臂系统

这些设计是以 5 * 6 个停车位的样式呈现的,但是这三个系统都可以扩展到任何需要的停车位数量。包括一个 6 千瓦的家用单车充电系统(如下图)。所有的支架都有 25 年的预期寿命来配合标准的光伏保修。

Image of a single car PV canopy.

这些开源光伏顶篷都是为了抵御加拿大残酷的冬天而设计的,它们遵循加拿大严格的建筑规范。所以,不管你住在其他任何地方,这些系统的设计都仍然可以为你工作。顶篷的 完整设计 以及材料清单,包括基本说明都有提供。它们以开源许可的方式发布,保证任何人都可以依照关于 DIY 太阳能收集器的免费书籍 《 拥抱太阳 To Catch the Sun 》 制作它。

前面提到的 研究 结果显示,开源设计比专利产品的成本低很多。单跨系统可节省成本 82% 到 85%,双跨系统节省成本 43% 到 50%,悬臂系统节省 31% 到 40% 。

最重要的是,这些设计给你提供了足够多的能源(如果你只是正常通勤)来满足你的充电需求。在运行的第一年,光伏顶篷可以提供目前市场上效率最低的电动汽车充电所需电量的 157% 。

Image of an OpenEVSE charging station.

开源电动汽车充电桩

减少电动车维护成本的另一个办法是安装一个开源的电动车充电桩。OpenEVSE 是一个基于 Arduino 的充电桩,由 开源软件 和硬件组成,可以以 DIY 的方式制作。它们体积小,重量轻,便于携带,你可以在家里或者旅途上使用它们。

OpenEVSE 为世界各地的许多电动车制造商提供充电站。你可以根据自己的需求调整它。OpenEVSE 已经相当成熟,支持许多先进的功能,包括可调电流,温度检测和实时功率显示。你可以购买预先组装好的硬件马上体验。如果你想 体验更多的乐趣 节省更多的钱 ,可以购买一套套件自己动手制作。

Image of the OpenEVSE kit.

我希望未来可以看到更多关于电动汽车充电解决方案的设计。睁大眼睛,撸起袖子加油干,享受组装你的开源太阳能充电桩的乐趣。


via: https://opensource.com/article/22/12/open-source-ev-charging

作者:Joshua Pearce 选题:lkxed 译者:duoluoxiaosheng 校对:wxy

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