文档章节

如果开源领域里没有了这些软件,那我们还有什么?

编辑部的故事
 编辑部的故事
发布于 04/24 19:38
字数 1331
阅读 3127
收藏 23

4 月 16 日,美国商务部以中兴违反和解协议为由对其实施长达七年的贸易禁令(PDF),禁止美国企业向中兴提供零部件、商品、软件和技术,即日起生效。

消息一出如平底惊雷,从此次事件中,对于国内基础软件企业,也看到了自主研发核心技术的重要性,更让我们认识到开源软软件的意义所在,与芯片技术和私有软件不同,使用开源软件,我们可以拥有软件的所有权和控制权,我们可以修改代码,我们可以在开源协议允许的范围内,修改和分发软件 —— 我们可以真正拥有自己控制的代码。

这次中兴事件也给我们带来了一个启示,相对于私有软件,我们应尽可能使用开源软件。虽然说开源无国界,但不妨设想这样一个极端的场景,如果我们平时使用的由国外开发者主导的开源项目被限制使用了,我们还有什么?事实上,凭借中国开发者对于开源软件的贡献和自身实力的提升,我们已经打造了很多优秀的开源软件。下面将挑选部分为大家盘点一些值得关注的开源项目。

操作系统

  • 如果我们没有 Linux,我们还有 Deepin 深度操作系统 (不过也是 Linux ,这个真没什么好办法)
  • 如果我们没有实时操作系统 Zephyr,我们还有自主研发的物联网操作系统 RT-Thread

主流的操作系统基本已被 Windows、macOS 以及各种大大小小的 Linux 发行版占据。即便如此,我们中国开发者也没放弃,他们在更垂直的领域发力,如 Deepin 深度操作系统,一直在致力于基于 Linux 内核的操作系统开发,为打造国产操作系统生态不断努力。而 RT-Thread 作为一个物联网操作系统,拥有良好的软件生态,已成为国人自主开发、国内最成熟稳定和装机量最大的开源实时操作系统(RTOS)。

底层应用

  • 如果我们没有 MySQL 数据库,我们还有分布式 NewSQL 关系型数据库 TiDB
  • 如果我们没有开源编码器 x265,我们还有国产开源的 AVS2 高清实时编码器 xAVS2

对于底层应用以及其他一些基础设施的开发,得到的关注可能会比较低,然而它的难度和意义却堪称重大,我们在更上层领域努力耕耘的同时,也应关注底层应用的开发。

Web 框架和应用

  • 如果我们没有 Spring、Struts ,我们还有 JFinal
  • 如果我们没有 Netty、Mina,我们还有 tio
  • 如果我们没有 JSON 处理库 Jackson,我们还有国人自研的 fastjson
  • 如果我们没有 JavaScript 图表库 Highcharts,我们还有口碑极好的 ECharts
  • 如果我们没有分布式跟踪系统 Zipkin,我们还有国人主导的开源 APM Skywalking
  • 如果我们没有 PHP 开发框架 Laravel,我们还有深受国内开发者喜爱的 ThinkPHP
  • 如果我们没有 RPC 框架 gRPC,我们还有高性能 Java RPC 框架 SOFARPC
  • 如果我们没有微服务框架 Spring Cloud,我们还有 ServiceComb 和 Dubbo
  • 如果我们没有模板引擎 Freemarker,我们还有新一代模板引擎 Beetl

Web 框架和应用这个领域的生态十分繁荣,基本上你需要的“轮子”,大家都已造过,而且数量甚多,即便如此,其中依然不乏十分优秀且活跃的开源项目。如果你有精力,可以继续自己造轮子,如果你希望改进“轮子”,不妨参与到开源中去吧。

开发工具

  • 如果我们没有 JetBrains 的 GoLand,我们还有开源跨平台的 Go 语言集成开发环境 LiteIDE
  • 如果我们没有代码托管平台 GitLab,我们还有可极易搭建的自助 Git 服务 Gogs

