统一国产操作系统应用商店的实质就是统一各种库的版本
Tofloor
poster avatar
hummerstudio
deepin
2015-08-21 00:04
Author
Linux系统最大的问题就是软件兼容性/依赖问题。
国产操作系统要想发展,必须形成合力,而不是各自圈地,互相对立。

对不同的Linux发行版,做不到一次编码,各OS都能正常安装、运行。

根本原因在于:所谓的Linux系统=Linux内核+外围各种软件+各种库。(大概意思)
各大发行版的相同之处只在于都共同使用了Linux内核,但在外围软件的选择上,却是各种各样,千差万别。
所谓库,就是一些封装了现有方法、功能,可被第三方开发者直接调用的模块,开发者调用这些库,可以更快速的开发软件。
但因为各个发行版默认预置的库版本不同,会造成软件的不兼容,开发者如果一一适配,无疑工作量非常大。选择太多,最终大多数人会选择放弃选择。
比如Deepin有些软件是基于Python2开发的,但若是有些发行版中安装的是Python3,便出现依赖冲突,无法正常运行。

所以:
1.统一国产操作系统应用商店的实质就是统一系统预置的各种库的版本
2.目的是为了减轻开发者适配工作量,实现一次编码,各OS都能正常安装、运行

如此才能真正吸引到开发者来开发Linux桌面软件,形成国产操作系统的生态
Windows的成功有各种各样的原因,但不可否认的一点,是它对开发者的友好程度。微软称第二,没人敢称第二。
开发文档齐全,从入门到精通,并且文档完全中文化,代码里的注释都是中文,一步一步手把手教学。如此才成就了最庞大的开发者数量,才有了这么多的软件。

市场占有率高无疑能吸引开发者,但同时也要为开发者提供方便,易于开发其上的软件,可以让开发者更容易留在这个平台上,更快的复制开发者团队。
如此才能促进鸡生蛋、蛋生鸡的速度。

Reply Favorite View the author
All Replies
1 / 4
To page
洪旭钢
deepin
2015-08-21 00:21
#1
谁来做这个统一性的工作,国家?开源的东西怎么做到统一,基本都是占山为王,谁的市场份额大,谁就是标准。
Reply View the author
MattD
deepin
2015-08-21 00:24
#2
有两种方法可解决库版本问题导致的不兼容:
1、采用静态编译、静态封装,把所需要的库直接集成于软件二进制分发包中。但是这种方法有点违反Unix哲学,而且会造成软件包体积增加。
2、采用类docker技术,一次开发,随意迁移,广泛适配。
Reply View the author
hsyysy
deepin
2015-08-21 00:37
#3
事实上软件开源便能解决问题,由发行版方编译打包就行了,你说的这种方法确实非常适用于闭源软件,windows就是如此,大家的windows都一样,所以软件闭源没有多大问题。
Reply View the author
rekols
deepin
2015-08-21 00:42
#4
Linux要统一,很难
Reply View the author
weiminnihao9
deepin
2015-08-21 00:48
#5
问题看得倒是挺准,就是解决没那么好解决,因为当前不可能统一,只能做大自己,形成份额上的同一
Reply View the author
方老四
deepin
2015-08-21 00:51
#6
linux基金会是不是可以做这些事,这个真的是开发者的拦路虎!
Reply View the author
188******76
deepin
2015-08-21 01:03
#7
https://bbs.deepin.org/post/32058
有两种方法可解决库版本问题导致的不兼容:
1、采用静态编译、静态封装,把所需要的库直接集成于软件二进制 ...

我昨天看pcbsd应用的.pbi 安装(不知你体验过否)法有了和你一样的创意。。将各软件隔离安装,对于体验不稳定开发版应用,同一软件多版本号应用共存和避免依赖冲突大有好处。不过加上依赖体积有可能会很大吧。
Reply View the author
MattD
deepin
2015-08-21 01:16
#8
https://bbs.deepin.org/post/32058
我昨天看pcbsd应用的.pbi 安装(不知你体验过否)法有了和你一样的创意。。将各软件隔离安装,对于体验不 ...

这种封装方式早就有,不光有PC-BSD的pbi,Chakra也自己搞过bundle system,原理类似。
Reply View the author
ArthurDeepin
deepin
2015-08-21 02:08
#9
难得有人对这个问题看得更进一步,很多人都是只看着安卓可以一个apk搞定,反问linux行不行……
Reply View the author
hummerstudio
deepin
2015-08-21 02:52
#10
https://bbs.deepin.org/post/32058
谁来做这个统一性的工作,国家?开源的东西怎么做到统一,基本都是占山为王,谁的市场份额大,谁就是标准。 ...

那个经常在国产操作系统发布会上站台的中国工程院院士倪光南,不就是想做这个事情。但是没有看到后续!
Reply View the author
hummerstudio
deepin
2015-08-21 03:00
#11
https://bbs.deepin.org/post/32058
有两种方法可解决库版本问题导致的不兼容:
1、采用静态编译、静态封装,把所需要的库直接集成于软件二进制 ...

