插件网站更新:旧事重提

发表于 作者

自从上周宣布插件网站不幸消失的消息以来,我们收到了很多反馈,我想针对自那以来出现的一些最重要的担忧发表一些看法。

“你能为了后代保留旧的备份吗?”

可以。我们可以做到,而且已经做到了。在周末,我们恢复了我们拥有的最新备份,原始网站现在位于 archive.plugins.jquery.com;你应该能够随心所欲地浏览其中的所有内容。我们还应用了我们拥有的最新用户信息,因此如果你在过去的一年中曾经在旧网站上拥有帐户,它仍然可以使用。但是,该网站已关闭新用户注册。如果你真的需要一个新帐户,请 与我本人联系,我可以为你解决这个问题。我们还设置了重定向,因此如果你在浏览过程中遇到任何指向 plugins.jquery.com 的链接,你将(希望)最终到达存档中的对应页面。

只需从 Wayback Machine 获取备份!

虽然互联网档案已经缓存了比去年 10 月更新的内容版本,但我们没有足够的人力来在新的存档网站中手动重新创建丢失的帖子。如果你拥有帐户,你可以随意添加“新”或旧的插件,或者更新现有的插件,如果你愿意的话。但是,此存档将不会被搜索引擎索引。

如果你如此讨厌 CMS,为什么还要使用 WordPress 呢?

我们正在进行网络范围内的重新设计,而 WordPress 在主题、搜索和服务一组网站方面为我们提供了一套有价值的工具。然而,我们的新座右铭是 **拉取请求,而不是密码**;我们正在以一种无需在我们的 CMS 上拥有帐户就可以进行贡献的方式实现主题、文档、插件等等。正如我在最初的帖子中所概述的那样,插件提交过程仅涉及在你的存储库中添加一个 post-receive hook。如果发生类似的灾难,我们确保我们将能够重播整个插件贡献历史记录并立即恢复网站。我们的目标是利用我们认为有用的 WordPress 功能,而不会将其作为进入壁垒或内容的规范仓库。如果你认为 WordPress 无论如何,无论如何都是一个坏主意,你当然有权持有这种观点,但在这一点上,这对于谈话来说并没有什么益处。

Git(Hub) 很难

新的插件网站将作为插件的索引,每个插件页面上都有一个简单的“下载”按钮。你 **不必** 只在 GitHub 上浏览寻找 jQuery 插件。如果你不了解 git 并且只想下载 jQuery 插件,则不必学习它。但是,如果你想提交插件,你必须使用某种源代码管理工具,至少可以将其镜像到 git 中。这是有意为之:构建一个 jQuery 插件可能非常容易,但这并不意味着它一定适合公开发布。要求使用源代码管理和 package.json 是被动机制,有助于确保传播的插件是由满足合理基线的开发人员(而不是出售电池)编写的。我们只针对 GitHub 支持进行启动,但我们 希望添加对其他服务的支持。我们正在积极避免使用特定于 GitHub 的功能,这些功能会迫使我们永久地将网站限制在 GitHub 用户。

这是一个阴谋!

有些人对我的说法提出了质疑,考虑到时间和情况,这是可以理解的。但相信我,在我花费一天时间手动从目录中修剪垃圾邮件之后,我最不想做的事情就是转身给成千上万的人(包括我自己和我的同事)带来巨大的头痛。我希望重新启动最后一个备份至少部分消除了这些担忧。此外,我们从 GitHub 开始仅仅是因为它已经拥有非常广泛的用户群,并且自从我们将其用于 jQuery Core、UI 和 Mobile 的开发以来,它对我们来说一直非常积极。

再次感谢你在这段过渡期间的耐心等待。

jQuery 插件网站怎么了?

发表于 作者

大约一周以来,我们的插件存储库一直没有托管数百个 jQuery 插件和数千个笔记本电脑电池的广告,而是一直显示着关于垃圾邮件的令人沮丧的信息,以及对某种“新提交流程”的暗示。这件事发生得非常突然,我们对所有受到影响的人感到抱歉。请允许我花几分钟时间解释一下发生了什么,我们要去哪里以及它对你有什么影响。如果你很赶时间,这里有一个 简短版本