工欲善其事,必先利其器。开发工具对于开发者的重要性不言而喻,相信大家平时用得顺手的开发工具基本上都是来自国外厂商,其实除了这些选择,我们不妨考虑一下国人开源的作品,毕竟开源软件更具定制性,使用上也更自由。

最后哪怕我们没有 GitHub,我们还有码云Gitee

挂一漏万,还有很多其他的国人主导的开源项目这里未能列举,更多开源软件,请关注开源中国社区,也欢迎大家投递自己的、或你发现的优秀开源项目!

© 著作权归作者所有

共有 人打赏支持
编辑部的故事

编辑部的故事

粉丝 1121
博文 244
码字总数 410711
作品 0
深圳
运营/编辑
加载中

评论(46)

formever
formever

引用来自“李德涛博客”的评论

如果没有java、php呢?
加上c,c++,c#……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………66
talent-tan
talent-tan

引用来自“badouyuren”的评论

没有了tomcat,谁来替换呢?

tomcat的可替代性很强,tio-http就可以替代
尚浩宇
尚浩宇

引用来自“红薯”的评论

吼吼 ~
看标题我知道红薯必围观,哈哈
Y
Y292450104

引用来自“花开的守候”的评论

就说如果没有spring全家桶怎么办
JFinal
cyclamenkde
cyclamenkde
Gitee 666
之渊
之渊
想多
Brokedge
Brokedge
川普要是说 GCC 不给中国用,那 fsf 和 RMS 定会当场发飙,加入中国国籍。
有色白水

引用来自“李德涛博客”的评论

如果没有java、php呢?

引用来自“有色白水”的评论

java不太清楚,但是php5-7的主力开发是中国人啊

引用来自“局长”的评论

鸟哥?
当然,实际上以鸟哥为主,中国区的PHP开发人员并不止鸟哥一个,还有很多
周其
周其
没有了吴彦祖,我还有彭于晏呀
夙歆风
夙歆风
没有汇编,没有C,没有JAVA没有各种编程语言可咋办……
开源是冷酷无情的:谷歌 Chris DiBona 访谈

Chris DiBona是谷歌开源总监。他也是开源界杰出的领军人物之一,这还要追溯到他的大学时期,那时他对Linux可谓一见钟情。 在今年的 “一切皆开源” 大会上,Christ将会提供谷歌目前的开源软件...

oschina
2013/10/17
4K
8
OCP 的开源网络项目会引发网络变革吗?

开源项目在过去十几年里,已经在诸多领域取得了突破,包括硬件和软件,但是唯独在网络设备领域,一直未能有效穿透传统设备厂商的层层壁垒,一台台的网络设备都是一个个的黑盒,对用户来说,无...

oschina
2013/11/19
2.8K
10
如何评价一个开源软件

缘起,最近看到出版了一本大规模分布式框架设计的书,看了一下样张,大概是讲作者自己开源的fourinone(4in1)框架,4in1集合了类似hadoop、memcached、zk、消息队列功能,所以称为4in1。我将这...

zhh5919
2014/05/07
1K
7
“国产自主可控”的开源软件就是一个矛盾体

编者注:文章来自Linux 宝库公众号,作者:开源社会人。仅作讨论,不代表开源中国观点。 一、梁宁女士:关于国产芯片与操作系统的往事 一篇万字长文,在今年4月的时候,刷了很多人的屏。其实...

王练
05/11
0
0
Jim Zemlin:超级计算Linux占90%的市场份额

“2009开源中国开源世界”高峰论坛及圆桌会议于2009年6月29-30日在北京丽亭华苑酒店召开。会上,与会者既可以近距离与国内开源专家以及与 Linux基金会执行董事、Ubuntu Linux创始人、OpenOff...

老枪
2009/06/30
216
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
8分钟前
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
10分钟前
0
0
Nginix开启SSL支持HTTPS访问(自签名方法)

Nginix开启SSL支持HTTPS访问(自签名方法) 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器...

openthings
26分钟前
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部