社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?

IT服务圈儿 • 2 月前 • 216 次点击  

来源丨经授权转自 良许Linux(ID:liangxulinux)

作者丨良许

大家好,我是良许

很多人以为,程序员在GitHub上开源项目,是因为“情怀”。

我以前也这么想。后来做嵌入式Linux、写公众号、做课程,接触的人多了才发现:所谓无私奉献,很多时候只是外行看起来很浪漫...

真正做过项目的人都知道,一份能跑起来的代码,背后可能是20个深夜、300次编译失败、无数杯咖啡,以及一句句“怎么又崩了”。

你说把它免费放到GitHub上,图什么?

咱先来看一个最现实的答案:很多代码,闭源也根本卖不了钱。

这话有点扎心,但确实如此。

比如我以前做嵌入式Linux应用开发,写过串口通信、CAN报文解析、Socket封装、多线程消息队列这些模块。代码写得再漂亮,放在一个私有仓库里,除了公司内部那几个人,没人关心。

你想卖?卖给谁?

客户真正愿意付钱的,从来不是那几千行代码,而是“这个东西能不能在我的设备上稳定运行”“出了问题你能不能到现场解决”“交付后能不能持续维护”。

代码只是交付物的一部分。

就像一个开源的MQTT客户端库,别人当然可以免费拿去用。但他把代码放进智能门锁、车载终端或者工业网关里,网络断开怎么办?证书过期怎么办?设备内存只有64MB怎么办?客户现场的路由器配置像个谜怎么办?

这些脏活累活,才是真正收费的地方。

所以,别把开源作者想成天天拿爱发电的圣人。很多聪明人早就看透了:把基础能力开源出去,反而能换来影响力、用户、机会和商业合作。

这不叫白送。

这叫把代码变成名片。

我做自媒体也是一样。很多人问我:“良许,你为什么愿意免费写Linux文章?这不是把自己的知识都讲完了吗?”

每次听到这话,我都有点想笑...

如果一篇文章就能把我的知识掏空,那我这些年踩过的坑,也太便宜了吧?

我可以公开讲 select、epoll的区别,讲Linux进程线程,讲交叉编译,讲Makefile怎么写。但一个车载设备运行72小时后偶发卡死,如何从日志、内存、线程状态、文件描述符和CAN通信链路里一点点定位问题?

这不是看一篇文章就能学会的。

真正的能力,不是某段代码本身,而是你为什么这么设计、出了问题怎么判断、面对不同约束时如何取舍。

代码可以复制,经验复制不了。

这就是开源的第一个底层逻辑:开源的是结果,不是全部能力。

再说一个很多程序员不愿承认、但非常真实的原因。

开源,有时候是为了让别人帮你干活。

别误会,这不是骂人。开源社区最厉害的地方,就是把“一个人的项目”变成“一群人的工具”。你写了一个嵌入式设备的日志组件,自己只能在一块开发板、一种芯片、一个业务场景里测试。

可一旦开源,可能有人拿它跑在ARM平台,有人移植到RISC-V,有人在高并发场景发现死锁,有人提交一个你压根没想到的补丁。

你猜怎么着?

你的项目变强了。

这就是为什么Linux能发展成今天这个样子。Linus当年要是把代码锁在电脑里,靠自己一个人慢慢写,别说支撑服务器、云计算和嵌入式设备,可能连驱动都写不过来。

开源不是“大家一起做慈善”。

开源更像一场规模巨大的协作。

当然,理想很丰满,现实也很骨感。大部分开源项目并没有几千个Star,没有大厂工程师排队提PR,甚至你辛辛苦苦写了半年,最后只有3个Star,其中一个还是你小号点的...

这才是普通开源作者的真实处境。

我特别理解那些不愿意开源的程序员。

一个人下班后写项目,白天被需求追着跑,晚上修自己的Bug。好不容易发到GitHub,第二天有人提Issue:“不支持Windows吗?”“能不能加个GUI?”“这个功能为什么不做?”语气还像你欠他500块。

最离谱的是,有人不仅白嫖,还嫌你代码写得不够符合他的口味。

这时候谁不想把仓库一删,原地退网?

所以,开源并不意味着作者没有成本,更不意味着使用者就可以把开源作者当成免费劳动力。一个成熟的程序员,看到开源项目时应该知道:能用就先感谢,发现问题就尽量复现清楚,能修就提PR,不能修至少把问题讲明白。

别上来就一句:

“这个怎么用?”

这句话在开源社区里的杀伤力,约等于你把一个嵌入式工程师拉到设备旁边,只说一句:“它不亮了,你看看。”

谁知道是电源没接、GPIO没配、驱动没加载,还是你把板子插反了?

还有人问,为什么音乐、书籍不像代码一样大规模开源?

区别不在于程序员更高尚,而在于代码天然适合协作演进。

一段代码的价值,往往来自“能否被运行、测试、修改和组合”。开源后,十个人可以同时修十个模块,最后汇成一个更强的系统。音乐当然也能被改编,书也能被共创,但版权分配、创作署名、内容完整性、商业发行,这些问题比代码复杂得多。

更重要的是,代码很多时候不是最终消费品。

用户真正想要的,是一个能用的产品、一套可靠的服务、一次确定的交付。GitHub上的源码只是发动机,不是整辆车。

这也解释了为什么很多公司会把底层库、工具链甚至部分框架开源,却把数据、业务流程、客户资源和服务能力牢牢攥在手里。开源基础设施,是为了吸引更多人来修路;真正收费的,是路修好以后,你能不能把货安全送到目的地。

这才是商业世界的玩法。

对普通程序员来说,要不要开源自己的项目?

我的建议是:如果你只是为了“我也要搞个GitHub主页”,然后把一个TODO项目扔上去,那没多大意义。GitHub不是赛博墓地,别让仓库全是两年前创建、至今只有README.md的烂尾楼。

但如果你在工作或学习里,真的解决了一个可复用的问题,就值得整理出来。

比如把嵌入式Linux设备常用的配置管理、日志封装、串口自动重连做成小组件;比如把你排查内存泄漏的过程整理成工具和文档;比如把一个复杂协议的解析逻辑抽出来,写清楚输入、输出、边界和测试方式。

哪怕只有几十个人用,也有价值。

因为你开源的不只是代码。

你是在向行业证明:这个问题我遇到过,我解决过,而且我愿意把解决路径交出来。

我从机械转到电子,再转到嵌入式Linux,后来靠写Linux内容做自媒体、做课程、做企业咨询。回头看,真正改变我职业轨迹的,不是我把多少知识藏得严严实实,而是我愿意把一部分能力公开展示出来。

公开,才有连接。

连接,才有机会。

所以,程序员为什么愿意在GitHub开源成果?

不是因为大家都不想赚钱,也不是因为程序员天生比别人更有奉献精神。

而是因为真正聪明的人知道,藏住一段代码,可能只能守住一次收益;把它开源出去,却可能让更多人看见你、信任你、参与进来,最后形成一条别人带不走的能力护城河。

你以为他送出了代码。

其实他是在给未来的自己,发一张更大的入场券。

1、世界上最大的盗版网站,正在保存人类文明的火种

2、3台手机3个价!“大数据杀熟”新变种,网友无奈反向薅羊毛

3、一旦出现“红皇后效应”,说明公司就要凉了

4、显卡涨到买不起,老黄给老显卡来了波史诗级画质续命

5、库克清空弹夹!2nm,韬定律,最强AI电脑

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/200499