走进开源,拥抱开源

走进开源,拥抱开源

  • 一、开源文化
    • 1.1 什么是开源
    • 1.2 为什么要开源
    • 1.3 有哪些开源协议
  • 二、选择开源
    • 2.1 开源社区的类型与特点
    • 2.2 如何选择开源社区
    • 2.3 如何选择开源项目
  • 三、参与开源
    • 3.1 开源社区的参与方式
    • 3.2 开源项目的参与方式
  • 四、Apache Doris 参与示例
    • 4.1 Doris开源项目Step1
    • 4.2 Doris开源项目Step2
    • 4.3 Doris开源项目Step3
    • 4.4 Doris开源项目Step4
  • 五、开源小结

本文主要分享开源文化介绍,如何走进开源、参与开源及拥抱开源。

一、开源文化

1.1 什么是开源

开源,即Open Source 全称 开放源代码,主要有4个特征:

  1. 源码公开

源代码可以公开访问、使用、修改和分发,只需要遵守对应的项目协议即可。

  1. 免费使用

不需要为开源付费,就可以使用。当然,开源项目相对于商业版软件会有些稳定性差异,需要大家一起共建共进

  1. 多元协作

开源鼓励开发者之间的协作,共同改进和维护软件,且形式多样。

  1. 社区驱动

开源项目通常由一个活跃的社区支持,社区成员可以是个人开发者、企业或其他组织。

1.2 为什么要开源

那么,为什么项目发起方或一些社区组织会选择开源呢?

往大了讲,是为了推动技术进步和社会变革,全民 共建共进。展开而言,可以从如下4个维度来看:

  1. 促进创新

开源鼓励技术共享和合作,吸引全球范围内的开发者参与到项目中,从而加速技术的创新和发展。

  1. 降低成本

通过使用开源软件,组织可以节省软件开发和采购成本,避免昂贵的许可费用,并降低运营成本。发起方,可以凝聚一批共同使用者,无论是提出改进点、新特性还是推广宣传都是利于项目发展的。

  1. 文化传播

开源传播了一种开放、协作和共享的文化,这些文化在技术领域之外也具有重要意义。随着这股文化的传播,开源也不仅限于Code了,更多的是一种开源开放的精神。

  1. 社区网络

开源通常围绕一个活跃的社区建立,这个社区不仅支持软件开发,还为参与者提供建立联系和合作的机会。

1.3 有哪些开源协议

俗话说: “无规矩不成方圆”,开源也是如此。

在参与开源社区时,需要尊重社区红线,在使用开源项目和参与开源过程中,需要遵守对应的开源协议

开源许可证(Open Source License)大概有上百种,常见的开源协议大致有GNU、BSD、MIT、Mozilla、Apache和LGPL等,这里就不过多展开,可以和大模型聊聊。

二、选择开源

2.1 开源社区的类型与特点

随着开源文化的普及传播,开源已不再只局限于Code,对于选择开源除了Code项目类,还有社区类型:

  1. 项目型社区

聚焦特定开源项目,包括代码贡献和协作、集成测试、应用实践、用户反馈等核心功 能,大部分项目型社区由背后的机构或企业来资助或直接运营。

例如:Apache Doris

  1. 用户型社区

主要是开源爱好者自发形成的社区,以知识分享、经验交流和传播开源文化为目标。

例如:PowerData

  1. 服务型社区

具备开源代码、项目孵化、开源治理、媒体等多种服务功能的社区,其他垂直小众社区也在该社区平台构建自己的影响力。

例如:Gitee

  1. 开发者社区

将开发者凝聚在一起,赋能开发者、研发团队及科技企业在IT知识学 习、人才招聘、研发效能与协同管理等方面的高速成长与发展。

例如:CSDN

2.2 如何选择开源社区

关于如何相对正确地选择一个开源社区,可以参考如下几点:

  1. 社区活跃度

可以潜水洞察,社区是否有组织丰富的线下/线上活动,如Meetup、研讨会、技术分享会等,促进成员之间的面对面交流和合作。当然,水天水地的活跃也是活跃,只要不违反社区红线即可。

  1. 社区规模

