2023年7月

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

在 2023 年 1 月举办了首届 创意自由峰会 Creative Freedom Summit 后,Fedora 设计团队 发现使用开源工具来举办线上大会非常有效。

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

创意自由峰会

创意自由峰会是 Marie Nordin 在审查了 Fedora 用户与贡献者年度大会(Flock) 的演讲提交后提出的一个想法。在 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 设计团队的 视频会议 方面具有一定的技术能力和经验。我们希望这次活动是低调、单一会场和非正式的,所以对于一些小故障或瑕疵我们有一定的容忍度。我们对尝试使用开源工具组合也有很大的热情。

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

一个开源会议技术栈

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

概述

直播组件:

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

活动后组件:

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

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

使用 PeerTube 进行直播

创意自由峰会的 PeerTube 频道截图,显示了标志、事件描述和一组视频缩略图

我们在创意自由峰会的直播中使用了由 LinuxRocks.online 慷慨提供的 LinuxRocks PeerTube 平台。PeerTube 是一个自由开源的去中心化视频平台,也是 联邦宇宙 Fediverse 的一部分。

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

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

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

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

1、创建 PeerTube 上的直播视频

登录到 PeerTube,并点击右上角的 “ 发布 Publish ” 按钮:

PeerTube 发布按钮的截图

2、设置选项

点击 “ 进行直播 Go live ” 选项卡(从左数第四个),并设置以下选项:

  • 频道 Channel :(你希望直播发布在的频道名称)
  • 隐私 Privacy :公开
  • 单选按钮: 普通直播 Normal live

然后选择 “ 进行直播 Go live ” 。 (不用担心,你还不会真正开始直播,还有更多数据需要填写。)

PeerTube 中的 Go Live 按钮的截图

3. 基本信息(暂时不要点击更新按钮)

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

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

4. 高级设置

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

PeerTube 高级设置的截图

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

创意自由峰会横幅的截图

5. 在 PeerTube 上开始直播

选择右下角的 “ 更新 Update” 按钮。直播流将显示如下,直到你从 Jitsi 开始直播:

在 PeerTube 上开始直播的截图

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

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

复制并粘贴 URL

选择 “ 显示直播信息 Display live information ”。你将看到如下对话框:

显示直播信息选项的截图

你需要复制直播的 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 上创建了一个自定义 URL 的 Jitsi 会议室,并只与演讲者和会议组织者共享了该 URL。

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

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

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

将 Jitsi 直播到 PeerTube

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

加入 Jitsi 会议

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

在 Jitsi 中开始直播的截图

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

复制并粘贴直播流密钥的截图

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(橙色徽标)

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

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

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

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

公告和问答:Etherpad/Hackmd.io

这是一个名为 “General information” 的 Etherpad 的截图,其中包含有关创意自由峰会的一些信息

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

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

综合和集中的会议体验

在左上角是一个视频直播,右上角是一个 hackmd.io 的公告页面,下方是一个活跃的聊天窗口

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

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

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

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

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

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

网站

Ryan Gorley 使用 WordPress 开发了 创意自由峰会网站。该网站由 WPengine 托管,是一个单页网站,其中嵌入了来自 sched.org 的会议日程安排。在网站顶部,有一个标题为 “Create. Learn. Connect.” 的屏幕截图,背景是蓝色和紫色的渐变效果。

后续活动

后续调查

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

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

字幕

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

在会后编辑视频时,我们发现了内置于我们首选的开源视频编辑软件 Kdenlive 中的一项功能,它能够自动生成字幕并自动放置到视频中。在 Kdenlive 手册 中有关于如何使用这个功能的基本说明。Fedora 设计团队成员 Kyle Conway 在协助会后视频编辑时,制作了一份 详细教程(包括视频指导):如何在 Kdenlive 中自动生成并添加字幕。如果你对这个功能感兴趣,阅读和观看这个教程会非常有帮助。

视频编辑志愿者工作

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

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

GitLab 上需要编辑帮助的视频清单的截图

我们通过让志愿者从创意自由峰会的 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 选题:lkxed 译者:ChatGPT 校对:wxy

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

科学海盗湾 Sci-Hub 创始人获 EFF 年度大奖

