趁着10月24日「程序员节」还没变成「情人购物节」,聊聊开源精神

二的十次方为1024,10月24日被一些人定为程序员节,不幸的是,今天并没有给程序员放假,幸运的是,截止2022年,10月24日还没有被扭曲为「情人节」或「购物节」。

程序员是一个中性的称呼,好听一些是「工程师」,难听一些是「码农」。但我还是喜欢「开发者(Developer)」这个称谓。连Google翻译都会给Developer 这个单词加个小标识

Developer

已审核

「开发者」这个词并不常用,我是学编程看文档时,才见到「开发者」这个词,脑中第一印象是「开荒者」,深入无人之境,荒漠变绿洲。后面又读了Linux系统作者Linus的「Just for fun(只是为了好玩)」,自由软件之父理查德的「Free as in freedom(若为自由故)」电子书开源地址 https://github.com/lifanxi/free-as-in-freedom-zh-cn/tree/master ,以及 互联网之子亚伦·斯沃茨 (Aaron Swartz) 的一些第三方传记,才感受到原来「开发者」是如此武德充沛! 可以凭借强力的技术与号召力与大公司掰手腕,可谓是以一当百的无双猛男。

linus-eff-you

Richard_Matthew_Stallman

Aaron

在软件领域,开源精神一般与开源软件一同出现,开放源代码不止意味着可以访问代码。开源软件的分发需要服从以下准则(以下选自维基百科):

  1. 自由再分发 许可证不应该限制其他方出售或者分发该软件,当该软件作为包含多个不同源码程序的集成软件的一部分。许可证不应该要求专利费或其他销售费用。
  2. 源代码 程序必须包含源代码,需要有完整的源代码和可编译的形式。程序的某一部分如果不是来自这份源代码,那必须有一个不需要费时费财的公共方式获得源代码或者从网络上下载过来。源代码需要以易修改的形式呈现。不能故意模糊源代码,也不能只发布预处理器或编译器的输出文件。
  3. 衍生作业 许可证必须允许修改和衍生作业,需要像原来的许可证那样发布。
  4. 作者源代码的完整性 仅当许可证允许使用源代码分发“补丁文件”以便在构建时修改程序时,许可证才可以限制源代码以修改的形式分发。 许可证必须明确允许分发由修改后的源代码构建的软件。许可证可能要求派生作品带有与原始软件不同的名称或版本号。
  5. 不歧视个人或团体 许可证不能歧视任何个人或团体。
  6. 不歧视领域 许可证不能限制任何人将程序用在某个特定的领域。例如,不能要求人们不可以把程序用在商业领域或者基因研究。
  7. 许可证的分发 该程序所附带的权利必须适用于该程序再分配的所有人,而无需由分配方执行额外的许可。
  8. 许可证不能对一个产品特化 附加到程序的权利不得取决于程序是特定软件分发的一部分。如果程序是从该分发中提取并在程序许可的条款中使用或分发的,则程序重新分发的所有各方应具有与原始软件分发相同的权限。
  9. 许可证不能限制其他软件 许可证不得对与许可软件一起分发的其他软件施加限制。例如,许可证不得坚持在同一介质上分发的所有其他程序必须是开源软件。
  10. 许可证必须是技术中立的 许可证的提供不得基于任何单独的技术或界面风格。

比开源软件更开放的是自由软件,自由软件,代码应该自由自在地让人取用。软件不应该拿来做为相互倾轧、剥削的工具,自由软件可谓是理想主义开发者的诗和远方。

我认为,一个普通的开发者可以写两类代码,一类是用来赚钱养活自己的代码,用代码换money;一类是自由的代码,代码开源且允许别人更改。决定一个开发者职业生涯广度与深度的,往往是那类自由的代码,因为自由的代码既可以用于社交,又可以帮助开发者开发成长,甚至可以影响更多的开发者,让整个开源生态变得更好。

开发软件会遇到各种各样的报错,开发者们也很乐于分享各类报错的解决方案,这些解决方案可能只需要几句话,也可能是一篇图文详尽的博客。这其实也是一种开源精神,将自己宝贵的经验分享给他人,让后人少走弯路,给永远比拿快乐。但抄袭的行为无法获得别人的尊重,重复的内容,无法创造价值,只会浪费互联网带宽,以及求问者宝贵的时间。

截止2022年,我已经在Github耗费了上千小时的时间,收获了很多star, 也从开源项目中获得大量的编程知识,这是一个相当好的状态,不太满意的是,写「自由代码」的时间越来越少,深圳这破地方真是太卷了,不愧是特色社会主义先行示范区。

最近在写一个开源RSS桌面端提醒程序,订阅的每个RSS更新都可以像好友消息一样,进行消息提醒,软件用女神异闻录5的UI配色,今年应该会发alpha版,程序当然也是开源的~

GaRSS

图标

本文永久更新地址:

https://fangyuanxiaozhan.com/p/2022-10-24-18-10-07-1024/