在不太久远的过去——大概也就是十多年前,互联网精神代表着自由、平等、共享——人人为我,我为人人。维基百科、CC协议、FTP服务器、P2P(不是那个臭名昭著的理财模式),包括开源软件,都是那个时代的产物。
但在今天的移动互联网大潮中,主流思维已变成了商业化、消费主义、版权、信息壁垒。无怪乎新时代的互联网子民,已经不理解为什么有人会无私地奉献。“一定从中得到了什么利益”,他们揣测道。
开源社区的贡献者,都是有国际主义精神的一群人,一定程度上是世界公民。
他们的知识和技能可以让他们保持局部领先,但是为了拓展人类的知识边界,为了人类整体的福利,他们将工具或者知识开源出来,别人就可以在他们的基础上工作,人类进步的速度就加快了。
他们放弃了自己的局部领先优势,选择人类整体的福利,不可谓不伟大。
知乎上的很多答主也是这样的表率,他们分享的知识与见解直接或者见解的改变很多人,甚至改变人的一生。与他们贡献相比,收获的一点名利就显得太微不足道。
他们的例子有很多,我心中立马可能想起好几位,但为了避免造成棒杀或者抱团的嫌疑,就不列举他们的ID了。
总之,向所有的共源知识贡献者致敬,向国际主义者致敬。
题主问的非常好,尤其是从功利的角度来看为什么要开源。我把这个问题分成三个回答你:
从无私的角度看,为什么要开源?
从自私的角度看,个人为什么要开源?
从自私的角度看,公司为什么要开源?
从无私的角度看,为什么要开源?
1. 建立社区:可以这么说,如果没有开源社区,苹果,谷歌,Facebook都不会是现在这样。如果没有Linux,现在互联网的格局简直无法想象。为了让更多人能够使用优秀的产品,需要有人来愿意把自己的产品免费给他人使用。很多开源社区的贡献者都是为了建立,维持这样一个互助互利的社区而不断努力的。
2. 帮助他人:开源一个很美妙的地方就是,别人不用花时间解决一样的问题。当你看到你的一个大问题已经有人做了开源项目的时候,你一定感觉如释重负。同样,有人感谢你的开源项目帮他们解决了一个大问题,真的是种很美妙的成就感。
3. 结识朋友:开源社区中经常能遇到很多志同道合的好朋友。你帮我改代码,我帮你加功能,说不定两个人就认识成了好朋友。我和我现在的一位导师和几位朋友就是在贡献开源项目的时候认识的。
好,下面来说说不明显的:
从自私的角度看,个人为什么要开源?
1. 提升代码质量:开源是提升个人代码质量的好方法。这个有两个方面:首先,如果你知道你的代码要给别人看,你会不自觉的把代码写的更干净一点,多加点说明。其次,开源之后别人会建议怎么改(如果你的项目有一定影响力),给你建议的人多了,你也大概就有概念怎么把代码写的更好了。
2. 展示个人代码:如果你在找工作,这个很可能会是你的主要动机。公司实际上很好奇你写的代码质量如何,但是光从1个小时的面试实在看不出太多。所以很多公司会非常喜欢看你的开源项目,来评估一下你的代码质量如何。同样,如果你面试的时候告诉公司,“我有个开源项目,你们可以去看看”,这将是个不错的加分项。
3. 建立个人品牌:如果你足够厉害,把一个优质项目开源是个迅速提升影响力的好方法。很多在大公司工作过的顶级工程师,我们都是通过他们的开源项目认识的。git的发明人,Linus Torvalds,就是一个好例子。一个工程师如果在工作之外想要树立个人品牌的话,写一个高质量的开源项目是个相当好的选择。
4. 备份个人项目:其实很多人把项目放到Github的时候根本没想这么多。。。他们只是想把家庭作业,代码练习啥的备份到网上去而已。。。其实Github当中绝大部分项目都是这种实际没啥用的代码备份(只是Github没让你看到)。。
从自私的角度看,公司为什么要开源?
1. 树立品牌形象:公司与个人开源的动机不同。公司开源很多情况下是为了提升外界对公司的形象认知。任何一个大科技公司,肯定用了多多少少用了开源项目(Linux,至少吧?)。如果连一个开源项目都没有,这很容易给人造成,“这公司总是索取,却不回馈给开源社区”的形象(尤其在美国)。
2. 发掘潜在员工:比如,我读了谷歌的Android的代码,发现里面有个大安全漏洞,然后我提交一个修改把漏洞给补了。你说谷歌想不想拉起我去工作?很多公司一个很好的招聘渠道是开源项目的贡献者。如果能在公司开源项目做出有意义贡献的话,这个对于公司来说是比面试好很多的能力证明。
3. 实现额外功能:这点实际上很有意思,有的公司/项目实际上有很多想做的小功能,但是没时间也没人力去单独做。这个时候开源的力量就体现出来了,项目开源之后很多时候能吸引到开源贡献者来做一些自己感兴趣,项目想要,但项目没时间做的feature。我之前在http://Socket.io做的时候写的就是这样的一个小feature。
4. 扩大影响范围:公司开源项目的质量,很多时候能反映公司的影响力。所以硅谷的很多大公司,都有一些厉害的开源项目。一方面是回馈社区,一方面是展示公司的影响力和代码质量,吸引更多人才。同样,如果一个公司很希望自己的一个产品有更大影响力的话,开源是个好方法。苹果的Swift就是个好例子。Swift开源之后,能够用在不少iOS之外的领域。说不定之后我们还能看到用Swift写的网站架构。
5. 用作战略武器:开源项目还可以作为公司的战略武器。最好的例子就是谷歌的Android。通过开源和病毒式的传播一下追上iOS。这里面有很多弊端(比如碎片化严重),不过谷歌这么一招给了开发者十分大的力量,Android一下成为一个和iOS比肩的选项。
如果你好奇全职的开源工程师如何赚钱的话,这是我之前的答案:
世界顶级开源软件工程师,他们如何谋利? - 编程最后,也希望题主能继续为开源社区出一分力 :)
2021年08月24日,再更新一波。
今天闲着没事逛了下论坛,突然发现Github推出了一款AI编程软件Copilot,我很好奇于是搜了下,发现实现原理应该是通过用户输入一段要实现的功能,然后通过算法去寻找具备相同功能的代码,然后复制粘贴。
哈哈,这功能太有意思了,这意味着开源项目越多,开源功能数量越完善,那么使用这款软件就越便捷,而大部分软件开发,抛开UI定制,其功能大多相同,无非展示与编辑。
以前,要做一款非常简单的App也需要程序员。
现在,如果你要做一款简单应用或游戏就可以使用unity+插件的方式进行游戏开发,如果功能超级简单,你甚至不需要编写代码,只要你熟悉unity软件的操作即可。
未来,我不知道,或许是大部分功能都可以通过AI人类语言分析匹配到对应模块,然后将其组装起来就行,然后少部分需要定制的模块自行开发。
嗯,就如同乐高积木一般,企业的维护成本大大降低,程序员的工作量大大减少,这是不是支持开源的人想要的未来?
也许这就是未来大部分的软件开发模式:
// 基于upd实现IM系统 ...AI代码生成 // udp传输加密 ...AI代码生成 // 本地存储临时文件 ...AI代码生成 // 本地存储配置文件 ...AI代码生成 // 用户登录UI ...AI代码生成 // 好友列表UI ...AI代码生成 // 聊天界面UI ...AI代码生成 以上主要功能由产品经理老王实现,最后一些需要定制的模块需程序员小张开发。
对于说被淘汰是因为自己学习效率低下导致被行业抛弃的,我想说的是,我同意你的看法,行业的更新换代这是必然的规律。其他行业也有,但周期按十年算,这段时间大家都有足够的时间去应对,但IT这个行业,这么说吧如果脱节两年,除非你已经在某个行业里建立了自己的壁垒,要不你很难找到工作,而这最直接的原因就是开源社区的逐渐成熟,让更多更好的人才有了展现自己的平台,相对应的就是跟不上节奏或不愿意主动降低待遇的从业者失去了他的工作。
我们来看看这个行业经历了什么,大伙最早是卖技术,然后是卖项目,之后到了送技术,再然后就是整个项目Github免费下,到了现在居然还催生出来了淘宝Github点Star的业务,是什么让大家变得这么贱,赔本赚吆喝?
工业革命不可怕,羊吃人不可怕,失业大浪潮不可怕,可怕的是明明结果就摆在眼前,为什么还有这么多人义无反顾的成为祭品。
至于直接攻击我本人的,我报一下我的工作经验。
5年Android/IOs开发经验,带过16人的团队,带过上线的项目有4个(不算普通打代码、技术支持、架构设计等,仅仅算我带队开发时的项目),其中还在运营的项目有2个。
在ReactNative出来之前你们还在使用PhoneGap做开发的时候,我就参与过Lua脚本的跨平台开发框架的架构搭建这里包括脚本引擎的移植以及性能调优还有组件化模块集成,目前这套架构在某行业外包工程中一直在使用。
对于基于ffmpeg的客户端流媒体优化这块我自己有一套成熟的解决方案,其实ffmpeg内部的东西也被我改得七七八八了,某流媒体公司倒闭前还在用。
前公司自己的推送系是我搭建的,从Server端到Android/IOs的SDK,离职前上线,百万级别消息推送没什么问题,在没有联系手机开发商拿权限的情况下,客户端单App离线到达率58%左右,在线到达率98%,耗电量也与目前主流的第三方相差无几。
我不知道说我技术平庸的人是谁给你的勇气去贬低一个你不曾了解的人?并且目前我已经赚够了自己的原始积累,开始享受平凡的28岁退休生活(积累虽然不多,但按照我的道系生活方式,花到死还是没什么大问题的),对于开源会导致的后果已经与我无关了(但愿无人零售发展别这么快,不然我还得更新设备)。
再说一次支持不同角度的讨论,但不会跟任何一个上升到人身攻击的人浪费喉舌。
以下是原答案:
因为资本恨透了旧规则,设计一个螺丝都需要看看有没有人申请过专利,每次做一件别人做过的事情也需要付出别人付出过的成本,所以他们提出了开源,但你会发现,提出开源的公司,他们的核心代码你不会再任何开源社区上找到。
以前我也是一个天真的小男孩,幻想着开源有多么好,我能得到社区无偿的帮助,我能通过社区秀一秀我的代码。我能成为一个优秀的程序员,从此愉快的与心爱的代码一直走下去。自从有了开源社区,我需要的功能开源社区上都有,我只需要经过少许的修改之后将他们组装在一起即可,我省了很多时间去写一些社区里已经存在的功能,这简直是上帝赐予程序员的福音啊!
渐渐地我发现了问题,随着时间的推移开源工具越来越完善,我的工期越来越短,我写“有趣”代码的时间越来越少,因为隔壁的小张他也用开源工具,如果我不打算使用那些开源工具,那么我的工期将会是他的两倍,季度考核我会成为垫底的人,所以我不得不放弃自己的爱好而去使用开源社区“成熟”的工具,这时我对代码越来越烦躁,我写代码的愉快感越来越低,我感觉自己就是一个搬运代码的工具。
时间慢慢的过去,突然有一天,开源社区的F公司发布了一款名为R的跨平台的开发框架,社区沸腾了,大家跃跃欲试,我也不例外。当我再把公司的一个比较简单的项目移植到R框架内后我震惊了,R框架减少了一半的开发人员,减少了很多的兼容性问题,大大的增加了开发的效率。当我把这一框架测试的结果在技术骨干会上发表后,技术总监也震惊了,之后我们围绕着这个框架展开了一场又一场的技术讨论。
若干月后,R框架发布了第一次release版本,于此同时我们公司也决定让我带领团队将公司主营项目移植到R框架上,经过两个月的艰苦鏖战后,移植App正式发布了,我们看到了程序安然无恙的在线上运行都轻松的吐了一口气,终于解放了,再见了版本适配,再见了UI适配,我突然觉得今后的工作会变得无比的轻松。
到了年中,部门突然宣布将要做一次部门内部人员优化,原因是公司目前无力扩张业务,且R框架降低了开发难度,无需那么多技术员工对项目进行维护了。经过一月的调整,移动部门从之前的20人团队缩减到8人,除了我和老李负责做一些底层设计交互,其余的同事都使用R框架进行业务开发。
经过这一连串的事件后,我发现,我的工作时间没有减少,但公司省下了一笔钱,12位同事因为R框架丢了工作。无产阶级失去了他的面包,资本家拥有了更多的资本去投资,而我所涨的薪水并不是这是12名同事的总和。剩下的人除了我和老李,其他的同事连在正式项目中接触native的代码都成了奢望。
这两年G公司推出了他的F框架,性能更好,代码更简洁,天然支持热更,今年H公司也推出了他的H框架,这套框架更牛(虽然只是PPT)。MVC也渐渐地被MVVM、MVP取代,为了降低开发成本,App内大量地方使用到了H5,这部分人多数是刚刚毕业的,并且有一部分人从入职开始就已注定熬不过试用期。
行业内渐渐地从技术主导慢慢的转向成为业务主导,现在大家更关心的是用户数量、用户黏度,代码再烂不重要,一期上线拉融资,二期招大牛重构,三期大扩展,四期大裁员,铁打的营盘流水的兵。
开源带动了生产力,而这并没有为从业者带来应有的物质提升,相反生产力的提升却加速了从业者的淘汰速度,我估计大多数支持开源的从业者也是如下图一般想的吧。。。
开源是一种商业模式。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有