RSS Feed

Posts Tagged ‘open source’

  1. Google Summer of Code 2014

    April 24, 2014 by xudifsd

    gsoc2014

    首先非常感谢@0xFAN君之前的帮助,回答了我很多关于比赛的问题,还给我看了他以前的proposal做参考,觉得这次能进真是多亏了饭君的帮助啊!

    今年GSOC被接受的项目名单出来了,有1307个学生参加,其中就有,想想还有点小激动呢。

    要知道我可是三年前就想进这个比赛了啊!

    当年大二刚学会C,但是已经用了两年多的纯linux,所以对开源充满好奇,也想参加个开源项目试试。当时看一个人的博客(现在已经没了)知道了GSOC,就想进去试试。现在想想那时连系统调用是什么、怎么用C打开一个文件都还不知道,就知道vim、linux是开源项目,所以只有看下以前参加GSOC的项目,觉得git这个项目还不错,而且是用C写的,linux都在用它,觉得应该挺牛X,而且社区成熟,文档挺多,于是就准备报它们的项目。了解了它们列出的idea,混了下邮件列表,准备做让git支持大文件的项目,mentor是Jeff King,搜他时发现他刚加入github,于是也跟着注册了github。当时给Jeff发邮件聊项目,结果回我邮件说“我们更喜欢公开讨论问题”。由于对自己英语没这么大信心,发个邮件还要拼写、语法检查半天才敢发出去,而且一想到自己发的邮件会被全球这么多人看到,还会被Linus看到就觉得紧张得不行了,所以并没有交流很多,而且当时技术实在是不行,草草地看了下git源码,好多库函数都不知道,perror都不知道是什么,也去投了个proposal,结果早早地就被reject了。

    现在想来真是初生牛犊不怕虎,不过这次经历对我改变很大——注册了github,习惯于用git,严格要求自己的code style,知道开源项目怎么组织。之后还花了很多时间去认真地读git源码,还写了几篇git源码阅读的文章在这个博客上。所以之后用git简直熟到不行,很多同学有git问题都找我。

    之后三年由于准备考研、去北京实习,完全没时间参加,所以这比赛几乎成了我的梦想。今年终于有空出来的时间了,所以春节结束后马上就开始准备了。发现自己对于C不是那么感冒了,而学clojure已经半年了,所以就准备报个clojure的项目,看他们idea页的Dynalint觉得挺简单的,于是就联系mentor,看了下code base,觉得真是太简单了,而且工作貌似也挺无聊,只是给这个工具加一些数据条目而已。不过这个mentor还有Typed Clojure项目,是给clojure加一个类型系统的,由于在学校做的项目是符号执行,对于静态分析了解了许多,所以最后选了Typed Clojure这个项目,其实现在回想起来还是觉得自己挺厉害的,两个月时间从完全不知道类型系统到现在提交了5个补丁。这期间也花了很多时间在这个项目上,所以被接受也是预料之中啦(笑)。

    这期间最大的发现就是开源项目的组织形式都有很大的差别,clojure的管理形式和linux、git那种完全靠邮件列表的形式完全不同,clojure全是通过JIRA这个问题管理系统来管理和讨论源码,而且所有补丁是通过patch文件作为附件来提交,不允许通过github的pull request接受外来补丁,就是为了避免版权问题——因为所有通过JIRA发送补丁的人都必须签CA才行。不过我觉得这样就完全阻止了那些不想长期开发,只是想提交个补丁的人。你可能说这样可以提高代码质量,但是clojure的java部分是我见过的最丑的开源代码(只是指code style,不是指设计)。clojure的CA政策真是怎么吐槽都不为过,还要求邮寄,真是很打击积极性呢。当时为了签CA还寄邮件寄到Rich Hickey那,过了一个月还没收到,以为寄丢了,赶紧让在美国的师兄重寄一份,结果过了几天我那封6块钱寄出的平邮有惊无险地寄到了,现在想想还真是神奇。

    有了CA后就时不时地发patch、问代码来跟mentor刷存在感了,到最后宣布结果已经给项目贡献了5个patch了,其中一个还是比较大的,前前后后改了4、5次,rebase后总共7次提交。

    所以我也就没什么悬念地进了,不过进了后,国内同样参加GSOC的学生建了个QQ群,听他们讨论说有个人像我这样花了很多时间,也提交了很多patch,结果还是被拒,实在有点可怜。

    discuss

    5月19就要正式开始写代码了,根据vim的说法,学生是被期望每周工作40小时的,我猜这也是为什么每年印度学生越来越多,都超过美国本土学生的原因吧,因为奖金才5500刀,美国随便去哪实习也应该比这高吧,还期望工作40小时,倒是如果转成人民币之类的倒还值些钱。不过今年算是我最后有时间参加这个比赛,也算是完成了自己的一个梦想,走上了码农的一个巅峰啊。

    如何参加

    其实这篇文章也是想宣传一下GSOC,因为我之前也是通过别人的博客知道这个比赛的,只是那人的博客已经不存在了,所以也相当于是传承了(笑),而且听群里的人说有几个也是看pluskid博客才知道这比赛的。而更多的同学都不知道这个比赛,因为不知道而没能参加这样的比赛还是挺可惜的。

    其实把GSOC叫比赛并不好,最好是叫项目,因为它并不存在要熬几天夜去写代码马上实现某种功能,相反它有三个月时间让你完整地接触一个开源项目的方方面面——交流、修bug、写文档、写测试。所以这可是真正了解开源项目的好机会。还有5500刀的奖金,换成人民币还是挺不错的,而且参加这个项目会专门有开源组织的mentor来指导,实习时可没这种待遇啊,况且完成后还能跟别人吹吹牛B,何乐而不为呢?

    不过这项目有个限制就是必须是在读学生,不过不管是本科、硕士或是博士都行。如果你不是学生而是开源项目的贡献者也可以志愿当项目mentor,当然mentor就只有500刀的奖金了。我今年的mentor就是前两年以学生身份参加GSOC,今年以mentor身份参加。

    之后如果有人想参加GSOC并且有疑问的欢迎联系xudifsd (AT) gmail (DOT) com,我会尽力帮你,当然下一次项目得一年后了,而且每年Google都会说不确定第二年会不会继续举办。

    总的来说,Google Summer of Code还是很值得参加的,不仅对学生的工程能力有很多提升而且确实能吸引很多学生进入开源项目,现在很多项目都是靠GSOC来拉新人了,而且很多学生也挺靠谱,不仅当时贡献了代码,也成了项目的长期贡献者。

    希望能有越来越多的中国学生参加GSOC。


  2. 为什么你的公司应该执行开放的开源政策(翻译)

    July 26, 2013 by xudifsd

    很久以前看《维基经济学》里说到IBM准备实行开源时做了研究:投资linux项目所花资金比IBM从linux项目中获得的收益少多了,所以IBM决定投资linux,并实行开放的开源政策。但是总觉得开源没那么简单。

    现在在公司做cascading的项目,又由于对clojure感兴趣,所以搜了下cascalog。于是机缘巧合地搜到了cascalog创始人的博客,才发现他也是stormElephantDB的创始人,并且发现他的博客也写得非常好。而且发现了这篇文章,由于国内开源风气实在不行,所以把这篇文章翻译了下。希望大家能感受下。。。翻译得很烂,讲究看吧,如果英语好直接去看原版。

    以下文章为翻译,版权仍然归Nathan Marz所有。


     

    为什么你的公司应该执行开放的开源政策

    如果公司想要招到真正的星级程序员,那么执行开放的开源政策是很重要的。换句话说:优秀的程序员会尽量避免加入不开放的公司,因为参与开源项目是程序员提升自己市场价值的最好办法之一。

    评估编程能力的传统方法并不有效

    程序员市场,特别是顶级程序员市场是出了名的无效率。这种无效率性体现在缺乏好的评估方法。评估程序员的标准技术——简历,现场编程,离场编程项目——至多只能大概了解程序员的能力,但是都无法显示出一个人的远见力。当然,有些指标,如加入过成功的公司或有很显眼的称号,但是这些仍不足以显示一个人的编程能力。

    如果你是程序员,这种评估能力的无效率性会使得潜在雇主对你的估值低于你的真正价值。顶级程序员在市场上就会无法从低一级程序员中区别开,并且价值会被低估很多。顶级程序员需要更好的机制去表现自己的价值以便被更公平地估值。

    开源使得市场对程序员估值更有效

    开源是个均衡器。一个开源项目展示了程序员如何解决一个暂时没有可行解决方案的真实问题。开源项目给予程序员在面试中展示自己从设计到实现到测试的更广阔的视野。如果你是个伟大的程序员,这意味着可以显著减少你在市场上的估值与真实价值的鸿沟。

    一个程序员越被低估,那么他就应该越会想通过加入开源项目来使其估值得到提升。最被低估的是那些高端的被称为“摇滚明星”和“忍者”的程序员,所以这些程序员能从开源中得到更多。

    一个不开放的政策会阻碍星级程序员提升自己的市场价值

    既然最好的程序员有很强的激励去投资开源,那么他们就应该避免加入到不开放的公司,而倾向于加入开放的公司。这就意味着那些不开放的公司会不自觉地阻碍自己招到最优秀的程序员。

    公司会出于多方面的原因不喜欢开源自己的内部项目。他们可能会觉得自己将代码拱手让给潜在的竞争者,他们可能会不喜欢让雇员们通过提升自己市场价值让雇员们更贵,他们可能觉得开源让团队在建设真正商业产品时分心。这些都是公司在做出执行开放政策时所需要做的权衡,如果想招到真正的“摇滚明星”就必须做出这些权衡。

    公司也会从开源项目中得到其他好处。开源帮助公司在工程师社区中做了很好的广告。并且开源给这些公司在用户组和会议打自己广告的机会,让公司可以说出自己的品牌。最后,公司也可以通过开源项目得到外界的“免费贡献”。

    这个见解还不是所有人都知道

    很多程序员现在还没意识到自己投资开源的价值,并且很多优秀的程序员仍然在为并不开放的公司工作。但是随着越来越多的程序员意识到开源能提升自己的价值,越来越多的公司就会把实行开放的政策做为招聘时的优势。比如,我的公司BackType就有十分开放的开源政策,并且我们正在招人。(译注:BackType已经被twitter收购,Nathan Marz也自己去创业了,不用期望加入BackType能见到他,见他的另外一篇博文,至于他去干什么了看,只是里面说的内容和文章的发布时间有点让人觉得不可信【笑】。)

    当然,除了开放的政策,想要招到顶级程序员还要做更多。只是如果没有开放的政策会给招聘那些顶级程序员设置障碍而已。