我怎么判断特定的Discourse客户端发行版是否是自由软件?

对于希望避免运行非自由软件的人来说,我们如何才能确定网站提供的用于访问由 Discourse 驱动的论坛的软件是自由软件?

如果没有 JavaScript 客户端软件,该论坛似乎是只读的,因此我想在网站上运行 JavaScript,但在 Discourse Meta 或例如 Purism Forums(也由 Discourse 驱动)上,我没有看到任何迹象表明客户端软件是自由软件。一些脚本文件有指向源映射的链接,但我检查过的源映射没有任何许可信息。

我发现一个较早的主题提到“只有一个版本的 Discourse——那个很棒的开源版本”,但我也发现一个主题表明 CLA 可能允许专有版本,但没有专有版本的示例。

一个确实显示许可信息的 Discourse 实例是 FSF 会员论坛(我认为只有会员可以访问),它链接到 GitHub Discourse 仓库、一个 FSF git 仓库以及一个扩展的 GitHub 仓库,但这些信息仅在客户端软件运行时显示,因此对于决定是否首先运行该程序来说,它不太有用。

有没有办法在我实际运行软件之前,弄清楚 Discourse 实例提供的客户端软件是否是自由软件?或者即使我必须运行该软件,我如何才能获得 Discourse 实例客户端软件的完整许可源代码?原始的 discourse GitHub 仓库肯定并不总是足够的,因为人们在重新分发软件之前可能已经修改了它?

或者,是否有不同的 Discourse 应用程序不需要从它连接到的服务器下载软件?

1 个赞

Discourse 是开源的,所以使用它是免费的。托管,无论是自行托管还是使用 CDCK,都需要付费。

搜索 is discourse free 得到这个:

是的,它是。而且事实上是唯一可用的来源。

4 个赞

我猜你不能。

有些安装是托管的,并且在托管堆栈中包含专有部分。

自助托管者不会愚蠢到不使用标准安装,因为那是支持成本最低的。

您可能会发现,有些网站可能会使用平台允许管理员自行决定的专有/私有插件。

6 个赞

我不明白这句话的意思。您是说托管 Discourse 的人不会在重新分发软件之前修改它吗?

人们称这个团队或公司为 CDCK。当然,他们每天都在这样做。它处于持续开发中。然而,这正是我们正在使用的。

这可能会引出这个问题:

2 个赞

您提到插件让我想知道是否有办法检查版本信息,我找到了这个主题,其中描述了如何获取版本信息。

因此,例如,我可以看到此实例正在使用提交 276bc8a565389ea1a145af08ec8e64c1a5bea990,FSF 会员论坛正在使用提交 7ecaf6295daf8759aa98d00e7035c4dc0f853303,Purism 论坛正在使用 999aaa35a79ae7c586a91de1f6c1f7b3c8092bd2,Exercism 论坛正在使用提交 1bd9ca11e777f880462ae64c6795ef7de28a8cd2。所有这些都是官方存储库中的有效提交,所以我猜这些实例没有修改 Discourse 本身(尽管它们可能添加了插件)。

我认为剩下的是插件和主题。看起来您可以通过查找插件脚本中的“data-discourse-entrypoint”属性来查看插件名称,但我没有看到版本标识符。您知道有什么方法可以获取已安装插件的列表吗?

您可以查看 JavaScript 包来获得线索,但任何数量的插件都可能安装在后端,不被轻易察觉。

2 个赞

我所说的“修改软件后再重新分发”是指,那些在公共网站(例如 forums.puri.sm)上重新分发该软件的人,可以修改他们自己的版本,而无需将更改提交到主 git 仓库。如果他们与 Discourse 达成协议,他们就可以将这些更改作为非自由软件发布,与主 Discourse git 仓库分开。

主仓库的变更速度非常快,保持分叉的可用性成本高昂。

这正是插件成为扩展流行解决方案的原因。

5 个赞

这是一个很大的假设,我不认为这会发生——而且是什么协议,Discourse 是开源的。但 CDCK 知道得更清楚。我估计有一些分支,但那些是在生产中吗……我对此表示怀疑。但正如 Robert 所说,当可以使用组件和插件完成事情时,为什么还要这样做。

2 个赞

所以我想检查插件的唯一方法可能是:

  • 设置我自己的 Discourse 实例
  • 尝试安装与我想要交互的任何远程实例相同的插件
  • 检查我的实例上的插件 JavaScript 是否与他们的实例相同

我想我也可以尝试完全不运行插件软件,只使用 Discourse 本身自带的脚本。

当然,我无法检查他们的后端,但当我连接到别人的服务器时,我只关心客户端软件。

您可能还对安全模式感兴趣,它会禁用 JavaScript 自定义。

2 个赞

不。你无法看到服务器上正在发生的事情。可能有很多更改未在公共 API 上公开,或者很难破译。

普通人无法得知服务器上正在发生的事情。

3 个赞

我认为,结合版本信息,就可以在避免运行非自由软件的情况下使用任意的 Discourse 分发版。可以检查提交是否在官方 GitHub 仓库中,然后确保安全模式始终启用,或者只“白名单”(在 LibreJS 等工具中)安全模式下出现的脚本。

不,它没有。它仅禁用客户端更改。

3 个赞

我只关心客户端的更改,因为我不会在我的计算机上运行服务器代码。

如果我要运行一个 Discourse 服务器,那么我会选择要安装的插件,并且不安装缺少许可证的插件。

当我连接到别人的服务器时,我需要运行他们给我的软件,而这些软件的许可证可能不容易找到。

我认为大多数安装都会有可预测的插件集。但并非全部。除非你成为该网站的特权管理员,否则你永远不会知道。

2 个赞

为了确保我理解正确:如果一个更改不是客户端的,那么它就不会影响普通用户(即非管理员)运行的 Discourse 分发代码。这是正确的吗?

运行,但不会受到它们可能交互的任何信息的处理。\n\n服务器可以在后台将您的所有详细信息发送给 Facebook 并获得报酬 :wink:

2 个赞