1.理论上都这么说,事实上好像没多少人这么做。桌面应用这么做真没什么大不了的,个人用户不在乎体积,怕的是麻烦。
2.不知难度多大。这个Docker到底是什么意思我看了好多文章也没整明白。是相当于隔离的沙箱,开发者按照docker的标准开发,只要用户电脑上安装docker,就能彼此不干扰的运行?
Reply View the author
hummerstudio
deepin
2015-08-21 03:01
#12
https://bbs.deepin.org/post/32058
事实上软件开源便能解决问题,由发行版方编译打包就行了,你说的这种方法确实非常适用于闭源软件,windows ...

Linux桌面要发展起来,肯定不能指望软件都开源!
Reply View the author
hummerstudio
deepin
2015-08-21 03:02
#13
https://bbs.deepin.org/post/32058
Linux要统一,很难

知难而上!
Reply View the author
hummerstudio
deepin
2015-08-21 03:03
#14
https://bbs.deepin.org/post/32058
问题看得倒是挺准,就是解决没那么好解决,因为当前不可能统一,只能做大自己,形成份额上的同一 ...

都统一了就类似于Android的生态了!都必须在自己的桌面环境上下功夫,否则没有差异化!
Reply View the author
hummerstudio
deepin
2015-08-21 03:04
#15
https://bbs.deepin.org/post/32058
linux基金会是不是可以做这些事,这个真的是开发者的拦路虎!

Linux基金会可不光是关注桌面领域!
Reply View the author
hummerstudio
deepin
2015-08-21 03:06
#16
https://bbs.deepin.org/post/32058
那个经常在国产操作系统发布会上站台的中国工程院院士倪光南,不就是想做这个事情。但是没有看到后续! ...

倪光南表示,应用商店实体公司的作用,就是通过推出统一的应用商店,引导国产操作系统的众多开发方修改各自的系统,适应应用商店的标准,从而实现不同版本的统一。http://it.people.com.cn/n/2015/0211/c1009-26547338.html
Reply View the author
hahahahahuo
deepin
2015-08-21 03:17
#17
https://bbs.deepin.org/post/32058
有两种方法可解决库版本问题导致的不兼容:
1、采用静态编译、静态封装,把所需要的库直接集成于软件二进制 ...

大概去年的时候QQ安装时还会安装VC++2005呢
Reply View the author
Comments
comzhong
2016-06-14 05:18
但是VC运行库每个版本可以全装上,也不大,装上就不用管了,Linux经常有卸载一堆,再装上一堆,鬼知道会出什么问题
hahahahahuo
deepin
2015-08-21 03:17
#18
https://bbs.deepin.org/post/32058
linux基金会是不是可以做这些事,这个真的是开发者的拦路虎!

linux基金会不会太在意外围
Reply View the author
hahahahahuo
deepin
2015-08-21 03:22
#19
https://bbs.deepin.org/post/32058
难得有人对这个问题看得更进一步,很多人都是只看着安卓可以一个apk搞定,反问linux行不行…… ...

AOSP应用在版本号不搭配的系统上都运行不了,CM开发的应用在非CM的ROM上也会出现问题,谷歌私有的应用那更是

什么安卓版本和系统版本都能用的国产应用,它设计时就没有严格遵循标准
Reply View the author
kaile
deepin
2015-08-21 03:34
#20
本帖最后由 zxciddee 于 2015-8-20 19:42 编辑

楼主看的很明白,想法很对但是不全面。

linux兼容性还有一方面就是依赖复杂,比方说我安装一个软件,经常会依赖很多文件,都是小文件,小软件包,有apt还好自动解决依赖。

但是有几个问题
1特别新的软件有可能依赖特别新的软件包,而apt还没有收录
2特别老的软件有可能依赖特别老的软件包,而apt已经放弃收录
3依赖很多情况不是1个2个文件,而是十几个几十个,非常复杂。只要有一个出问题就得手动解决依赖,手动解决过程中可能又出来了新的依赖,特别无语,特别无力。

解决方法
1根据28原则创建“基础依赖库”保证大部分的软件不需要解决依赖就可以安装,甚至可以不用apt。
2软件开发作者尽量根据“基础依赖库”编写软件,实在需要特殊的依赖可以将依赖内置到软件中,或者在安装方法介绍中说明需要安装的软件,原则是尽量简单。3“基础依赖库”的版本发布方式参照“.net”,即:v1 v2 v3....可以共存,5年后可以默认不安装的v1,10年后可以默认不安装v1v2。

简单理解就是,windows中安装软件有时候需要“.net vX,X”,所以当你安装完“.net”的所有版本,你就基本不会遇到依赖问题,不知道大家理解我的意思了吗?
尽管好像不满足*unx哲学,但是合适的难道不是最好的吗?


Reply View the author
1 / 4
To page
New Thread

Popular Events

More
国际排名
WHLUG