2020 年 6 月 30 日 由 Naman Kumar 撰写
Naman Kumar 是一位来自印度新德里的计算机科学与工程专业的学生,也是 ProductHunt 的全栈工程师。他被选中参加 Google Summer of Code 2020 - GraphQL 基金会,并在 Ivan Goncharov 的指导下工作。在这篇文章中,他将分享他计划如何度过这个夏天,为 GraphQL 基金会做出贡献。
您好,GraphQL 是一种我在日常工作和构建拥有 200 到 200 万用户的平台的其他项目中使用的技术。我非常喜欢它,并认识到它在多大程度上提高了开发速度,并消除了初学者文档的开销。
我非常尊重开源组织,并受到整个 GraphQL 社区为使开发人员的生活更轻松而付出的努力的启发。我一直希望参加 GSOC,我向您保证,这是每个学生的梦想。
我从 Ivan 在 GraphQL Asia Submit 2020 上的 演讲 中了解到 GraphQL 基金会被 GSOC 接受的消息。我真的很兴奋有机会为不仅我自己使用,而且为全球数十亿人使用的应用程序提供支持的工具做出贡献。
我对编译器设计非常感兴趣,在 graphql.js 参考解析器上工作的项目想法对我来说非常有趣。幸运的是,我被选中参加了该计划,我将在 2020 年夏天致力于 Graphql.js 参考解析器和 GraphiQL 解析器,将两者合并在一起。Graphql.js 参考解析器没有流支持或最佳错误恢复设置。目标是从 GraphiQL 解析器中汲取灵感,在参考解析器中实现流支持,以便它可以被 IDE 和其他开发工具使用。
我在社区联谊期间了解了 GraphQL 社区中的人员,并熟悉了这些项目。我探索了代码库,并在 Ivan 的帮助下修复了一些小错误。维护良好的 graphql.js 参考解析器具有非常好的代码质量和可读性,这帮助我很快地理解了它,另一方面,GraphiQL 解析器只有 1000 行纯粹的“老旧黄金”代码库,是在 3 年前实现的,乍一看很难理解,但经过适当的理解,它是一个非常简单可爱的有限状态机。
我和 Ivan 也花了一些时间思考如何将整个项目分成 3 个里程碑,并将这些里程碑分解成更小的目标。由于 GraphiQL 解析器没有积极维护并且没有测试覆盖率,因此在进行任何更改之前,全面覆盖解析器非常重要。我们的目标是使 graphql.js 解析器能够被 IDE 使用,而性能是我们需要关注的主要因素。考虑到这一点,我们还决定对 GraphiQL 解析器进行基准测试。因此,第一个里程碑包括实现 GraphiQL 解析器的 100% 测试覆盖率和彻底的基准测试。
下一步将是在 GraphiQL 解析器中使用 graphql.js 参考解析器的词法分析器,并制定一个合并解析器的计划。一旦 graphql.js 解析器达到与 GraphiQL 解析器相同的功能,我们就可以将 GraphiQL IDE 迁移到使用 graphql.js 解析器。在第一个里程碑接近完成时,我对在 Ivan 的指导下学到的新东西感到非常高兴,并且非常期待完成即将到来的任务。
– Naman Kumar,GSOC 2020,Graphql 基金会