电子前沿基金会(EFF)将 2023 年度大奖授予了 Sci-Hub 的创始人 Alexandra Elbakyan。Sci-Hub 是她在 2011 年还是一名大学生时创办的,为所有科学知识提供免费不受限制的访问。它在今天发展成为一个包含逾 8830 万篇论文和书籍的数据库,任何人都可以下载和阅读。EFF 称,Sci-Hub 是数百万学生和研究人员的重要资源。一些医学专家甚至认为,该网站有助于挽救生命。Sci-Hub 打破了期刊出版业的垄断机制,因而她成为了众多诉讼和政府行动的目标,但她仍然坚持其信念而不动摇。本次获奖者还有 图书馆自由项目 Library Freedom Project 和 Signal 基金会。Linux 之父 Linus Torvalds 之前也获得过该奖项。

消息来源:EFF
老王点评:无需多说,就一个字,?

昨天是系统管理员日

昨天(7 月 28 日)是 “ 系统管理员日 System Administrator Appreciation Day ”,其组织者表示,全世界都应该借此机会 “向那些风雨无阻地预防灾难、保护 IT 安全和扑灭技术火灾的英雄们致敬”。该活动由系统管理员 Ted Kekatos 于 1999 年创立,每年 7 月的最后一个星期五都会举行庆祝活动,以表彰和感谢这些兢兢业业,但往往不被重视的 IT 专业人员所做出的贡献。

消息来源:The Register
老王点评:国内了解并庆祝该日子的系统管理员们非常少,连我这样一个老系统管理员都是第一次知道。国内往往会庆祝另外一个日子 —— 代表 7X24 运维的 7.24。

美国立法禁止汽车制造商在新车中取消调幅广播

今年至少有七家汽车制造商在其电动汽车中 取消 了调幅广播,其中包括福特、特斯拉、宝马和大众。迫于压力,福特在今年 5 月改变了取消的做法。美国参议院商业委员会周四批准了一项立法,禁止汽车制造商在新车中取消调幅广播。立法者称,失去调幅广播会破坏向公众提供关键公共安全信息的联邦系统。

消息来源:路透社
老王点评:虽然调幅广播是很老的技术了,但是它仍然有不可取代的优势。你有多久没有收听过调幅广播了?

跟随这个演示来了解我如何使用 Git 为 Foreman 编写文档。

作为 ATIX 的技术作家,我的任务包括为 Foreman 创建和维护存放在 github.com/theforeman/foreman-documentation 的文档。Git 帮助我跟踪内容的版本,并与开源社区进行协作。它是我存储工作成果、共享和讨论改进的重要工具。我主要使用的工具包括浏览器、用 OpenSSH 连接 Foreman 实例、用 Vim 编辑源文件,以及使用 Git 进行版本控制。

本文重点介绍在开始使用 Git 和为 Foreman 文档做贡献时经常遇到的挑战。适用于中级 Git 用户。

先决条件

  • 你已在系统上安装和配置了 Git。你至少需要设置用户名和电子邮件地址。
  • 你在 github.com 上拥有一个帐户。GitHub 本身并不是一个开源项目,但它是许多开源 Git 存储库的托管站点(包括 Foreman 的文档)。
  • 你已将 foreman-documentation 存储库复刻到你自己的账户或组织(例如,github.com/<My_User_Account>/foreman-documentation,这里 <My_User_Account> 是你的 GitHub 用户名)。有关更多信息,请参阅 Kedar Vijay Kulkarni 的 Kedar Vijay Kulkarni 的 Git 逐步指南
  • 你已将你的 SSH 公钥添加到 GitHub。这是将你的更改推送到 GitHub 所必需的。有关更多信息,请参阅 Nicole C. Baratta 的《GitHub 简单指引》。

对 Foreman 文档做出贡献

Foreman 是一个开源项目,依靠社区的贡献而发展壮大。该项目欢迎所有人的参与,并且只有一些要求才能做出有意义的贡献。这些要求和惯例在 README.mdCONTRIBUTING.md 文件中有详细记录。

以下是在处理 Foreman 文档时最常见的一些任务。

我想开始贡献 Foreman 文档

1、从 github.com 克隆存储库:

$ git clone [email protected]:theforeman/foreman-documentation.git
$ cd foreman-documentation/