成员数、新老成员比例是否合理。

  1. 社区治理

核心维护者是否正能量(傻狍点也可),社区委员会是否齐心,决策流程合理完善。不要加入后感觉自己像是身入了宫斗剧中,如果有此感,建议尽早脱身变为第三人视角,吃瓜何乐不为。

  1. 社区文化

了解社区的价值观和文化氛围,是否包容、开放、互助,积极向上的社区文化对于社区和参与者的长期发展至关重要。

2.3 如何选择开源项目

关于如何相对正确地选择一个开源项目,可以参考如下几点:

  1. 项目活跃度

是否有大量的贡献者积极地提交代码、解决问题、撰写文档等,对项目的贡献是持续且稳定的。

  1. 项目规模

成员数和贡献者数是否呈上升趋势,生态体系是否完善和健全。

  1. 项目治理

issue/pr是否有回应,发版效率是否可观,代码规范和质量是否有合理把控。

  1. 项目背景

了解项目的来源、技术栈、发展历程和维护团队等信息,有助于你选择合适的开源项目。

三、参与开源

3.1 开源社区的参与方式

开源社区的参与方式有很多,例如:

  1. 融入社区

参与社区讨论、活动策划和提供建设idea等,帮助社区正向发展。

  1. 提供场地/参与活动/赞助支持

当一个无商化背景纯开源的社区需要举办线下活动时,如果有场地支持或其它周边等赞助支持,犹如雪中送炭。而当社区举办活动时,社区成员积极参与其中,亦是社区发展的底气。

  1. 布道推广

通过博客、社交媒体等渠道宣传社区,吸引更多的用户和贡献者加入;就算是一次小小的转发,也是布道推广。

3.2 开源项目的参与方式

开源项目的参与方式有很多,例如:

  1. 代码贡献

最直接的方式,通过提交代码、修复bug、实现新功能等形式来直接参与项目的开发。

  1. 文档编写

大部分开源项目都会有对应的官方使用文档,如果发现文档中有错别字、逻辑描述有误或有想新增示例介绍等,可以提一个文档pr进行fix/new,利人利己,何乐不为。

  1. Bug测试与反馈

在开源项目使用过程中,如果发现有bug,可以提一个issue或通过其它渠道向社区反馈,或者直接/共同fix,共建共进。

  1. 问题总结与分享

对遇到的问题进行沉淀总结和分享,便于社区小伙伴遇到同类问题时可以快速找到答案。

  1. 布道推广

通过博客、社交媒体等渠道宣传项目,吸引更多的用户和贡献者加入。

四、Apache Doris 参与示例

4.1 Doris开源项目Step1

Apache Doris 有完善的官网、文档和 GitHub Readme,参与Apache Doris可以从查阅它们开始,对Doris有一个初步的了解。

4.2 Doris开源项目Step2

选择合适的建联方式,社区推荐的沟通模式:

  1. 邮件组

发邮件到社区 dev@doris.apache.org,进行沟通交流。

  1. 双周会

每两周会在腾讯会议上进行双周会线上互动,会议入口: https://meeting.tencent.com/dm/6iQBgkIhn5LO

  1. 社交平台

可以通过主流的一些社交平台进行交流:微信社群、论坛、知乎、
Twitter、Slack等。

4.3 Doris开源项目Step3

可以参考如下找到第一个贡献点:

  1. 文档贡献

如果发现Doris的官方文档中有错别字、逻辑描述有误或有想新增示例介绍等,可以提一个文档pr进行fix/new:

https://doris.apache.org/zh-CN/docs/get-starting/what-is-apache-doris/

  1. Good First Issue

可以通过此issue了解:[Good First Issue] Doris’ Future
https://github.com/apache/doris/issues/17176

  1. Bug 修复

在使用Doris过程中,如果发现有bug,可以提一个issue或通过其它渠道向社区反馈,或者直接/共同fix,共建共进。

4.4 Doris开源项目Step4

参与社区开发:

  1. Contributor Guide

可以通过如此文档,了解如何成为 Contributor:

