使用开源工具来举办线上大会
下面是使用开源工具来举办一场线上活动的方法。
线上大会
60.27.80.160
妙啊
来自天津的 Chrome Mobile 106.0|Android 13 用户
2023-07-30T11:17:33.000
下面是使用开源工具来举办一场线上活动的方法。
![](/data/attachment/album/202307/30/073728saabpgnjtz5ankgb.jpg)



> 
> 下面是使用开源工具来举办一场线上活动的方法。
> 
> 
> 


在 2023 年 1 月举办了首届 <ruby> <a href="http://creativefreedomsummit.com/">  创意自由峰会 </a> <rt>  Creative Freedom Summit </rt></ruby> 后，[Fedora 设计团队](https://fedoraproject.org/wiki/Design) 发现使用开源工具来举办线上大会非常有效。


在本文中，我将分享一些关于这场大会的背景信息，为什么对我们来说使用开源工具来举办大会很重要，以及为实现这一目标我们的团队所使用的具体工具和配置。我还会谈谈哪些工作做的很好，在以及我们 2024 年下一届峰会中需要改进的地方。


### 创意自由峰会


创意自由峰会是 Marie Nordin 在审查了 [Fedora 用户与贡献者年度大会（Flock）](http://flocktofedora.org/) 的演讲提交后提出的一个想法。在 2022 年 8 月的 Flock 大会上，她收到了大量与开源设计和创意相关的演讲提交，远远超出我们能够接受的数量。由于存在许多关于开源设计的优秀想法，她想知道是否有机会举办一个独立的开源创意大会，专门面向在创作中使用开源工具的创意人士。


Marie 在 2022 年秋季向 Fedora 设计团队提出了这个想法，我们开始筹划这个会议，会议于 2023 年 1 月 17 日至 19 日举行。由于这是我们第一次举办这样一场新的会议，我们决定首先基于 Flock 提交的演讲和我们自己的开源创意人士网络，邀请其中一些人士担任演讲嘉宾。几乎每位我们邀请的演讲者都答应演讲，所以我们没有接受其他人的提交。明年我们需要找到更好的解决办法，所以目前我们还没有开源的投稿管理工具可供介绍。


### 在开源大会中使用开源工具


自从最初的大流行封锁以来，Fedora 的 Flock 大会一直使用 Hopin 虚拟平台在线举办，尽管 Hopin 不是开源的，但对开源工具很友好。Fedora 几年前开始使用 Hopin，它确实提供了专业的会议体验，包括内置的赞助商展位/博览厅、分会场、大厅聊天对话和管理工具。通过 Hopin 来举办创意自由峰会对我们来说可行，因为作为 Fedora 赞助的活动，我们可以使用 Fedora 的 Hopin 环境。再次强调，Hopin 不是开源的。


作为一个长期（约 20 年）的开源贡献者，我可以告诉你，做出这样的决定总是很困难的。如果你的大会专注于开源，使用专有平台来举办你的活动可能会有些奇怪。然而，随着我们社区和活动的规模和复杂性不断增长，开发一个集成的开源会议系统变得更具挑战性。


并不存在正确或错误的答案。在做出这个决定时，你必须权衡很多因素：


* 预算
* 人力资源
* 基础设施
* 技术能力
* 活动的复杂性/正式性/文化


我们没有为这次活动安排任何预算。我们有一支志愿者团队可以投入一些工作时间。我们有 Fedora Matrix 服务器作为可以加入的支持基础设施，并且有一个托管的 WordPress 系统用于网站。我和队友 Madeline Peck 在举办每周的 Fedora 设计团队的 [视频会议](https://opensource.com/article/23/3/video-templates-inkscape) 方面具有一定的技术能力和经验。我们希望这次活动是低调、单一会场和非正式的，所以对于一些小故障或瑕疵我们有一定的容忍度。我们对尝试使用开源工具组合也有很大的热情。


现在你了解了我们在做出这个决定时的一些考虑因素，这可能有助于你在为自己的活动做决策时参考。


### 一个开源会议技术栈


以下是会议技术栈的工作方式。


#### 概述


直播组件：


* **直播流**: 我们通过 PeerTube 频道将主舞台和社交活动进行实时直播。会议参与者可以从我们的 PeerTube 频道观看直播。PeerTube 提供了一些注重隐私的分析功能，可以跟踪直播观众和活动后观看次数。
* **直播舞台 + 社交活动房间**: 我们设有一个用于演讲者和主持人的直播舞台，使用 Jitsi 确保只有有权限的人可以上镜。我们额外设有一个 Jitsi 会议室，用于社交活动，允许任何希望参与社交活动的人上镜。
* **后台**: 我们有一个名为“后台”的 Matrix 频道，用于在活动期间与演讲者、主持人和志愿者协调工作。
* **公告和问答**: 我们通过共享的 Etherpad（后来转移到 [Hackmd.io](http://Hackmd.io)）来管理问答和每日议程。
* **集成和集中化的会议体验**: 使用 Matrix 的 Element 客户端，我们将直播视频和 Etherpad 嵌入到一个公共的 Matrix 频道中，供会议使用。我们根据频道中的参与人数来监控整体会议出席情况。我们在整个会议期间设有实时聊天，并从聊天和嵌入的用于问答的 Etherpad 中接受观众提问。
* **会议网站**: 我们有一个由 Ryan Gorley 设计精美的网站，托管在 WordPress 上，网站提供了基本信息和链接，包括如何参加会议、日期/时间和议程。


活动后组件：


* **活动后调查**: 我们使用开源的 LimeSurvey 系统向参会者发送了一份活动后的调查，以了解他们的参会体验。我在这篇文章中使用了该调查的一些数据。
* **活动后的视频编辑和字幕**: 我们的会议没有实时字幕系统，但在我能做到的情况下，我在频道中即时记录了演讲的笔记，与会者对此表示非常感激。活动后，我们使用了 Kdenlive（活动中演讲中展示的工具之一）来编辑视频并生成字幕。
* **活动录像**: PeerTube 会自动将直播录像发布到频道，从而使参会者可以看到他们可能错过的演讲的几乎即时录像。


接下来，我将介绍一些细节。


### 使用 PeerTube 进行直播


![创意自由峰会的 PeerTube 频道截图，显示了标志、事件描述和一组视频缩略图](/data/attachment/album/202307/30/073921ff11qfbrq1rr1rf1.jpg)


我们在创意自由峰会的直播中使用了由 [LinuxRocks.online](https://linuxrocks.online/) 慷慨提供的 [LinuxRocks PeerTube 平台](https://peertube.linuxrocks.online/c/creativefreedom/videos)。PeerTube 是一个自由开源的去中心化视频平台，也是 <ruby> 联邦宇宙 <rt>  Fediverse </rt></ruby> 的一部分。


PeerTube 最好的特点之一（我所了解的其他平台所没有的）是，在直播结束后，你会在 PeerTube 上的频道上获得一个几乎即时的重播录像。我们的聊天室用户将这视为该平台的主要优点。如果某位参与者错过了他们非常感兴趣的一个会议，他们可以在该演讲结束后的几分钟内观看到它。这不需要志愿者组织团队进行手动干预、上传或协调，PeerTube 会自动完成。


以下是使用 PeerTube 进行直播的工作方式：你在频道上创建一个新的直播流，它会给你一个直播流 URL 和一个用于授权流媒体的密钥。这个 URL 和密钥可以反复使用。我们进行配置，使得录像会在直播结束后立即发布到我们创建直播流 URL 的频道上。接下来，在开始直播时将 URL 和密钥复制/粘贴到 Jitsi 中。这意味着你不必为会议期间的每个演讲生成新的 URL 和密钥，组织者管理这些将会带来相当大的工作量。相反，我们可以重复使用相同的 URL 和密钥，将其共享在会议组织者之间的共同文档中（我们每个人都有不同的演讲托管时间段）。团队中任何具有该文档访问权限的人都可以启动直播。


#### 如何生成 PeerTube 中的直播流 URL 和密钥


以下部分逐步介绍了如何在 PeerTube 中生成直播流的 URL 和密钥。


##### 1、创建 PeerTube 上的直播视频


登录到 PeerTube，并点击右上角的 “<ruby> 发布 <rt>  Publish </rt></ruby>” 按钮：


![PeerTube 发布按钮的截图](/data/attachment/album/202307/30/073808l6cfik65cdk6kn74.png)


##### 2、设置选项


点击 “<ruby> 进行直播 <rt>  Go live </rt></ruby>” 选项卡（从左数第四个），并设置以下选项：


* <ruby> 频道 <rt>  Channel </rt></ruby>：（你希望直播发布在的频道名称）
* <ruby> 隐私 <rt>  Privacy </rt></ruby>：公开
* 单选按钮：<ruby> 普通直播 <rt>  Normal live </rt></ruby>


然后选择 “<ruby> 进行直播 <rt>  Go live </rt></ruby>” 。 （不用担心，你还不会真正开始直播，还有更多数据需要填写。）


![PeerTube 中的 Go Live 按钮的截图](/data/attachment/album/202307/30/073808eo9agzm1ccsmmfnz.png)


##### 3. 基本信息（暂时不要点击更新按钮）


首先，在 <ruby> 基本信息 <rt>  Basic info </rt></ruby> 选项卡中填写信息，然后在下一步选择 <ruby> 高级设置 <rt>  Advanced settings </rt></ruby> 选项卡。填写直播流的名称、描述、标签、类别、许可证等。在转码复选框启用后记得发布。


这样一来，一旦直播结束，录制视频将自动发布到你的频道上。


##### 4. 高级设置


你可以上传一个“待机”图像，当观看直播流 URL 并等待开始时，该图像会显示在所有人面前。


![PeerTube 高级设置的截图](/data/attachment/album/202307/30/073808vdkw4n4yukkdhd0n.png)


这是我们在创意自由峰会上使用的待机图像：


![创意自由峰会横幅的截图](/data/attachment/album/202307/30/073809fjfcxcxgjojxnanf.png)


##### 5. 在 PeerTube 上开始直播


选择右下角的 “<ruby> 更新 <rt>  Update” 按钮。直播流将显示如下，直到你从 Jitsi 开始直播： </rt></ruby>


![在 PeerTube 上开始直播的截图](/data/attachment/album/202307/30/073810rphoiixu2bzvh5pm.jpg)


##### 6. 将直播流的 URL 复制粘贴到 Jitsi


这是 PeerTube 的最后一步。一旦直播流启动，点击视频下方右侧的 “...” 图标：


![复制并粘贴 URL](/data/attachment/album/202307/30/073810v1cqqyuyuuaa3u1y.png)


选择 “<ruby> 显示直播信息 <rt>  Display live information </rt></ruby>”。你将看到如下对话框：


![显示直播信息选项的截图](/data/attachment/album/202307/30/073811gzakpi1cp1z7p311.png)


你需要复制直播的 RTMP URL 和直播流密钥。将它们合并成一个 URL，然后将其复制粘贴到 Jitsi。


以下是我测试运行时的这两个文本块示例，可供复制：


* 直播的 RTMP URL：`rtmp://peertube.linuxrocks.online:1935/live`
* 直播流密钥：`8b940f96-c46d-46aa-81a0-701de3c43c8f`


你需要将这两个文本块合并，并在它们之间加上 `/`，如下所示：



```
rtmp://peertube.linuxrocks.online:1935/live/8b940f96-c46d-46aa-81a0-701de3c43c8f

```

### Jitsi 的直播舞台 + 社交活动室


我们在我们的 “直播舞台” 上使用了自由开源的托管平台 [Jitsi Meet](https://meet.jit.si/) 视频会议平台。我们在 <https://meet.jit.si> 上创建了一个自定义 URL 的 Jitsi 会议室，并只与演讲者和会议组织者共享了该 URL。


我们配置了会议室的等候室（该功能在你加入新创建的会议室后在会议设置中可用），这样演讲者可以在他们的演讲前几分钟加入而不用担心打断前一个演讲。我们的主持人志愿者在前一个会话结束后让他们进入。另一个选项是给会议室添加密码。我们只是配置了一个等候室就行了。在测试时似乎发现，会议室中的管理状态并不是持久的。如果一个管理员离开了会议室，他们似乎会失去管理员状态和设置，比如等候室的设置。我通过让我的电脑保持打开的状态，使 Jitsi 会议室在整个会议期间可用和活动。（在这方面，你的情况可能会有所不同。）


Jitsi 提供了内置的直播选项，你可以将视频服务的 URL 发布到 Jitsi 中，它会将你的视频流式传输到该服务。我们对这种方法有信心，因为这是我们主办和直播每周举行的 [Fedora 设计团队会议](https://peertube.linuxrocks.online/c/fedora_design_live/videos) 的方式。对于创意自由峰会，我们将我们的 Jitsi 直播舞台（用于演讲者和主持人）连接到 [Linux Rocks PeerTube 上的一个频道](https://peertube.linuxrocks.online/c/creativefreedom/videos)。


Jitsi 允许演讲者共享屏幕来展示幻灯片或进行实时演示。


#### 将 Jitsi 直播到 PeerTube


1、加入会议并点击屏幕底部红色挂断按钮旁边的 “...” 图标。


![加入 Jitsi 会议](/data/attachment/album/202307/30/073811elllo3vp6dglfroo.png)


2、从弹出菜单中选择 “<ruby> 开始直播 <rt>  Start live stream </rt></ruby>”。


![在 Jitsi 中开始直播的截图](/data/attachment/album/202307/30/073811yndz2d2rr2r3r22n.png)


3、复制并粘贴 PeerTube 的 URL + 密钥文本


![复制并粘贴直播流密钥的截图](/data/attachment/album/202307/30/073811q9osovsc40cmicj9.png)


4、倾听 Jitsi 机器人朋友的声音


几秒钟后，会出现一个女性声音告诉你，“Live streaming is on.”（直播已开启）。一旦听到这个声音，微笑吧！你正在进行直播。


5、停止直播


这将停止你设置的 PeerTube URL 的工作，所以重复这些步骤可以重新启动直播。


#### Jitsi 技巧


##### 通过开关 Jitsi 的流来管理录制


我们在会议中认识到，在演讲之间关闭 Jitsi 的直播流会更好，这样你将在 PeerTube 上针对每个演讲发布一个原始录制文件。第一天我们让它一直运行，因此一些录制中包含了多个演讲的视频，这使得那些试图赶上进度的人使用即时回放功能更困难。他们需要在视频中寻找他们想观看的演讲，或者等待我们在几天或几周后发布编辑过的版本。


#### 避免音频回音


我们在活动期间实时发现的另一个问题是音频回音。这在我们的测试中并没有出现，这完全是我的错（对所有参加的人道歉）。我负责设置 Jitsi/PeerTube 的链接、监控流和协助主持活动。尽管我知道一旦直播开始，我需要关闭所有已打开的 PeerTube 浏览器标签，但我可能打开了比我想象中更多的 PeerTube 标签，或者直播会在我可用于监控聊天的 Element 客户端中自动开始播放。我没有很方便地静音 Element 的方法。在我进行的一些演讲者介绍中，你会注意到我知道在音频回音开始之前大约有 30 秒的时间，因此我做的介绍非常匆忙/急促。


我认为有更简单的方法来避免这种情况：


* 尽量确保主持人/活动主持人不是负责设置/监控流和聊天的同一个人。（根据你每次拥有多少义工人员的情况，这并不总是可能的。）
* 如果可能，使用一台电脑监控流，另一台电脑担任主持人角色。这样，你在用于监控的电脑上只需按一下静音按钮，简化了你在另一个电脑上的主持体验。


这是一件值得提前练习和完善的事情。


### 后台：Element


![以下是 Element 中显示的三个聊天室列表的截图：Creative Freedom Summit（白色徽标）、Creative Freedom Summit Backstage（黑色徽标）和 Creative Freedom Summit Hosts（橙色徽标）](/data/attachment/album/202307/30/074013isn56yxkxe06ey6i.jpg)


我们在会议开始前大约一周设置了一个 “后台” 邀请制聊天室，并邀请了所有的演讲者加入。这有助于确保以下几点：


* 我们的演讲者在活动开始之前就加入了 Element/Matrix，并有机会在注册遇到任何问题时都可以获得帮助（实际上没有人遇到问题）。
* 在活动开始之前，我们与所有演讲者建立了一个实时的交流渠道，以便我们能够轻松地发送公告和更新。


在活动期间，这个聊天室成为一个有用的地方，用于协调演讲者之间的过渡，提醒日程是否延迟，以及在一个情况下，当我们的演讲者出现紧急情况无法按原定时间发言时，迅速重新安排演讲时间。


我们还为主持人设置了一个房间，但在我们的情况下，它是多余的。我们只是使用后台频道进行协调。我们发现两个频道很容易监控，但三个频道对于方便起见有点太多了。


### 公告和问答：Etherpad/Hackmd.io


![这是一个名为 “General information” 的 Etherpad 的截图，其中包含有关创意自由峰会的一些信息](/data/attachment/album/202307/30/074024vjbn3uj3f232j7tv.jpg)


我们在 Element 主频道中设置了一个固定的小部件，提供有关活动的一般信息，包括每日日程安排、行为准则等。我们还为每个演讲设置了一个问答部分，让与会者可以在其中提出问题，主持人会为演讲者朗读这些问题。


在开始的一两天中，我们发现一些与会者在加载 Etherpad 小部件时遇到问题，因此我们改为在频道中固定一个内嵌的 [hackmd.io](http://hackmd.io) 文档作为小部件，那似乎效果更好一些。我们并不 100% 确定小部件加载问题的具体原因，但我们可以在频道主题中发布一个原始（非内嵌）链接，这样参与者就可以绕过通过小部件访问时可能遇到的任何问题。


### 综合和集中的会议体验


![在左上角是一个视频直播，右上角是一个 hackmd.io 的公告页面，下方是一个活跃的聊天窗口](/data/attachment/album/202307/30/074036eyquffwaqmfmi1q1.jpg)


通过 Fedora 的 Element 服务器使用 Matrix 是参加会议的关键地方。Element 中的 Matrix 聊天室具有小部件系统，可以将网站嵌入到聊天室中，成为体验的一部分。这个功能对于将我们的 Matrix 聊天室作为集中参会的地方非常重要。


我们将 PeerTube 的直播嵌入到了聊天频道中，在上面的截图中左上角可以看到。会议结束后，我们可以分享未编辑的视频回放的播放列表。现在，我们志愿者项目编辑视频的工作已经完成，该频道中有按顺序排列的编辑演讲的播放列表。


如前一节所讨论的，我们在右上角嵌入了一个 [hackmd.io](http://hackmd.io) 笔记，用于发布当天的日程安排、公告以及一个用于问答的区域。我本来想设置一个 Matrix 机器人来处理问答，但我在运行时遇到了一些困难。不过，这可能是明年一个很酷的项目。


在会议期间，与会者直接在主要聊天窗口下方进行交流，同时与小部件进行互动。


在将 Matrix/Element 聊天室作为在线会议的中心地点时，有几个要考虑的因素，例如：


* 在 Element 桌面客户端或桌面系统的 Web 浏览器上会有最佳体验。但是，你也可以在 Element 移动客户端中查看小部件（尽管一些参与者在发现此功能时遇到了困难，其用户界面不太明显）。其他 Matrix 客户端可能无法查看小部件。
* 如果需要，与会者可以根据自己的喜好自行组合体验。那些不使用 Element 客户端参加会议的用户报告称加入聊天并直接查看 PeerTube 直播 URL 没有问题。我们在频道主题中分享了直播 URL 和 hackmd URL，以便那些不想使用 Element 的用户也可以访问。


### 网站


[Ryan Gorley](https://mastodon.social/@ryangorley) 使用 [WordPress](https://wordpress.com/) 开发了 [创意自由峰会网站](https://creativefreedomsummit.com/)。该网站由 WPengine 托管，是一个单页网站，其中嵌入了来自 [sched.org](http://sched.org) 的会议日程安排。在网站顶部，有一个标题为 “Create. Learn. Connect.” 的屏幕截图，背景是蓝色和紫色的渐变效果。


### 后续活动


#### 后续调查


我们使用开源调查工具 LimeSurvey。在会议结束后的一两周内，我们通过 Element 聊天频道和 PeerTube 视频频道向与会者发送了调查，以了解他们对我们活动的看法。活动组织者们继续定期开会。在这些会议的其中一个议题是共同撰写 [hackmd.io](http://hackmd.io) 文档，以制定调查问题。以下是我们从活动中学到的一些对你计划自己的开源线上会议可能有兴趣的事项：


* 绝大多数与会者（共 70% 的受访者）是通过 Mastodon 和 Twitter 得知本次活动的。
* 33% 的与会者使用 Element 桌面应用程序参加会议，30% 使用 Element 聊天 Web 应用程序。因此，大约有 63% 的与会者使用了集成的 Matrix/Element 体验。其他与会者直接在 PeerTube 上观看或在会后观看了回放。
* 35% 的与会者表示他们通过聊天与其他创意人建立了联系，因此如果你的目标是促进人际交流和连接，聊天体验对于活动来说非常重要。


#### 字幕


在活动期间，我们收到了与会者的积极反馈，他们对其他与会者在聊天中实时添加的演讲字幕表示赞赏，并希望能够提供实时字幕以提升可访问性。虽然本文未提及实时字幕的相关软件，但有一些开源解决方案可供选择。其中一个工具是 Live Captions，在 Seth Kenlon 撰写的一篇文章《[在 Linux 上的开源视频字幕](https://opensource.com/article/23/2/live-captions-linux)》中进行了介绍。虽然这个工具主要用于本地观看视频内容的与会者，但我们有可能让会议主持人在 Jitsi 中运行它并与直播共享。其中一种方法是使用开源广播工具 [OBS](https://obsproject.com/)，这样每个观看直播的人都能受益于字幕功能。


在会后编辑视频时，我们发现了内置于我们首选的开源视频编辑软件 [Kdenlive](https://kdenlive.org/) 中的一项功能，它能够自动生成字幕并自动放置到视频中。在 [Kdenlive 手册](https://docs.kdenlive.org/en/effects_and_compositions/speech_to_text.html) 中有关于如何使用这个功能的基本说明。Fedora 设计团队成员 Kyle Conway 在协助会后视频编辑时，制作了一份 [详细教程（包括视频指导）：如何在 Kdenlive 中自动生成并添加字幕](https://gitlab.com/groups/fedora/design/-/epics/23#video-captioning-and-handoff)。如果你对这个功能感兴趣，阅读和观看这个教程会非常有帮助。


#### 视频编辑志愿者工作


活动结束后，我们在会议的 Element 频道中召集了一组志愿者，共同进行视频编辑工作，包括添加标题卡、片头/片尾音乐以及进行整体清理。我们自动生成的一些重播录像可能会分为两个文件，或者与其他多个演讲合并在一个文件中，因此需要重新组装或裁剪。


我们使用 [GitLab Epic](https://gitlab.com/groups/fedora/design/-/epics/23) 来组织这项工作，其中包含常见问题和寻找按技能组织的志愿者的帮助，每个视频工作都附加有相应的议题。我们为每个视频设置了一系列自定义标签，以明确该视频的状态以及需要何种帮助。所有视频的编辑工作都已完成，其中一些视频需要为其在 [创意自由峰会频道](https://peertube.linuxrocks.online/c/creativefreedom/videos) 上的描述区域撰写内容。许多视频都有自动生成的字幕，但字幕中可能存在拼写错误和其他常见的自动生成文本错误，还需要进行编辑修正。


![GitLab 上需要编辑帮助的视频清单的截图](/data/attachment/album/202307/30/074049dl4o7vva4nyvju9l.jpg)


我们通过让志愿者从创意自由峰会的 PeerTube 主频道的未编辑录像中下载原始视频来传递这些视频文件（由于文件大小可能相当大）。当志愿者准备好分享编辑好的视频时，我们有一个私人的 PeerTube 账户，他们可以将视频上传到该账户。具有主频道账户访问权限的管理员会定期从私人账户中获取视频，并将其上传到主账户中。请注意，PeerTube 并没有一个多个账户访问同一频道的系统，因此我们不得不进行密码共享，这可能有些令人紧张。我们认为这是一个合理的妥协，可以限制掌握主要密码的人数，同时仍然可以让志愿者提交编辑好的视频而不会太过麻烦。


### 准备尝试一下吗？


我希望这个对于我们如何使用开源工具集来举办创意自由峰会的全面描述能够激发你尝试在你的开源活动中使用这些方法。让我们知道进展如何，并随时联系我们如果你有问题或改进建议！我们的频道链接为：<https://matrix.to/#/#creativefreedom:fedora.im>


*（题图：MJ/cb6a4ea4-95ed-40cb-9e78-85f8676219f2）*




---


via: <https://opensource.com/article/23/4/open-source-tools-virtual-conference>


作者：[Máirín Duffy](https://opensource.com/users/mairin) 选题：[lkxed](https://github.com/lkxed/) 译者：ChatGPT 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