背景故事

白象 虽然你所知道的 并喜爱的 插件网站在最初建立时是一个有价值的工具,但它逐渐变成了该项目的 白象。虽然像 GitHubnpm 这样的强大分发工具已经成为主流,但我们却停滞在一个老化的 CMS 导向范式中,这使开发人员和插件的消费者都感到沮丧。许多人转向其他来源来查找和审查插件。此外,该网站的原始实施者和维护者已经不再积极参与 jQuery 项目。虽然团队面临着关于可用性和功能缺乏的一系列抱怨,但该网站本身却面临着真正的一系列(各种形式的)垃圾邮件。有你通常见到的关键字丰富的 SEO 垃圾邮件,但还有一些更阴险的东西:第三方为了获取联盟现金而批量发布没有文档、没有演示的插件,并提供指向付费下载网站的链接。虽然这并没有明确禁止,但它导致用户体验非常糟糕且令人困惑,并给该网站带来了所有事物都不正轨的感觉。

最好的计划...

意识到所有这些问题,该团队开始为彻底改造制定需求。我们知道我们想要退出接受上传、提供下载以及在我们自己的服务器上普遍制定插件“发布”流程的业务。由于我们官方的项目已经在 GitHub 上,我们知道我们想要利用他们已经为分发、版本控制和促进开放、协作开发而发明的许多轮子。另一个要求是为作者创建一个标准模式,以便清楚地界定依赖关系,例如插件支持的 jQuery 版本以及其正常运行所需的其他插件和 CSS 资产。我们还想引入一些质量控制,包括被动机制,例如要求 GitHub 和分发清单文件,以及主动机制,例如用户评分。最后,我们想要一个干净的起点;随着提交要求变得更加严格,不可能大量导入所有旧插件。我们在准备规范方面取得了很大进展,但由于资源缺乏和其他几个项目的阻碍,我们从未能够深入实施阶段。毕竟,旧网站“有效!”

…往往会出错

Throwing the baby out with the bathwater

随着垃圾邮件泛滥加剧,并且 jQuery Core 错误跟踪器上开始出现多份报告,我想至少采取一些措施来消除一些垃圾邮件和鸡蛋。凭借对网站管理工具的新授权访问权限,我和 Drupal Views 批量操作模块 合作,着手识别和删除垃圾邮件发送者及其帖子。在一两天内,几乎 90% 的所谓“内容”从该网站消失了。在接下来的几天里,我继续监控这种情况,并删除了收到的垃圾邮件。不幸的是,我可能网撒得太宽,连同洗澡水一起把几个完全健康的孩子也扔掉了。更不幸的是,在开始此过程之前我没有备份数据库。在这一点上,你可能已经猜到这个故事的走向。本周晚些时候,当我试图删除四条垃圾邮件时,当我看到操作结果显示剩余的 10%——数据库中剩下的每一个插件——都被删除时,我感到无比震惊。剩下的只是一年前的备份。当然,我意识到这是一个可怕的结果,我对此负全部责任。如果有所帮助,我对任何因我粗心大意、不专业或愚蠢而写来的仇恨邮件和推文都非常接受。

在这一点上,我们只剩下两个选择。

  • 继续拖延:从旧备份中恢复,无论如何都会丢失大量数据,并让作者经历重新上传插件的繁琐过程,即使该网站本来就注定要完全弃用。
  • 利用这个明显的错误作为动力,沉下心来,摆脱过去,最终实现我们已经谈论了很长时间的网站。

我们选择了后者。

要点

