搜尋
首頁資料庫mysql教程陆首群:坚持开源软件创新之路 走双重模式_MySQL

  文/中国开源软件推进联盟主席 陆首群

  为了发展开源软件,提高其市场竞争力,必须坚持走开源软件独特的创新之路。

  两种共生技术

  人们常常陷于一个思维误区:“开源软件是由全球志愿者集体开发的,遵循开源许可协议,其全部源代码是开放的,任何人均可自由获得”,而“全部源代码的开放也表示其全部技术是公开的。”他们不明白,开源软件不能再停留在其早期的自由的“理想王国”里,仅供“黑客”、“玩家”们当“玩艺”;开源软件要取得持续发展,必须探索并形成自己的商业模式,惟有具备商业模式的开源软件才是成熟的,才能处理好如下矛盾,即:既不违反开源许可协议,公开全部源代码;又能不公开自己的专有技术,保守自己的商业秘密。事实上,具有商业模式的开源软件,其技术创新并不完全表现于开放的源代码之中,它还表现在与源代码无关的工程化实现技术(即专有技术和商业秘密)之中。这就是说,开源软件的全部技术是由:以开放源代码所表征的公开化技术,与不公开的工程化技术两部分组成;或者说由这两部分技术组成开源软件的共生技术。所谓工程化技术,是在开源软件已完成了其公开技术(即全部源代码或全部技术性能)的开发过程的基础上,服务于产品化或商业应用,尚需解决的后续技术,它主要关注于:改善操作稳定性,优化计算效率,增强灵活扩展性,提高产品质量,催化产品成熟度。工程化技术是一种实现技术、优化技术、隐性技术,主要表现为技术诀窍(Know-How)或熟练技巧(Skill)、工程经验、系统底层技术的把握等隐性知识方面。

  开源软件的工程化技术主要由两部分构成:(1)在开发过程中,有些与设计思想、原理、实现机制(包括算法)有关的隐性设计技术;与各软件模块之间的协同、耦合、调用等相互依赖关系有关的实现技术(包括实现细节);开源企业(服务商)的“内核分支”发行版的源代码与由Linus Torvalds负责开发和监护的官方(Official)“内核主线”版本的源代码之间偏差程度的把握能力。IT评论家Matt Asay指出,人们可以得到Red Hat公司企业级Linux发行版的全部源代码,但它直接交付用户使用的二进制版本(即所谓“ready to go”版本)并不是这些源代码编译的结果,其中存在着一些差异(关键要把握差异的程度),这就是商业秘密。(2)在产品化或应用过程中,为增强开源软件的增值效应,对各软件模块进行包装/配置/集成,以及剖析并改进相应的软件系统(Profile)所涉及的隐性技术。

  举国外开源软件“Ubuntu”的例子来分析:Ubuntu作为Linux386个发行版之一(有桌面版,也有服务器版)是非常优秀的。发展迅猛,受人欢迎,其开发创新机制确有过人之处。Ubuntu为何发展如此之快,干得如此出色呢?我认为其中一个重要原因是Ubuntu利用了国际上最大的非盈利的开源社区Debian的人才和资源。所以有人说“Ubuntu是基于Debian开发的版本”,“Ubuntu是Debian的副产品”,确是如此。但Ubuntu认为“Debian的过于宽广庞杂”,它在Debian资源上进行剪裁、移植和再创新,达到“少而精”的目的。现在随着Ubuntu的发展,它并不想与Debian兼容,也不愿参加Debian的联合体。

  最近Ubuntu自己认承:Ubuntu的发布版在产品稳定性等性能方面尚有待于改进,它还未通过用户认证。这使我联想到Ubuntu的开发创新机制可能还存在一些问题,他们中不少人具有“崇尚自由开放,摒弃封闭专权的理想主义”,因此他们“集体开发”开放技术的能力可能有余,而“自主开发”工程化技术的能力可能不足。

  很多执行双授权许可协议模式的开源软件,在其层次结构(Stack)中可能嵌入某个层次的闭源软件,或可能附加某些闭源的组件模块,这些闭源软件实际上就是私权软件,其中全部技术(不光是工程化技术)都是不公开的,并将完全依赖于自主开发创新。

  双重创新模式

  与一般企业的私权软件创新模式不同,开源软件首先采用由志愿者进行“集体开发”、“合作创新”的新模式,这种创新模式实行“源代码开放”、“技术公开”;但是仅靠这种模式还不足以开发出开源软件的全部共生技术(即不能开发不公开的工程化技术),也不足以向市场推出优质高效、操作稳定、技术更趋成熟、竞争力更强的开源软件产品。实际上,开源软件针对开发工程化技术,还需要另一种:“自主开发”、“自主创新”、“具有自主知识产权”的创新模式来跟进和补充。开源软件的双重创新模式,即“集体开发”、“合作创新”与“自主开发”、“自主创新”两种模式是互补的、互相衔接的、不可分割的;也可看作开源软件开发创新过程的两个阶段。

  近年来国内企业开发并向市场推出一批开源软件产品,取得了长足进步;但某些企业还沿袭旧的封闭的开发模式和机制,他们在“社区版”上进行剪裁、移植或者进行简单修改,属于自主开发创新的成果还不多,他们基本上还处于学习、模仿阶段。国际开源社区曾多次反映,国人在开源软件“集体开发”、“合作创新”活动中,向社区提交自己修改、创新的源程序代码行(到被吸纳)尚属凤毛麟角,以致有人认为:国人尚未能大量进入这个开发创新模式的核心圈之内,而且从这个衡量开发创新人员资质水准的统计数据来看,国人尚有差距。

  两种开发机制

  为了加快中国开源软件的发展,需要建立开源社区,形成社区开发和企业开发两种互相支持、互为补充的开发机制,社区开发主要是创新,企业主要开发工程化技术,促使产品更加稳定、优化。

  在开源社区,具有“集体开发”、“合作创新”、“技术公开”特征的创新体系,是建立在自由开放的互联网平台上的,很多创意通常自下而上来自底层志愿者。在这个创新体系中,能够广泛吸收全球广大志愿者的智慧,经常产生大量思维碰撞,并往往撞出不少耀眼的思想火花,经常迸发出创新点子,在技术上有所突破,但也常常伴随着不够系统、不够稳定、不够成熟的现象。开源社区的创新活动需要有开源领袖(或大师)以及一批核心骨干的支撑,他们在社区负责对志愿者提交的软件包,进一步作“选包、打包、集成、测试”循环的创新活动并实施资源管理。在开源社区创新体系之外,还需一个后续的企业创新体系与之互为补充,企业创新体系具有“自主开发”、“自主创新”、“自主知识产权”(技术不公开)的特征,它是建立在企业内部开发部门或企业局域网平台上的,其创新的任务是向市场推出满足用户需求的产品,计划通常自上而下,开发者是企业专业技术队伍,企业的创新活动需要有经验丰富的资深人士(包括系统架构师)及一批核心骨干的支撑(最好具有参与社区开发创新的经历并与之保持良好的互动接口)。他们在利用开源社区创新成果的基础上,重点做工程化、产品化、系统化、完善化、稳定性和性能优化的创新工作,在攻克工程化技术方面进行自主创新。

  产品平台和生态系统

  对于开源软件,孤立地开发或推出一个产品(发行版)是不够的,必须形成围绕该产品平台的生态系统,即要把大量软件(特别是应用软件)移植到这个产品平台上来;该产品要能预装到一些必要的硬件体系结构中去;要能与众多外围设备匹配衔接。而移植、预装、匹配是需要做大量测试、修改以及“再开发”工作的,涉及成百上千个企业协同工作,需耗费大量人力、物力、财力和时间。为做到这一点,首先必须开发出在全球能进入“主流”的产品,否则要吸引全球广大企业、社区的支持,共同来营造一个生态系统是不可能的。当然在营造生态系统过程中,不能用纯技术观点来看待这个问题,在争取广大企业、社区支持时,特别要争取拥有丰富资源和影响力的跨国公司的支持,为此我们要做好协调工作。

  还必须指出,“分散的低水平重复”很难使开发出来的开源软件在全球能够占居“主流产品”的地位,为此加强国内联合、国际合作是十分重要的。

  开源架构和开源产品链

  开源软件的LAMP架构(即L-Linux操作系统,A-Apache开源服务器或其他开源中间件,M-MySQL或Postgre开源数据库,P-PHP或Perl、Python脚本语言)具有简易性、低成本和执行灵活性等特点,当“在线交易进程(OLTP)”在LAMP架构的解决方案中取得成功,有力地推动了这个架构的发展。LAMP架构的崛起,与IBM、SUN主导的J2EE架构(Java编程语言)和微软主导的.Net架构(C#编程语言)形成了三角鼎立的竞争态势。

  针对各种信息化应用解决方案,在开源软件LAMP架构上形成的开源产品链,需进行集成、测试、优化的开发创新活动;从实际需求出发,有时我们也要推出开源和闭源产品混生的产品链,而在推出这样的产品链之前也需要进行相应的开发创新活动。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL索引基數如何影響查詢性能?MySQL索引基數如何影響查詢性能?Apr 14, 2025 am 12:18 AM

MySQL索引基数对查询性能有显著影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL:新用戶的資源和教程MySQL:新用戶的資源和教程Apr 14, 2025 am 12:16 AM

MySQL學習路徑包括基礎知識、核心概念、使用示例和優化技巧。 1)了解表、行、列、SQL查詢等基礎概念。 2)學習MySQL的定義、工作原理和優勢。 3)掌握基本CRUD操作和高級用法,如索引和存儲過程。 4)熟悉常見錯誤調試和性能優化建議,如合理使用索引和優化查詢。通過這些步驟,你將全面掌握MySQL的使用和優化。

