细数开源历史上的九个重大事件

本文按时间顺序回顾了开源历史上的九大重要事件,包括Usenet的出现、GNU计划的发起、386BSD操作系统的发布等,这些事件对开源软件的发展起到了关键作用。

源文来自:http://blog.jobbole.com/entry.php/85

开放源码(开源)的精神在于使用者可以使用、复制、散布、研究和改进软件。这可以追溯到20世纪60年代,至今已有半个世纪了。伯乐在线-职场博客的这篇文章将列举开源历史上的九大重要事件。

细数开源历史上的九个重大事件

   虽然本文不是专门对开源产品,但还是说到了一些,因为它们在开源发展的进程中有着巨大的影响。

   下面这份名单是按时间顺序排列。因为这个话题涉及方面比较广,您可能并不认同这份名单,这几乎是不可避免的。如果您有补充,请在原文评论中说明。


   1980年 - Usenet(即“新闻讨论组”)

Usenet logo

   也许这个开头就有争议,但开源的发展一直就离不开合作。借助Usenet,全球的开发人员可以轻松合作并共享软件。这要是放在以前,简直就是异想天开。

   Usenet是建立在互联网的顶层结构,不过当时还没有“互联网”这个概念。从多方面来说,Usenet是当今互联网论坛的先驱,它比万维网早整整十年。



   1983年 - 理查·斯托曼发起GNU计划

GNU logo 128

   1983年9月27日由理查·斯托曼发起GNU计划,它是一个针对开源和自由软件的大型合作工程,成就了开源和自由软件在今日的繁荣昌盛。1985年理查·斯托曼又创立了自由软件基金会来为GNU计划提供技术、法律以及财政支持。

   随着时间的推移,GNU计划产生了不计其数的开源软件,GNU通用公共许可证(GPL)也随之诞生。这时候的GNU软件中就差一个OS内核尚未完成。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。



   1989年– 386 BSD操作系统

FreeBSD logo 128

   尽管BSD Unix操作系统已经开源多年,并且拿到了第一个开源许可证(BSD许可证)。但可惜的是,因为它和AT&T UNIX操作系统共享基础代码和设计,必须要有AT&T的许可才能使用。

   1989年William和Lynne Jolitz开发新的BSD系统,在1992年他们发布386BSD操作系统(也称Jolix),最终解决了那个问题。这是第一个完全自由开源的BSD版 本,独/立于AT&T许可证。BSD有很多种衍生版本,比如:FreeBSD, NetBSD and OpenBSD。

   由于法律纠纷等诸多原因,同为自由软件的BSD并没能像Linux一样广泛传开来。


   1991年 – Linus Torvalds创建Linux

linux logo 128

   Linus Torvalds最初是不满意赫尔辛基大学教学所用的Minix操作系统,决定自己开发一个类似的系统(原本打算叫它Freax)。完成之后,他在 Usenet(Usenet的巨大作用不仅在这体现出来了)上发布。那时的GNU操作系统计划,真可谓是“万事俱备,只欠Linux”。随着二者的结合, 史上第一款完全自由开源的操作系统终于面世了。

   如下是1991年Linus Torvalds在comp.os.minix新闻组上发布的消息:
   “ Hello everybody out there using minix-
  I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. ”


   1993年 – 红帽的成立

redhat 红帽 logo 128

   有人会说:“说错了吧,红帽明明是在95年成立的”。对的,红帽是在95年成立,但它的前身ACC公司是在1993年成立的。

   红帽,围绕自己的Linux系统,提供Linux整合服务,是同类开源企业中规模最大的。它向世人证明,免费内核,照样可以高赢利。1999年,红帽在华尔街上市的第一天,创下华尔街历史上首日收益最高纪录。


   1994年 - MySQL的启动

