当前位置: 首页 > news >正文

开源(open source)是什么?为什么要开源?

为什么开源这个问题挺复杂,这里就从社会面以及个人两个角度来说。当然个人层面的开源其实是建立在社会面形成开源氛围后开始的。

社会面开源

这里举一个例子,既互联网从 web1.0 到 web3.0 (开源 → 闭源 → 再开源)的历程:

1)web1.0 阶段(开源)

在互联网早期,以 TCP/IP、 SMTP 和 HTTP 为代表的开放标准,我们叫它 Web1.0 协议阶段。

它的特点是:基于一组开放的标准,人人都可以使用它们构建应用,而且它有着几百个开源的实现,你可以直接使用。由于 web1.0 协议是开源的,没有人能够单方面控制互联网,而且协议是稳定的,支撑着庞大的网络世界的快速发展。

但是,问题也随之而来,建立在开源技术之上很难实现大规模盈利。比如:同样是做操作系统的Linux社区,跟微软市值相比,那是天壤之别。开源的数据库 mysql,oracle 的市值相比,好比九牛一毛。

解决办法是什么?许多商业公司在 web1.0 的基本上,构建了闭源的协议,这就是 web2.0 协议时代。

2)web2.0 阶段(闭源)

许多公司在 web1.0 协议的基础上,构建是自己的闭源协议,通过打造平台建立起自己的商业组织,这些协议和代码是具有产权的,是归属于这些商业公司的。比如,谷歌在 PC 时代,通过 page rank 专利技术,构建了世界上最大的搜索引擎服务;字节跳动基于自有算法,进行内容推荐和分发,推出今日头条、抖音等现象级应用。

web2.0 的特点是:

  • 平台经济。平台最终必然走向垄断,这个不难理解。比如国内 BAT、字节、美团等商业巨头,国外的 google、facebook、微软、uber 等等。
  • 隐私换服务。用户通过提供个人隐私数据,如消费记录、浏览记录,来获得平台提供的个性化推荐、消息推送服务、信用贷款等便捷服务。但是,平台是不是合理、合法、安全的处理我们的隐私数据,就不得而知了,这是有着巨大隐患的。
  • 数据归平台方所有。平台获得了我们的隐私数据,并且对数据做挖掘和加工,产生了利润,这些利润归平台方所有,而我们这些提供数据的人,半毛钱也拿不到。
  • 平台决定利益分配。依赖于平台而生存的某些职业,在平台的利益分配上,没有定价权。比如外卖小哥、商家,都被平台抽取很大一部分费用。

web2.0 存在的问题:

  • 平台掌握了巨大的权利。他们制定游戏规则,他们拥有用户产生的数据,随意修改服务协议。比如:用户交易数据、浏览/关注/点赞行为数据、好友关系等等。
  • 平台一家独大。在互联网的各个领域,平台形成了垄断,赢家通吃,新进公司毫无机会。
  • 扼杀创新。大家试想一家,在 google 平台上,还能长出一家比 google 还大的平台吗?肯定是不可能的,早就被打压兼并收购了。
  • 数据由企业掌控。这是互联网平台企业的核心资产,数据完全控制在平台手上。
  • 所有的人都给平台打工。定价权、分配权都在平台的手上,各参与方其实都在给平台打工。

那么,思考一个问题,如果用户数据依托于开放的协议以及数学算法,而不是掌握在平台手中,那将会发生什么?于是,专家们提出了 web3.0 的构想。

3)web3.0 阶段(开源)

专家们提出了关于 web3.0 的构想:web3.0 必须是开放的、安全的、去中心化(开放协议,必定造就去中心化)、具有原生通证(利益分配)的网络。

web3.0 理念的拥护者们,从区块链技术受到了启发,区块链用密码学的一些基础设施比如数字签名,Web1.0 的开放协议(TCP,UDP 等),和一个非常聪明的激励结构来构建了一个集体所有的中立的数据库,或者叫分布式账本,用于记录比特币的交易/支付数据。

