插件站点更新:旧貌换新颜

发布于 作者:

自从上周宣布插件站点不幸坠入遗忘以来,我们收到很多反馈。我想解决自那以来浮现的一些最重要的担忧。

“你能提供旧备份以供后人参考吗?”

是的。我们可以——而且已经做到了。周末,我们恢复了我们拥有的最新备份,原始站点现在位于 archive.plugins.jquery.com;你应该可以尽情浏览那里的所有内容。我们还应用了我们拥有的最新用户信息,因此如果你在过去一年中的任何时候在该站点上拥有过帐户,它应该仍然有效。但是,该站点不对新用户注册开放。如果你真的需要一个新帐户,请 通过 Twitter 联系我,我会帮你解决。我们还设置了一个重定向,因此如果你在浏览时遇到指向 plugins.jquery.com 的任何链接,你(希望)最终会到达存档中的相应页面。

直接从 Wayback Machine 获取备份!

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

如果你如此讨厌 CMS,那 WordPress 是什么?

我们正在进行全网络范围的重新设计,WordPress 在主题、搜索和提供一组站点方面为我们提供了宝贵的工具。然而,我们新的口号是 拉取请求,而非密码;我们正在以这样一种方式实现主题、文档、插件等,从而贡献实际上不需要在我们的 CMS 上拥有帐户。正如我在初始帖子中概述的那样,插件提交过程仅涉及将 post-receive 钩子添加到你的仓库中。万一发生类似的灾难,我们确保能够重放整个插件贡献历史并立即使站点恢复运行。我们的目标是利用我们认为有用的 WordPress 功能,而不会使其成为进入的障碍或内容的规范仓库。如果你认为 WordPress 总是坏主意,无论如何,你当然有权持有这种观点,但目前,这对于对话来说并不是特别有益。

Git(Hub) 很难

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

这是一个阴谋!

有些人质疑我对事件的真实性,考虑到时间和环境,这是可以理解的。但请相信我,在手动从目录中清除垃圾邮件一天后,我最不想做的事情就是给包括我和我的同事在内的数千人造成巨大的麻烦。重新启动最后的备份至少可以部分缓解这些担忧。此外,我们从 GitHub 开始仅仅是因为它已经拥有非常广泛的用户群,并且自从我们将其用于 jQuery Core、UI 和 Mobile 的开发以来,它对我们来说一直非常积极。

再次感谢大家在这次过渡期间的耐心。

jQuery 插件站点发生了什么?

发布于 作者:

大约一周以来,我们的插件仓库没有托管数百个 jQuery 插件和数千个笔记本电脑电池广告,而是提供了一条关于垃圾邮件的相当可悲的消息,并暗示了某种“新的提交过程”。这种情况发生得非常突然,我们对由此给每个人带来的不便表示歉意。请允许我花几分钟时间解释发生了什么,我们将去哪里,以及它如何影响你。如果你很着急,这里是简短版本

背景故事

A White Elephant 你所知道的和喜爱的插件站点在最初设置时是一个有价值的工具,但它逐渐变成了一个对项目来说有点像烫手山芋。虽然像 GitHubnpm 这样的强大分发工具已经出现,但我们却被困在了一个老化的、以 CMS 为导向的范例中,这让插件的开发人员和使用者都感到沮丧。许多人转向了替代来源来查找和验证插件。此外,该站点的原始实施者和维护者已经不再积极参与 jQuery 项目。虽然团队面临着关于可用性和缺乏功能的持续抱怨,但该站点本身却面临着(各种类型的)垃圾邮件的猛攻。既有标准的、关键词丰富的 SEO 垃圾邮件,还有一些更险恶的东西:第三方为了寻找联盟现金,批量发布文档不足、没有演示的插件,并链接到付费下载站点。虽然这并没有明确禁止,但它给用户带来了糟糕、混乱的体验,并让该站点有一种一切都不对劲的感觉。

最好的计划…

对所有这些问题都很敏感,团队开始制定完全改造的要求。我们知道我们不想再从事接受上传、提供下载以及在自己的服务器上普遍制定插件“发布”过程的业务。由于我们的官方项目已经在 GitHub 上,我们知道我们想利用他们已经为分发、版本控制和促进开放协作开发发明的许多工具。另一个要求是创建一个标准模式,供作者清楚地说明依赖关系,例如插件支持的 jQuery 版本,以及它需要才能正常运行的其他插件和 CSS 资源。我们还希望引入一些质量控制,既有被动机制,例如要求 GitHub 和清单文件进行分发,也有主动机制,例如用户评分。最后,我们想要一个干净的开端;有了更严格的提交要求,就不能批量导入所有旧插件。我们在准备规范方面取得了很大的进展,但由于缺乏资源和许多其他项目,我们从未能深入实施阶段。毕竟,旧站点“有效”!