2、重命名远程存储库:

$ git remote rename origin upstream

3、可选:确保你的本地主分支跟踪 theforeman 组织的 foreman-documentation 存储库的 master 分支:

$ git status

这将自动将你置于默认分支(本例中为 master)的最新提交上。

4、如果你的账户或组织中尚未有该存储库的 复刻 Fork ,请创建一个。前往 github.com/theforeman/foreman-documentation 并点击 “ 复刻 Fork ” 按钮。

5、将你的复刻添加到你的存储库中:

$ git remote add github [email protected]:<My_User_Account>/foreman-documentation.git

你的本地存储库现在有两个远程存储库:upstreamgithub

我想扩展 Foreman 文档

对于简单的更改,比如修正拼写错误,你可以直接创建一个拉取请求(PR)。

1、创建一个分支,例如 fix_spellinggit switch 命令用于切换当前所在的分支,-c 参数用于创建分支:

$ git switch -c fix_spelling

2、进行你的更改。

3、添加你的更改并进行提交:

$ git add guides/common/modules/abc.adoc
$ git commit -m "Fix spelling of existing"

良好的 Git 提交消息的重要性无需再强调。提交消息告诉贡献者你做了哪些工作,因为它与代码库的其余部分一起保存,所以它在查看代码时起到历史注释的作用,帮助了解代码的演化过程。有关优秀的 Git 提交消息的更多信息,请参阅由 cbeams 撰写的 《创建完美的 Git 提交信息的 7 条规则》。

4、可选但建议的操作:查看并验证与默认分支的差异。foreman-documentation 的默认分支称为 master,但其他项目可能有不同的命名(例如 maindevdevel)。

$ git diff master

5、将分支推送到 GitHub。这将发布你的更改到你的代码库副本:

$ git push --set-upstream github fix_spelling

6、点击终端中 Git 提供的链接来创建一个拉取请求(PR):

remote: Create a pull request for 'fix_spelling' on Github by visiting:
remote:      https://github.com/_My_User_Account_/foreman-documentation/pull/new/fix_spelling

7、在解释中说明社区为什么应该接受你的更改。对于修正拼写错误等简单 PR,这并不是必需的,但对于重大更改则很重要。

我想将我的分支变基到 master

1、确保你的本地 master 分支跟踪的是 github.com/theforeman/foreman-documentationmaster 分支,而不是你自己命名空间下的 foreman-documentation

$ git switch master

此时应该显示 Your branch is up to date with 'upstream/master',其中 upstream 是指向 github.com/theforeman/foreman-documentation 的远程存储库的名称。你可以通过运行 git remote -v 来查看远程存储库设置情况。

2、从远程获取可能的更改。git fetch 命令会从远程下载被跟踪的分支,并且使用 --all 选项可以同时更新所有分支。在使用其他分支时这是必要的。--prune 选项会删除对已不存在的分支的引用。

$ git fetch --all --prune

3、将可能的更改从 upstream/master 拉取到你的本地 master 分支。git pull 命令将跟踪的分支上的提交复制到当前分支。这用于将你的本地 master 分支“更新”为远程(在本例中为 GitHub)master 分支的最新状态。

$ git pull

4、将你的分支 变基 rebase master

$ git switch my_branch
$ git rebase -i master

我在 master 分支上意外地提交了代码

1、创建一个分支来保存你的工作:

$ git switch -c my_feature

2、切换回 master 分支:

$ git switch master

3、回退 master 分支上的最后一次提交:

$ git reset --soft HEAD~1

4、切换回 my_feature 分支并继续工作:

$ git switch my_feature

我想修改我的提交消息

1、如果你的分支只有一次提交,可以使用 git amend 来修改你的最后一次提交:

$ git commit --amend

这假设你没有将其他文件添加到暂存区(即,没有运行过 git add My_File,并且没有进行提交)。

2、使用 --force 选项将你的 “更改” 推送到 GitHub,因为 Git 提交消息是你现有提交的一部分,所以你正在更改分支上的历史记录:

$ git push --force

我想重新整理单个分支上的多个更改

1、可选但强烈推荐:从 GitHub 获取更改。

$ git switch master
$ git fetch
$ git pull

这确保你将其他更改按照它们被合并到 master 中的顺序直接合并到你的分支中。

