2019/10/30开源软件技术及发展趋势专题分析报告报告内容•开源软件简介•开源软件核心技术•企业开发和应用开源软件现状调查•开源软件存在问题分析及解决方案•开源软件发展趋势分析2019/10/30开源软件简介•定义•特点•发展历程•开源软件与闭源软件定义•开源软件促进会OSI(OpenSourceInitiative)对开源软件有着明确的定义,业界公认只有符合这个定义的软件才能被称作为开放源代码软件,简称开源软件(OpenSourceSoftware)。OSI对开源软件的定义一共有十个条款2019/10/30定义•1.自由再发布(FreeRedistribution)•2.源代码(SourceCode)•3.派生作品(DerivedWorks)•4.作者源代码的完整性(IntegrityofTheAuthor’SourceCode)•5.不能歧视任何个人或团体(NoDiscriminationAgainstPersonsorGroups)2019/10/30定义•6.不能歧视任何领域(NoDiscriminationAgainstFieldsofEndeavor)•7.许可证的发布(DistributionofLicense)•8.许可证不能只针对某个产品(LicenseMustNotBeSpecifictoaProduct)•9.许可证不能约束其他软件(LicenseMustNotRestrictOtherSoftware)•10.许可证必须独立于技术(LicenseMustBeTechnology-Neutral)2019/10/30特点•高质量•免费(零许可证费)•开放和自由•灵活可定制•公开透明•良好的学习平台2019/10/30发展历程2019/10/30时间事件1983年9月RichardStallman创建GNU项目,并在次年启动1985年10月RichardStallman成立FreeSoftwareFoundation1989年1月GPLv1发布1991年LinusTorvalds发布Linux内核1995年ApacheHTTPServer发布1997年EricRaymond发表《从教堂到集市》(TheCathedralandtheBazaar)1998年1月Netscape公司公开Netscape浏览器和Bugzilla的源代码,Mozilla开源项目启动发展历程2019/10/30时间事件1998年2月BrucePerens和EricRaymond等成立开源软件促进会即OSI1998年4月OpenSourceSummit举行,开源软件的提法开始流行1999年3月Apache软件基金会成立1999年11月SourceForge.net上线2001年1月Wikipedia上线2004年1月Eclipse基金会成立2004年11月Firefoxv1.0发布2005年5月ApacheHarmony项目成立,开始开发一个基于Apache许可证的JavaSE2006年11月Sun公司创建OpenJDK项目,并使用GPL许可证2007年6月GPLv3在激烈的讨论之后终于发布。发展历程时间事件2007年11月Google发布Android平台,并主要使用Apache许可证2010年美国国家航空航天局和Rackspace合作研发的OpenStack2010年美国国家航空航天局和Rackspace合作研发的OpenStack2011年6月21日LinusTorvalds发布了Linux3.0版本2013年12月13日Valve公司发布基于Linux的SteamOS操作系统,这是一个视频游戏控制台系统。2019/10/30开源软件和闭源软件2019/10/30闭源软件不开放源代码自由思想自由软件软件共享商业软件商业用途开源软件开放源代码开源软件核心技术•CollectiveIntelligence•开源社区•开源产品之语言•开源产品之开发平台•开源产品之框架和库•开源产品之服务器软件•开源产品之开发工具•开源产品之桌面应用CollectiveIntelligence•可翻译为群体智慧、集体智慧、集体智能•多种定义–GeorgePr:通过分化与整合、竞争与协作的创新机制,人类社区朝更高的秩序复杂性以及和谐方向演化的能力–维基百科:是一种共享的或者群体的智能,它是从许多个体的合作与竞争中涌现出来的。–我们的总结:是由组成群体的个人贡献出自己的知识、技能、经验,通过个体间的协作、灵感互动、相互启迪等共享机制,产生的优于任何个人的智慧。2019/10/30群体智慧特征•多样性–群体里的每个人都有一些独占信息;•独立性–群体内成员不会因为其他人人的意见而改变自己的意见;•民主性–成员的决策行为不会受到外在压力的强迫,而整个群体的决策则是由所有成员的决策汇聚而成。2019/10/30群体智慧作用•实现大规模的协作以解决复杂问题。•注重用户的广泛参与,充分利用群体智慧解决复杂问题。•大规模协作充分调动和利用个体的智慧,集思广益,极大地提高了解决问题的效率,降低了知识生产和创新的成本,使得各种复杂棘手的问题能够迎刃而解。•开源社区的各个成员,利用自己的知识与能力,对开源软件进行开发和利用,利用集体的智慧推动软件的更新和发展。2019/10/30开源社区•社区是开源运动的重要环节•开源社区又称开放源代码社区,一般由拥有共同兴趣爱好的人所组成,根据相应的开源软件许可证协议公布软件源代码的网络平台,同时也为网络成员提供一个自由学习交流的空间。由于开放源码软件主要被散布在全世界的编程者所开发,开源社区就成了他们沟通交流的必要途径,因此开源社区在推动开源软件发展的过程中起着巨大的作用。开源社区分类社区基础设施基础设施概述主页(HomePage)开源项目的门户,主要包括项目的罪行进展、项目文档,可用版本的下载链接以及其他一些项目相关的资源的链接。代码库(CodeRepository)开源项目的核心;匿名可读,用户可以随意下载查看开源项目的源代码,并可在遵守许可证要求的前提下使用代码。代码库的写权限归于核心开发人员拥有,以保证代码质量和项目管理。邮件列表(MailingList)互联网上最早的社区形式之一,用于各种群体间的信息交流和信息发布。对外是一个邮件地址,在内部则实际上维护了一组用户的邮件地址。所有发往邮件列表的邮件地址的邮件会被转发给列表中的所有用户。社区基础设施(续)基础设施概述缺陷追踪系统(BugTrackingSystem)用以帮助用户和开发者追踪和管理软件中出现的缺陷。提供了对缺陷的生命周期(状态)的管理。包括打开、已解决、关闭等状态。Wiki使用一种简单的标记式语言编写的网页,任何人都可以编辑、修改其内容。是开源社区的主要的文档编写方式。用户和开发者均可对文档进行完善和编写。IRC(InternetRelayChat)实时网络聊天系统,在·一个IRC服务器上,会根据讨论的主题建立不同的频道(channel)。项目托管网站名称简介SourceForge()目前世界上最大的开源项目托管网站,拥有10万多个开源项目、100多万的注册用户。GitHub()目前仅仅提供代码库的托管服务,包括强大的在线浏览代码的功能。使用Git作为代码库管理工具。它面向开源项目提供免费的服务,面向个人和商业用户提供收费服务。项目托管网站(续)名称简介GoogleCode()主要包括三个部分:GoogleAPI、Google开发的开源项目和项目托管Codehaus()目前提供的托管服务最强大的网站,它为开源项目提供代码库、缺陷追踪系统、邮件列表、Blog、文档管理系统和持续集成系统等功能。知识共享网站名称简介StackOverflow全球IT界最受欢迎的技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。Slashdot一个资讯科技网站。它每天都会更新在主页的新闻数次。网站使用者可以对公布在该站的新闻发表意见。在形式上,Slashdot可以说是blog的一种。所有的新闻都是由网站使用者自愿提供的。知识共享网站(续)名称简介CSDN是中国软件开发联盟(Chinesesoftwaredevelopnet)的缩写,是中国最大的开发者技术社区。开源中国社区国内目前最大的开源社区,除提供开源软件与资讯外,提供团队协作平台、代码托管、代码质量检查及项目展示云平台等功能。有稳定的核心团队维护更新,并定期组织线下的开源软件交流会,反向热烈。开源产品之语言产品名简介项目主页Python面向对象的动态编程语言一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,遵守GPL协议和RubyLicense。动态网页设计的脚本语言,也可以进行各种文本处理,甚至图形界面应用开发运行在Java虚拟机上的动态语言弱类型的解释型动态语言,常用于处理文本数据、系统管理开源产品之开发平台产品名简介项目主页Harmony开放自由的JDK实现专门为手持设备设计开发的软件平台及操作系统。用以开发和部署运行Web富客户端应用的开源集成平台。语言的Web应用开发平台,支持富客户端的互联网应用开发开源产品之开发平台(续)产品名简介项目主页EquinoxEclipse下的一个开源插件平台,提供符合OSGRiR4核心框架规范的OSGi实现。云计算平台,为公共及私有云的建设与管理提供软件基于ChromeJavaScript运行时建立的一个平台开源产品之框架和库产品名简介项目主页Spring开源的Java企业级应用程序平台纯Java的的Web应用框架,两个不同的发行版本:Struts1和Struts2对象-关系映射框架在Java平台上的典型代表多语言的存储层框架,支持Java、.Net和Ruby。优秀的前端JS框架,被应用于Google的多款产品中开源产品之框架和库(续)产品名简介项目主页SPARK开源的类HadoopMapReduce的通用的并行计算框架阿里巴巴公司开源的服务框架