…往往事与愿违

Throwing the baby out with the bathwater

随着垃圾邮件的激增和多个报告开始出现在 jQuery Core 错误跟踪器上,我想至少采取一些步骤来清除一些垃圾邮件和丢脸。在获得对站点管理工具的新权限后,我与 Drupal Views Bulk Operations 模块 合作,开始识别和删除垃圾邮件发送者及其帖子。在一天或两天内,据称该站点上的近 90% 的“内容”已被删除。我继续监测情况,并在垃圾邮件出现时将其删除。不幸的是,我可能网撒得太宽,把好孩子也一起扔掉了。更不幸的是,我在开始这个过程之前没有备份数据库。到目前为止,你可能已经知道这个故事的结局。后来,在一周内,当我试图删除四条垃圾邮件时,我完全惊恐地发现操作结果报告显示,剩下的 10%——数据库中剩下的每个插件——已被清除。剩下的只有一年前的备份。当然,我意识到这是一个可怕的结果,我对此负全部责任。如果这有帮助,我很乐意接受仇恨邮件和推文,谴责我玩忽职守、不专业或愚蠢。

在此情况下,我们有两种选择。

  • 继续踢罐头下路:从旧备份中恢复,无论如何都会丢失大量数据,并让作者经历重新上传插件的痛苦过程,即使该站点注定要被弃用。
  • 利用这次明显的错误作为契机,集中精力,与过去决裂,并最终实现我们长期以来一直在讨论的网站。

我们选择了后者。

细节

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

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

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

过渡期间

我们认识到旧网站仍然是许多人的常规资源,尤其是新的 jQuery 用户,他们仅仅重视存在一个中央浏览位置,尽管它存在缺陷。虽然许多有经验的用户已经转向其他网站,或者依赖于与可信作者的关系和口碑,但这些需要时间来发展。在我们能够启动新系统之前,我们很乐意将你引导到其他几个目录和可以提供帮助的人员:

如果在搜索这些或任何其他目录的过程中,你被重定向到当前的 plugins.jquery.com 网站,通常快速搜索作者的名字和插件的名字会找到一个替代网站,该网站托管了它。此外,DailyJS 最近做了一个有用的替代方案汇总,其中包含更多详细信息。

插件作者的下一步

如果你是一位希望确保你的插件能够在第一天(甚至提前)准备就绪的插件开发者,你将希望确保你的插件已上传到 GitHub,然后开始创建你的 package.json 文件,并确保你的版本已正确标记。如果你还不熟悉 Git 和 GitHub,那么现在可能是你开始学习的好时机,开始使用。如果你更喜欢其他 SCM 系统,你可以查看从 svnhg 设置镜像,或者其他项目托管网站,如 bitbucketgitorious。如果你不将你的插件作为开源开发,或者你根本不使用任何源代码控制,那么我们目前无法容纳你。

我能提供什么帮助?

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

虽然该网站本质上“由”GitHub 提供支持,但显然还有许多活动部件在起作用。该网站实际上将从 WordPress 内部提供服务,WordPress 使用 node.js 工具填充索引插件的内容。仍然有许多问题需要解决,所以如果这听起来像你想要参与的堆栈,请加入我们,在 仓库 中。我们将使用 GitHub Issues 处理所有功能请求、错误和讨论。

虽然我们已经对我们的 package.json 模式进行了大量的思考,但它仍然是一个动态文档,如果你对为什么它是这样有疑问或评论,请前往 这个 issue

勘误

在理想的世界里,这当然不会以现在的方式发生。可悲的是,它发生了。我们希望你能接受我们为这次过渡可能使你的工作更难、给你带来一些额外的意外工作,或者只是让你感到不快而表示歉意。如果你能够原谅我们,与我们同在,甚至伸出援手,我们相信我们能够交付社区应得的现代、实用的插件网站。

TL;DR

所以说了这么多,这是要点。

  • 我们一直计划替换原始的、充斥着垃圾邮件的插件网站已经有一段时间了
  • 在删除垃圾邮件的过程中,所有插件都被删除了,而且我们没有最近的备份
  • 与其耗费精力维持旧网站的生命,我们决定彻底改变,并加速新网站的开发。
  • 新网站由 GitHub 和一个 插件清单文件 提供支持
  • 旧网站上的插件永远不会自动导入到新网站中。
  • 仓库地址是 github.com/jquery/plugins.jquery.com
  • 我们非常抱歉,但也非常兴奋!