2、若要重新整理你的工作,请对你的分支进行变基并根据需要进行更改。对于将分支变基到 master,这意味着你需要更改你的分支上第一个提交的父提交:

$ git rebase --interactive master

使用你喜欢的编辑器打开变基交互界面,将第一个单词 pick 替换为你要修改的提交。

  • 使用 e 来对你的提交进行实际更改。这会中断你的变基操作!
  • 使用 f 将一个提交与其父提交合并。
  • 使用 d 完全删除一个提交。
  • 移动行以改变你更改的顺序。

成功进行变基后,你自己的提交将位于 master 上最后一个提交的顶部。

我想从其他分支复制一个提交

1、从稳定分支(例如名为 3.3 的分支)获取提交的 ID,请使用 -n 选项限制提交数量:

$ git log -n 5 3.3

2、通过挑选提交来复制更改到你的分支。-x 选项将提交的 ID 添加到你的提交消息中。这仅建议在从稳定分支挑选提交时使用:

$ git switch My_Branch
$ git cherry-pick -x Commit_ID

更多技巧

在 ATIX,我们运行一个 GitLab 实例,用于内部共享代码、协作以及自动化测试和构建。对于围绕 Foreman 生态系统的开源社区,我们依赖于 GitHub。

我建议你始终将名为 origin 的远程指向你的内部的版本控制系统。这样做可以防止在纯粹凭记忆进行 git push 时向外部服务泄露信息。

此外,我建议使用固定的命名方案来命名远程。我总是将指向自己的 GitLab 实例的远程命名为 origin,将指向开源项目的远程命名为 upstream,将指向我在 Github 上的复刻的远程命名为 github

对于 foreman-documentation,该存储库具有相对较平的历史记录。当处理更复杂结构时,我倾向于以非常可视化的方式思考 Git 存储库,其中节点(提交)指向线上的节点(分支),这些分支可以交织在一起。图形化工具如 gitkGit Cola 可以帮助可视化你的 Git 历史记录。一旦你完全掌握了 Git 的工作原理,如果你更喜欢命令行,可以使用别名。

在进行具有大量预期合并冲突的大型变基之前,我建议创建一个“备份”分支,以便你可以快速查看差异。请注意,要永久删除提交是相当困难的,因此在进行重大更改之前,请在本地 Git 存储库中进行测试。

Git 对技术文档编写者的帮助

Git 对技术文档编写者来说是一个巨大的帮助。不仅可以使用 Git 对文档进行版本控制,还可以与他人积极地进行协作。

(题图:MJ/1fb1dd43-e460-4e76-9ff6-b6ef76570f7e)


via: https://opensource.com/article/22/11/git-tips-technical-writers

作者:Maximilian Kolb 选题:lkxed 译者:ChatGPT 校对:wxy

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

在这篇文章中,我们将向你展示如何在 Kubernetes(k8s)集群中设置动态 NFS 配置。

Kubernetes 中的动态 NFS 存储配置允许你按需自动为 Kubernetes 应用配置和管理 NFS(网络文件系统)卷。它允许创建持久卷(PV)和持久卷声明(PVC),而无需手动干预或预配置存储。

NFS 配置程序负责动态创建 PV 并将其绑定到 PVC。它与 NFS 服务器交互,为每个 PVC 创建目录或卷。

先决条件

  • 预装 Kubernetes 集群
  • 具有 Kubernetes 集群管理员权限的普通用户
  • 互联网连接

事不宜迟,让我们深入探讨步骤:

步骤 1、准备 NFS 服务器

就我而言,我将在 Kubernetes 主节点(Ubuntu 22.04)上安装 NFS 服务器。登录主节点并运行以下命令:

$ sudo apt update
$ sudo apt install nfs-kernel-server -y

创建以下文件夹并使用 NFS 共享它:

$ sudo mkdir /opt/dynamic-storage
$ sudo chown -R nobody:nogroup /opt/dynamic-storage
$ sudo chmod 777 /opt/dynamic-storage

/etc/exports 文件中添加以下条目:

$ sudo vi /etc/exports
/opt/dynamic-storage 192.168.1.0/24(rw,sync,no_subtree_check)

保存并关闭文件。

