5W1H聊开源之Why——为什么要参与开源?
中国开源的发展速度发展加快,个人和组织对于为开源作贡献有着前所未有的激情。据《2020年IT行业项目管理调查报告》,约四成受访者以自己开发开源项目、为他人提交项目代码、作为成员开发维护项目、捐助开源项目等不同形式参与到开源项目中;在《2021中国开源发展蓝皮书》中,参与过开源项目的比例为32%,且呈增长趋势,我国开源生态正迅速形成。
创建和维护那些被广泛使用的开源项目每年可能需要耗费数千小时,为什么开发者会愿意花费时间和精力编写这些免费公开的代码?为什么企业会愿意让他们的员工编写代码,开源让其他公司甚至是竞争对手都可以使用?个体参与开源会得到什么?
个人为什么要开源?
1.提升代码质量
参与开源项目是提升个人代码质量的好方法。一方面开源会激发程序员的“耻感”,一旦清楚这些代码是要公开给别人看的,就会自觉将代码写得更加整洁、干净,加更多注释。另一方面,如果项目有一定的影响力,其他关注、参与的程序员也会给予更多建议,这样可以博采众长,无形之中约束自己的代码规范,改进自己的代码质量。
开源运动旗手 Eric S. Raymond 就曾说过:“只要经过足够多双眼睛的审查,所有的 bug 都将失去藏身之地。这就是 Linus 定律。”
2.展示个人代码
一个小时的面试可能只能展示你掌握的某些底层基础或者前沿知识,但如果有开源项目傍身,就可以从你长期的代码中看出代码质量如何。而且参与开源项目还能展示出你对技术的热爱,向面试官展示你引以为傲的开源项目,这将是个不错的加分项。而深度参与知名开源项目的开发者,从来不缺工作,参与开源的经验不仅能帮助他们获得更广阔的职业机会,而且能拓深职业发展空间。正如
jQuery 的创始人 John Resig 曾说过的那样:“不管在任何时候,只要涉及到招聘,相比普通的简历而言我更看重的是应聘者在
GitHub 上开源共享的东西。”
3.建立个人品牌
正如上述两条,代码质量提升和简历的加分项都会指向同一个成就:打造个人影响力,建立个人品牌。最为典型的就是Git的发明者Linus,尽管他的自述是“只是为了好玩”,但从他的名声大噪来看,倒是有些“凡尔赛”了。现今活跃的很多技术大牛往往是在大公司工作过的顶级工程师,凭借开源贡献在软件社区当中积累起人气与声望,摆脱公司标签,成功打造个人品牌。
企业为什么要参与开源?
1、改进代码和功能
大多数的组织和个人首先参与的是他们正在使用的开源项目,主要目的是想让项目/软件变得更完善,更便于自己使用;或者直接打造自己所需的工具并将其开源,也就是常说的“造轮子”。
这部分改进的功能当然可以自己使用不提交,但继续分享才是让利益最大化的方式,因为如果不贡献自己的代码,就有可能面临新版本这些功能不再工作的风险。
2.获取竞争、招聘优势
在程序员的世界中,开源虽说不上是多么崇高的事,但整体形象确实是正面的。开源意味着企业愿意与其他企业和个人共建生态,这个企业的大体上来说,是有拥抱开放的这样的倾向的。所以参与开源有助于提高组织和企业的声誉,且更能吸引志同道合的求职者共同发展。此外,这种行为也有助于提高组织和企业的声誉,提升品牌形象,特别是在开发者之间的口碑,带来的好处就是利于招聘和留住人才。
3.开源商业模式直接获利
开源不抵触商业,开源的目的是分享共享,但不是做慈善事业。具体盈利模式有技术支持、培训、高级功能、云服务等方式收费。不同的软件、不同的领域有不同的盈利模式,但所有模式的基础都是用户数。只有用户数量达到了一定的规模,才有成其商业化模式的可能。
商业开源是通过更多人的参与,减少软件的缺陷,丰富软件的功能,同时也避免了少数人在软件里留一些不正当的后门。企业通过开源的商业模式可以直接获得经济利润,开源软件最终还会反哺商业,让商业公司为用户提供更好的产品。
赠人玫瑰,手有余香。开源最美妙地方就是不必花时间解决同样的问题,当你遇到的大问题已经有人做了开源项目时,一定感觉如释重负。同样,当看到你的开源项目为其他人解决了问题时,巨大的成就感也是一种巨大的激励。
所以参与开源的原因或好处,除了上述具体因素,也有各种心理原因,也包含其他诸如降低开发成本、促进行业标准、支持开源价值观甚至纯粹的享受开源乐趣或回馈开源项目等因素。参与开源的“动机”当然可以“不纯粹”,也不讲究“默默无闻,无私奉献”,参与即贡献,开源领域的发展与每一位开发者都息息相关,进一步有进一步的欢喜。
5W1H聊开源之Why——为什么要参与开源?的更多相关文章
- SourceTree的基本使用---团队开发/参与开源
1.实践入门-团队开发 如果你看到第二部分关于“参与开源”的内容,而你的需求是团队开发,你会发现几个不方便的地方: 1.1.组长建项目,组员每次提交,都需要组长审查同意merge 如果你觉得麻烦,组长 ...
- 如何参与开源项目 - 细说 GitHub 上的 PR 全过程
目录 一.概述 二.为什么要参与开源项目 三.为什么我想介绍如何 PR 四.我想参与开源项目,怎么开始? 4.1.寻找一个合适的开源项目 4.2.寻找贡献点 五.我要提交 PR,怎么上手? 5.1.第 ...
- 参与开源之夏 x OpenTiny 跨端跨框架 UI 组件库贡献,可以赢取奖金🏆!这份《OpenTiny 开源贡献指南》请收好🎁!
大家好,我是 Kagol. 近期有几位朋友在 OpenTiny 技术交流群里询问我们在开源之夏(OSPP)的项目,希望能提前做一些准备工作. 这里给大家简单介绍下开源之夏. 开源之夏是由中科院软件所& ...
- 2017云计算开源峰会 你是想听Linux谈开源还是想听OpenStack谈开源?
2017年,善于把握机遇的企业们不是正在开源,就是走在去开源的路上-- 开源是不是就意味着免费? 开源企业就是要当"活雷锋"? 开源项目究竟如何运作?如何参与开源社区? 如何获得最 ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- 积极参与开源项目,促进.NET Core生态社区发展
今天早上在微信群里聊天聊到百度的SDK 已经支持.NET Core, 百度已经在3月份就支持了,想起当时还是我在他们的github上提的issue: https://github.com/Baidu- ...
- 【搭建开发环境】在 Windows XP 中参与开源项目,搭建 git 和 cygwin 开发环境
引言 只有一台 Windows XP 家用机,却想在诸如 Git@OSC 之类的开源社区参与开发,本文提供一个入门级的开发环境搭建指引. 涉及工具:Eclipse,EGit,Cygwin. 欢迎来到 ...
- asp.net MVC 5 Scaffolding多层架构代码生成向导开源项目(邀请你的参与)
Visual Studio.net 2013 asp.net MVC 5 Scaffolding代码生成向导开源项目 提高开发效率,规范代码编写,最好的方式就是使用简单的设计模式(MVC , Repo ...
- 一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言 秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景.欢迎大家参与我们的开源项目,提交PR,提高竞争力.早日上岸,升职加薪. 知识点详解 秒杀系统架构图 秒杀流程图 秒杀系统设计 这篇 ...
- 使用github参与开源项目
github上有很多非常优秀的开源项目,作为开源项目的受益者,你否想过为开源项目贡献自己的代码?
随机推荐
- C++ 时间复杂度
看到网上一些资料的案例不全,所以自己开个来复习. O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)<O(n^3)<-<O(2^n)< ...
- 探秘C语言数组:解锁高效数据管理与多维空间编程技巧"
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 引言 前面贝蒂给大家介绍了选择结构与循环结构,今天,贝蒂准备给大家介绍C语言中一个非常重要 ...
- 【Android逆向】Frida 无脑暴力破解看雪test2.apk
1. 安装apk到手机 adb install -t test2.apk apk下载位置: https://www.kanxue.com/work-task_read-800625.htm 2. 题目 ...
- 在SpringBoot中实践AOP编程
具体实践 Spring AOP是Spring框架中一个支持实现面向切面编程的模块,由于Spring Boot已经把Spring框架组合得非常好用,所以在基于Spring Boot框架的项目中实现AOP ...
- Notepad++找回自动保存缓存内容的文件
在目录C:\Users\Administrator\AppData\Roaming\Notepad++\backup中找到自动保存的缓存文件. 参考Notepad++找回自动保存缓存内容的文件
- day03--实际操作演示linux系统挂载过程
# 第一步骤: 拥有一个存储设备-光驱,使光驱加载光盘 # 第二步骤: 在linux系统中找到光驱设备 ls -l /dev/cdrom # 第三步骤: 需要将存储设备进行 挂载 挂载命令语法格式: ...
- 【Java复健指南01】简介与数组
写在最前 学习Java已经是很久之前的事情了,因为技术栈的转变,很久没有使用Java正经地开发过项目. 对于该语言的理解也是停留在表面,因此萌生了重新学习的念头.一方面是为刷算法题打基础,另一方面也是 ...
- Taurus.MVC WebMVC 入门开发教程4:数据列表绑定List<Model>
前言: 在本篇 Taurus.MVC WebMVC 入门开发教程的第四篇文章中, 我们将学习如何实现数据列表的绑定,通过使用 List<Model> 来展示多个数据项. 我们将继续使用 T ...
- 03、Etcd 客户端常用命令
上一讲我们安装 etcd 服务端,这一讲我们来一起学学如何使用 etcd 客户端常见的命令.文章内容来源于参考资料,如若侵权,请联系删除,谢谢. etcd可通过客户端命令行工具 etcdctl 对et ...
- SSH不对称密钥自动登入服务器
SSH不对称密钥自动登入服务器 1.先在自己的电脑上创建密钥对 ssh-keygen -t rsa Windows下生成SSH密钥 $ ssh-keygen -t rsa -C "youre ...