关于开源,回答牧川老师的一些疑问

因为前一篇文章《我们需要什么样的开源教育?》,我转发到了一个教育专家的群里,然后收到了牧川老师的一些提问,感觉很有认真回答的价值,所以思索一番之后,回答如下:

1. 开源(开放)的边界在哪里!它们怎么理解边界?

开源的边界,相当模糊,或者说:有多层次的边界。

除了自己默默解决问题,不再回馈到社区,以上的诸多行为,我们都会认为是开源社区的一部分(Contributor、User、Promoter)

所以,台湾著名的开源人年会,从2006年至今持续举办的,他们的大会缩写就是COSCUP(Conference for Open Source Coders、Users、Promoters) 其实,我个人认为,将Coders换成Contributors,会更加合适,因为不仅仅写代码是贡献,很多其他的工作也是贡献。 另外根据台湾COSCUP多届召集人Richard的解释,CUP三种角色,都是Contributor,所以不用单独列出来。(我觉得他的说法,更加合理)

至于边界的问题,我将其理解为:一群已经是开源人的人,他们如何看待一个新来的人,在什么情况下,会将他看成自己人? 这其中,依然会有关系上的差序格局,远近亲疏。最广义的自己人,是你至少是某一个开源社区的CUP之一,近一点的,你是我们这个社区的CUP之一。再近一些的,就会谈及礼物经济。一个人在社区里,做出的贡献越多,他的地位就会越高,我们会称之为核心贡献者。

2. 推动开源最主要的动力是什么?阻碍是什么?

推动开源,也有不同层面的动力,个人动力、企业动力和国家动力。国家动力太过于复杂了,可以先不谈。

个人动力,包括几部分。个人学习成长,解决难题的乐趣,以及因为社区贡献获得的声望。另外还有一个也许较为功利的动机,是在开源社区贡献卓著的大牛,通常也会有相当不错的职业生涯,会有大企业,高薪聘请。

企业动力,也分为几部分。首先是法律合规,因为有些开源软件的授权协议,会要求针对开源代码的修改,如果对外发布/销售,同样需要开源。其次是技术成本,因为开源软件的版本一直在向前更新,如果企业内部的修改不能反馈到社区里,就会在每次升级之后,再修改一次。再其次是战略诉求,或积极参与开源,或主动对外开源,则是为了满足影响或主导某一个技术领域的诉求。

至于阻碍,按照我的看法,本质上是“没有看清利弊”,无论个人或企业,在没有看清利弊的时候,都会做出错误的判断。认为没有必要,没有价值,为他人打工,喂养竞争对手等等。

3.开源教育会为教育(学)带来的最大启发(或冲击)是什么?

开源社区,在协作开发软件的过程中,的确形成一种独特的“教学”模式。可以简单的描述一下:

在开源社区里,新人要想要成为社区的贡献者,通常要经过一种Code Review的机制,这实际上是一种围绕代码的同行评议。所以,一个人的代码,在被评议的过程中,自然会反复修改,直到符合社区的要求为止。通常社区的要求包括:

在我看来,这样一种学习的过程,自然会使得新来者,能够边做边学,小步快跑,逐步的积累经验与成就感。一些好的开源社区,还会特别设计一些简单的入门任务,专门留给新手来做,以提升他们的成就感。

因为我不了解教育学的各种相关实践,所以也不知道,在教育和课程设计的领域,是否会有类似的“安排”,以班级协作、共建的方式,完成一个大的任务,通过这种方式,来完成教与学的过程?