举例来说,用 web3.0 来重构互联网服务,那么我们的个人隐私数据将保存在一个基于区块链的网络之上,而不是存储于任何商业公司。当我们在网上购物的时候,购物 app 如果想使用这些个人数据,需要经过授权,而使用数据的过程和协议都是透明的,都记录在区块链之上。利益分配也在区块链的智能合约上,事先约定好。

web3.0 重新定义了游戏规则,把数据的归属权、使用权归还给用户,巨头垄断的局面被打破。

由此可见,开源更像是关于归属权、使用权革命的产物。

企业开源

既然社会面开始了开源的趋势,想要在社会中生存,企业便也不得不积极的拥抱开源,并且企业参与开源,也有如下的收益:

1、改进代码和功能

大多数的组织和个人首先参与的是他们正在使用的开源项目,主要目的是想让项目/软件变得更完善,更便于自己使用;或者直接打造自己所需的工具并将其开源,也就是常说的“造轮子”。 这部分改进的功能当然可以自己使用不提交,但继续分享才是让利益最大化的方式,因为如果不贡献自己的代码,就有可能面临新版本这些功能不再工作的风险。

2、获取竞争、招聘优势

在程序员的世界中,开源虽说不上是多么崇高的事,但整体形象确实是正面的。开源意味着企业愿意与其他企业和个人共建生态,这个企业的大体上来说,是有拥抱开放的这样的倾向的。所以参与开源有助于提高组织和企业的声誉,且更能吸引志同道合的求职者共同发展。此外,这种行为也有助于提高组织和企业的声誉,提升品牌形象,特别是在开发者之间的口碑,带来的好处就是利于招聘和留住人才。

3、开源商业模式直接获利

开源不抵触商业,开源的目的是分享共享,但不是做慈善事业。具体盈利模式有技术支持、培训、高级功能、云服务等方式收费。不同的软件、不同的领域有不同的盈利模式,但所有模式的基础都是用户数。只有用户数量达到了一定的规模,才有成其商业化模式的可能。

商业开源是通过更多人的参与,减少软件的缺陷,丰富软件的功能,同时也避免了少数人在软件里留一些不正当的后门。企业通过开源的商业模式可以直接获得经济利润,开源软件最终还会反哺商业,让商业公司为用户提供更好的产品。

个人开源

最后,则是个人开源。现在很多 GitHub 上的项目,往往是几个人甚至一个人共享的代码,那么他们为什么要做这种无私奉献呢?大致可以想到,个人开源对于个人来说,也是有一定好处的:

1、提升代码质量

参与开源项目是提升个人代码质量的好方法。一方面开源会激发程序员的“耻感”,一旦清楚这些代码是要公开给别人看的,就会自觉将代码写得更加整洁、干净,加更多注释。另一方面,如果项目有一定的影响力,其他关注、参与的程序员也会给予更多建议,这样可以博采众长,无形之中约束自己的代码规范,改进自己的代码质量。

2、展示个人代码

一个小时的面试可能只能展示你掌握的某些底层基础或者前沿知识,但如果有开源项目傍身,就可以从你长期的代码中看出代码质量如何。而且参与开源项目还能展示出你对技术的热爱,向面试官展示你引以为傲的开源项目,这将是个不错的加分项。而深度参与知名开源项目的开发者,从来不缺工作,参与开源的经验不仅能帮助他们获得更广阔的职业机会,而且能拓深职业发展空间。

3、建立个人品牌

正如上述两条,代码质量提升和简历的加分项都会指向同一个成就:打造个人影响力,建立个人品牌。最为典型的就是 Git 的发明者 Linus。现今活跃的很多技术大牛往往是在大公司工作过的顶级工程师,凭借开源贡献在软件社区当中积累起人气与声望,摆脱公司标签,成功打造个人品牌。

相关推荐

前端的世界总是在不断变化,作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。低代码也是一个值得我们深入探索的领域,让我们拭目以待,它将给前端世界带来怎样的变革。

介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

