John | 曲

Reflection in Transition

贝贝60秒:一本书看懂三个词

曲政 / 2019-06-19


今天是贝贝报告给你的第 111 天
2019-06-19 星期三

这个题目太短,或许容易误导人,以为读了一本书,只懂三个词。其实我想说的是,通过看清一本书的源流和演化,来理解开源创作的三类行为,从而指导自己的判断取舍。

Github 是开源软件平台,协作中有三个常见的动词:复刻(fork),分支(branch)和融合(merge)。我就用两年前读的 Think Python 为例,解释一下这三个词的含义。

首先是 Allan Downey 为了解决自己教学上的困难,创作了 How to Think Like a Computer Scientist (with Java),然后发布在网上,声明了 GNU 协议。也就是说任何人都可以采用、分发和修改这本书,只要保留着贡献者信息。

不久,一个高中老师 Jeffrey Elkner 想用 Python 写开源教程,经自由软件之父 Richard Stallman 介绍,得知 Allan Downey 的成果,用了几年时间,请学生评判,找专业人士合作和扩展,将这本书改成了 How to Think Like a Computer Scientist: Learning with Python 2nd Edition。这相当于复刻之后开了一个分支。Elkner 老师另写了几本书,发起成立了 Open books Project。

后来 Luther 学院的 Brad Miller 和 David Ranum 以此为基础,制作了 How to Think Like a Computer Scientist: Interactive Edition。并将这种形式公开为一个计算机技术的发布平台。Miller 继续增删,改名为 Foundations of Python Programming,强调实操项目,将分支独立出来,形成自己的主干。

另一处,南非 Rhodes 大学的 Peter Wentworth 老师将 Elkner 的 Python 2 版升级为 Python 3 版本,根据教学经验,作了很多调整,形成了 Rhodes 本地化的版本,称为 How to Think Like a Computer Scientist: Learning with Python 3 Rhodes Local Edition

回到主线。Downey 老师接到 Jeffery 发来的 How to Think Like a Computer Scientist (with Python),通过阅读自己的书,学习了 Python,并在新学校新班级里采用 Python 作为教学语言。打磨几轮之后,将融合了 Python 版的内容更名为 Think Python 发布。同时,Downey 老师自己的出版社也有其它语言的更新版本:Think Perl 和 Think Java。随后的几年,Downey 老师推出了 Think Stats、Think Bayes、Think DSP、Think Complexity、 Structure、Modeling and Simulation in Python、和 Think OS 这样 七本 THINK 系列的书。虽然有众多跟随者开了不少分支,Downey 老师持续创作内容,算是把 THINK 这一符号与自己的名字牢牢地联系在了一起。

知道这些事情有什么用?为了指导行动,解答了我的三个疑惑。