Google Summer of Code (GSoC) 即将结束,我想与大家分享一下我作为 OpenStack 实习生的经历。具体来说,我想让大家了解我对参与 GSoC 的看法,您可能遇到的障碍以及如何克服这些障碍,实习结束后会有什么期望,以及简要介绍我在实习期间所做的工作。
需要什么
参与像 GSoC 这样的实习项目,您将能够了解最新的技术,并为您选择的开源组织项目做出贡献。每个项目都不同,因此您拥有的先前知识和您期望使用的工具取决于项目计划。
您不需要成为黑客,但在我看来,您需要深入理解许多计算机科学概念。
学习曲线通常很高:您需要熟悉项目代码——事物的位置以及它们如何交互以使应用程序工作。您必须习惯社区的编程风格——每个项目都有其约定,坚持良好的实践以保证高质量的代码非常重要。您还需要了解工作流程——如何提交您的代码以供审查,审查过程如何运作,以及需要什么才能将其合并。最后,您必须开始着手您的贡献——这可能比您想象的要困难!
这一切都必须在不到三个月的时间内完成。通常,时间是足够的;但是当问题出现时,情况可能会变得艰难。
因此,您还需要积极主动——寻找您不理解的事物的信息并收集您可以找到的所有资源——并做出自己的决定——与其浪费时间打扰人们询问他们可能不太熟悉的主题的意见,不如在某些事情上犯错,然后通过审阅者提交的反馈来纠正它。
就我而言,我已经参与了 OpenStack,所以我熟悉工作流程和社区。但是,我花了一些时间来理解代码库——这不是我的专业领域——我也发现很难处理分配给我的功能。
面对障碍
嗯,事实是并非一切都开箱即用。
有时事情可能会出现意想不到的转折,您需要改变实施方向。
或者,也许您承担的任务比看起来更复杂,或者它依赖于其他项目在其方面实施功能。
或者,即使您成功提交了更改,审查过程也比您想象的要花费更多时间,您需要以开放的心态向审查人员解释您做出的决定,并接受可以使您的代码更好的更改。
这往往会让人感到非常沮丧,并可能最终让您远离目标。但是您需要准备好改变和适应,并且您也必须要有耐心。那么,您如何克服这一切呢?您如何找到解决困扰您的问题的变通方法呢?
沟通是关键。
有一个导师来指导您非常重要。如果您还可以与社区的其他成员分享,那就更好了!事实上,我们鼓励您与所有人交谈,而不仅仅是您的导师。就我个人而言,我遇到了许多这样的障碍,但多亏了我的导师和社区,我才能找到绕过它们的方法,并继续像刚开始时一样充满热情地工作。
与导师合作
我想强调找到一位好导师并与他们相处融洽是多么重要。这些实习的人文部分也值得讨论。
至关重要的是,您要与他们分享您的感觉良好的方面以及让您抓狂的方面。鉴于 GSoC 是一项远程实习,随时让您的导师了解您正在做什么始终是一个好主意。否则他们无法跟踪您的努力,并且他们不会注意到您是否被某些事情困住了。
始终尝试找到平衡:与他们联系,但不要期望他们将所有时间都投入到您身上。他们有自己的项目,他们也有截止日期。这时社区就发挥作用了。如果您的导师因某种原因无法回复您的问题,您也可以问其他人。
我也喜欢问他们关于他们自己的事情。在另一边,您有一个与您有相同兴趣的人,但经验更丰富,他可以帮助您进步很多,不仅在您当前从事的项目上,而且在您的工作和沟通方式上。如果您像我一样幸运,您也会在您的导师身上找到一位朋友。
实习结束后会有什么期望
一旦您走过了这条路,您就有几个选择。您可以停止为您从事的项目做出贡献,继续从事您更喜欢的东西,您可以继续作为志愿者做出贡献,或者您可以尝试找到一份全职工作来继续从事它。您决定做什么取决于您,但至少您已经打下了坚实的基础,这将对您的职业生涯有所帮助。
就我个人而言,我感觉我学到了很多东西,结识了很棒的人,并且我有足够的信心继续深入研究我选择的项目的内部结构。我不想满足于我作为 GSoC 一部分所做的贡献。一旦您达到理解项目的重要性并且您可以做出更强大的贡献使其变得更好的阶段,您就不想退出它。
在 OpenStack 消息传递服务 (Marconi) 上工作
自从 Marconi 诞生以来,我就一直对在其上工作感兴趣,但由于大学,我找不到时间。当我听说 OpenStack 已被接受作为指导组织参与 GSoC 时,我知道这是我的机会。所以我浏览了 OpenStack GSoC wiki 中的任务建议,并开始准备我的申请。
我的提案是为 Marconi 开发一个新的存储后端驱动程序。当时,我没有具体说明它将是什么,所以我提出了自己的建议。我认为最好等到实习期再与团队其他成员讨论哪种存储后端更符合项目利益。
添加对高级消息队列协议 1.0 (AMQP 1.0) 的支持是其中一种选择。鉴于 AMQP 是其他消息传递服务采用的标准协议,并且可以增强 Marconi 的互操作性,我决定开始研究它。
事实证明,这无法通过当前的 Marconi API 规范完成——在 Flavio Percoco 的“Marconi to AMQP: See you later”中可以阅读对此的详细描述——所以我们改变了方向,目前我正在传输端实现对 AMQP 的支持。除了这项工作,我还为命令行界面做出贡献,并为 Marconi 客户端添加对 API v1.1 的支持。我希望在发布周期结束前为两者提供基本实现。
如果您想了解有关这些实现的更多详细信息,请通过 IRC 联系我:在 irc.freenode.org 的 #openstack-marconi 频道中联系 vkmc。
简而言之
- GSoC 是一个绝佳的机会。您将能够了解在真实世界部署中使用的编程工具和实践,并且它将使您积累未来工作所需的经验和信心。这真的值得付出努力。
- 您不需要成为黑客,您只需要对学习感兴趣,拥有开放的心态并尽力而为。
- 如果我不熟悉该项目,我无法想象对我来说会是什么样子。如果您可以与项目社区取得联系并做出一些小的修复,这将使您以后更容易申请 GSoC。
- 尽可能多地与您的导师分享。您必须确定您将与理解您的人一起工作。
- 与社区互动。了解他们,这很重要。开源项目因其社区而运作。
- 当您遇到障碍时,请尝试在 30 分钟内解决它。如果没有任何进展,请征求社区的意见。如果他们没有回复,请给您的导师发送电子邮件,并继续做其他事情以清理您的思路。
- 您的贡献与其他人的贡献一样重要。审查其他人的补丁,提交反馈。您将学到很多东西,而且,他们也更可能审查您的补丁。
评论已关闭。