MDN 新功能:使用 GitHub 登录!

现在,MDN 为用户提供了更多登录选项!

Sign in with GitHub

之前登录 MDN 需要 Mozilla Persona 账户。获取 Persona 账户免费且简单,但 MDN 分析显示,在“使用 Persona 登录”界面出现了用户流失率急剧下降的情况。例如,几乎 90% 未登录的用户点击“编辑”后从未登录,这意味着他们从未进行过编辑。这是错失了很多机会!

加入并编辑 MDN 应该很容易。如果你点击“编辑”,我们应该让你轻松地进行编辑。我们的分析表明,大多数潜在编辑在 Persona 登录时遇到了困难。因此,我们寻找方法来改进潜在贡献者的登录体验。

常识告诉我们,许多开发者都有一个 GitHub 账户,分析结果也证实了这一点。在那些在个人资料中列出外部账户的 MDN 用户中,大约 30% 包括 GitHub 账户。GitHub 是继 Twitter 之后第二常见的外部账户。

这让我们思考:如果我们将 GitHub 账户与 MDN 个人资料集成,我们将来可以在 MDN 上互相分享有趣的 GitHub 活动。我们将来可以利用一些 GitHub 的工具,为 MDN 用户创造更多价值。最直接的是,我们可以为至少 30%(甚至更多)的现有 MDN 用户提供“使用 GitHub 登录”选项。

如果我们这么做,我们还可以为超过 300 万 GitHub 用户提供“使用 GitHub 登录”选项。

整个工程团队和 MDN 社区都为实现这一目标做出了贡献。

身份验证库

添加使用 GitHub 账户进行身份验证的功能,需要我们扩展 MDN 处理身份验证的方式,以便 MDN 用户可以轻松地添加他们的 GitHub 账户。我们审查了kuma(运行 MDN 的代码库)的现有代码,并意识到它与 Mozilla Persona 在技术上的工作方式深度集成。

由于我们一直在努力消除技术债务,这意味着需要重新审视我们在多年前编写身份验证代码时做出的一些决定。经过审查过程,我们决定用一个名为django-allauth 的第三方库来替换我们自己开发的系统django-browserid,因为它在 Django 社区中是一个广为人知的系统,能够并排使用多个身份验证提供程序——在我们的案例中是 Mozilla Persona 和 GitHub。

其中一个挑战是确保我们现有的用户数据库可以移植到新系统,以减少对用户的负面影响。令我们惊讶的是,这并非一个大问题,可以通过数据库迁移来实现自动化——这是一种特殊的代码,可以将数据转换为新格式。我们在几个月前实现了新的身份验证库,并将账户迁移到该库。从那时起,MDN 就一直在使用 django-allauth 进行 Mozilla Persona 身份验证。

用户体验挑战

我们希望用户体验快速便捷的注册流程,目标是让他们最终编辑 MDN 内容。我们在界面中做了一些事情来支持这一点:

  • 记住用户注册的原因,并在注册完成后将他们返回到该任务。
  • 使用 GitHub 的数据预填充用户名和电子邮件地址字段(包括预先检查这些字段是否可用)。
  • 信任 GitHub 作为已确认电子邮件地址的来源,因此我们无需在用户完成注册之前确认电子邮件地址。
  • 标准化我们的语言(这比听起来更难)。MDN 用户通过连接其他“服务”上的“账户”来“登录”他们的“MDN 个人资料”。查看讨论

我们最大的用户体验挑战之一是允许现有用户使用新的身份验证提供程序登录。在这种情况下,用户需要在使用新服务登录后“认领”现有的 MDN 个人资料,或者需要向他们现有的个人资料添加新的登录服务。我们投入了大量精力来确保这一点对用户来说都很容易,无论他们最初是使用 Persona 登录还是使用 GitHub 登录。

我们从用户体验的理想计划开始,但预计一旦我们更好地了解 allauth 和 GitHub 的 API 的能力,就会进行一些调整。一旦我们能够点击四处并自己尝试,就更容易解决流程中的问题。MDN 使用功能切换进行测试,这便于我们进行此操作。

分阶段测试和发布

这个项目有可能破坏个人资料或登录数据,并会改变我们最重要的界面之一——注册和登录。因此,我们制定了周密的发布计划,分几个阶段进行功能测试。

我们喜欢使用功能切换 在 MDN 上对更改进行 alpha 和 beta 测试。为了切换功能,我们使用由 James Socol 开发的优秀的django-waffle 功能切换器——MDN 资深经理。

我们每天将新代码部署到我们的 MDN 开发环境,并在功能切换的背后运行。在这段时间里,MDN 工程师对新功能进行了大量测试,并找到了错误,并在 我们的主要跟踪错误 下提交了错误报告。

当功能集相对完整时,我们创建了我们的 beta 测试页面,在我们的 MDN 暂存环境 上启用该功能,以进行更多审查。我们进行了端到端的用户体验测试,邀请 Mozilla 内部员工帮助我们进行 beta 测试,提交了许多用户体验错误,并开始对发布阻碍进行分类和优先级排序。

接下来,我们通过在实时网站上发布全站横幅,启动了公开 beta 测试,邀请任何用户测试并提交错误报告。共有 365 名 beta 测试人员参与了这一轮 QA。我们还要求Mozilla WebQA 帮助在我们的暂存服务器上深入了解该功能。我们只收到了一些错误,这让我们对最终发布充满了信心。

发布

这是一项艰巨的任务,但所有工作终于完成,我们发布了。由于我们进行了广泛的测试和发布计划,我们发布后没有出现任何问题——没有停机时间,没有堆栈跟踪,没有新错误报告。我们非常高兴发布此功能。我们很高兴为我们优秀的 MDN 用户和贡献者提供更多选择和功能,并且我们很高兴邀请所有 GitHub 用户加入 Mozilla 开发者网络。我们携手共进,让网络变得更加精彩。现在登录

展望

现在,我们已经解决了与多账户身份验证相关的基础设施和用户体验挑战,我们可以寻找其他有希望的身份验证服务来进行集成。例如,Firefox 账户 (FxA) 是为 Firefox 同步 提供支持的身份验证服务。FxA 集成了 Firefox,并将很快与其他各种 Mozilla 服务集成。随着越来越多的开发者注册 Firefox 账户,我们将寻找机会将其添加到我们的身份验证选项中。

关于 Justin Crawford

更多 Justin Crawford 的文章…


5 条评论

  1. Herbert Dupree, II

    当我尝试使用我的 Persona 或 GitHub 账户登录时,Mozilla 给出了一个错误,我已经截屏了。Mozilla 33.0 在 Win 8.1 x64 上。

    https://lh3.googleusercontent.com/yCKHCDBsUcmGm2UYQQiNrERKjYBkvhGoURicA_CIqg=w579-h259-p-no

    具有讽刺意味的是,一切都在 Internet Explorer 11.0.13 上运行。

    2014 年 10 月 22 日 下午 03:59

    1. Robert Nyman [编辑]

      感谢您的反馈!请提交错误报告,以便开发人员查看并跟进。谢谢!

      2014 年 10 月 22 日 下午 04:27

      1. Herbert Dupree, II

        错误 # 1087829

        2014 年 10 月 22 日 下午 18:55

    2. John Karahalis

      嗨,Herbert。

      这看起来像是 persona.org 中的错误,所以我将错误报告提交给了他们。我们会密切关注它。

      感谢您将此问题提请我们注意。

      2014 年 10 月 22 日 下午 19:08

      1. Herbert Dupree, II

        不客气。

        2014 年 10 月 22 日 下午 19:18

本文的评论已关闭。