JNPF可以实现应用从创建、配置、开发、测试到发布、运维、升级等完整生命周期的管理。减少了传统应用程序的代码编写量,通过图形化、可视化的界面,以拖放组件的方式,即可快速生成应用程序的产品,大幅降低了开发企业管理类软件的难度。

希望这篇文章对你有所帮助~

相关文章:

开源(open source)是什么?为什么要开源?

为什么开源这个问题挺复杂,这里就从社会面以及个人两个角度来说。当然个人层面的开源其实是建立在社会面形成开源氛围后开始的。 社会面开源 这里举一个例子,既互联网从 web1.0 到 web3.0 (开源 → 闭源 → 再开源)的历程&#…...

基于Spring Boot的论坛网站:从零到部署

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...

vue开发的一个小插件vue.js devtools

可打开谷歌商城的情况下,不可打开的可以到极简插件里面去下载 极简插件官网_Chrome插件下载_Chrome浏览器应用商店 搜索vue即可...

GraphLLM:基于图的框架,通过大型语言模型处理数据

GraphLLM是一个创新的框架,它允许用户通过一个或多个大型语言模型(LLM)来处理数据。这个框架不仅提供了一个强大的代理,能够执行网络搜索和运行Python代码,还提供了一套工具来抓取网页数据,并将其重新格式化…...

HarmonyOS 5.0应用开发——Navigation实现页面路由