注意:不要忘记更改导出文件中适合你的部署的网络。

要使上述更改生效,请运行:

$ sudo exportfs -a
$ sudo systemctl restart nfs-kernel-server
$ sudo systemctl status nfs-kernel-server

NFS-Service-Status-Kubernetes-Master-Ubuntu

在工作节点上,使用以下 apt 命令安装 nfs-common 包。

$ sudo apt install nfs-common -y

步骤 2、安装和配置 NFS 客户端配置程序

NFS 子目录外部配置程序在 Kubernetes 集群中部署 NFS 客户端配置程序。配置程序负责动态创建和管理由 NFS 存储支持的持久卷(PV)和持久卷声明(PVC)。

因此,要安装 NFS 子目录外部配置程序,首先使用以下命令集安装 helm

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

运行以下命令来启用 helm 仓库:

$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner

使用以下 helm 命令部署配置程序:

$ helm install -n nfs-provisioning --create-namespace nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=192.168.1.139 --set nfs.path=/opt/dynamic-storage

helm-install-nfs-provisioning-kubernetes-cluster

上面的 helm 命令将自动创建 nfs-provisioning 命名空间,并安装 NFS 配置程序的容器荚/部署、名称为 nfs-client 的存储类,并将创建所需的 rbac。

$ kubectl get all -n nfs-provisioning
$ kubectl get sc -n nfs-provisioning

kubectl-get-all-nfs-provisioning-kubernetes-cluster

完美,上面的输出确认了配置程序容器荚和存储类已成功创建。

步骤 3、创建持久卷声明(PVC)

让我们创建 PVC 来为你的容器荚或部署请求存储。PVC 将从存储类 nfs-client 请求特定数量的存储:

$ vi demo-pvc.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: demo-claim
  namespace: nfs-provisioning
spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi

保存并关闭文件。

PVC-Yaml-Dynamic-NFS-Kubernetes

运行以下 kubectl 命令以使用上面创建的 YML 文件创建 PVC:

$ kubectl create -f demo-pvc.yml

验证 PVC 和 PV 是否创建:

$ kubectl get pv,pvc -n nfs-provisioning

Verify-pv-pvc-dynamic-nfs-kubernetes-cluster

太好了,上面的输出表明 PV 和 PVC 创建成功。

步骤 4、测试并验证动态 NFS 配置

为了测试和验证动态 NFS 配置,请使用以下 YML 文件启动测试容器荚:

$ vi test-pod.yml
kind: Pod
apiVersion: v1
metadata:
  name: test-pod
  namespace: nfs-provisioning
spec:
  containers:
  - name: test-pod
    image: busybox:latest
    command:
      - "/bin/sh"
    args:
      - "-c"
      - "touch /mnt/SUCCESS && sleep 600"
    volumeMounts:
      - name: nfs-pvc
        mountPath: "/mnt"
  restartPolicy: "Never"
  volumes:
    - name: nfs-pvc
      persistentVolumeClaim:
        claimName: demo-claim

Pod-Yml-Dynamic-NFS-kubernetes

使用以下 kubectl 命令部署容器荚:

$ kubectl create -f test-pod.yml

验证 test-pod 的状态:

$ kubectl get pods -n nfs-provisioning

Verify-Test-Pod-Using-NFS-Volume-Kubernetes

登录到容器荚并验证 NFS 卷是否已安装。

$ kubectl exec -it test-pod -n nfs-provisioning /bin/sh

Access-Dynamic-NFS-Inside-Pod-Kubernetes

太棒了,上面容器荚的输出确认了动态 NFS 卷已安装且可访问。

最后删除容器荚和 PVC,查看 PV 是否自动删除。

$ kubectl delete -f test-pod.yml
$ kubectl delete -f demo-pvc.yml
$ kubectl get pv,pvc -n  nfs-provisioning

Delete-Pod-PVC-Dynamic-NFS

这就是这篇文章的全部内容,希望对你有所帮助。请随时在下面的评论部分发表你的疑问和反馈。

(题图:MJ/75dae36f-ff68-4c63-81e8-281e2c239356)


via: https://www.linuxtechi.com/dynamic-nfs-provisioning-kubernetes/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

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

Vivaldi 反对谷歌的 WEI 规范提议

