热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开源在中国的现实意义

开源在中国的现实意义--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
  王开源的事情已经过去一段时间了,看过太多对这件事情的评论,这些评论或者是口出污言秽语的谩骂或者是狂热的非理性的力挺(在这件事的初期属于后者)。很多人对开源的评论也使得我这个投身于开源一年多的新人感到过迷茫。这件事过去好久,我一直在思索一个问题:开源在目前中国的意义究竟是什么,开源在中国这种大环境下究竟应该如何发展。

  开源在国外现在是火的一塌糊涂,Linux、Eclipse、Hibernate、Spring、Python、Ruby、MySQL等等或大或小的开源产品的发展大大推动了软件开发这个行业的高速发展,apache、sourceforge等开源社区中也是百花齐放,开源产品的开发者、推动者、推广者也得到了各自想得到的回报,更不用说使用这些开源产品进行开发的用户得到的开发效率的提升。反观国内开源的发展则相对滞后很多:违背Linux开源协议进行商业化Linux开发的厂家被开源社区骂的狗血喷头;屈指可数的几个开源爱好者组织的开源团队在个人的意志与信念的坚守下苦苦支撑着,很多因为种种原因中途夭折;商业公司对开源社区的几次推广行动也胎死腹中,比如CSDN的开源社区、Apusic的Operamasks;更有甚者打着开源的旗号却从事着根本与开源不搭边的事情。国内大部分人对开源更是有着很深的误解:“你凭什么叫人家开源,不就是想看看Windows的代码吗?”、“人家商业公司做出来的产品是你们几个技术疯子做出来的东西能比的吗?”、“把别人写好的东西拿来抄一抄改一改我的任务就完成了,钱就到手了,开源真好”、“我做的项目用了很多开源的东西,很牛吧!”。

  我认为开源对于整个软件行业有如下几个作用:使用开源产品搭建出的产品有更好的安全性和可控性;开源的产品能得到开发社区的广泛支持,从而使得产品能够成熟的更快;使用开源产品搭建出的产品有更好的安全性和可控性;开发、学习开源产品能够提升开发人员的技术水平。

  对于第一个作用这里不做过多解释,相信大部分人都能理解。

  开源产品是在全世界所有技术牛人的手下开发出来的,并且有千万双眼睛盯着它,众多的使用者可以完善它,这使得开源产品的成熟速度也十分惊人,Linux、Eclipse的成熟就是最典型的证明。各种开源产品层出不穷,相似功能的产品就有几十种甚至上百种,一个开源产品如果想要在这些产品中脱颖而出,不仅需要强大的技术做支撑,更需要非常强的商业化推广,否则做出来的产品只能成为少数技术人员把玩的玩物。如果没有IBM对Eclipse的巨额投入,Eclipse会发展成现在的规模吗?这些开源项目的后面通常都是有一个非常强大的开源基金会在做支撑。遗憾的是,目前国内还没有一家公司能够进行对开源社区如此大的投入,因此国内大部分的开源团队都是在自己开发着自己的开源产品,放到网站上供他人下载,然后梦想着自己的开源产品能够有一天会像Hibernate、Struts一样成为风靡全球的产品,但是如果没有强大的商业推广的话这肯定是一场白日梦。

  鉴于此,我认为目前国内的开源产品商业化的可能性是非常小的,因此开源的对于广大开发人员的意义更多的在于使用和学习,而且我们使用开源产品快速的搭建出满足需求的产品,这本身也是对开源的学习过程。这里提到的“学习”包含下面几个含义:学习开源产品的使用;学习开源产品的实现原理;学习模仿开源产品;学习开源社区的运营。

  (1)学习开源产品的使用:成熟的开源产品是非常优秀的,如果能够学会它们的使用,这对于开源人员来说就是一种很大的收获,因为通过使用这些产品就能认识到这些产品的功能、特性以及优缺点。

  (2)学习开源产品的实现原理:开源产品的代码都是开放的,我们可以深入产品的内部学习其实现原理,从而提高自身的开发水平。不得不承认的是国内开发人员的技术水平还是非常低的,通过学习开源产品的代码,就可以提高整体的技术水平,从这个层面来讲哪怕是非开源的源代码开放产品(比如Borland的VCL)对我们也是同样有帮助的。值得高兴的是,国内很多开发人员已经开始尝试着深入开源产品的内部去探寻这些产品的实现原理,并把它们的学习成果与更多人分享。开源对开发人员的提升也是显而易见的,最明显的就是微软开发社区中开发人员的普遍技术水平是低于Java等开源社区中开发人员的普遍技术水平的(注意,这里说的是“普遍技术水平”,请微软社区中的高人不要动怒)。中国计算机业的发展必须依靠核心技术,而提高技术水平是拥有核心技术的大前提!

  (3)学习模仿开源产品:弄懂了开源产品的实现原理以后就可以尝试模仿它们开发自己的产品,这和“重复造轮子”是没有关系的,模仿是学习他人技术的最佳途径。因此大家应该多多的“造轮子”,越多越好,哪怕造完就扔掉也是可以的。

  (4)学习开源社区的运营:国外很多开源人员都有在开源社区中开发的经验,因此他们对于开源这种协同开发方式就有更多的经验,因此我们可以加入他们的开发团队,可以帮他们做文档、界面的本地化,更可以参与产品功能的完善,从而学习他们的协作方式,更可以和他们做朋友,了解更多“外面的世界”。国内很多朋友都参与了开源产品的文档中文化、产品的推广等工作,这都是有深远意义的。我们CowNew开源团队参与JodeEclipse、DWPL等国外项目就是基于这一点考虑的。

  相信经过一段时间学习之后,我们的开发人员将有能力开发出世界级的产品,如果我们的民族企业能够得到长远的发展,并且在商业上帮助国产开源真正走向强大,从而使得中国的开源社区也能跻身“世界开源之林”!

  上边是我一点愚蠢的看法,仅供各位看管参考。希望开源能够在中国发展、壮大,希望中国早日成为软件强国!
推荐阅读
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 安卓及谷歌官网不容易上,在此整理好下载地址,这样就可以直接用迅雷下载了。Eclipse最新Mars版Eclipse(暂时还没被墙)Mac版:http:www.eclipse.org ... [详细]
author-avatar
手机用户2502863477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有