开源与云计算

本文讲的是开源与云计算,【IT168 资讯】几年来我一直担心开源运动可能会遭受Kim Stanley Robinson在“Green Mars”中精辟论述的问题:“历史的浪潮比我们做得还要快。”创新者被抛在后面,他们曾经改变的世界拿着他们的主意向着意想不到的方向跑了。
在“开源模式的转变”和“什么是Web 2.0” 这些文章中我认为Internet作为一个非私有平台主要构建在开源软件之上,它的成功有可能会导致在云计算领域一种新的封锁。自由和开源许可都是基于软 件分发方式,当软件不再需要分发而只在网络平台上运行时自由和开源许可证意义何在?当在线企业形成竞争优势后我们又如何保护创新的自由?这些企业通过用户 创造的巨型数据库形成自己的竞争优势,用户用得越多这种优势越强,从而对后来者形成不可逾越的门槛。
在过去几年里针对Web 2.0和云计算的开源活动正在激增,我已经清楚地看到开源概念在网路时代重组的迹象。比如这次会议上像“超越REST?通过XMPP PubSub构建数据服务”、“BigData云计算”、“Hypertable:开源、高性能可扩展数据库”、“支持Open Web”以及“用Hadoop和EC2处理大数据”这样的分会场场爆满。(由于波特兰会议中心的防火要求,很多会议没能让所有感兴趣的人都参加。Brian Aker关于Drizzle的演讲非常受欢迎以至他不得不讲了三次!)
仅仅“关注”云计算不是关键。关键是要再一次找到在新的形势下如何使开源继续发展。很重要的是认清开源的成功有几个关键元素:
1.许可证要允许和鼓励再发布、修改乃至发展分支;
2.一个体系结构要使程序能被作为组件在任何可能的地方重用,以及可以被扩展,而不是被替换来提供新功能;
3.低门槛,让新用户轻松上手一试。
4.低门槛,让开发人员构建新的应用与大家分享。
这些还远不全面,但可以让我们来思索。如上所述我不认为我们已经找到某种许可证能允许分支发展Web 2.0和云应用,尤其是这些应用形成的封锁是数据带来的,而不是没有开放代码。然而,已经可以看到迹象,(像Yahoo! Boss)企业已经开始理解在云计算时代没有开放数据的开源仅仅是一半开源。
但是开放数据从根本上被云计算中的效能计算想法所挑战。Jesse Vincent——他搞出一些史上最好的骇客T恤(还有RT)一语道破:“Web 2.0就是数字化的佃农租种地主的土地。”(我查了一下发现似乎是Nick Carr在2006年发明了这个说法!)如果这对于Web 2.0成功企业是事实的话那对于作为基础结构的云计算就更是事实了。我还记得Microsoft Windows Live副总裁Debra Chrapaty的话“未来在某人的平台上作为开发者就意味着你根植于这个基础结构。”纽约时报把带宽提供企业称为OPEC 2.0。云计算平台上多大程度会是如此?
这就是为什么我更认同通过点对点途径分发internet应用。Jesse Vincent在这次开源大会上的讲话“Prophet:走出云计算之路”描述了一个联合同步系统;Evan Prodromou的“开源微博客”介绍了identi.ca,这是一个联合的、开源的生活流应用方案。
我们可以对开放数据和开放服务畅所欲言,但坦率地讲更为重要的是要认识到有多少可能的事是被大家使用的系统体系结构把持着。可以想一下,比如为什么 PC只能带动一个二进制免费软件的产业,而Unix却可以产生一个开源软件的生态环境?这不仅仅是意识形态的问题;Unix分散的硬件体系结构需要源代码 以便用户在自己机器上编译应用程序。为什么WWW上产生了那么多独立信息提供者而像AOL和MSN这样的集中网站却步履蹒跚?
请注意:所有作为服务的平台(从Amazon的S3和EC2、Google的AppEngine到Salesforce的force.com,更不 要说Facebook的社交网络平台了)与AOL有更多的相似之处,而不是过去十五年我大家所知道的internet服务。我们将用十年时间回到集中的模 式去?可互操作的internet应该是一个平台而不是哪一个厂商的私人禁区。(Neil McAllister描述了多数平台作为服务合约是多么片面。)
所以我给出我的第一个建议:如果你关心云计算的开源,请在那些设计为联合而不是集中控制的服务上构建项目。体系结构从来都是战胜许可证的。
但是点对点体系结构并不像开放标准和协议那样重要。如果服务要求互操作,竞争就会被保护下来。无论微软和Nescape在当年的浏览器大战中如何想去控制Web,均以失败告终,因为Apache坚持开放标准。这就是为什么说上周开源大会上成立的Open Web Foundation有重要的意义。我们要保证的不仅仅是Web上开源的软件,还有开放的标准,它能确保抢占了统治地位的厂商不见利忘义。
我期望未来几年里发展的“internet操作系统”将要求开发人员不要再将应用看作终点,而是要将应用作为组件。比如为什么每个应用都要创造自己的社交网络?社交网络难道不应该是个系统服务吗?
这不是“道义”上的呼吁,是战略建议。任何领域中第一个提供构建适当地开放、可重用的系统服务的厂商将快速发展。目前有很多重点放在低层平台子系统上,像 存储和计算,但是我一直相信这样一个发展的操作系统中很多关键的子系统是数据子系统,比如身份信息、位置信息、支付、产品目录、音乐,等等。而且最终这些 子系统将要适当地开放和可以互操作,从而开发人员可以直接构建数据密集型应用,而无需自己去组织应用需要的所有数据。John Musser称其为可编程Web。
请注意我说的是“适当地开放”。Google Maps肯定不是开源的,但是它已经足够开放了(和此前任何Web地图服务比较)以至于成为整整一代新应用的关键组件,这些应用不再需要自己的地图信息。 programmableweb.com上的一个总结显示Google Maps支持了差不多90%的地图mashup。Google Maps是私有的,但是是可重用的。判断一个API是否开放一个关键原则是看它是否支持那些不是建立在该API之上的服务,而且是否可以在Web上分发。Facebook的API支持Facebook上的应用;Google Maps才是真正的可编程Web子系统。
所以,即使云计算平台本身是私有的,它上面运行的软件可以不是。Rightscale的Thorsten von Eicken在他的讲话“扩展到云计算”中指出,几乎所有云计算平台上的软件都是开源的,一个简单的原因是私有软件许可证没有支持云计算部署方式。尽管开源协议不能防止云计算提供者的封锁,但至少允许开发人员在云计算中部署软件。
谈到这里有一点是重要的,承认即使是私有云计算平台也提供了开源的一个关键益处:降低了进入的门槛。Derek Gottfried的讲话”用Hadoop和EC2来处理大数据“很好地展示了这一点。Derek描述了他如何用一张信用卡、权限以及骇客技巧就可以将纽约时报过刊在线档案放到网上让大家免费访问。开源是要鼓励创新和重用,Web 2.0和云计算也可以服务同样的目标。
开源的另一个好处——买之前先试试,病毒式营销——对于云计算提供厂商也是可能的。在一次风险投资中我问那个公司如何避免高昂的销售成本(尤其是企业软 件)。开源通过构建免费用户组成的管道来解决这个问题,公司接下来可以向其销售后续的服务。云计算的答案不是那么好但毕竟有答案:一些应用一定数量的实例 是免费的,再多的实例则要收费。这种商业模式失掉了一些病毒式营销,将成本从终端用户传到应用提供商,但它有一个开源没有的好处,它提供了更有力的付费服 务升级渠道。只有时间能证明开源或云计算谁是更好的分发方式,但是很清楚的一点是二者在这方面都比传统的私有软件进步许多。
总结一下,在我们得到所有答案之前还有很长的路要走,但正在前进。不管那些我们看到的Web 2.0和云计算中封锁的可能性,我相信开放和互操作的益处将最终成为主流,我们将看到一个由合作的程序组成的系统,它们不属于同一公司,一个 internet操作系统就像是在PC体系结构上的Linux,由无数软件组成。那些对internet操作系统持怀疑态度的人称我们正在失去一个真正操 作系统的控制层次。我提醒他们今天Linux中很多软件在Linus写了内核之前就存在。正如“72个城镇组成了洛杉矶”,今天的Web是一个操作系统内核的72个子系统。当我们最终找到了内核最好是开源。