在过去的几天里,我们开始将我们的计划付诸行动,构建了一个由 GitHub 支持的基础设施。在新的网站上列出插件有两个要求
Success Kid is helping out as well

  • 一个有效的 package.json 文件
    我们遵循了 CommonJS npm 的先例,创建了一个模式来指定 jQuery 插件的依赖关系、交付和其他元数据。虽然该格式在很大程度上与其他项目类似,但我们不得不进行一些细微的调整以适应一些特定于插件的细节。
  • 至少一个版本化的发行版
    这意味着用有效的语义版本号 (semver) 字符串 标记 你的发行点。

我们已将提交和维护流程简化为一个单一的一次性步骤:在您的插件的 GitHub 存储库中添加一个 post-receive 钩子。假设您的插件符合 指南,插件网站上将创建一个页面来展示您的使用和下载信息。我们会跟踪您推送的新版本。

过渡阶段

我们认识到,旧网站仍然是许多人的常用资源,尤其是 jQuery 新手用户,他们只是看重存在一个中央浏览位置,尽管它有缺陷。虽然许多经验丰富的用户 已经转移到其他网站,或者依靠与信任的作者建立关系和口碑传播,但这些都需要时间来发展。 在我们能够推出新系统之前,我们很乐意为您推荐其他几个目录和人员,他们可以 帮助弥补不足

如果您在搜索这些或任何其他目录的过程中,被引导回当前的 plugins.jquery.com 网站,通常快速搜索作者姓名和插件名称就会找到它托管的其他网站。此外,DailyJS 刚刚发布了一个关于 备选方案的有用汇总,其中更详细地介绍了这一点。

插件作者的下一步操作

如果您是一位插件开发人员,希望确保您的插件在第一天(甚至更早)就能正常使用, 您需要确保您的插件已上传到 GitHub,然后您需要开始创建您的 package.json 文件,并确保您的 版本已正确标记。如果您还不熟悉 Git 和 GitHub,那么现在可能是您开始学习和 上手 的好时机。如果您更喜欢其他 SCM 系统,您可以 考虑从 svnhg 设置一个到 git 的镜像, 或者其他项目托管网站,例如 bitbucketgitorious。如果您 没有将您的插件开发为开源项目,或者根本没有使用任何源代码管理,那么我们目前无法为您提供服务。

我如何提供帮助?

虽然该网站仍在开发中,但您现在就可以跟踪进度,甚至设置自己的本地开发环境,地址为 github.com/jquery/plugins.jquery.com/。我们仍在努力 建立一个公共测试环境。

虽然该网站本质上是“由”GitHub“提供支持”,但显然还有许多其他部分在起作用。该网站 实际上将从 WordPress 内部提供服务,WordPress 使用一个 node.js 工具填充已索引插件的内容。仍然存在许多问题需要解决,因此,如果您想加入这个团队,请加入我们 在 存储库 中。我们将使用 GitHub Issues 来处理所有功能请求、 错误和讨论。

虽然我们已经投入了大量精力来构建我们的 package.json 架构,但它仍然是一个动态文档, 如果您对它为什么是现在的样子有任何疑问或意见,请移步到 这个问题

勘误

在理想情况下,这件事当然不会完全按现在这样发生。不幸的是,它发生了。我们希望您能接受我们 对这种过渡可能给您带来的许多麻烦、让您承担一些意料之外的额外工作, 或者仅仅让您感到不快表示歉意。如果您能够原谅我们,请耐心等待,也许还能伸出援助之手, 我们相信我们能够提供社区应得的现代、实用的插件网站。

TL;DR

这些话太多了,以下是重点。

  • 我们一直计划更换原来的、充斥垃圾信息的插件网站。
  • 在删除垃圾信息的過程中,所有插件都被删除了,而且我们没有最近的备份。
  • 我们决定不再浪费时间让旧网站维持生命,而是选择彻底中断,并全力以赴地开发新网站。
  • 新网站由 GitHub 和一个 插件包清单 提供支持。
  • 旧网站上的插件永远不会自动导入到新网站中。
  • 存储库位于 github.com/jquery/plugins.jquery.com
  • 我们非常抱歉,但也非常兴奋!