https://doris.apache.org/zh-CN/community/how-to-contribute/contributor-guide
https://doris.apache.org/zh-CN/community/how-to-contribute/pull-request
https://doris.apache.org/zh-CN/community/how-to-contribute/contribute-doc

  1. Dev tools

可以通过如此文档,了解Doris相关的开发工具:

https://doris.apache.org/zh-CN/community/developer-guide/docker-dev
https://doris.apache.org/zh-CN/community/developer-guide/fe-idea-dev
https://doris.apache.org/zh-CN/community/developer-guide/be-vscode-dev

  1. Doris Improvement Proposals

Detailed design for major features:

https://cwiki.apache.org/confluence/display/DORIS/Doris+Improvement+Proposals

五、开源小结

开源传播了一种开放、协作和共享的文化,这些文化在技术领域之外也具有重要意义。随着这股文化的传播,开源也不仅限于Code了,更多的是一种开源开放的精神。

欢迎各位参与其中,共建共进

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/617206.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【iOS】RunLoop详解(二)

RunLoop详解(二) RunLoop 的概念RunLoop 与线程的关系RunloopRunloop与线程的关系RunLoop对外的接口Runloop的Mode举例说明小结 RunLoop 的内部逻辑RunLoop的底层实现苹果用RunLoop实现的功能AutoreleasePool事件响应手势识别界面更新定时器PerformSelec…

Python经典案例爬取豆瓣Top250电影数据

随着网络数据的日益丰富,如何从海量的信息中快速、准确地提取出有价值的数据,成为了许多开发者和技术爱好者关注的焦点。在这个过程中,网络爬虫技术凭借其强大的数据获取能力,成为了数据分析和挖掘的重要工具。本文将通过一个经典…

[JNI]使用jni实现简单的Java调用本地C语言代码

[JNI]使用jni实现简单的Java调用本地C语言代码 JNI的解释 Java Native Interface,即Java本地接口。 在Java官方描述中为: The JNI is a native programming interface. It allows Java code that runs inside a Java Virtual Machine (VM) to interope…

day11-StreamFile

1.Stream流 1.1 体验Stream流 需求:按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"杨"开头的元素存储到一个新的集合 把"杨"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得到…

C++语言题库(三)—— PAT

目录 1. 打印点、圆、圆柱信息 2. 国际贸易统计 3. 设计一个类CRectangle 4. 定义一个时间类 5. 定义一个Date类 6. 定义一个Time类 7. 设计一个People类 8. 平均成绩 9. 计算若干个学生的总成绩及平均成绩 11. 使用面向对象的方法求长方形的周长 1. 打印点、圆、圆柱…

回溯算法精讲

原理 回溯,就和深度优先遍历(DFS)类似,属于先一层到底直至到终点,如果这条路径不对,则回退一下,再继续往下搜索。 抽象地说,解决一个回溯问题,实际上就是遍历一棵决策树…

【神经网络】输出层的设计

文章目录 前言一、恒等函数和softmax函数恒等函数softmax 函数python实现softmax函数 二、实现softmax函数时的注意事项函数优化python实现 三、softmax函数的特征计算神经网络的输出输出层的softmax函数可以省略“学习”和“推理”阶段 四、输出层的神经元数量 前言 神经网络…

Disk Map for Mac,让您的Mac更“轻”松

还在为Mac磁盘空间不足而烦恼吗?Disk Map for Mac来帮您轻松解决!通过独特的TreeMap视觉显示技术,让您一眼就能看出哪些文件和文件夹占用了大量空间。只需简单几步操作,即可快速释放磁盘空间,让您的Mac更“轻”松。快来…

el-checkbox选中后的值为id,组件显示为label中文

直接上代码 方法一 <el-checkbox v-for"item in list" :key"item.id" :label"item.id">{{中文}} </el-checkbox> 方法二 <el-checkbox-group class"flex_check" v-model"rkStatusList" v-for"item…

prometheus、mysqld_exporter、node_export、Grafana安装配置