mysql logo 128

   在1994年,Michael Widenius和David Axmark两人着手开发MySQL,并于1995年发布第一个版本。

   经多年发展,MySQL已成为开源数据库解决方案首选,被大量公司和网站广泛使用,比如:Facebook和维基百/科。2009年,全球的MySQL安装数已有1千1百万。

   MySQL也和红帽一样证明:开源照样可以做大生意。2008年,Sun10亿美元收购MySQL AB公司。

   1996年 - Apache称霸互联网

Apache logo 128

   Apache的HTTP服务器向世人证实了,一个开源产品是如何做到主宰市场的。Apache最初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发,从Apache 2.x 开始不包含任何NCSA的代码。

   Apache的HTTP服务器,让用户充分体验到开发源码软件的稳定性、可靠性和可定制性。在2005年11月的时候达到接近70%的市场占有率,虽然该数据后来有所下降,但在短期内其霸主地位还是无法撼动。


   1998年 - Netscape的浏览器开源

Firefox logo 128 火狐

   在和微软的浏览器争夺战中,Netscape的收费策略不敌微软的免费策略,再加上其他因素,最终败阵。1998年Netscape决定将其浏览器开源,并成立开源社区Mozilla。

   虽然Netscape陨落了,但没有它,就不会有Mozilla;没有Mozilla,也将没有FireFox。Firefox的影响力,我们都知道的。

flock logo 128

   补充一点,好像很多朋友虽然知道Firefox,但不知道Mozilla还有另一款基于Firefox开发的浏览器--Flock。Firefox比 Flock更占用资源。比如打开同一网站,FF占用120M内存,而Flock只用80M。另外,只要能在FireFox上安装的插件,都能在Flock 上安装。本人现在默认的浏览器就是Flock。


   2004年 - Canonical公司发布Ubuntu

ubuntu logo 128

   2004年10月20日,当南非富翁马克·舍特尔沃斯创立的Canonical公司,发布其首个基于Debian的Linux操作系统Ubuntu时,很 少有人能够预料这个系统能有这么巨大成功。Ubuntu出色的桌面系统,使其迅速成为最广泛使用的Linux操作系统。

 

 

下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节点间最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始点到最终点的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空间树。 树 T 被构建为子集树或排列树,在探索过程中,每个节点仅被赋予一次成为扩展节点的机会,且会一次性生成其全部子节点。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节点,并将与该扩展节点相邻且可通行的方格加入至活跃节点队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节点队列中提取队首节点作为下一个扩展节点,并将与当前扩展节点相邻且未标记的方格标记为 2,随后将这些方格存入活跃节点队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节点队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
源码来自:https://pan.quark.cn/s/a4b39357ea24 在VC++开发过程中,对话框(CDialog)作为典型的用户界面组件,承担着与用户进行信息交互的重要角色。 在VS2008SP1的开发环境中,常常需要满足为对话框配置个性化背景图片的需求,以此来优化用户的操作体验。 本案例将系统性地阐述在CDialog框架下如何达成这一功能。 首先,需要在资源设计工具中构建一个新的对话框资源。 具体操作是在Visual Studio平台中,进入资源视图(Resource View)界面,定位到对话框(Dialog)分支,通过右键选择“插入对话框”(Insert Dialog)选项。 完成对话框内控件的布局设计后,对对话框资源进行保存。 随后,将着手进行背景图片的载入工作。 通常有两种主要的技术路径:1. **运用位图控件(CStatic)**:在对话框界面中嵌入一个CStatic控件,并将其属性设置为BST_OWNERDRAW,从而具备自主控制绘制过程的权限。 在对话框的类定义中,需要重写OnPaint()函数,负责调用图片资源并借助CDC对象将其渲染到对话框表面。 此外,必须合理处理WM_CTLCOLORSTATIC消息,确保背景图片的展示不会受到其他界面元素的干扰。 ```cppvoid CMyDialog::OnPaint(){ CPaintDC dc(this); // 生成设备上下文对象 CBitmap bitmap; bitmap.LoadBitmap(IDC_BITMAP_BACKGROUND); // 获取背景图片资源 CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pOldBitmap = m...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值