在 Mozilla 之后,另一家浏览器开发商 Vivaldi 对谷歌的 网络环境完整性 Web Environment Integrity (WEI)规范提议表达了反对。Vivaldi 认为谷歌的提议相当于给网站提供了一种 DRM。谷歌提议 WEI 被认为是明显针对广告屏蔽插件。WEI 将可以允许网站以浏览器安装广告插件或屏蔽了跟踪程序的完整性理由拒绝提供服务。它甚至可以让网站有理由拒绝不支持 WEI 的浏览器。鉴于基于 Chromium 的浏览器事实上垄断了市场,那么市场占有率较小的浏览器如 Firefox 将可能成为区别对待的受害者,其它浏览器都面临生存威胁,Linux 平台也存在类似的情况。但谷歌已经开始在 Chromium 中加入 WEI 相关代码

消息来源:Vivaldi
老王点评:这一切的行为,都是在“谷歌是一家广告公司”的前提下发生的。

LXD 的维护只限于 Canonical 员工

本月初,Canonical 公司将 LXD 项目从 LXC 项目中剥离出来,转移 到了 Canonical 名下。之前 LXD 的主要维护工作都是 Ubuntu 的母公司 Canonical 的员工参与,但当员工离开 Canonical 之后仍然可以继续开发 LXD/LXC,并拥有该项目的维护权。任何运作良好的开放源码软件项目都应该如此。但现在,看起来 Canonical 的前员工已经被取消了对 LXD 项目的维护权,两位曾经担任过维护者的前员工反馈了这一变化。或许稍具安慰或讽刺的是,他们目前还接受外面贡献。

消息来源:Phoronix
老王点评:呵,我想用不了多久,就会出现一个 LXD 的复刻分支。

安卓手机现在可以发现你身边的 AirTag 跟踪器

现在,安卓用户很快就会收到这些 “未知追踪器警报”。这种警报目前只适用于 AirTag,但谷歌表示将与标签制造商合作扩大其覆盖范围。如果你不拥有的 AirTag “与主人分离并被确定与你同行”,通知会告诉你“该追踪器的主人可以看到它的位置”。你还可以追溯第一次看到它与你同行的地点,并让追踪器播放声音,以及提供追踪器的一些主人信息。

消息来源:Ars Technica
老王点评:这对于防止追踪是有好处,但是如果你用 AirTag 保护你的遗失物品,可能就不是很妙了。所以,这是矛盾的两面么?

当我的第一部特别电影获得批准时,我正处于为期两年的 Linux 实验中。我是如何使用(大多数)开源软件技术制作我的电影的呢?

我在 2020 年爱上了 Linux。时机不可能更尴尬了。

世界卫生组织宣布我们这一生中的第一次大流行病降临。我刚刚从工作中休假,打算利用这段时间完成硕士学位,并完成我处女作《第一次言辞》的续集。

但作家是一群善变的人。有时我们的注意力可以持续数周,锐利无比。有时,我们的注意力却像金鱼一样短暂。

那时我处在金鱼模式中。

我需要一些东西来逃离我日复一日的生活:醒来,写几个小时,开始学习,完成课程作业,重复。

互联网上的某个地方有人提到,大流行病为人们提供了在日常计算中尝试 Linux 的最佳机会。

立刻,金鱼般的大脑被吸引住了。

这是有充分理由的:

20 年前,我放弃了电影学院,选择攻读计算机科学学士学位。

令我惊讶的是,我发现自己喜欢上了大部分课程(直到我们学习《Java 编程入门》时,我因此退学了,但这是另外一个故事);《计算机体系结构》、《网络》和《系统管理》模块真的引起了我的兴趣,我发现自己在学校实验室里花更多时间在安装了 Linux 的机器上。

关键是我和 Linux 之间有历史。

而在 2020 年,时机刚刚好。

疫情期间的技术爱好者生活

在我退学后的几年里,我远离了计算机引发我内心的那些好奇心。

作为对电影学院的替代,我成为了一名小说家。

我从信息技术转向了市场营销,并花费了 20 多年的时间为平面、电视、广播和数字平台撰写广告文案。

我创办了自己的广告代理公司。

在这 20 年里,我们目睹了社交媒体与互联网变得同义。

