JacobK1
(Jacob)
1
对于希望避免运行非自由软件的人来说,我们如何才能确定网站提供的用于访问由 Discourse 驱动的论坛的软件是自由软件?
如果没有 JavaScript 客户端软件,该论坛似乎是只读的,因此我想在网站上运行 JavaScript,但在 Discourse Meta 或例如 Purism Forums(也由 Discourse 驱动)上,我没有看到任何迹象表明客户端软件是自由软件。一些脚本文件有指向源映射的链接,但我检查过的源映射没有任何许可信息。
我发现一个较早的主题提到“只有一个版本的 Discourse——那个很棒的开源版本”,但我也发现一个主题表明 CLA 可能允许专有版本,但没有专有版本的示例。
一个确实显示许可信息的 Discourse 实例是 FSF 会员论坛(我认为只有会员可以访问),它链接到 GitHub Discourse 仓库、一个 FSF git 仓库以及一个扩展的 GitHub 仓库,但这些信息仅在客户端软件运行时显示,因此对于决定是否首先运行该程序来说,它不太有用。
有没有办法在我实际运行软件之前,弄清楚 Discourse 实例提供的客户端软件是否是自由软件?或者即使我必须运行该软件,我如何才能获得 Discourse 实例客户端软件的完整许可源代码?原始的 discourse GitHub 仓库肯定并不总是足够的,因为人们在重新分发软件之前可能已经修改了它?
或者,是否有不同的 Discourse 应用程序不需要从它连接到的服务器下载软件?
Jagster
(Jakke Flemming)
2
Discourse 是开源的,所以使用它是免费的。托管,无论是自行托管还是使用 CDCK,都需要付费。
搜索 is discourse free 得到这个:
是的,它是。而且事实上是唯一可用的来源。
我猜你不能。
有些安装是托管的,并且在托管堆栈中包含专有部分。
自助托管者不会愚蠢到不使用标准安装,因为那是支持成本最低的。
您可能会发现,有些网站可能会使用平台允许管理员自行决定的专有/私有插件。
JacobK1
(Jacob)
4
我不明白这句话的意思。您是说托管 Discourse 的人不会在重新分发软件之前修改它吗?
Jagster
(Jakke Flemming)
5
人们称这个团队或公司为 CDCK。当然,他们每天都在这样做。它处于持续开发中。然而,这正是我们正在使用的。
这可能会引出这个问题:
JacobK1
(Jacob)
6
您提到插件让我想知道是否有办法检查版本信息,我找到了这个主题,其中描述了如何获取版本信息。
因此,例如,我可以看到此实例正在使用提交 276bc8a565389ea1a145af08ec8e64c1a5bea990,FSF 会员论坛正在使用提交 7ecaf6295daf8759aa98d00e7035c4dc0f853303,Purism 论坛正在使用 999aaa35a79ae7c586a91de1f6c1f7b3c8092bd2,Exercism 论坛正在使用提交 1bd9ca11e777f880462ae64c6795ef7de28a8cd2。所有这些都是官方存储库中的有效提交,所以我猜这些实例没有修改 Discourse 本身(尽管它们可能添加了插件)。
我认为剩下的是插件和主题。看起来您可以通过查找插件脚本中的“data-discourse-entrypoint”属性来查看插件名称,但我没有看到版本标识符。您知道有什么方法可以获取已安装插件的列表吗?
您可以查看 JavaScript 包来获得线索,但任何数量的插件都可能安装在后端,不被轻易察觉。
JacobK1
(Jacob)
8
我所说的“修改软件后再重新分发”是指,那些在公共网站(例如 forums.puri.sm)上重新分发该软件的人,可以修改他们自己的版本,而无需将更改提交到主 git 仓库。如果他们与 Discourse 达成协议,他们就可以将这些更改作为非自由软件发布,与主 Discourse git 仓库分开。
主仓库的变更速度非常快,保持分叉的可用性成本高昂。
这正是插件成为扩展流行解决方案的原因。
Jagster
(Jakke Flemming)
10
这是一个很大的假设,我不认为这会发生——而且是什么协议,Discourse 是开源的。但 CDCK 知道得更清楚。我估计有一些分支,但那些是在生产中吗……我对此表示怀疑。但正如 Robert 所说,当可以使用组件和插件完成事情时,为什么还要这样做。
JacobK1
(Jacob)
11
所以我想检查插件的唯一方法可能是:
- 设置我自己的 Discourse 实例
- 尝试安装与我想要交互的任何远程实例相同的插件
- 检查我的实例上的插件 JavaScript 是否与他们的实例相同
我想我也可以尝试完全不运行插件软件,只使用 Discourse 本身自带的脚本。
当然,我无法检查他们的后端,但当我连接到别人的服务器时,我只关心客户端软件。
Moin
12
您可能还对安全模式感兴趣,它会禁用 JavaScript 自定义。
不。你无法看到服务器上正在发生的事情。可能有很多更改未在公共 API 上公开,或者很难破译。
普通人无法得知服务器上正在发生的事情。
JacobK1
(Jacob)
14
我认为,结合版本信息,就可以在避免运行非自由软件的情况下使用任意的 Discourse 分发版。可以检查提交是否在官方 GitHub 仓库中,然后确保安全模式始终启用,或者只“白名单”(在 LibreJS 等工具中)安全模式下出现的脚本。
JacobK1
(Jacob)
16
我只关心客户端的更改,因为我不会在我的计算机上运行服务器代码。
JacobK1
(Jacob)
17
如果我要运行一个 Discourse 服务器,那么我会选择要安装的插件,并且不安装缺少许可证的插件。
当我连接到别人的服务器时,我需要运行他们给我的软件,而这些软件的许可证可能不容易找到。
我认为大多数安装都会有可预测的插件集。但并非全部。除非你成为该网站的特权管理员,否则你永远不会知道。
JacobK1
(Jacob)
19
为了确保我理解正确:如果一个更改不是客户端的,那么它就不会影响普通用户(即非管理员)运行的 Discourse 分发代码。这是正确的吗?
运行,但不会受到它们可能交互的任何信息的处理。\n\n服务器可以在后台将您的所有详细信息发送给 Facebook 并获得报酬 