走进开源,拥抱开源

走进开源,拥抱开源

  • 一、开源文化
    • 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了,更多的是一种开源开放的精神。

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几个排序器的verilog及其资源占用、延时分析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 因为课题需要,调研了几个快速排序方法,并手写或者改进了若干待测试对象,包括记分板型冒泡排序(这个是别人的&#xff09…

1、sql server数据库进行sql注入

靶机取自:墨者sql server 1、判断数据库类型 抓包知sql server,所以注入语句跟MySQL有些区别 2、判断注入点 “http://219.153.49.228:42514/new_list.asp?id2 ”,当id2 and 11时显示正确,id2 and 12时页面报错。 3、确定列…

基于单片机的智能安防系统设计(32+4G+WIFI版)-设计说明书

设计摘要: 本设计基于STM32单片机,旨在实现一个智能安防系统,主要包括烟雾和温度传感器、人体红外传感器、显示屏、按键、4G模块和WiFi模块等组件。通过这些组件的协作,实现了火灾检测、入侵监测、状态显示、用户交互和远程通信等…

软件工程期末复习(8)需求的表达方法和状态转换图

需求的表达方法 系统模型 需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统 “做什么” 的问题 通常软件开发项目是要实现目标系统的物理模型。目标系统的具体物理模型是由它的逻辑模型经实例化,即具体到某个业务领域而…

pytest教程-47-钩子函数-pytest_sessionfinish

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_sessionstart钩子函数的使用方法,本小节我们讲解一下pytest_sessionfinish钩子函数的使用方法。 pytest_sessionfinish 钩子函数在 Pytest 测试会话结束时调用,…

Java入门基础学习笔记23——For循环结构

1、for循环: 控制一段代码反复执行很多次。 2、For循环语句的基本结构: for(初始化表达式;判断表达式;递增(递减)表达式) {循环体语句(重复执行的代码) } 例&#xff1…

大模型日报2024-05-15

大模型日报 2024-05-15 大模型资讯 OpenAI推出全新AI模型GPT-4o,具备文本、图像和音频处理能力 摘要: OpenAI公司继ChatGPT后,最新推出了名为GPT-4o的AI模型。这一模型不仅能够理解和生成文本,还新增了图像和音频的解释及生成功能。GPT-4o作为…

【前端】CSS基础(3)

文章目录 前言1. CSS常用元素属性1.1 字体属性1.1.1 字体1.1.2 字体大小1.1.3 字体颜色1.1.4 字体粗细1.1.5 文字样式 前言 这篇博客仅仅是对CSS的基本结构进行了一些说明,关于CSS的更多讲解以及HTML、Javascript部分的讲解可以关注一下下面的专栏,会持续…

原地去重问题和合并有序数组问题

原地去重问题 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。这是leetcode上的一道题 这里我们用…

【qt】一次性讲清楚日期和时间

时间日期 一.QTime类1.初始化2.获取当前时间3.获取 小时 分钟 秒 毫秒4.增加时间5.间隔时间6.字符串转时间7.时间转字符串 二.QDate类1.初始化2.获取当前日期3.设置日期4.获取 年 月 日5.各种小接口6.增加日期7.日期间隔8.字符串转日期9.日期转字符串 三.QDateTime类1.初始化2.…

【SpringBoot】解锁后端测试新境界:学习Mockito与MockMvc的单元测试魔法

文章目录 前言:Java常见的单元测试框架一.Junit5基础二.SpringBoot项目单元测试1.添加依赖2.SpringBoot单元测试标准结构3.SpringBoot单元测试常用注解 三.单元测试中如何注入依赖对象1.真实注入(AutoWired、 Resource)2.Mock注入2.1.前言2.2…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 拼数字

//bfs只能过40%。 #include<bits/stdc.h> using namespace std; #define int long long int a,b,c,dp[2028]; struct s {int x,y,z;string m; }; map<vector<int>,int>k; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a…