到了 2020 年,我决定永远离开广告界,其中很大一部分原因是我对技术的幻想破灭,尤其是对社交媒体的失望,特别是社交媒体以冷漠的方式伤害我们,无论是个人还是整个社会。

虽然我知道社交媒体并不等同于互联网,但在我的脑海中很难将它们分开。作为一个广告人,我也觉得自己在使社交媒体无处不在方面起到了一定的作用。

拥有自己的 Linux 桌面之年,在整个大流行期间让我保持理智。

2022 年:我首部特别电影

到了 2022 年,我已经在我的笔记本电脑上日常使用 Linux。我还买了一台旧的 ThinkPad T420,安装了 Ubuntu Server,并开始运行 Plex 和 NextCloud 的实例。

我在 Linux 上感到很自在,几乎将所有的写作工作都从 MS Word 和云存储转移到了 Vim 和 GitHub 上。

就在这时,我接到了一位制片人的电话,批准了我的首部特别电影。

此时,我需要做一个决定。在片场剪辑镜头时,我需要使用行业标准的非线性编辑器(NLE)。我对 Adobe Premiere 很熟悉,但我知道没有 Linux 版本。我已经尝试过 Kden Live 和其他几个自由开源软件的替代品,包括内置 NLE 的 Blender,但都不太满意。

更重要的是,我担心我的写作流程 —— 完全基于(Neo)Vim 和 Git ——对我的合作作者来说太陌生。

你好,Windows?

此时,我不得不问自己 Linux 是否准备好应对我未来的电影工作。为了回答这个问题,我提醒自己以下几点:

Linux 对非技术人员/非程序员来说是开放的(且易于接触)

我已经足够老了,记得当年 Ubuntu Linux 免费向世界上的任何人寄送安装光盘。那时,我遇到了一系列我无法解决的硬件问题,而且在我主要工具(MS Word)的高质量替代品方面非常匮乏。

到了 2020 年代,Linux 已经变得截然不同。安装过程非常简单,帮助文档非常详尽,还有 Linux 的 YouTube 资源,使过渡变得更加顺利,我所有的硬件都完美地工作,我准备彻底放弃 MS Word。

Git 是作家的(秘密)好朋友

自从我第一次理解了 Git 的含义和它的用途以来,我就一直这样认为:不向作家教授 Git 是一种罪过。Linus Torvalds 无意间创造了作家的好朋友。

是的,我知道当 Git 无法正常工作时会有多么令人沮丧,但是将软件工程师处理大型代码库、多人贡献的复杂 Git 工作流程剥离后,你会发现它核心的功能似乎刚好为数字时代的作家量身定制。

与此同时,我和我的合作作者面临两个问题。由于我们位于不同的大陆,我们需要一个满足以下条件的系统:

以一种不会将文件弄得一团糟而无法阅读的方式追踪更改(这样在 MS Word、谷歌文档上进行协作会非常痛苦);

以行业标准格式格式化剧本,而无需购买 Final Draft 等剧本撰写软件。

Git 和 GitHub 满足了第一个要求。而专门为剧本撰写创建的标记语法 Fountain 解决了第二个问题。

Linux 和好莱坞

这可能会让很多人感到惊讶,但自上世纪 90 年代以来,Linux 已经牢固地融入了好莱坞的后期制作工作流程中。

早在 1998 年,《泰坦尼克号》这样具有标志性的电影的后期制作中,Linux 就扮演了至关重要的角色。BlackMagic 的 达芬奇调色软件 aVinci Resolve 最初是一款在基于 CentOS 或 RHEL 的系统上运行的首选色彩分级工具。

如今,达芬奇调色软件已成为一款功能完备的编辑器,是电影制片人和 YouTuber 们的首选工具。对我们 Linux 用户而言,该公司继续提供其软件的免费版本以供 Fedora 和基于 Debian 的系统使用。对于 Arch 用户,AUR 中也提供了一个达芬奇调色软件版本,尽管我没有亲自测试过。具体效果可能因人而异。

如何在大部分 FOSS 技术的支持下完成我的电影

让我分享一下我的电影制作工作流程。

前期制作

影片概念说明

