明确软件的具体用途、功能、以及迭代的各种边界
如果不将所需的软件进行集合化,那么,像 github 中的软件那样,自己去搜索、筛选、测试等等,这是一件很耗费时间和精力的事情。
编写和筛选各种所需的库,或其他
优先筛选已有的、现成的开源库,以及符合要求的 license;
没有现成的,则需要自己编写。
需要统一风格:各种所需软件的集合,风格各异,千奇百怪
优先通过接口适配的方式,来使用现成的开源软件。
因为软件的维护与迭代,是一件很耗费时间和精力的事情,让原作者去维护,总好过自己来维护;除非原软件有 bug 需要修改。
千奇百怪的软件风格,会造成学习和使用的成本很高,因此,需要统一软件的风格,和使用思维。
将各种软件集合化的价值和意义,何在?
节约了时间成本。
使得软件产生了新一轮的迭代。
就像厨师一样,每一样的食材,都不是厨师自己的创造发明。
但是,有人只能将食材煮熟,一般而言,味道比生吃的好;
有人集合能力强,成了五星级酒店的厨师;有人集合能力差,只能在小饭馆做事。
并且,在集合的过程中,总是有着集合者的能力和其他因素在里面,有时是不可复制的;否则的化,那么,所有的食材,只要按照同样的配方,大家都可以轻易地成为五星级酒店的厨师了。
在大多数的场景里,集合,并不是简单地组合。它们同样包含了集合者的创造能力在里面。
否则的话,同样的山寨机,大家就没有什么差别与不同的了。
开源软件的来源
现存程序员,或机构,出于各种各样的目的,开放的源代码。
即将离去、或已经离去的程序员,通过开放代码的形式,以另一种方式存活于人间。
Qt 的改造
在 Qt 的社区版中,有些第三方库,是采用了 GPL license;意味着要商用这些代码,就必须将所有被传染到的代码,全部都要开源。
那么,换一种思路,凡是 Qt 采用了 GPL的库;如果无法规避,那么,使用者全部将它们更换为其他适合商用的第三方库,或者自己通过重新编写取代那些 GPL的库,这样也是可以闭源商用的吧?
然而,如此一来,就意味着需要增加时间和精力的投入,去更换、适配和测试等等。
开源,免费,值得尊重!但是,对于开源,却不免费,这种行为,其实,并没有什么好指责的
假如人类能够不用吃饭、穿衣、住房、旅游,就能够很好地生存、与不断地进步,如此的话,那么,收费才是可耻的。
并不是所有的原始开源者,都要求使用者要开放其源代码,这就是为什么会有那么多不同种类的 lincense。
既然原始开源者都没有要求使用者必须开源,那么,只要符合 license链的规定,此时的闭源,是合法的。
综上所述,开源的,商用可以,但必须也是开源的。商用闭源,大多都是收费的。
开源与免费,并不能划等号。具体要看用途。商用大多都采用闭源,而闭源一般都是收费的。
一般而言,商用需要采用闭源,否则,遍地都是竞争对手,怎么赚钱?
然而,世事无绝对:st 开源,也能免费商用,并且,st 还能赚到大量的钞票。原因无它,因为其盈利的部分,不是软件,而是硬件 MCU。MCU技术才是 st赚钱的关键,这是闭源的,赚钱的关键部分,并不会公开。
责难者,与其去指责那些开源收费的行为。
责难者,还不如首先设法:让那些被责难者可以免去对衣食住行依赖的麻烦,之后,再去指责那些开源收费的行为。
开源和收费,是促进软件事业健康与进步的两个方面。
全面开源,或全面收费,都是不现实的,都不利于软件业,甚至可以说是整个科技事业的不断发展与进步。
GPL 的商业使用
GPL 对于有些商业模式,是有意义的。
比如 Qt、MiniGUI 之类的软件。
MiniGUI 采用了 GPL license,意味着要商业使用这些原代码,就同时必须开源;而开源又不利于商业化,怎么办?这就需要购买 MiniGUI 的商用版本了,
特别注意:以上论点,可能是错误的。