【高心星出品】 Navigation实现页面路由 Navigation:路由导航的根视图容器,一般作为页面(Entry)的根容器去使用,包括单页面(stack)、分栏(split)和自适应(a…...

物联网行业应用实训室建设方案

一、建设背景 随着物联网技术的迅猛发展和广泛应用,物联网产业已跃升为新时代的经济增长引擎,对于产业升级和社会信息化水平的提升具有举足轻重的地位。因此,为了满足这一领域的迫切需求,培养具备物联网技术应用能力的优秀人才成…...

SOLIDWORKS 2025更灵活零件建模

SOLIDWORKS 2025更灵活零件建模 北京众联亿诚是达索官方授权的SOLIDWORKS经销商,专业经销SOLIDWORKS正版软件并提供免费试用、培训认证、二次开发等增值服务。 在工程设计领域,SOLIDWORKS作为一款功能强大的三维CAD软件,一直以其优越的性能…...

智能巡检机器人的大模型训练

随着工业自动化和智能化进程的不断加快,智能巡检机器人已成为维护和管理复杂设备的重要工具。在电力、石油化工、煤矿、数据中心等行业中,智能巡检机器人通过自主巡检、故障检测等功能,提高了设备管理的效率和安全性。大模型训练在智能巡检机…...

RabbitMQ系列学习笔记(九)--路由模式

文章目录 一、路由模式原理二、多重绑定三、路由模式实战1、消费者代码2、生产者代码3、运行结果分析 本文参考 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、路由模式原理 使用发布订阅模式时&#x…...

[OS] pthreads-1

线程的基本概念 线程是进程中的一个单一的执行流。一个进程可以包含多个线程,这些线程共享进程中的资源,并且在相同的地址空间中执行。多线程是提高应用程序并行性的流行方法。例如,在浏览器中,不同的标签页可以视作独立的线程。…...

ThreeJS入门(137):THREE.StringKeyframeTrack 知识详解,示例代码

作者: 还是大剑师兰特 ,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas&#xf…...

用大模型或者向量模型比如huggingface上的模型,处理一批图片,对该图片进行分类,检索

要使用大模型或向量模型对图片进行分类和检索,通常可以采用以下几种方法: 1. **图像分类**:使用预训练的图像分类模型(如ResNet、EfficientNet等)对图片进行分类。 2. **图像特征提取**:使用预训练的模型(如CLIP、ResNet等)提取图像的特征向量,然后进行相似度检索。 …...

Mac 使用 zsh 终端提示 zsh: killed 的问题

我的脚本的内容为: #!/bin/bashset -epids$(ps -ef | grep consul | grep -v grep | awk {print $2})for pid in $pids; doecho "kill process: $pid"kill -9 $pid donecd $(dirname $0)nohup ./consul agent -dev > nohup.log &可以看到这是一个…...

数字后端零基础入门系列 | Innovus零基础LAB学习Day6

今天没有具体的数字IC后端lab实验。今天的重点是熟悉掌握静态时序分析STA中的几类timing path以及setup和hold检查机制(包含setup和hold计算公式)。 芯片流片失败的那些故事 数字后端零基础入门系列 | Innovus零基础LAB学习Day5 等大家把今天内容学习…...

(Linux驱动学习 -13).SPI驱动实验

目录 一.SPI驱动相关结构体与函数 1.struct spi_master 结构体 2.申请 spi_master - spi_alloc_master 3.释放 spi_master - spi_master_put 4.向内核注册 spi_master - spi_register_master 5.注销掉 spi_master 6.struct spi_driver 结构体 7.向内核注册 spi_driver -…...

Angular 框架入门教程:从安装到路由、服务与状态管理详解

一、引言 在前端开发领域,Angular 是一个强大且流行的框架。它由 Google 维护,基于 TypeScript,采用模块化设计,提供了组件化开发、依赖注入、路由、表单处理等丰富功能,旨在帮助开发者构建高效、可维护的单页应用程序…...

【华为HCIP实战课程十八】OSPF的外部路由类型,网络工程师

一、外部路由类型: 上节讲的外部路由类型,无关乎COST大小,OSPF外部路由类型1优先于外部路由类型2 二、转发地址实验拓扑 我们再SW3/R5/R6三台设备运行RIP,SW3即运行RIP又运行OSPF SW3配置rip [SW3-rip-1]ver 2 [SW3-rip-1]network 10.0.0.0 AR5去掉ospf配置和AR6配置rip…...

oss 简单命令(已亲测)

1、 服务器本地文件复制到OSS指定目录 ./ossutil cp -r /opt/post/afc/afcServer/afcenter/logs/ oss://oss-name/ScBak/20230608/ -c /opt/post/ossconfig 2、在oss服务器上创建文件夹 ./ossutil mkdir oss://oss-name/ScBak/20230608/dam -c /opt/post/ossconfig 3、查…...

申请https证书

引入证书: 当服务器使用HTTPS之前都会申请一份证书,证书是为了证明服务端公钥的权威性,服务器向浏览器传输证书,浏览器再从证书里获取公钥,证书明文数据签名。 如何理解CA签发证书的过程 a.CA会有自己的公钥 和 私钥&#xff…...

trtexec 工具使用

本文介绍trtexec工具的使用,trtexec可以实现onnx模型导出trt模型、耗时分析和模型优化分析等功能,本节将对 trtexec的运用进行介绍。 1.trtexec trtexec是官方提供的命令行工具,主要用于一下三个方面 生成模型序列化文件:由ONNX文…...

10款具备强大数据报告功能的电脑监控工具,办公电脑怎么监控

数据报告功能是电脑监控软件的重要特性,它能够帮助管理者全面了解员工的工作行为、应用使用情况,并生成详细的生产力分析报告。以下是10款具备强大数据报告功能的监控工具推荐,帮助企业有效管理和提升工作效率。 1. 固信软件 固信软件不仅是…...

如何理解Linux中的进程名

目录 一:程序的概念二:进程的概念三:线程的概念四:Linux中的进程名 一:程序的概念 程序就是采用某种特定格式编写的文本文件,该文件可以给编译器或者解释器编译和解释。编写好的程序平时存放在硬盘中。 二…...

微信红包设计流程讲解与实战分析

#1024程序员节 | 征文# 前言 微信红包作为大家耳熟能详的一种互动方式,其背后的技术支持包含多个方面。从用户发出红包到红包被抢完,涉及到的流程包括发红包、红包存储、红包拆分以及抢红包等。本文将详细介绍这一系列流程,并通过代码案例来…...

AI智能体:AI智能体(Agent)是什么?为什么要学?99%的人不知道!

为什么要学? 我们先搞清楚为什么? 最近看到 AI 创新力五问,我们日常生活中有使用 AI 来融入到我们的学习工作流嘛? 值得我们日常反省。 未来企业人才招聘测试AI创新力的五问: 您是否处于每天习惯使用 AI 的状态&am…...

NVR小程序接入平台/设备EasyNVR多个NVR同时管理的高效解决方案

在当今的数字化安防时代,视频监控系统的需求日益复杂和多样化。为了满足不同场景下的监控需求,一种高效、灵活且兼容性强的安防视频监控平台——NVR批量管理软件/平台EasyNVR应运而生。本篇探讨这一融合所带来的创新与发展。 一、NVR监测软件/设备EasyNV…...

APS开源源码解读: 排程工具 optaplanner II

上篇 排产,原则上也就是分配时间,分配资源;保证资源日历约束,保证工艺路线约束。我们看一下如何实现optaplanner 优化的 定义一个move, 一个move可能改变了分配到的资源,也可能改变了一个资源上的顺序。改变即意味着优…...

科技是把双刃剑,巧用技术改变财务预测

数字化和全球化的双向驱动,引领我国各行各业在技术革新的浪潮中不断扬帆。这一趋势不仅带来了前所未有的突破与创新,推进企业迈向数据驱动决策的新未来,同时也伴随着一些潜在的问题和挑战。科技的普及就像是一场革命,在财务管理领…...

vscode默认添加python项目的源目录路径到执行环境(解决ModuleNotFoundError: No module named问题)

0. 问题描述 vscode中编写python脚本,导入工程目录下的其他模块,出现ModuleNotFoundError: No module named 错误 在test2的ccc.py文件中执行print(sys.path) 查看路径 返回结果发现并无’/home/xxx/first_demo’的路径,所以test2下面的文…...

【每日刷题】Day143

【每日刷题】Day143 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 200. 岛屿数量 - 力扣(LeetCode) 2. LCR 105. 岛屿的最大面积 - 力扣&…...

基于Springboot智能学习平台的设计与实现

基于Springboot智能学习平台的设计与实现 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:idea 源码获取:https://download.csdn.net/downlo…...

福建祥盛建设有限公司网站/网站设计制作的服务怎么样

携程 雇主by Goodness Kayode通过善良Kayode 开发人员-这是如何吸引潜在的雇主和客户注意您的方法 (Developers—here’s how to get potential employers and clients to notice you) Note — any ideas I share are my personal views, based on my experience finding deve…...

河源网站制作1993seo/小学生一分钟新闻播报

问题:打开Hbuilder X,运行项目时出现 Browserslist: caniuse-lite is outdated. Please run:npx browserslistlatest --update-db 解决方法: 注意: 操作前可以先保存需要修改的对应文件夹下的内容,方便还原。 一 …...

济南专门做公司网站的公司/长春网站关键词排名

SPListItem的Url属性返回的不是绝对路径,形式如下面:http://cary/Lists/Discussion/itemtitle这种形式是不能作为链接打开的,很多时候我们在取到这个item的同时还要得到这个item的url,比如你筛选出列表中指定的数据并发邮件给相关…...

做班级网站的实训报告/长沙专业网络推广公司

一直想试试ubuntu for win10中运行网站测试一下,弄了好久,今天终于基本弄明白了, ubuntu for win10里的IP就是外面WIN10的IP,在里面建立网站了可以直接在外面WIN10 浏览器里看的,步骤大概如下: 控制面板里安…...

重庆网站建设搜外/百度一下你就知道了百度

文件类型在程序运行时,程序本身和数据一般都存在内存中,当程序运行结束后,存放在内存中的数据被释放。 如果需要长期保存程序运行所需的原始数据,或程序运行产生的结果,就必须以文件形式存储到外部存储介质上。 文件一…...

鲜花网站建设目的/seo分析

Python学习笔记7 异常处理 包和模块 包和模块的一般操作导入操作的本质模块检索的路径导入模块的场景第三方包和模块的安装 异常处理 系统内部一开始已经内置了一些特定的错误场景,当我们触发了这个场景时,系统内部就会向外界抛出异常。如果我们没有处…...