我使用 NeoVim 和 Org 模式语法编写了 影片概念说明。Org 模式对于编写类似报告的文档结构非常有用。Vim-org 能够轻松将文档导出为 PDF、LaTeX、HTML 和 doc 格式。我喜欢将我的文档保存为开放文件标准,以确保在各种设备间的可移植性,所以我选择了 PDF 格式。下面的截图是电影拍摄前的最终影片概念说明:

影片概念说明

剧本

我与合作作者商定了一种简单的工作流程。我在一天的时间里向她介绍了 VSCode、Fountain、Git 和 GitHub 的基本知识,之后她就得心应手了。此后的合作过程基本上是无缝的,基于 Git 的工作流程对我们两个人来说几乎成为自然而然的事情。请记住,我们两个人都不具备软件背景。下面的图片显示了 NeoVim 上正在编辑的 Fountain 剧本文件,而右侧的屏幕上是 Zathura PDF 阅读器 即时渲染的剧本。

使用自由开源软件技术进行剧本创作

制作

每日镜头回顾

我们在锡哈拉加雨林进行了主要拍摄,这是该国最古老的森林之一。我们在那里待了一个星期。我带上了我的日常使用机(一台运行 Ubuntu Studio 20.04 的 Dell XPS 9750),在一天的拍摄结束后使用达芬奇调色软件来回顾当天的镜头。

使用 Rsync 进行备份

负责备份每日镜头素材的工作人员会在主硬盘上进行备份,然后在其他外部存储设备上进行二次备份。由于我也带了我的 ThinkPad 服务器,我使用 Rsync 自动化进行备份。

后期制作

编辑

尽管我的 XPS 笔记本内部配置足以处理这个项目,但我并不打算在上面进行影片编辑。最初,我是在工作室的一台运行达芬奇调色软件的 Windows 机器上进行编辑的。不幸的是,2022 年第二季度,斯里兰卡经济陷入了自由落体,该国已经无法偿还债务。燃料短缺和停电使得我无法前往工作室进行编辑工作,增加了我的困扰。

就在这时,我的调色师建议我们将项目转移到我的笔记本电脑上,这样我就可以在家工作。他多年来一直在 CentOS 上运行达芬奇调色软件,他认为在 Ubuntu 机器上做同样的工作没有问题。为了确保我可以进行快速编辑,他将代理素材转码为 ProRes 422 720p。

一旦我们克服了这些小问题,编辑本身就是非常稳定和无压力的操作。完成后,我的电影制作人朋友们都在问我一台运行 Linux 的笔记本电脑是如何处理这个项目的。

结论:我们到达目的地了吗?

在某个时刻,每个最近转向 Linux 的人都会参与到“Linux 桌面之年”的辩论中。

三年过去了,我的观念发生了变化:从理想主义(大约在 2030 年左右),到现实主义(永远不会发生),再到我目前的立场:《Linux 桌面之年》掌握在“技术探索者”的手中。

“技术探索者”被技术所吸引,有时超出主流的范畴。

而作为对社交媒体技术和大型科技公司感到幻灭的人,我正好处于尝试 Linux 桌面的理想状态。

如果以我的经验为例,大多数精通技术的人都可以实现 “Linux 桌面之年”。通过使用其他自由开源软件工具(如 Git、Fountain、Markdown、LaTeX、Org 模式和(Neo)Vim),我相信像我这样的小说家和电影制片人类型的人有足够的理由转向 Linux。

当然,如果 Black Magic 没有推出达芬奇调色软件的 Linux 版本,我就不能说这番话,但幸运的是,他们不是 Adobe 或微软。

要让人们接受 Linux 桌面,关键是专有软件的开发者们也要加入进来,承认 Linux 领域有一些用户需要与 Windows 和 Mac 领域同样的工具。如果这种情况发生,我们可能会看到 “Linux 桌面” 从梗成为现实。

? 由斯里兰卡的小说家/电影制片人 Theena Kumaragurunathan 撰写。他的首部小说已在 亚马逊 Kindle 上发售,并且他的第一部长片正在筹备发行中。

(题图:MJ/1bace6a9-5d11-4cae-921c-18a850b7bff1)


via: https://news.itsfoss.com/filiming-with-foss-tech/

作者:Theena Kumaragurunathan 选题:lkxed 译者:ChatGPT 校对:wxy

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