原文发布时间为:2009-06-17
本文作者:IT168.com
本文来自云栖社区合作伙伴IT168,了解相关信息可以关注IT168。
原文标题:开源与云计算

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

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

相关文章

c/c++连接mysql数据库设置及乱码问题(vs2013连接mysql数据库,使用Mysql API操作数据库)...

我的安装环境: (1)vs2013(32位版) (vs2013只有32位的 没有64位的,但是它可以编译出64位的程序) ; (2)mysql-5.7.15(64位) vs2013中的设置(按步骤来,顺序不要乱) (1)首先在vs2013中新建一个控制台程序 Mysq…

leetcode542. 01 矩阵(bfs/dp)

给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0 bfs代码 class Solution {int[][] res;public int[][] updateMatrix(int[][] matrix) {int[][] dirnew…

react本地储存_如何使用React和本地存储构建freeCodeCamp的配方框

react本地储存by Edward Njoroge爱德华尼约格(Edward Njoroge) 如何使用React和本地存储构建freeCodeCamp的配方框 (How to build freeCodeCamp’s recipe box using React and local storage) I completed my first edition of the Free Code Camp recipe box project on May…

调用接口返回500_公交卡余额查询接口开放使用啦!

API说明本API返回数据仅支持JSON格式且会对中文进 行unicode 编码,JSON格式返回数据基本格式如下:{"errCode": 0,"errMsg": "OK","data": {}}其中 errCode 表示请求状态,0表示请求成功, …

stark组件开发之组合搜索基本显示

数据的获取,上一篇,已经有了!然后就是,如何进行展示的问题。到了展示这里,又有了新的问题, 因为从数据库,取得的数据。 分为 queryset 和 tuple 两种数据结构。tuple 中,只是字符串。…

美国安全厂商在云安全上的最新进展

本文讲的是美国安全厂商在云安全上的最新进展,【IT168 资讯】优利系统公司日前推出了一系列云产品和服务,并且着重强调企业创建私有云,公有云或混合云工具的安全。  Unisys Secure Cloud是优利系统公司推出的一种管理云服务,承诺…

hessianphp java_hessian 在PHP中的使用

一、hessian是什么?看到这个单词我还不知道怎么读,音标是[hes]读黑森。Hessian是一个轻量级的远程的数据交换工具,使用简单的方法提供了RMI(远程方法调用)的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议&…

leetcode1025. 除数博弈(dp/数学)

爱丽丝和鲍勃一起玩游戏&#xff0c;他们轮流行动。爱丽丝先手开局。 最初&#xff0c;黑板上有一个数字 N 。在每个玩家的回合&#xff0c;玩家需要执行以下操作&#xff1a; 选出任一 x&#xff0c;满足 0 < x < N 且 N % x 0 。 用 N - x 替换黑板上的数字 N 。 如…

100万用户服务器_我的应用在一个月内如何增长超过100万用户

100万用户服务器by Assaf Elovic通过阿萨夫埃洛维奇 我的应用在一个月内如何增长超过100万用户 (How my app grew by over 1M users in one month) 只需要这种简单的每周方法和耐心。 (All it took was this simple weekly approach and patience.) Building and promoting a …

原生支付url参数错误_小程序支付

下载微信JSAPI支付的 SDK : https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php.zip &#xff1b;解压后放在extend 文件夹下&#xff0c;命名为wepay下载你的商户证书&#xff0c;放在extend/wepay/cert/ 文件夹下面。自行将 extend/wepay/example/WxPay.Config.p…

Android清理设备内存具体完整演示样例(二)

版权声明&#xff1a; https://blog.csdn.net/lfdfhl/article/details/27672913 MainActivity例如以下: package cc.c;import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.List; import android.app.Activity; import a…

java图片合成视频_使用JAVACV把图片合成视频

使用JAVACV1.2把图片合成视频&#xff0c;直接上代码。自己mark一下&#xff0c;也希望能够帮助更多的人。package test;import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;import java.io.File;import org.bytedeco.javacpp.avcodec;import org.bytedeco.java…

NPOI导出Excel

首先在官网去下载NPOI&#xff0c;把dll引用到项目中&#xff0c;然后获取列表调用下面的方法就可以导出 后台代码&#xff1a; /// <summary> /// NPOI导出Excel /// </summary> /// <param name"dt"></param> /// <param name"fil…

leetcode1028. 从先序遍历还原二叉树(dfs/栈)

我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处&#xff0c;我们输出 D 条短划线&#xff08;其中 D 是该节点的深度&#xff09;&#xff0c;然后输出该节点的值。&#xff08;如果节点的深度为 D&#xff0c;则其直接子节点的深度为 D 1。根节点的…

react jest测试_如何使用Jest和react-testing-library测试Socket.io-client应用程序

react jest测试by Justice Mba由Mba法官 如何使用Jest和react-testing-library测试Socket.io-client应用程序 (How to test a Socket.io-client app using Jest and the react-testing-library) Testing the quality of real-time Socket.io-client integration seems to have…

统计学会用到python吗_统计学学的统计软件深吗(例如Python)普通一本统计学大一不知道该干什么?...

统计学的话&#xff0c;不考虑把基础课和专业课好好学一学嘛&#xff5e; 大一的话数分高代几何已经占了很长时间啦&#xff0c;多刷刷题&#xff0c;把绩点和排名搞得高一点是重中之重嘛&#xff5e;再说学习语言的事儿&#xff5e; 要说日常使用&#xff0c;那还是更推荐pyth…

枚举转中文,通过反射方法与描述的方式获取

示例&#xff1a; 有人为了显示中文&#xff0c;这样定义枚举吗&#xff1f; publicenum TimeOfDay { 上午, 下午, 晚上 }; 这样定义&#xff0c;很别扭&#xff0c;特别是在使用的时候&#xff0c; 比如&#xff0c;this.Time TimeOfDay.上午; 而…

Java语言最新实用案例教程_Java 语言实用案例教程

基本信息书名:Java 语言实用案例教程出版价格&#xff1a;48元作者:常玉慧, 王秀梅出版社&#xff1a;科学出版社出版日期&#xff1a;2016-10-1ISBN&#xff1a;9787030497383字数&#xff1a;387000页码&#xff1a;235版次&#xff1a;版装帧&#xff1a;平装开本&#xff1…

(转)Java随机数

1 随机数的三种产生方式 本章先讲解Java随机数的几种产生方式&#xff0c;然后通过示例对其进行演示。 广义上讲&#xff0c;Java中的随机数的有三种产生方式&#xff1a; (01). 通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。(02). 通过Math.random()…

leetcode105. 从前序与中序遍历序列构造二叉树(递归)

根据一棵树的前序遍历与中序遍历构造二叉树。注意: 你可以假设树中没有重复的元素。例如&#xff0c;给出前序遍历 preorder [3,9,20,15,7] 中序遍历 inorder [9,3,15,20,7] 返回如下的二叉树&#xff1a;3/ \9 20/ \15 7代码 /*** Definition for a binary tree node.*…