自由软件开发的模块化理论解释与启示
为了表述的需要,我们对自由软件的模块化开发过程做如下的假设:①由于像Linux这样的自由软件开发过程中,元系统(也就是内核)已经存在。但是只有元系统的软件却没有任何的价值,就像有了操作系统而没有应用程序一样,为了方便起见,在分析过程中我们假设元系统的价值和成本均为0;②整个系统由两部分组成:1个元系统(即内核)和n个模块,在整个源代码的开发过程中有 n个开发者(其中有j个开发者参与了系统的开发,j≤n);③系统的价值和成本在所有的模块中平均分配,即每个模块的价值为其成本为也就是说每开发一个模块,系统增加的价值为增加的成本为④在此过程中,任何一个开发者开发的模块都会与其他人共享。
对于某一个软件开发者i来说,如果选择参与自由软件的开发,其净收益为
(1)
如果选择不参与自由软件的开发,其净收益为
(2)
因为v>c,显然有Ri1>Ri2。即在基于模块化的自由软件开发过程中,一个理性的开发者会选择参与自由软件的开发。这样就较好地解决了“搭便车”的问题。
出于问题的简化,我们只考虑在自由软件的开发过程中只有2个开发者、2个模块的情形。对于每个开发者而言,可以选择参与开发或者不开发模块。如果某一个开发选择参与开发模块,其同样也可以选择开发模块A或者开发模块B。基于以上的假设,该博弈矩阵的表述如图2。
在该博弈中,由于只有2个开发者、2个模块,所有任何一个模块的价值为0.5ν,参与开发任何一个模块的成本为0.5c。两个开发者参与开发相同的模块,其得到的收益均为0.5(ν-C),如果两个开发者选择开发不同的模块,其得到的收益均为ν-0.5c。如果其中一个选择了搭便车,其得到的收益均为0.5ν(因为,此时整个系统的价值只有0.5ν)。
如图2所示,该博弈也同样存在两个纯策略下的纳什均衡:两个开发者同时都会参与自由软件的开发,但是他们会开发不同的模块。也就是说,如果一个开发者选择开发模块A,另一个开发者则会选择开发模块B。由此可见,基于模块化的自由软件开发中,在追求效率的同时也体现了公平。这是非模块化的软件开发所不能达到的。
通过对模块化与非模块化自由软件开发过程对开发者与搭便车者收益的比较(如图3),可以得到:①对于“搭便车”者而言,在模块化结构的自由软件开发中收益明显减少。从ν减少到0.5v②对开发者而言,在模块化结构的自由软件开发中收益明显增加。从ν-c增加到
ν-0.5c。在模块化结构的自由软件开发过程中,参与开发者的收益要明显高于“搭便车”者的收益(由于v>c,故有v-0.5c>0.5v),而在非模块化结构的自由软件开发过程中参与开发者的收益要明显低于“搭便车”者的收益 (ν-0.5c
三、CNU/Linux案例分析与应用
《自由软件开发的模块化理论解释与启示(第3页)》