現實世界Mysql:示例和用例現實世界Mysql:示例和用例Apr 14, 2025 am 12:15 AM

MySQL在現實世界的應用包括基礎數據庫設計和復雜查詢優化。 1)基本用法:用於存儲和管理用戶數據,如插入、查詢、更新和刪除用戶信息。 2)高級用法:處理複雜業務邏輯,如電子商務平台的訂單和庫存管理。 3)性能優化:通過合理使用索引、分區表和查詢緩存來提升性能。

MySQL中的SQL命令:實踐示例MySQL中的SQL命令:實踐示例Apr 14, 2025 am 12:09 AM

MySQL中的SQL命令可以分為DDL、DML、DQL、DCL等類別,用於創建、修改、刪除數據庫和表,插入、更新、刪除數據,以及執行複雜的查詢操作。 1.基本用法包括CREATETABLE創建表、INSERTINTO插入數據和SELECT查詢數據。 2.高級用法涉及JOIN進行表聯接、子查詢和GROUPBY進行數據聚合。 3.常見錯誤如語法錯誤、數據類型不匹配和權限問題可以通過語法檢查、數據類型轉換和權限管理來調試。 4.性能優化建議包括使用索引、避免全表掃描、優化JOIN操作和使用事務來保證數據一致性

InnoDB如何處理酸合規性?InnoDB如何處理酸合規性?Apr 14, 2025 am 12:03 AM

InnoDB通過undolog實現原子性,通過鎖機制和MVCC實現一致性和隔離性,通過redolog實現持久性。 1)原子性:使用undolog記錄原始數據,確保事務可回滾。 2)一致性:通過行級鎖和MVCC確保數據一致。 3)隔離性:支持多種隔離級別,默認使用REPEATABLEREAD。 4)持久性:使用redolog記錄修改,確保數據持久保存。

MySQL的位置:數據庫和編程MySQL的位置:數據庫和編程Apr 13, 2025 am 12:18 AM

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL:從小型企業到大型企業MySQL:從小型企業到大型企業Apr 13, 2025 am 12:17 AM

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?Apr 13, 2025 am 12:16 AM

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中