现在有大量的免费甚至开源证券的软件产品,如Java 等,还要不断的升级维护。他们公司不亏吗?

Adam Miller:使用开源产品是一种责任
发表于 16:10|
作者Dayle Parker
摘要:Adam Miller是Red Hat的一名工程师,参与过多个开源项目,业余时间主要用来维护开源项目。Red Hat和Fedora社区在很多方面给他带来影响,他对Red Hat和Fedora社区有着深厚的感情,Shadowman纹身就是很好的证明。
Adam Miller是Red Hat的一名工程师,他认为参与社区事务和开源项目给他的生活带来了极大地影响,所以他想和你分享开源给他带来的哪些真正意义,同时他也建议自己的同事多使用开源软件,以促使开源软件更好的发展。在本篇采访中,我们主要想了解一下是什么促使Adam Miller给公司的同事发邮件介绍为何要使用他们公司开发出来的开源软件,还有就是他对开源文化的变革持哪些看法!最近你向公司的同事讲述使用开源软件的责任,和贡献开源社区的重要性。那么是什么促使你实施这一行动的呢?在最近的开源会议上,Mac用户数量和其它用户数量比起来占据压倒性的优势,这引起了很多讨论,也催生了我下面的思维过程。在开源世界里基本上可以归结为这样一个事实:大多数的工作都是在开源类Unix操作系统上完成的,比如GNU/Linux、BSD、IllumOS等等。这些选项都是服务器端所使用的固定选择。我认为它们是近年来服务器市场份额所表现的有力证据。然而,台式机的销量迟早会达到我们现在还没达到的顶峰,在过去的几年里,已经有大量的用户选择放弃购买台式机,取而代之的是Mac,因为它提供了一个类Unix的工作环境以及“out of box”的用户体验。本质上我不认为这有什么错,但我确实认为我们亏欠一些开源社区的,扪心自问:是因为缺乏什么东西导致我们不想使用台式电脑的吗?尽管通常使用的GNOME3、Unity、Cinnamon、MATE、KDE等都是默认安装在台式电脑上的。从这里可以看出,我们应该以任何我们可以实现的方式贡献我们的力量。反过来将有助于改善目前的情况,也有助于帮助大家分享经验和感情,作为个体也是可以从中获益的。我只是希望大家不要忘记Red Hat作为一个老牌的开源企业,或者说有着很好的开源声誉的企业,其所有员工都应该记住开源能带来的好处是什么。你所参与过的开源项目有哪些?我参与的第一个开源项目也就是我之前每天都做的一个项目,我那个时候真的是全身心、真诚投入进去了,它就是OpenShift。OpenShift是在Apache 2.0许可证的前提下开源的。OpenShift 基于一个开源生态系统为移动应用,数据库服务等,提供支持。Openshift广泛支持多种编程语言和框架,如Java,Ruby和PHP等。另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和 Jenkins等。在爱好方面,非工作时间我花了大部分时间在Fedora社区里,我忙于处理各种事情,包括维护Fedora、Fedora EPEL、Fedora QA社区和各种Fedora特殊利益团体(SIGs)的程序包。我可以花大把的时间来谈论Fedora的相关事情,因为我喜欢集体社区和项目,还有一些神奇的技术。我对程序包、构建和自动化部署有着特殊的兴趣,所以我在空闲的时间里都会用在 、、和 &项目上,自下而上的为这几个项目贡献一些补丁。每一个项目都有它存在的价值,我会将这些项目推荐给更多的人,希望这些项目在以后能够成为帮助我们的新工具。对于开源方法,你有什么想法?开源方法,说白了就是一种鼓舞士气的精神:帮助社区凝聚所有成员的知识、创意和协作力量。我们有的时候会问:我们所贡献的那些东西最终会如何运作?这激发着我们真正的去搞明白那些代码的实际用途,以至于研究到最后的时候我们直接跟原创作者说:“嘿,我有一个更好的办法帮你实现功能”,然后开始对话。最后,我们用一个更好的方法解决了这事,并且受益的是每个人。“我们不拘泥于想法的可行度,不拘泥于制度上的框架,大家团结起来为社区提供正能量。”这对我来说是一个无比激动的概念。你怎么看待开源文化和开源社区这些年的变化?我认为开源文化在整体上还是很真实的,并没有出现什么虚假现象,但是其核心本身好像没有直接的变化。不过有一件事我认为改变了一点,那就是现在出现了很多大的分支,这些天出现了一些“高调”的项目,但我觉得这是社区增长和学校竞争思想的一个副作用情况下所导致的现象。虽然都有足够的开发人员和贡献者,但实际上它们的发展方向不一样。另一件改变了的事情就是人们讨论的话题在开发者、社区眼里显得越来越重要了。当人们在讨论LAMP堆栈是一个有前途的热门话题的时候,你就应该想到现在什么是最重要的,而且应该认定它将来一定会产生不一样的成果。你觉得我们现在还要以警觉的态度去培养开源社区的成长吗?在我看来这和我们的感知和洞察力有关。通常我听到的是:“我无法为开源项目做出贡献,因为我不知道如何写代码”。我真的希望这些人能明白,写代码只是众多贡献当中的区区一种方式而已。我一般情况下会参考“”页面关于这个问题的回复,因为我认为一个团队一起把事情做好是一个美妙的工作表现。软件领域以外的人们能从开源方法里学到什么?软件领域以外的人们能从开源方法里学到的知识太多太多了。我认为最容易被广泛接受的一点就是协作工作精神:一起找到有效方案,解决问题,加快项目快速发展。当然,用于解决这个问题的方法也应该公开出来,帮助在未来遇到困难的人创造解决方案。它的可以归结为这样一个概念:适用于各个方面的可以“避免无谓的重复劳动”的万金油方法。为什么将Shadowman这个标志纹在手臂上?跟别人打赌的吗?这不是跟别人打赌的。它是庆祝 Red Hat 社区成立10周年的一部分,我喜欢这个纹身所代表的意义。在我加入公司之前我就纹了这个Shadowman纹身。我现在是这个社区的主要成员了,Red Hat和Fedora社区已经在在很多方面塑造了我的生活,包括我在大学里的研究重点、我的职业、我的业余爱好,以及我全部的激情。这对我来说意味很不一般,所以我把它纹在手臂上。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章为什么很多java程序员都不愿意升级到最新的jdk? - 开源中国社区
当前访客身份:游客 [
当前位置:
java8发布有一段时间了,很多java程序员依旧使用jdk1.6或者1.7(我甚至还见过用1.5的),不愿意升级。我问过身边java的朋友和群的朋友为什么不升级,得到的回答大致如下:
1、为了稳定。
2、兼容性。
2、够用就行。
第一点我不太理解,为了稳定?这是怀疑Oracle的能力还是程序员对自己能力心虚?为何升级新版jdk后就会带来不稳定因素?
第二点我也不理解,新版jdk跟老版jdk在兼容性上会有问题?????这。。。。。。。
第三点我理解,因为程序员懒了,不想学新东西。
反观.NET这边,我在群里问过大家的项目都是什么版本的framework,回答都是4.0或者4.5的项目,连3.5的都没有。
这就蛮奇怪咧。
OSC的java程序员们,想必你们也是如此吧?来说一说?
共有23个回帖
<span class="a_vote_num" id="a_vote_num_
Java繁杂庞大的体系决定的,java的升级不是平滑的,升级带来的后果就是以前的代码无法运行
再加上IDE这玩意也挑JDK版本的厉害,比如用openjdk运行idea还会弹出警告,用jdk7新引入的泛型写法(List&&,直接菱形写法)直接报警告,说是不兼容jdk6以下版本,让你设置编译级别之类的云云
--- 共有 3 条评论 ---
: 造成这些原因可能正如你所说:java不能平滑升级。可又是什么原因造成java不能平滑升级的呢?
(2年前)&nbsp&
: 我觉得最主要的原因是每次升级都改动比较大。最致命的是直接废弃掉很多方法,再加上编译方式的改变,导致旧代码无法直接迁移。另外java现在有商业巨头oracle在维护,还有以前sun公司的拥护者不满oracle专政独权,从以前sun公司的分支中扯出来的openjdk维护,都值得信赖。
(2年前)&nbsp&
你说的这些,是否是因为java是开源的,没有人会对他负责而造成的?不像.NET有微软负责。
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
不能平滑升级,带来的后果就是往往不愿意升级,久而久之就成了今天这个局面了。
类似的还有python3不兼容python2,不能平滑升级。python3都出了这么多年了,可以看到现在生产环境依旧在跑Python2,大多数开发依旧使用python2,RHEL6/CentOS6操作系统上的软件仓库连python3都没有
--- 共有 11 条评论 ---
: 额。。。。方向偏了,这应该是讨论java的问题。
(2年前)&nbsp&
: 服务器EOL了,迁移到新的云平台上,我们决定换成最新的framework,下决心不背这技术债务了。
(2年前)&nbsp&
: 我只从实战的管理经验来看,2.0的工程想平滑到4.0,真心不大现实。现在部门里有个系统,500多张表,N万行代码。给他们的目标是升级..快年底了,.NET
team 的架构师大叔小伙儿在忙,每周给我report报告进度。不知道你说的“平滑”,是如何实现的?如果可以,不妨留个联系方式,我们可以出钱请你做兼职技术顾问
(2年前)&nbsp&
: 似乎是要修改web.config文件而已,不需要改动程序代码。不过为何你2.0的项目硬要用4.0来运行?又没有好处。
(2年前)&nbsp&
: 很遗憾,其实是不能直接运行在4.0上的。4.0的CLR是全新的。我们才用运行时目标版本激活策略,多多少少改一些配置。公司内部大量2.0开发的内部应用,都在纠结这个问题
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
大型应用,哪儿有这么简单升级的说法?楼主是学生吧?10年前,我还维护过一段1981年写的C代码呢,一个文件上万行...用的库,根本不敢升
--- 共有 1 条评论 ---
1、你没有回答。
2、没必要看不起学生吧,你不也是从学生过来的?
3、我不是学生。
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
新项目肯定是用最新的1.8u25~
--- 共有 4 条评论 ---
还好,跑了好久了,没发现任何问题
(2年前)&nbsp&
你们使用 有点超前呀,以现在jdk 和原来 jdk 版本的换算,现在的1.8u25 ,是 1.8u5版的jdk,这个比较新,没有经过10多次的升级,是不能保证,大部分的坑都没了的,一般我们选的版本都是13开始用的,这个出问题的概率就很小了
(2年前)&nbsp&
: 我们用的是openjdk 7
(2年前)&nbsp&
我问的很多人,他们不管是新项目还是老项目,都用一个jdk。那就是jdk1.6。
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
这个是技术人员本身导致的,对于自己没有实际用的东西,很多技术人员都有一种先天的忌惮,他们总会说这个技术我们是在,n+个 项目中使用了,没有问题的,升级遇到的风险你来承担吗,其实拿jdk 来收,字节码的兼容还是能保证的,每个class编译后都版本信息的,jdk 的变得庞大也是为了保证,兼容的,就像我们项目用的是 jdk7 ,找的开源库是1.5编辑的也一点都没问题的。
--- 共有 1 条评论 ---
赞同,我也觉得大部分程序员要么是懒,要么是对自己的能力心虚所以不敢升级到新的jdk。
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
java8 或许存在不稳定,不过我发现,有些是以前的代码写得不大严谨.在java8编译运行出错.例如,有些代码在java8编译运行抛出异常.
.NET立足于windows,所以很多都是与windows有关的,所谓升级更多的是为了windows的需要.
而java的人气很大.基本的实现已经都有了,还有很多的第三方library.所以升级对于java意义不大.
至于为什么.net的贪新,java的却恋旧?我想原因在于,他们的产品的客户需求不一样,.net的为了实现而实现.所以对新API有需求,二来第三方支持的又少. 而java致力于高端客户需求,很多东西都可以自己实现,或者从第三方找到.java8引入新特性更多针对于代码的编写,老程序员对其没什么兴趣.
--- 共有 1 条评论 ---
你说的有点道理。
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
新项目用新的,老项目,还是老老实实旧的,小版本升到最新,仅此而已。升级到最新,作为一个开发者,所有功能你得验证一遍,还得重新测试,才敢部署。否则哪有那么简单的事。
--- 共有 1 条评论 ---
态度谨慎固然重要,但是1+1=2这种都不太放心的话,那。。。。
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
我们项目还在用1.4的
--- 共有 2 条评论 ---
我觉得是否升级新版本这个要取决于升级之后给我带来了什么?所带来结果我相信对于每个人都不一样吧。
(2年前)&nbsp&
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
&&&&年轻人,你刚工作不久,做网站的吧,too young,too simple。 & &
&&&&我11年在移动的时候,维护着一个庞大的移动客服系统,这个系统是01年就开始的,部分业务是tomcat4 jdk 1.4 oracle 8的,而且还在不断加功能,每推出一个业务就要加一点东西。而且这个系统一直都在工作,频繁的被使用。
& & 这说明了什么?有些项目的历史远比你想的要久,历史沉积的东西太多,历史包袱也不轻。关键是他们现在工作的很好,扩展性问题不大,性能问题也不大,我为啥要升级?升级能给我带来什么好处?升级的人力物力成本谁出?你以为升级就是下载的新软件丢上去啊,小伙子,too young,too simple!配套的软件(包括操作系统)和硬件也要升级的。有些老服务器的硬件跑新的软件已经很吃力了。
& &单纯论代码本身,JDK的向下兼容性非常好,1.5的老代码放在1.7,1.8上没任何问题,但是就是没有必要升级。
& 最后,楼主不是对兼容性很吃惊么,能找出个新版和老版不存在兼容性问题的语言么?
--- 共有 5 条评论 ---
.NET framework的升级不会删除一些方法,只会把这个方法标记为已过时。同时给你一个连接,让你去学着用新方法,但如果你坚持用老方法,.net framework自然支持。
(2年前)&nbsp&
: 你确定?虽然我不用NET,但一般语言升级,都会或多或少抛弃甚至删除一些API和方法。自己写的代码可以改下,但是库呢?队友的呢?
(2年前)&nbsp&
: 到了2014年了,任何已经成熟语言和软件的新版本都不可能有大的性能突破了。能吸引升级的就是API了。那就得看API是否有吸引力。另一方面,还得看你的队友和对手。
(2年前)&nbsp&
就我目前的见识,.NET2.0的项目升级到4.0,不存在兼容性问题。
(2年前)&nbsp&
可能是我没说清楚,我说的“升级”是指新项目用新的jdk。
(2年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
为了多活几年 不想在没有意义的地方踩坑。。
--- 共有 1 条评论 ---
(2年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
妈她亲我的其它问题
类似的话题关于开源软件:你不知道的那些事儿(1)
关于开源软件:你不知道的那些事儿(1)
  1 开源是大势所趋
  随着计算机技术的发展,尤其是互联网技术和相关企业的兴起,开源软件在操作系统、编译工具链、数据库、WEB服务器、移动操作系统等各个方面已经成为主流。而且许多企业利用开源软件形成了独特的商业模式。比如谷歌的 Android 操作系统,从 2007 年开源发布第一个版本起,到今天已经发展到 4.1 版本,占据了智能手机操作系统一半以上的市场份额,谷歌也通过 Android 操作系统在移动互联网这一新兴行业中占据了领先和主导地位。再比如在服务器端广泛使用的关系型数据库 MySQL,在以开源软件和商业许可并行的模式下,得到了快速发展,并在 2008 年作价 10 亿美金由 Sun 收购(后者又在 2009 年被 Oracle 公司以 74 亿美金的高价收购)。相反,以前一直和开源软件做斗争的微软公司,却因为无法快速推出适应市场的 Windows Phone 操作系统,在移动互联网竞争中处于下风。为顺应潮流,微软也开始拥抱开源,比如向Samba项目贡献代码,放弃自己研发多年的大数据项目而选择 Hadoop为其大数据的核心等。
  显然,纵观 IT 行业这二十多年的发展,开源软件从黑客的理想之国,已经形成了一股推进计算机及相关行业不停进步的巨大力量。很多人可能尚未意识到,我们使用的电脑中运行 有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品(如电子相框)中也运行有开源软件,尤其是互联网服务器端软件,几乎 全部是开源软件。毫不夸张地说,开源软件已经渗透到了我们日常生活的方方面面。那么,开源软件到底什么,开源软件尤其是国内的开源软件及社区的现状如何, 发展面临哪些困难和问题?
  2 开源软件的基本概念
  在讲述国内开源软件的发展情况之前,我们先就开源软件的一些基本概念做一些普及。
  2.1 为什么会有开源软件?
  广义上讲,开源软件指所有公开源代码的软件,包括某些商业软件也可能是开源的。但我们通常所说的开源软件,是狭义上的,指任何人可以通过极低的成本 (如仅仅访问互联网而无需其他额外费用)获得该软件源代码的软件,也就是其源代码向公众开放。和狭义上的开源软件相对应的,就是那些不向公众公开源代码的 软件,通常就是商业软件。
  实质上,在计算机出现的最初年代,几乎所有的软件都是开源的。那时的计算机企业,主要是以销售硬件产品为主,软件几乎都是附送的,加上那时的软件规 模都不大,以源代码形式提供给用户还可以缓解一定的技术支持压力&&有问题由用户自己修改解决。所以,最初的软件几乎都是以开源的方式提供的。因此,对着 迷于计算机编程的工程师来讲,获得软件的源代码几乎是天经地义的事情。这样,当以微软为代表的企业开始实践纯软件产品的商业模式(核心思想是提供二进制可 执行程序的使用许可,而不提供源代码),就引起了许多计算机编程爱好者的不满:给我一堆二进制程序,我如何才能按我自己的想法改进程序?在这种背景下,真 正意义上的开源软件就自然而然地产生了。
  2.2 开源软件的发展历程
  开源软件的发展,和互联网的发展密不可分。真正有规模的开源软件,应该是从上个世纪 90 年代开始进入公众视线,也就是互联网开始兴起的年代。我们大致可以将开源软件的发展分为如下三个阶段:
    萌芽阶段(上世纪九十年代之前)。这个阶段主要以个人和大学为主,因为发布条件受限,大多数开源软件无法得到有效传播,而仅仅流传于互相熟悉的程序员和老师、学生之间。这个阶段的典型开源软件为 BSD 操作系统。
  以非盈利组织为主的阶段。这个阶段应从上个世纪九十年代算起,说起这个阶段,我们不得不提到 Richard Stallman 发起的自由软件基金会,还有 Apache 基金会等。前者发起的 GNU 项目(1983 年发起,九十年代后随 Linux普及),成就了 Linux 操作系统;后者维护的 Apache WEB服务器,在互联网上几乎占据了统治地位。
  以大型IT企业为主的阶段。这个阶段出现于 2005 年之后,以谷歌为代表的大型互联网企业,开始以各种方式发布开源软件,最为著名的是 Chrome 浏览器以及 Android 操作系统;当然还有 Intel、Nokia 等企业主导的 Moblin、MeeGo 等基于 Linux 的智能手机操作系统。
  2.3 开源软件许可证
  笔者看来,软件作者选择向公众开放源代码,其理由无外乎如下三种:
  第一,那些认为所有软件都应该以源代码方式发布的。如 Richard Stallman,他认为所有的软件都应该是开放源代码的,甚至为了建造一个理想中的全开源软件世界,创立了自由软件基金会,发明了 GPL 许可证,发起了 GNU 项目。
  第二,通过开源软件展示自己的软件设计、算法和编码水平,并期望获得他人认可的。大部分小型软件或者程序的作者,或者由大学主持和维护的开源软件,出于这种目的向公众开放源代码。
  第三,通过开源软件谋求获得广泛推广,并通过提供增值的产品或者服务来获得商业收益的。这通常是商业企业选择开源软件的原因。如 FireFox、MySQL、Android、WebKit 等属于这种情形。
  为了达到上述三种不同的目的,人们在现有软件著作权的法律框架内,发明了多种用于开源软件的许可证。这些许可证从法律上帮助对开源软件有不同诉求的软件作者,获得自己想要的结果。要想具体了解这些许可证的实质内容,我们首先需要更加深入地了解软件著作权。
  许多开发者对软件著作权只有一个初步的、模糊的认知。我们经常会在各种软件的启动画面或者关于对话框中刚看到类似&版权所有 (C) 2012 某公司;保留所有权利&的用语。这说明,软件著作权包含了很多权利,所以才有&保留所有权利&这样的说法。具体而言,软件著作权大致包括如下几个权利:
  署名权。就是署上自己大名的权利,向人们说明这是我的作品。这里的&我&,可能是个人,也可能是法人单位。
  修改权。就是是否可以修改软件,比如翻译软件界面中的文字。对非开源软件,就是是否允许你反编译软件并修改的权利。对开源软件来讲,就是修改其中可能存在的缺陷,或对一些代码进行优化、重构等等。
  复制权。就是将软件进行复制的权利。和图书类比,就是你能不能抄写和/或复印图书。
  发布权。就是将软件副本交给他人的权利,不管是收费的还是不收费的。
  对商业软件而言,这些权利都被保留,意思是什么呢?就是说,你不能修改,也不能复制,还不能随便发布给别人。那用户能做什么,唯一的就是安装和使用 这个软件了。当然,大部分商业软件都附带有一个《最终用户许可协议》,其中告诉了你能做什么,不能做什么。比如,你可以因为备份的原因复制这个软件。另 外,还定义了很多免责条款,比如,如果 90 天内软件的存储介质损坏,可以免费替换;如果因为使用本软件导致数据丢失或损坏,概不负责之类的。
  对开源软件而言,因为任何人可以几乎无成本获得软件的源代码或者最终程序,用户使用这个软件要是有了问题,都去询问作者,那作者就吃不消了。所以,开源软件也通常使用某个特定的许可证来约定作者以及使用者所承担的权利和义务。
  自由软件基金会制定的 GPL 许可证,应该是开源软件使用的各种许可证中最为严格的。为了区别于其他开源软件,Richard Stallman 将使用 GPL 许可证的开源软件称为自由软件。GPL 许可证的核心内容是:
  你可以随意复制和发布软件。如果以二进制方式发布软件,则必须能够让获得二进制版本的人,以不付出额外成本的方式获得其源代码。
  你可以随意修改源代码。一旦要发布修改后的软件,必须同时发布修改后的源代码。也就是说,修改版本也必须以 GPL 许可证发布。这就是 GPL 许可证被称为病毒许可证的一个最重要原因。
  如果 GPL 软件作为其他软件的一部分使用(后者称为 GPL 软件的衍生作品),不论是静态链接还是动态链接,衍生作品也要遵循 GPL 许可证。这是 GPL 许可证被称为病毒许可证的另外一个重要原因。
  无任何担保。就是说,使用 GPL 软件,出了问题不要找原作者,你需要自己负责。
  Richard Stallman 希望通过这样严格的 GPL 许可证,来建立一个所有软件均遵循 GPL 的理想软件世界。除了 Richard Stallman 所倡导的理想王国之外,还有许多个人和组织,以不同于自由软件的方式来发展开源软件。这些开源软件所使用的许可证相比 GPL 要宽松一些,或者很宽松。这些开源软件作者,通常属于本节前面所讲的第二、第三种人,所以他们使用的许可证有如下共同点:
  免担保,责任由使用者自负。
  随便复制和发布。
  不限制商用。
  这些许可证的不同点在于:
  Apache 许可证:如有修改,必须保留已有的版权声明,且必须包含新的版权声明。通俗理解,就是要保留原作者信息,也就是署名权。
  BSD 许可证:不允许在衍生软件作品中提原作者的名字,其理由是,因为你的修改可能污染原有代码,破坏原作品的品质。
  MIT 许可证:在衍生软件作品中,必须提原作者的名字;其理由是,原有代码作者应得到充分尊重。
  Mozilla 许可证(MPL):就原有软件所做修改,必须可以以各种可能的方式发布其源代码(包括使用 GPL 许可证),且应该有修改说明。
  除了上述许可证之外,还有一个广泛使用的 LGPL 许可证。该许可证最初是针对函数库专门制定的。为了避免类似 C 基础库这样的软件因为采用 GPL 许可证而让使用它的软件(衍生作品)成为 GPL 软件,从而定义了 LGPL 许可证。试想,如果 C 基础库也采用 GPL 许可证,那就失去了它本身存在的实际价值,因为其他任何非 GPL 软件都不能使用采用 GPL 的 C 基础库。所以,LGPL 定义,当 C 基础库这样的软件以动态链接的形式由其他软件使用时,这些软件就可以不遵守 GPL 许可证,甚至可以是商业软件。另外,本某种角度看,LGPL 和 MPL 本质上是一样的。
  当然,除了上面的各种许可证,还有的开源软件作者根本不关心保留什么权利,或者对其作品做什么样的约束,相反,这些作者开源其软件,就是为了&有 用&,任何人拿这种软件做什么,对原作者来讲,都是无所谓的。这种软件亦称为&礼物软件&,相当于作者放弃了有关软件著作权的所有权利,也就是所谓置于 &公共领域(public domain)&当中&&随你怎么用。
  2.4 为什么开源软件会得到快速发展并广泛应用?
  很多人不理解,既然作者这么大方地将源代码都公开了,只是为了&有用&,且不提供任何&担保&,看起来原作者是无法直接获利的,那为什么没有直接的利益驱动,开源软件却能够得到这么快速的发展和广泛应用呢?
  笔者初探其原因,大致有四:
    开源软件虽说不提供任何担保,但既然原作者愿意公开源代码,说明作者对代码的质量还是非常有信心的。实际上,开源软件的作者通常都是编码高手(俗称&黑客&),其质量甚至超过某些商业软件。
  开源软件因为其免费特征,能够得到大量用户的使用和验证,通过形成和用户(往往也是编码高手)之间的互动和交流,能够以最快的速度修复可能的缺 陷,改善软件设计。Linux 内核的发展就形成了一个以全世界内核高手为主的松散社区,通过快速迭代开发,加上其免费特征,迅速占据了原先由商业 UNIX 系统控制的服务器操作系统领域。
  因为任何人都可以得到其源代码,所以很多用户就可以自行修改其源代码,以满足自己的一些特别需求。
  因为开源软件的涉及面非常广,利用已有的各种成熟开源软件,任何具有一定实力的组织,均可在较短时间内形成一个基本成熟的软件平台,进而可和已有的商业软件平台进行竞争。谷歌的 Android 系统属于此种情况的典型。
  所以,尽管开源软件的发展历程并不是一帆风顺的,但基于以上原因,开源软件显现出了其强大的生命力。各种基于开源软件的成功商业模式,也为开源软件的发展注入了加速剂。有关围绕开源软件的成功商业模式,可见本文第 4 章。
  3 国内开源软件的发展及社区现状
  3.1 国内开源软件的发展简史
  国内开源软件的发展大致始于 1997 年前后。那时,中国第一个(局部)互联网(CERNET)刚刚建立不久,1995 年在清华大学建立的著名水木清华 BBS 就是开源软件。自那之后,Linux 内核以及 GNU 项目中的成百上千个开源软件突然展现在国人的面前。在这之前,国内软件开发者,几乎没有人会认为获得程序的源代码是天经地义的事情(写到此处,笔者再次感 叹文化和背景的不同所带来的认知差别)。但随着带有源代码的 Linux 操作系统随着互联网以及廉价光盘的广泛传播,当你能看到这些优秀的软件是如何设计和编写出来的的时候,我相信,大部分程序开发者都会和笔者一样&&那心情 岂止是&激动&两个字可以形容的?
  在这样的背景下,中国也出现了一些开源软件。最初由国人开发的开源软件,主要解决的是 Linux 系统的汉化问题,流传最为广泛的应该是可以显示和输入中文的伪终端应用程序 CCE。在 1998 年之后的两三年内,出现了如下三个开源软件:
  章文嵩博士开发的 LVS(Linux Virtual Server),后来被 Linux 内核收录,成为使用 Linux 操作系统搭建集群服务器的重要核心软件组件。
  当时的清华大学博士生苏哲开发的 Smart Boot Manager,是一种引导管理器,类似现在流行的 GRUB,主要解决引导多种操作系统的问题。苏哲后来主持开发的 SCIM 系统,被各种流行的 Linux 发行版收录,成为了 Linux 操作系统上提供多语种输入法支持的标准框架。
  笔者开发的&MiniGUI,后来由笔者创立的北京飞漫软件技术有限公司继续维护和发展,在功能手机、数码相框、工业控制系统和工业仪表中得到了广泛应用。
  上述三个开源软件,成为中国开源软件早期的代表作,在国际上具有较强的影响力,很多台湾同行也知道这些软件,提起来往往是赞不绝口。
  在此之后,国内开源软件的发展长期处于停滞状态,这和 2000 年左右 DotCOM 泡沫的破裂有一定的关系。DotCOM 泡沫的破裂,让许多梦想通过开源软件来创造商业奇迹的 Linux 发行版厂商很是受伤。比如,笔者曾经供职过的蓝点软件,在 NASDAQ OTCBB 板借壳上市,半年之内股价从 20 多美金跌到 0.2 美金,后于 2001 年贱卖。RedHat 等知名 Linux 发行版厂商也深受其害,另外一些抗跌能力不强的从事开源软件相关业务的企业更是一蹶不振,甚至关门大吉。
  DotCOM 泡沫的破裂,给很多支持开源软件的理想主义者浇了一桶凉水,开源软件的商业化发展步伐减缓,从而影响了国内开源软件的发展。2000年前后几年,以北京、 武汉等地的 LUG(Linux User Group)为代表的各类开源软件组织非常活跃,而从 2003 年开始,逐渐降温甚至消失。
  但是,国际上深信理想主义的黑客文化并没有因为 Linux 发行版厂商的商业化遇阻而停止发展,Linux 内核、GNU 项目、GNOME 和 KDE 等等软件继续向前发展。同时,2005 年后,又出现了如下在当前 IT 领域有着举足轻重影响力的几款开源软件:
  Mozilla 基金会(以 Mozilla 基金会下属 Mozilla 公司的成立为准)以及 FireFox 浏览器。Mozilla 公司通过 FireFox 浏览器获得了来自谷歌等公司的大量合作收入,从而实践了没有赞助也能自负盈亏的商业模式。
  WebKit 浏览器引擎。WebKit 浏览器是苹果 Safari 浏览器、谷歌 Chrome 浏览器使用的浏览器核心引擎。WebKit 其实是由苹果公司发起的开源项目,在早期 KDE 系统的 KHTML 和 KJS 两个子系统基础上发展而来。
  谷歌的 Android 操作系统。Android 操作系统的上层虽然是虚拟机和 Java 应用,但底层却使用了大量开源软件,如 Linux 内核、SQLite 内嵌式数据库、FreeType 矢量字体渲染库等等。
  显然,从 2005 年起,开源软件的发展从一个低谷重新引来了发展的高潮,而这次,与前述的第三个阶段吻合,即以大型 IT 企业为主导进行发展。在此期间,国内也出现了为数不多的一些开源软件项目,其中以清华大学陈渝副教授主持的 SkyEye 最具代表性。该项目旨在提供一个面向嵌入式软件开发和调试的 ARM 或其他架构的纯软件仿真器(虚拟机)。该项目持续活跃长达七年时间,吸引了许多来自海外的高手参与,是为数不多具有国际影响力,且充分体现了国际化协作、 分享的开源软件项目。
  与此同时,RedHat 以及国内的红旗等公司,也开始通过提供针对服务器的 Linux 定制版本而获得可观收入,之后,Ubuntu 这一在桌面系统上广泛应用的 Linux 发行版也实践了其成功的商业模式,占据了绝大部分 Linux 桌面发行版的市场份额。
  2008年金融危机后,传统企业为了降低IT的总拥有成本逐步使用Linux和开源软件,尤其是金融企业,世界上主要证券交易所如纽约交易所、NASDAQ、东京交易所、伦敦交易所等先后迁移到Linux。这标志着开源软件进入了不可逆转的发展通道。
  从 2005 年开始,国内的开源软件也开始进入上面所说的由大型企业主导的第三个阶段,参与开源项目的企业当中,最为活跃的是淘宝,接下来是新浪、百度、腾讯和华为 等。同时,随着&开源中国&等社区的兴起,个人主持或者参与的开源软件逐渐多了起来。根据&开源中国&收录的开源软件,当前已经有一千多个由国人开发或者 主持的开源软件。这和十年前相比,已经有了非常大的进步。有兴趣的读者可访问;了解。其中值得一提的开源软件有:
  TFS。TFS是一款由淘宝开发的分布式对象存储系统,于2010年9月开源,在淘宝它存储了几百亿张图片和交易快照。新浪微博已在生产系统中使 用TFS作图片等对象存储。淘宝承诺发布的开源版本与自身使用的版本保持高度一致,并同步更新,这为国内开源软件的发展起到了积极的推动作用,TFS已经 成为国内企业利用开源方式形成核心竞争力的典范。
  TAIR。TAIR 是一个高性能、可扩展、高可靠的分布式key/value存储系统,淘宝在2010年6月开源。在淘宝约有600台TAIR服务器广泛应用在Web服务器和数据库中间作对象缓存。国内的豆丁网等公司已使用TAIR。
  OceanBase。OceanBase是一个高性能海量数据库系统,由淘宝开发,于 2011 年 5 月开源。淘宝在其收藏夹等多项功能中使用该数据库,已经历实际应用的检验。
  RT-Thread。这是一个由国人主持开发的开源实时操作系统,曾获得&第六届中日韩开源软件竞赛&的技术优胜奖(其他两个技术优胜奖获得者为淘宝OceanBase 和红旗Qomo Linux)。RT-Thread 目前也获得了诸多商业应用。
  Linux Deepin。这是近几年发展起来的面向桌面的中文 Linux 发行版,由一群来自武汉的 Linux 高手发起并维护。
  ucore:2010 年暑假开始,陈渝博士组织清华大学学生开展教学用开源操作系统ucore的设计与实现,并直接用于清华大学的操作系统课程,学生可参考实验文档和 ucore源码通过实践逐步深入掌握操作系统。这相对国内操作系统旧有的教学方法有较大改变,获得了国内外操作系统教学领域专家的认可,并将在教育部的支 持下进行更大范围内的推广。
  3.2 国内开源软件的特点和问题
  但国内开源软件也存在很多问题,如缺乏重量级软件,缺乏持续维护和更新,质量一般,用户不多等等。另外,如开源中国创始人所言,国人所开发的这些开源软件,和国际主流开源软件脱节严重,绝大多数的状态是单打独斗。
  比如淘宝主导或参与的开源软件,大多数和互联网服务器后台、云计算相关,这些项目的主要用户是淘宝自己。因为门户之见,这些软件很难被其他的互联网 企业所使用,大家不停地&造轮子&而忽视了开源软件发展必须具备的&共享&、&协作&之精神。当然,这种情况正在改变,比如上面提到的淘宝 TFS 系统已被其他互联网企业使用,ucore 项目也得到了诸多国内、国外大学积极响应和支持。
  笔者希望国内的开源软件作者能够和国际主流的开源软件步伐保持一致,摒弃门户之见,要么加入国际化的开源软件,要么将自己主持的开源软件逐步国际化。这样,我们的开源软件才能得到源源不断的前进动力,也才能在国际化舞台上扮演更加重要的角色。
  3.3 新的力量
  但不论如何,国内大型 IT 企业参与开源软件本身就是一个良好的开端,将为中国开源软件的发展起到非常大的促进作用。
  与此同时,各种开源社区活动也越来越活跃,比如具有政府背景的&开源软件高峰论坛&和草根性质的&我们的开源软件&巡回展演等。在最近的&我们的开源软件&巡回展演中,参与介绍的开源软件多达几十种,参会人员众多,而这一切都是社区成员通过&微博&等方式发起和组织的。
  这表明,开源软件即将在国内引起新一轮的发展浪潮。
  4 开源我的软件?
  在高物价、高房价的今天,大部分人对此问题的第一反应是:&我就一刚解决温饱的码农,我开源,谁养我?&这问题,和我们在十年前推广开源软件理念时 遇到的问题几乎一样。但其实,这话已经大大落后于时代了!我们不仅仅可以通过使用其他人的开源软件赚钱,还可以通过开源自己的软件来赚钱。
  4.1 别人靠开源软件如何赚钱?
  在证明上述论点之前,我们先看看别人是如何利用开源软件赚钱的。靠开源软件赚钱的方式(经过验证的)无外乎有如下几种:
    双许可证模式。即在采取严格的开源软件许可证的同时(通常选择 GPL),给商业用户提供非 GPL 许可方式。这本质上是一种贩卖软件许可的行为,但开源软件带给开发者一个很大的好处,即传播迅速,快速迭代。笔者主持的 MiniGUI 项目就采用这种模式,在过去的五年当中,获得了几千万元的软件许可收费。当然,使用这个模式最成功的当属MySQL。
  基础软件采用宽松许可证,同时向基础软件的商业用户贩卖增值服务或者增强组件、开发工具等的许可。这种模式可用于类似 RT-Thread 这类的基础性软件上,RT-Thread 本身可以是开源且可无偿商用的,但其上的各种增值组件,如网络、文件系统、图形系统等,可以是商业软件。国外采用这种模式的以各类 CMS 系统为主。比如 Drupal 和 Concrete 系统,其基本系统是开源且免费的,但其上的许多插件、主题、模版等是收费的。有兴趣的读者可访问&;网站,其中还有&Marketplace(市场)&频道。
  混合模式,既贩卖工具等软件的许可,同时还向用户提供付费服务的模式。比如 Ubuntu Linux 发行版。
  成为平台型软件,并承载自己的互联网业务。这种模式在大型互联网企业中应用广泛。比如谷歌开发并开源 Chrome 浏览器,短短几年抢占了微软的很多市场份额,通过在 Chrome 中默认使用谷歌搜索引擎而获得极大的收入;再比如谷歌开源 Android,一方面为了遏制苹果 iOS 的增长势头,一方面通过预置 Google 搜索而获得了大量来自移动互联网的流量收入。
  显然,有了先驱们的成功案例,作为开源软件参与者,不论是企业还是个人,都可能名利双收。
  4.2 IT 企业为何要参与开源软件?
  IT 行业中的企业,即使是销售硬件产品的企业,也在不停地开发各种软件,同时也大量使用各种开源软件。对这类企业,开源自己开发的软件其动力是什么?
  作为企业,参与或者主导一个开源软件,其最为明显的动力应该是上述的第四个商业模式,即打造一个平台型软件。但是,就中国 IT 企业来讲,笔者尚未看到有此种实力,或者此种抱负的企业存在,毕竟,打造一个平台需要长期的投入,一般情况需要五年或者更长的时间。貌似中国没有一个企业 有这个耐心来投入五年这么长的时间在一个软件上。
  那么为什么企业还要参与到开源软件的开发中?笔者认为,谋不了大利就谋点小利,企业主导或参与开源软件,至少有如下几个好处:
  提高企业的美誉度。在利用开源软件的同时,也参与到开源软件当中,企业的美誉度会得到很大的提升。
  员工更有激情。因为自己的作品能够公之于众,虽然著作权本质上属于企业,但作为实际的编码者,可以通过开源自己的作品来获得额外的成就感和满足感。这对于稳定开发团队、提高开发人员的积极性会有很大的帮助。
  当然,也许过不了几年,中国也能出现实践第四种商业模式的大型 IT 企业,让我们拭目以待吧!
  4.3 个人开发者如何利用开源软件获益?
  如果你是一名开源软件的开发者,打算利用自己的软件开创一家软件公司,该如何做?第一,我们要确定好自己的商业模式;第二,为自己的开源软件选择恰当的许可证。
  如果决定选择双许可证模式,应选择 GPL 这样较为严格的许可证,这是这种商业模式能够成功的基础。当然,选择双许可证会阻碍产品在商业用户中的推广。尤其是对初生的开源软件来讲,显然是一种两难 的境地。MiniGUI 之所以可以采用双许可证模式,是因为在成立公司之前和最初的一段时间内,MiniGUI 采取的是 LGPL 许可证,之后在软件足够成熟的时候才改为 GPL 许可证,另外,MiniGUI 用于功能手机等系统中时,因为这种设备一般使用实时操作系统,缺乏应用 LGPL/GPL 许可证的技术条件,所以面向这种设备收取许可费也是天经地义的事情。MySQL 采用双许可证模式得以成功的原因,在于 MySQL AB 公司并不会对仅仅用于WEB服务器的 MySQL 商用行为收费,因为这种情况下,商业用户并不会发布 MySQL 的副本&&它只是在服务器上运行而已。
  所以,看起来上面提到的第二种、第三种商业模式是最适合个人开发者或者初创公司的商业模式,能够很快的速度推广和迭代软件本身,还能够确保有足够的 收入来保证下一步的发展。在这种模式下,应该选择较为宽松的许可证。但大部分开源软件作者,因为并不真正理解开源软件的许可证,所以采取了错误的许可证 (指在法律上是错误的)。比如 RT-Thread,一方面采用 GPL V2 许可证,一方面又承诺不会对商业使用收费。这其实没有解决根本的法律问题,也就是,使用 RT-Thread 开发的衍生作品,到底要不要遵循 GPL?这个问题和是否收费没有直接关系。要解决这个问题,其实很简单,采用类似 Apache、BSD 或者 MIT 许可证即可。有读者会问,那为什么不能采用 LGPL 许可证?就 RT-Thread 这样的软件来讲,采用 LGPL 和 GPL 没有本质的区别,因为 RT-Thread 的应用场合下一般不支持函数库的动态链接,这导致失去了适用 LGPL 许可证的技术条件。
  那么上面提到的最后一种模式,是否适用于个人开发者或者初创公司?笔者的答案是,这种模式是大公司的玩法,小团队或者小公司是没法做这类事情的。
  当然,一家软件公司的成败所涉及因素很多,不仅仅取决于产品和服务等技术因素,也取决于很多其他的因素,比如大的市场环境、政策因素等等。因此,真正拿自己的开源软件经营一家企业的并不多,更多人开发开源软件,还是因为个人兴趣,以及对获得业界尊重和名望的驱使。
  但真正能够获得业界尊重的开源软件开发者及其开源软件,其实也并不多。也就是说,要通过开发开源软件获得上面所说的&名&,需要开发者具有较高的开发水平和相关能力。这其中主要的能力有:
  好的选题。好的选题应该能够跟得上 IT 领域的前沿技术,最好避免重复造轮子的尴尬境地。
  较高水平的软件架构设计能力以及编码能力。既然开放了软件的源代码,那自然希望有人去看,并欣赏这些源代码。所以,拥有较高水平的软件架构设计能力、编码能力,是开源软件能够获得用户青睐的一大条件。
  较高水平的文档能力。除了编码之外,要让你的开源软件得到大量的用户,你还需要能够编写漂亮的文档,起码要能够撰写很好的安装指导说明文件。
  适度的宣传能力。不论好坏,适当宣传自己的开源软件,是获得公众认知的一个良好方式。宣传并不意味着需要花钱,你可以参加各种开源会议,或者在微博上进行宣传,或者通过一些开源社区帮助你来宣传自己的作品。
  适度的坚持。好的软件是打磨出来的,如果仅仅靠一时兴趣弄个软件并开源,并没有持续改善,那肯定会半途而废。
  当然,除了自己创作一个全新的开源软件之外,要获得上面所说的&名&,还有一个办法是加入到已有的知名开源软件的开发中,尤其是海外的知名开源软件开发中。你可以从帮助他们&汉化&软件开始,然后提交补丁,最后成为主要的开发者。
  5 大专院校应该成为开源软件的主力军
  一个有趣的现象是,很多开源软件其实就是作者在大专院校或者研究机构工作或学习时发起的,比如本文提到的三个国内早期的开源软件项目。甚至某些开源软件由特定的大学主持和维护,如 BSD 操作系统、PostgreSQL 关系数据库、Minix 操作系统等等。
  从国际视角看,开源软件的发展离不开一些知名大学的参与,BSD 和 MIT 许可证分别由加州大学伯克利分校和麻省理工学院定义,并由两所大学在其众多开源软件中使用,也被其他开源软件广泛应用。值得一提的是,苹果公司 Mac 操作系统和 iOS 操作系统,均使用了加州大学伯克利分校开发的 BSD 操作系统内核。
  从现实情况看,国内在各大公司工作的程序员们,除非因为供职单位支持,否则很难独立发起和维护一个大型的开源软件,但在大专院校和科研机构工作的老 师和学生,则有得天独厚的条件(主要是有大量的时间,并可能和科研课题和教学任务相结合)来发起和持续维护一个开源软件项目。清华大学陈渝副教授主持的 SkyEye 和 ucore 两个开源项目就是典型的案例。笔者希望国内有更多的大专院校和科研单位(尤其是教师)能够积极参与到开源软件的发展当中,并成为国内开源软件的主力军。
  6 政府和开源社区应该做什么?
  说实话,笔者并不认为政府在开源软件的发展中应该起主导作用。政府要做的就是制定公平、合理的规则,促进相关法律法规的完善。
  从法律上讲,你编写了一个程序,你就自动获得这个程序的软件著作权。在实际操作中,法律要求进行软件著作权的登记,就如同房产证一样,你非要有个政 府颁发的证书才能得到法律的承认。我们暂且不论这个做法是否合理,也不论登记收费这事儿,你需要了解的是,在中国,如果你打算遵循 GPL 许可证开源你的软件,你就无法登记著作权!
  当然,众所周知,中国的知识产权保护力度不够,不仅仅阻碍了软件产业的发展,也阻碍了开源软件的发展。
  还有,在中国,要注册一家非公益性的 NGO 组织(国外各种软件基金会都是这类组织),是非常非常困难的。这导致截止今天,中国没有任何一家支持开源软件为己任的非营利性基金会组织。
  政府所要做的,就是撤销那些违背历史发展大潮的法规和规定,并建立完善的知识产权保护制度,加强对盗版等的打击力度,教育国民尊重他人劳动成果,而不是仅仅停留在口头上。
  政府,把上面这些问题解决好了,比直接参与推动开源软件什么的,要强许多倍!比如,加大知识产权的保护力度,一方面可以让商业软件在传统贩卖软件使用许可的商业模式下得到良性发展的机会,也可以让一部分人转向使用免费的开源软件,进而促进开源软件的发展。
  当然,在现阶段,通过从财政中拿出来一些钱,设立一些奖励基金之类的东西,给开源软件的作者以一些奖励,也许是更有效的途径。
  开源软件本就应该是以松散、自组织的形式开发和发展,开源社区的存在,为开源软件开发者和使用者提供赖以生存的土壤。开源社区可以是网站、论坛,也可以是松散的交流、展演等。当然,开源社区第一步要解决的问题就是自己的生存问题。
  笔者的建议是,开源社区应该尝试在现有法律框架下,以有限责任公司的治理结构来做国外开源基金会所做的工作。通过这样一种方式,可以有效避免无法注 册 NGO 组织的问题,然后从企业(尤其是那些大型互联网企业)当中募集捐款,通过赞助一些开源项目,逐步推进开源软件社区的良性发展。
  另外,国内开源社区还需要从使用者社区转向开发者社区,为开发者参与开源软件提供便利,如建立类似 GitHub/SourceForge 那样的开源软件托管站点,为开源软件项目提供邮件列表、论坛、博客服务等等。
  7 结语&&给那些仅仅使用开源软件但不做贡献的企业
  将开源软件和商业结合,不管是在自己的项目中使用开源软件,还是靠自己的开源软件来赚钱,都无可厚非。关键是,我们需要尊重开源软件著作权的拥有者,按照开源软件所采纳的许可证办事,只有这样,开源软件才能得到长足发展。
  通常,开源软件的作者发布开源软件,是希望获得最多用户使用的,在此基础上,作者要么会获得业界的追捧而一夜成名,要么获得一定的商业利益。所以,从某种角度上讲,使用开源软件本身就是对开源软件的一种支持。
  但是,这并不意味着你可以随意使用他人的开源软件。合法使用开源软件的前提,就是遵守开源软件的许可证规定的各种义务。
  当然,更有积极意义的方式是,将使用开源软件中遇到的问题或者修正、增强代码提交给开源软件的作者,帮助其改善作品。其实,这是任何使用开源软件的企业都能做到的。
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&

我要回帖

更多关于 开源中国 的文章

 

随机推荐