前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[简中] Google Summer of Code & Chrome Extensions

[简中] Google Summer of Code & Chrome Extensions

作者头像
戴兜
发布2023-10-18 16:40:32
1660
发布2023-10-18 16:40:32
举报
文章被收录于专栏:daidr

这篇博客是 https://im.daidr.me/blog/1086 的简中翻译版本。 原文地址:https://developer.chrome.com/blog/google-summer-of-code-and-chrome-extensions/

我是一名来自中国的大二学生,对Web开发非常感兴趣。在我大一的时候,我加入了一个技术社团(杭电助手),这可以说是让我接触编程和开源的一个起点。在杭电助手,我遇到了一群和我志同道合、对开发充满热情的同学,也正是在于他们交流的过程中,我在2023年初了解到了 Google Summer of Code。GSoC 是一个由 Google 组织的全球性项目,旨在建立学生与开源组织间的联系,并指导他们充分利用暑假去参加到开源活动之中。

抱着试试看的心态,我提交了我的申请。很幸运的是,我被选中了!在这个暑假,我给 Chrome Extension Samples 仓库做贡献的经历是令人难忘且珍贵的。当然,我也通过这次活动提升了自己高效沟通、编程、安排规划等重要技能。

目前 GSoC 2023已经接近尾声,是时候分享一些我在 GSoC 的经历了。这篇博客会通过我的视角简单介绍一下 GSoC 的总体流程,希望对你有所帮助!

作为 GSoC 贡献者的故事

我申请了 Chromium GSoC 2023 Project,主要工作是将现有的 Chrome 扩展示例升级以使其能够在 Manifest V3 正常工作,当然也包括一些相关工作流脚本和文档的开发。

一切的开始

当我在2023年2月份了解到 GSoC 时,我其实对申请这事还很踌躇,实话说,我有很多顾虑:

  • 我是一个比较内向的人,而且英语并不是我的母语,与导师沟通对我来说可能是一个很大的挑战。
  • GSoC 的社区来自世界各地,时区差异不能忽视。
  • GSoC 是一个很有名的项目,有许多竞争者,留给我的机会可能不多。

不过现在,我可以很自信的说:上面这些都不是问题!

在我开始讲述我的故事之前,我想简单聊聊2022年初发生在我身上的一件事,这件事也是我参加 GSoC 的一个契机。在当时,我想将一个基于 Manifest V2 的浏览器扩展迁移到 Manifest V3,不过想要完成迁移并非一件易事,我需要参考文档并理解API的变更,为此我在网上寻找了与迁移相关的文章和示例代码,尽管如此,理解新的API和转移代码对我来说还是相当具有挑战性的。

所以当我浏览 GSoC 项目列表并找到与 MV3 相关的 idea 时十分兴奋,我渴望为改进 Manifest V3 的 samples 和文档做出贡献,为未来的开发者提供便利。

在今年三月份,我给负责这个 idea 的导师 Oliver 发了一份邮件,简要表述了我的意图:

The application to participate in the GSoC project Hi, I am a CS undergraduate student from China. I learned about the Chrome Extensions Samples related project at GSoC and I was interested in improving the Manifest V3 Samples. I don’t have much prior experience in working on API Samples, however, I have experience in web development and MV3 extension development (https://github.com/daidr/paimon-webext), which has made me realize the importance of MV3 api samples, so I would like both to learn and to contribute to it. Can I still apply for this project? Thanks.

没过多久,我就收到了 Oliver 和 Ali 的回信。他们回答了我的问题,并提供了有关 GSoC 具体规则和时间线的详细信息。同时,他们也给了我许多有价值的参考资料。

这对我来说就像一剂强心剂,加强了我前进的决心。如果你也对未来的开源活动感兴趣,不论是 GSoC 2024还是国内的其他活动,迈出第一步至关重要,不要犹豫,勇敢尝试!

在申请之前,我看了看项目的代码并简单浏览了相关文档。尽管 GSoC 为学生贡献者提供了近一个月的社区融入期(Community bounding period)以熟悉社区,但是事先了解是很必要的,这能够让我写出更有针对性的 proposal.

我尝试解决了项目提供的一些 starter bugs,这些 issues 都比较基础,帮我很快地理解了项目。我很感谢我的导师 Oliver(尽管当时他还不是我的导师)。每当我遇到困难需要帮助时,他都能及时回复我的邮件,耐心解答我的问题。在撰写 proposal 遇到问题时,你也可以试试让导师过目,看看有没有什么需要改进的地方。

中选前

撰写 proposal 是申请前的最后一步,proposal 应该包含你的想法、目标和具体时间安排。部分组织可能会给你提供 proposal 模板,当然,网上也有很多现成的例子可供参考。

我将我的 proposal 草稿发给了导师,询问他的意见并根据意见做了一些修改,提交申请后,就是漫长的等待了。大概在五月初,我收到了我中选的通知。

写代码

在最初的磨合阶段,我首先处理了一些剩下的 starter bugs,和团队成员了解是否有我需要学习的技能。之后的时间我都花在了阅读文档上。

在和导师沟通后,为了使任务时间的分配更为合理,我调整了一些 proposal 中的目标。Oliver 还和我谈了谈 developer.chrome.com 中新页面的想法,这个新页面需要列出所有 API samples 并提供一个过滤器来帮助开发者快速找到自己所需的 samples。这对我来说还是个比较复杂的任务,我和导师在讨论项目细节和撰写产品需求文档(PRD)上花了很多的时间。

对于这样一个庞大的任务,我们认为 samples 仓库中需要有一个自动化工作流脚本,用来遍历仓库并生成包含扩展 samples 及其使用 API 的json文件。在 developer.chrome.com 的文档仓库中,再通过载入该文件来构建页面。

我最初考虑使用 Babel 来分析 samples 代码的抽象语法树(AST),找出其使用的所有API。在和 Oliver 讨论我的这个想法时,我发现他们曾经意见做过类似的项目了,证实了这种方法的可行性。当我完成大体的代码后,我的导师和其他的团体成员为我提供了宝贵的意见,帮助我规范函数封装、代码风格,完善了代码的注释。

在经历了大大小小的几次 review 之后,这些代码成功合并了。你可以在 GitHub 看到完整的讨论串,或者看看已经上线的文档页面(中国大陆可能没法正常访问)。

一点点总结

如果你问我 GSoC 为我带来了什么?首先,当然是学习并理解了和浏览器扩展API相关的知识,在高强度阅读文档,编写新的API示例之后,我对各种浏览器扩展API有了详细的了解。

而除此之外,我学到了许多参加 GSoC 之前很难接触到的技能:例如完整的代码审查流程、PRD的撰写等等。我也开始尝试使用 GitHub actions 自动化工作流,学习了如何使用 Babel 分析 AST 并遍历所有代码获取所使用的 API,首次了解了 Nunjucks 模板引擎。我也很高兴我能够学到这些重要的技能。

这个夏天给我留下了许多难忘的回忆,参与开源也让我感到非常满足。我遇到了耐心的导师,在他和团队成员的悉心指导下,我了解了许多感兴趣的知识,丰富了自己的开发经验。

计算机领域的知识日新月异无穷无尽,当我将自己与他人比较时,我意识到我对开源的理解只是冰山一角,不过千里之行始于足下,我相信 GSoC 时参与开源的一个极好的起点。

当然,我也希望我的经历能够为你参加未来的开源活动提供一些参考。

如果你也想参与到 GSoC 中,下面有一些我个人的建议:

  1. 选择一个适合自己的 idea:在我看来,寻找 idea 时,是否感兴趣应该是首先需要考虑的,其次才是技能。这样才能保证你在参与开源社区的过程中始终保持热情。
  2. 重质而非重量:你可以提交很多很多的 proposal 来增加被 GSoC 选中的机会。然而,我相信质量更为关键,人的精力是有限的,专注于两三个 idea 或许更有益处。(比如我只提交了一份 proposal😉)
  3. 不要畏惧新事物:不要怯于尝试你在项目中未曾接触过的技术,你会有整整一个月的社区融入期来熟悉这些陌生的技术,还有一整个夏天去实现你的想法,尽管去做!
  4. 提前熟悉项目:比如读读开发文档,看看以往的 commits 历史、issues 和过去的 pr。提前对项目有一个整体的了解才能让你写出更全面的 proposal。
  5. 时刻保持沟通:定期和导师沟通,不论是在申请前还是中选后遇到了问题,都不要怯于提问,大多数导师都很乐意帮助你解决问题,这还能够让他们了解你目前的进度。

感谢您的阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作为 GSoC 贡献者的故事
    • 一切的开始
      • 中选前
        • 写代码
        • 一点点总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档