工具简介 Prometheus&#xff08;普罗米修斯&#xff09;&#xff1a;是一个开源的服务监控系统和时间序列数据库 mysqld_exporter&#xff1a; 用于监控 mysql 服务器的开源工具&#xff0c;它是由 Prometheus 社区维护的一个官方 Exporter。该工具通过连接到mysql 服务器并执…

EasyNmon服务器性能监控工具环境搭建

一、安装jdk环境 1、看我这篇博客 https://blog.csdn.net/weixin_54542209/article/details/138704468 二、下载最新easyNmon包 1、下载地址 https://github.com/mzky/easyNmon/releases wget https://github.com/mzky/easyNmon/releases/download/v1.9/easyNmon_AMD64.tar.…

openssl 生成证书步骤

本地测试RSA非对称加密功能时&#xff0c;需要用到签名证书。本文记录作者使用openssl本地生成证书的步骤&#xff0c;并没有深入研究openssl&#xff0c;难免会有错误&#xff0c;欢迎指出&#xff01;&#xff01;&#xff01; 生成证书标准流程&#xff1a; 1、生成私钥&am…

单位学校FM调频电台直放站系统

随着教育技术的不断发展&#xff0c;校园广播系统的建设已成为现代学校必不可少的一部分。作为传统有线广播的有效补充&#xff0c;基于无线电信号传输的 FM 调频电台在学校的使用日益广泛&#xff0c;尤其是在紧急通知、日常信息传播及教学辅助等方面发挥着重要作用。为了增强…

msvcp140dll怎么修复,分享5种有效的解决方法

MSVCP140.dll文件丢失这一现象究竟是何缘由&#xff0c;又会引发哪些令人头疼的问题呢&#xff1f;在探索这个问题的答案之前&#xff0c;我们先来深入了解这个神秘的DLL文件。MSVCP140.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;它扮演着至关重要的…

IP地址定位技术在网络安全中的作用

在当今数字化时代&#xff0c;网络安全已经成为企业、政府和个人面临的重要挑战之一。随着互联网的普及和网络攻击的增加&#xff0c;保护个人隐私和防止网络犯罪变得尤为重要。在这一背景下&#xff0c;IP地址定位技术作为网络安全的重要组成部分之一&#xff0c;发挥着关键作…

【Shell】shell编程之循环语句

目录 1.for循环 例题 2.while循环 例题 3.until循环 1.for循环 读取不同的变量值&#xff0c;用来逐个执行同一组命令 for 变量 in 取值列表 do 命令序列 done [rootlocalhost ~]# for i in 1 2 3 > do > echo "第 $i 次跳舞" > done 第 1 次跳舞 第 …

Redis经典问题:数据不一致

大家好,我是小米,今天我想和大家聊一聊Redis的一个经典问题——数据不一致。在使用Redis的过程中,你是否曾遇到过这样的问题?缓存和数据库中的数据不一致,可能导致应用程序的功能异常。下面,我将详细介绍数据不一致的原因,以及一些有效的解决方案。 什么是数据不一致 …

WordPress插件Plus WebP,可将jpg、png、bmp、gif图片转为WebP

现在很多浏览器和CDN都支持WebP格式的图片了&#xff0c;不过我们以前的WordPress网站使用的图片都是jpg、png、bmp、gif&#xff0c;那么应该如何将它们转换为WebP格式的图片呢&#xff1f;推荐安装这款Plus WebP插件&#xff0c;可以将上传到媒体库的图片转为WebP格式图片&am…

picoCTF-Web Exploitation-Trickster

Description I found a web app that can help process images: PNG images only! 这应该是个上传漏洞了&#xff0c;十几年没用过了&#xff0c;不知道思路是不是一样的&#xff0c;以前的思路是通过上传漏洞想办法上传一个木马&#xff0c;拿到webshell&#xff0c;今天试试看…

多线程-线程安全

目录 线程安全问题 加锁(synchronized) synchronized 使用方法 synchronized的其他使用方法 synchronized 重要特性(可重入的) 死锁的问题 对 2> 提出问题 对 3> 提出问题 解决死锁 对 2> 进行解答 对4> 进行解答 volatile 关键字 wait 和 notify (重要…