GSoC 2022 Series - 1
系列导航
前言
昨天早上 5 点多起来看 GSoC 的中选结果公布,发现自己成功中选了,意料之内但也还是挺开心的哈哈哈哈。决定开个坑记录下自己整个 GSoC 的全过程,一方面作为自己的总结回顾,另一方面或许也可以为后来者提供一些参考。
过程
选择项目
GSoC 的项目真是又多又杂啊,甚至还有保护鲸鱼的组织和项目,这就是 diversity 吗哈哈哈。一开始并没有想好尝试哪个项目,想着从自己的技术栈出发找一些项目看看,我对 Linux C++ 比较有兴趣所以想找一些这方面的项目,一番浏览下来发现了 Develop a MPD server inside VLC、Casbin for C/C++、HAIKU 以及 Implement a modern RPC interface for rTorrent,其中 VLC 和 HAIKU 初看上去不太契合我,Casbin 的有尝试过跑一下项目不过也没啥思路,最后发现了 rTorrent 的这个项目,主要是为 rTorrent 引入 Websockets 协议,涉及到网络编程和 Modern C++,二者我都有一点基础并且也都挺感兴趣的所以就锁定这个项目了。并没有想过同时尝试多个项目,因为不想花很多时间精力去多线程,认定好一个然后 all in 就好了,尽人事听天命。
熟悉项目
rTorrent 是一个命令行式的种子下载程序,通过 SCGI 协议实现 JSON RPC 从而支持浏览器端的 GUI。原来是由 rakshasa 开发的,我要参与的这个是 jesec (同时也是我的项目导师) 的另一个 distribution,主要的区别可以看这里。选定好这个项目后我首先把它 clone 下来,由于是 CMake 构建的项目所以在 CLion 里面开发调试也比较方便,接着粗略浏览一下代码,结合代码去理解这个项目的需求,这一点还是花了我一些时间的,比如了解 SCGI 协议,JSON-RPC 以及 torrent 的一些基本知识。
套磁
了解的差不多了就在 slack 上联系导师,首先介绍了自己的基本情况,个人技术栈,去年开源之夏的经历以及接下来的微软实习,配置好了项目的开发环境并且成功跑起来了。
hello jesec. I am Dongyang Zheng, interesting in GSoC project [Implement a modern RPC interface for rTorrent]. I guess you are the mentor of this project according to the info in slack and github, am I right 😄 ?
First let me introduce myself, now I am in the second year of my master`s degree in South China Normal University, majoring computer science and technology. My major programming language is C++ and I really like it, I understand the syntax of C++, new features in modern C++, some knowledge about CMake and network programming over TCP/IP.
I have open source experience. I participated in a similar activity similar to GSoC last summer and successfully passed the review of mentor and organizers. The project I am responsible for is to encapsulate the JDBC protocol for a graph database named Nebula Graph, it was done by me almost independently (of course, with the guidance of my mentor), the output (code and documentation) have been merged into offical github repository. Now I am now also a volunteer contributor in this open source community and continue to maintain this project. You can see the activity info here and now the outcome can be seen here.
These days I got json-rpc, libwebsockets ready on my dev machine and tried to build and run rTorrent on my computer. The basic conditions for development are in place. I wonder how far along the project is and where I should start if I want to work on it ?
第二天 mentor 就回复我了,说我的 profile looks great,和我讲了一下项目的目标,以及接下来会发布 qualification tasks to identify the best candidate。关于套磁的过程及 qualification tasks 我应该会记录在下一篇中,先给自己开个坑。
申请
关于 proposal 的撰写我参考了这个 repo,主要写了 6 个点:Personal Information、Project Description、About me、Homework、Plan、Timeline 和 Why me。重点是 Homework 和 Plan 部分,分别介绍了自己前期的一些准备工作以及若是能中选这个项目后的开发计划,后续我再把我这份 proposal 回馈给这个 repo。
中选
我对自己的前期工作以及和 mentor 的交流过程感觉还是挺不错的,所以认为自己中选的概率还是比较大的。GSoC 从截止提交 proposal 到公布中选中间隔了一个月,还是让人等得够久的,中间我给 rTorrent 提交了两个 commit,初步引入了 websocket,给 mentor 看后他说 looks good at the first glance,提到要同时保留 SCGI 和 websockets 以及支持 Bazel 构建,至此我就觉得中选应该没问题了,继续等 Google 公布结果吧。终于在昨天收到了中选邮件!!!
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!