2011 年 Google 编程之夏
此文档之前位于 wiki 上
什么是 Google 编程之夏?
自 2005 年以来,Google 一直在管理 Google 编程之夏计划,以鼓励学生参与开源开发。该计划有几个目标
- 激励年轻开发者开始参与开源开发
- 为计算机科学及相关领域的学生提供在夏季从事与其学术追求相关工作的机会
- 让学生更多地接触到现实世界的软件开发场景(例如,分布式开发、软件许可问题、邮件列表礼仪等)
- 创建并发布更多开源代码,以造福所有人
- 帮助开源项目识别并引入新的开发者和提交者
Google 将向成功的学生贡献者支付 5000 美元的津贴,使其能够在三个月内专注于他们的编码项目。申请截止日期为 2011 年 4 月 8 日。
当参与 Selenium - Google 编程之夏计划时,学生将了解到测试和构建自动化测试工具既有趣,又是交付高质量软件不可或缺的一部分。与 Selenium 贡献者的合作可以为您提供一套新的工具集,以开发和记录数千人使用的一组组件。您将获得宝贵的职业发展专业经验,并最终帮助在任何地方推动更高质量的 Web 应用程序。
请将问题 发送电子邮件给 GSoC 协调员 Adam Goucher
学生资格
- 截至 2010 年 4 月 26 日年满 18 岁
- 目前就读于认可的机构,如学院、大学、硕士课程、博士课程和本科课程
- 并非伊朗、叙利亚、古巴、苏丹、朝鲜和缅甸(缅甸)的居民和国民,美国法律禁止我们与之进行商业活动
- 在以下一项或多项方面具有较强的技能:Web 应用程序开发、JavaScript、Python、Flash、iPhone / Android
- 自我引导、足智多谋、负责任、善于沟通
- 能够在 2010 年 5 月 24 日至 8 月 20 日期间全职工作(居住在旧金山湾区的学生可能有机会不时与我们的一些导师在现场工作)
- 有关学生资格的更多信息,请参见 此处
如果您符合上述要求,我们很乐意您申请今年 Selenium 的 Google 编程之夏。
后续步骤和截止日期
- 阅读 期望以了解对您的期望。
- 阅读 申请以了解您要在申请中填写的内容。
- 查看 项目想法。如果任何一个想法引起您的兴趣,请随时联系提案人了解详情。您也可以与上述人员讨论您自己的项目想法,或在我们的 开发者邮件列表或 freenode 上的 IRC #selenium 中讨论它们
- 在 2011 年 4 月 8 日之前直接向 Google 提交您的申请。您可以在初次提交后根据导师的反馈修改您的申请,您的申请的最终版本将于 2011 年 4 月 23 日到期。
- Selenium GSoC 团队将在 2011 年 4 月 23 日之前完成对申请的审核,并将学生与导师匹配。
- Google 将于 2011 年 4 月 26 日公布被录取的学生。
请将问题 发送电子邮件给 GSoC 协调员 Adam Goucher
项目想法
这些是导师提出的项目想法。如果您对它感兴趣,请向 开发者邮件列表发送帖子,或发送电子邮件给 GSoC 协调员 Adam Goucher。
一个可脚本化的代理
导师 Patrick Lightbody(?)
难度
<未知>
描述 Selenium 是一个浏览器控制框架,但有时您希望对/使用生成的流量进行操作。“正确”的做法是在中间放置一个代理,并使用其 API 来获取/处理流量信息。此项目扩展了 BrowserMob 代理,以添加 Selenium 用户所需的 API。
标签 Se-RC, Se2
基于图像的定位器
导师
<未知>
难度
<未知>
描述 Sikuli 因其根据图像与页面上的项目进行交互的能力而备受关注。此项目会将基于图像的定位器添加到可用定位器列表中。
标签 Se-RC, Se2, Se-IDE
Selenese 运行器
导师 Adam Goucher
难度
<未知>
描述 可以使用服务器上的 -htmlSuite 选项在 Se-IDE 之外运行 Selenese 脚本。这样做有一些缺点,例如需要不断地启动/停止服务器。此项目将创建一个独立的 Selenese 脚本“运行器”,以与服务器交互 - 并从服务器中删除相关代码。
标签 Se-RC, Se, Se-IDE
预期导师
如果您有兴趣,现在申请成为一名导师还为时不晚,请在此处添加您的项目想法,并与 Adam Goucher 讨论后勤事宜
期望
总结
此页面详细介绍了 Google 编程之夏学生在沟通方面的期望。这对于尚未编纂其期望的 Selenium 项目非常有用 - 他们可以指向此文档并按原样使用它。
Google 编程之夏的编码时间非常短。最重要的是,许多学生以前没有做过很多实际的开发/工程工作;该计划的主要目的之一是向学生介绍 F/OSS 和现实世界的开发场景。最重要的是,大多数导师和学生都位于不同的位置,因此面对面的时间很难。因此,对于 GSoC 项目的成功而言,在学生于 5 月 26 日开始编码之前指定所有期望至关重要。这应该是学生和导师之间一系列频繁沟通的第一步。
本文档介绍了对学生和导师的各种期望,并探讨了各种有效沟通的方式。
每周工作 40 小时
预计学生每周至少在他们的 GSoC 项目上工作 40 小时。这本质上是一份全职工作。
GSoC 项目的好处是巨大的
- 有机会长期成为项目社区的一部分 - 这可以导致参与其他项目、社交网络、结交好友、获得宝贵的资源……
- 有机会与真正的开发人员一起从事真正的项目
- 学生项目的最终结果可以用作简历材料,供所有未来的雇主查看
对于初级开发人员来说,最后一点很重要。雇主在查看潜在员工时非常重视拥有可参考的工作成果。你的代码比在白板上写任何数量的算法更能说明你的能力。
当然,该计划将为您提供 5000 美元的收入和一件非常酷的 T 恤。
一些 GsoC 学生已经成为著名的技术博客作者、开源项目提交者、会议演讲者、其他学生的导师等等……
自我激励和稳定的时间安排
我们期望学生能够自我激励。导师可能会推动学生取得卓越成就,但如果学生没有自我激励去工作,那么他可能不会从参与中获得太多收获。学生应该每天安排时间进行项目工作,并保持规律的作息。长时间无所事事,然后在截止日期前熬夜赶工是不可接受的。这会体现在你的代码中。
定期每周会议和与导师的频繁沟通
与导师定期每周会面是必须的。计划的会议应涵盖:
- 你目前正在进行的工作
- 你已经取得了多大的进展
- 你是如何实现它的
- 你计划接下来要做什么
- 出现了什么问题
- 你如何解决这些问题
- 如果遇到困难,是什么阻碍了你
- 代码审查(如果适用)
导师是 GSoC 项目中最宝贵的资源之一。导师既是优秀的开发者,也是优秀的工程师。导师很可能长期参与该项目,了解决策的历史、架构方式、其他参与者、做事流程以及所有其他文化知识,这些都有助于学生取得最大的成功。
在 GSoC 项目开始之前,导师和学生应明确以下问题的答案:
- 定期安排的沟通时间是什么时候?每周?每两天?周一、周三、周五?
- 定期安排的沟通的最佳方式是什么?VOIP?电话?面对面?
- 非计划沟通的最佳方式是什么?电子邮件?即时通讯?
应该做的事
- 考虑你的时间和导师的时间,并为你的定期会议做好计划
- 考虑提前通过电子邮件发送以上议程的答案,以便你可以将时间有效地用于提出解决方案、代码审查以及为下一个里程碑制定计划。
- 在计划的会议之外,经常与邮件列表/IRC上的导师和开发人员交谈
- 你的导师不是唯一可以帮助你并让你保持进度的人,Selenium 有一个很好的社区,你也可以从其他人那里学到很多东西。
- 让你的导师知道你的日程安排
- 你是否要度假、搬家、为课堂写论文?如果你的导师不知道你将在哪里或预期你的生产力会下降,你的导师就无法帮助你纠正方向或相应地制定计划。
应该避免的事
- 超过一周不与你的导师沟通
- 项目时间表不允许出现计划外的沟通中断。
版本控制
学生应该为他们的项目使用版本控制。
应该做的事
- 尽早提交/频繁提交
- 这可以使问题得到快速发现,并防止在截止日期前一次性大量提交的糟糕情况。
- 使用高质量的提交消息
不良示例:修复了一个错误。调整。
好的示例:修复了一个内存泄漏,其中在父项 doohicky 被释放后,thingamajig 没有被释放。通过更改用于重复删除的比较,修复了错误 #902(在 Google Code 上)。实现了 Joe 关于在单独的缓冲区中进行渲染,然后在渲染完成后切换缓冲区的 好主意。通过简化表格改进了 HTML。
- 尽可能引用具体的错误编号、链接和问题
- 版本控制中的历史记录通常是发生的事情、原因和谁做的的最佳时间线日志。
应该避免的事
- 在一次提交中检入多个不相关的更改
- 如果其中一个更改存在问题,并且有人需要回滚它,则会更加困难。
- 检入未经测试的更改
与项目沟通
大多数 F/OSS 项目都有用于项目成员和社区的邮件列表,和/或有用于沟通的 IRC 频道。这些沟通渠道允许学生与其他项目成员保持联系,并且是非常宝贵的资源。项目的其他成员可能更精通项目的各个部分,如果导师不可用,他们可能会提供后备支持,并且他们可能是找出功能具体行为的良好讨论对象。你被分配了一位导师,但整个社区都在那里帮助你学习。利用你所能支配的所有资源。
对于刚接触开源开发的同学来说,害羞是一个普遍存在的问题。在项目开始时,鼓励学生向项目邮件列表发送一封“你好!我是...我正在进行一个关于...的GSoC项目,这是提案的链接。”的电子邮件,并鼓励登录并在 IRC 上说“你好”。尽早打破僵局,这会使项目的其余部分变得更容易。如果你不知道在哪里宣布自己,请咨询你的导师。
项目邮件列表
邮件列表是制定功能规范和预期行为的好方法。
通常邮件列表会被存档,并且存档是关于先前讨论、决策和技术勘误的丰富信息来源。
应该做的事
- 在列表上提问之前,请搜索存档以查找答案
- 始终保持礼貌
- 具体说明
- 在讨论技术问题时,尽可能引用数据、参考文献并使用链接。
- 耐心
- 不要期望在几分钟或几小时内得到答案;人们通常每天阅读一次他们的邮件列表消息。
应该避免的事
- 粗鲁无礼
- 由于大多数邮件列表都被存档或记录下来,你说的任何话都可能永远可供所有人查看;在生活的各个方面都要注意礼貌。
- 用所有大写字母和过多的标点符号说话
- 这被认为是喊叫
- 陷入激烈的争论
- 如果有人侮辱你,最好忽略它。
IRC
大多数 F/OSS 项目都有一个 IRC 频道,有些项目有多个。项目及其社区的人员在这些频道上“闲逛”并讨论各种事情。一些项目会定期召开会议,以涵盖项目的状态、开发进展情况、主要阻塞错误的状况、制定未来计划等。
如果项目有 IRC 频道,最好在那里闲逛。这使学生可以与社区互动,也是实时解决问题和想法的论坛。
应该做的事
- 当你正在进行项目工作时,请在项目的 IRC 频道上闲逛
- 花时间与 IRC 频道上的人互动。这有助于建立社区,并且从熟悉你的人那里获得帮助比从不熟悉你的人那里获得帮助更容易。
应该避免的事
- 用所有大写字母和过多的标点符号说话 这被认为是喊叫。
- 语法不良 这会使其他人更难理解你想要表达的意思。
- 粗鲁无礼
我们都是有真实感受的真实的人,如果你无礼,人们很可能会减少与你的互动和帮助;此外,IRC 历史通常会被记录和存档,供所有人永久查看。
查看
设计文档
在 GSoC 项目期间,学生维护设计文档是一个好主意。这些设计文档应涵盖:
- 项目计划,并提供更多详细信息以充实原始程序应用程序
- 与项目计划的偏差以及原始设计计划如何以及为何发生变化
- 任何无法解决或克服的问题
- 可能的未来方向
- 使用的任何资源或相关规范
学生和导师应确定在 GSoC 期间应维护哪些设计文档。
需要注意的一点是,学生不应将所有时间都花在设计文档上。跟踪设计很重要,但完成一些代码也很重要。导师应该能够帮助学生在这两个目标之间取得平衡。
博客
学生应养成至少每两周撰写一篇关于他/她的工作的博客的习惯。从历史上看,这样做的学生学习得更快、效率更高,并且与社区建立了更强的联系。有些人后来成为贡献者,另一些人在会议上发表演讲/报告。你希望看到你的职业如何发展?
申请
评估标准
我们认识到,很少有学生在学习期间接触过 Selenium,因此将根据你的以下方面对你进行评估:
- 思考、学习和推理的能力
- 才能(你迄今为止在编程或其他方面取得了什么成就)
- 态度、沟通、与社区和你的导师良好合作的能力
- 在 GSoC 中取得成功的可用性和承诺,以及持续参与社区的潜力
- 简而言之,是什么让你成为领导该项目倡议的合适人选 :-)
只要你在 4 月 9 日之前提交申请,你将有时间在 4 月 18 日之前与我们的导师微调你的提案。
准备你的提案
以下是一些可以让你入门的问题。你不必遵循它,你的申请仍会被考虑,但这是一个不错的起点。
请随意包括你认为重要的任何其他内容。一句话的答案不太可能被考虑。同时,请随时通过写信给我们的开发者邮件列表来向社区介绍你自己并讨论你的项目提案。
一般问题:
- 请简要介绍一下你自己。
- 我们可以联系到你的电子邮件地址和电话号码。
- 你正在学习什么?你将在 2010 年 9 月进入哪个年级?
- 你可以在 Summer of Code 中投入多少时间?你今年夏天还在做什么?
你的经验:
- 你是如何开始编程的?你做了多久了?你为什么喜欢它?你能向我们展示任何个人项目吗?你是否参加过编程竞赛/教过/指导过其他学生?
- 你对编程有什么兴趣?你是一个 C 程序员吗 - 你喜欢深入研究 Linux 内核吗?你对 Java 的了解是否比你的同龄人更多?或者你更喜欢 Python/Ruby?那 JavaScript 呢?你知道,你的风格是什么?
- 你之前是否在软件公司担任过程序员?
- 你以前是否参与过开源项目?哪些项目?描述你的参与情况
- 你有博客吗?有简历吗?
- 是什么让你成为 Google Summer of Code 的合适人选?你希望从中获得什么?
项目问题:
- 你选择了哪个想法?
- 详细阐述这个想法,并描述你希望在夏天完成什么。如果你有自己的想法而不是从我们的列表中选择一个,这个问题尤其重要,因为我们希望充分了解你提出的内容,以便我们可以帮助你推进这个想法。
- 请简要说明您希望完成的项目时间表。在您的工作计划中包含思考时间(“调研”)是可以的。工作内容应包括
- 调研
- 编程
- 文档编写
- 传播推广
- 您计划如何测试您的代码?您计划使用什么版本控制和构建系统?
- 如果您的项目非常成功,您是否希望在 Google Summer of Code 完成后继续为其做贡献?
提案大纲示例
一份好的提案应包含以下组成部分
- 姓名和联系方式。包括电子邮件、电话号码、即时通讯账号、Skype账号等。
- 标题。一句话概括您项目的目标。
- 概要。简短的总结,您的项目将实现什么?
- 对社区的益处。为什么 Google 和 Selenium 会为赞助这项工作而感到自豪?开源或整个社会将如何受益?
- 交付成果。我们希望知道您有一个计划,并且在夏季结束时,会有成果交付。:-) 请给出包含里程碑和截止日期的简明扼要的工作分解结构。请务必将交付成果标记为可选或必需。您可能希望首先撰写一份白皮书,或者以传统的软件工程风格规划项目。在您的工作计划中包含思考时间(“调研”)是可以的。工作内容应包括
- 调研
- 编程
- 文档编写
- 传播推广
- 描述。一份简短的项目细节列表。您的导师可以为您提供一些指导,但首先请让我们知道您的想法 :-)
- 粗略的架构
- 可能从中获得启发的并行项目的链接
- 您计划使用的版本控制和构建系统
- 您计划如何进行测试
- 使您的代码被接受的最佳实践等。
- 个人简介。您是谁?是什么让您成为这项项目的最佳人选?
- 总结您的教育背景、工作经历和开源经验。
- 列出您的技能并提供您资质的证明。说服我们您能胜任这项工作。
- 是否有已发表的论文、成功的开源项目等?请告诉我们!
- 请列出您在夏季的任何非 Summer of Code 计划,尤其是就业和课程学习。请具体说明时间安排和时间投入。