`
dwbin
  • 浏览: 15636 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

开源软件的一些想法

阅读更多
从工作到现在陆陆续续的接触到了很多不同的开源软件,也就是些形形色色的框架,包括出名的包括不出名的,有成功的也有一直默默无闻的。

如今咱也做开源了,有些东西不吐不快。

首先开源软件的目的:

对于作者而言存在什么目的?出名?当然有那么点,但是不是全部,你为什么写一个框架呢?我是这样的,慢慢的熟悉了一些设计模式之后逐渐发觉自己在写代码的时候不断地重复这些代码和设计,这种重复到了一定程度之后我就开始觉得繁琐,于是乎在某天找个时间抽象出来,作为开源软件出现了,当然也是一种标榜,标榜自己达到了什么样的程度。

当然也有不是基于这样的考虑的开源软件,比如我在写dbutil的时候,并不是想替代什么或者因为数据库代码写的太多了,而是因为各种数据库的ORM框架实在太烦了,他们的配置已经超过了我能忍受的范围,也许开发人员有各种工具自动生成所有的代码,但是维护这些东西的时候往往的为了一个小小的变动需要修改几处甚至于十几处的代码和配置,这样的效果实在让人难以忍受,于是乎就想能不能把ORM的细节屏蔽掉,因此产生了这个dbutil,完全屏蔽掉数据库ORM的细节,使用一种约定的方式进行对照而不是通过配置文件进行解耦。

说了这么多,还没有说到重点,开源的目的是什么?交流么?看起来不是那么美好,这种交流是一种单向的信息交流,绝大多数人只能提交bug,只有极少数的人在维护和交流。

其实开源的目的是主导,就是为了主导某种方向,在这点上面struts 1就特别成功,spring也特别成功,而hibernate则陷入了大众口水的汪洋大海。

当然如果我们熟悉ROR的话,ROR则是一种绝对的成功。

第二,开源软件的形态。

我觉得这是一个需要大谈特谈的重点,作为一个框架他的重点需要是什么?是简化开发,强化代码的稳健性,而不是增加配置的复杂性和学习曲线。

很多东西在成为了一种风俗之后就彻底的变化掉了,比如spring,本来作为一个bean容器提供的很多功能是非常有用的,但是随着项目的增大和各种功能的要求,spring变得越来越臃肿,配置文件变得复杂而且难以控制,每次一些细小的变化都需要一个熟悉spring的人员来进行操作。但是设想一下如果所有的代码都是由一个涉及良好的架构师在做的话会有什么样的效果呢?仔细想一下,如果没有spring只有简单的java代码,每处改动都不涉及架构的改动,每次功能增加只需要进行简单的实现和继承等等,这样的代码维护起来相对于交给spring进行管理我觉得还是方便的多的。

当然并不是说我们的spring不够强大,spring给我们提供了很多实用的东西,但是我觉得spring已经渐渐地偏离了原来的方向,也许spring的目的是一个一站式的解决方案,但是spring和很多我们普通的开发人员越走越远了。当然如果学习曲线下降的话,那么一切还是可以挽回的。

这也就是我要讨论的开源软件的形态的问题,开源软件必须以一种简单,微小的形态出现,我的意思不是说jar包小,而是说配置文件小,学习的曲线变低。比如我开发dispatcher的初衷就是实现类方法到url的直接映射。当时有个朋友在学习struts,在他被struts的配置文件搞的有点晕的时候我给他看我了我做的东西,然后该兄弟就反问我一句,这个不是java原来就有的么?呵呵,也就说学习曲线基本是零,因为这是一种大多数人的思维方向。简单微小,符合大众的思维方向。

当然会有很多人讨厌这种简单和微小,想象一下一个项目如果有大量的配置,那么维护起来是不是需要更多的人呢?比如使用了spring那么下次在选择人选的时候是不是会坚持找精通spring的人呢?这样保证了两点,第一spring的市场不会萎缩,第二就业人员的市场也会越来越大,只要spring越来越复杂越来越臃肿,就会有越来越多的springer出现。

但是,我或者说我们烦了。我总觉得很多东西是可以被忽略掉的,工作的机会如果我们把事情做得简单了那么将会促进很多东西的进步,然后会有更多更好的东西出现,当然还有更多的工作机会。

第三,开源软件的出路

这个是我所关心的,因为自己也想从事开源,很多大的开源软件现在我想主要是从事技术支持,但是我们的出路还不是很明确,而且以无限降低学习曲线和维护代价为目标的开源软件,真的不知道出路在何方了


分享到:
评论
1 楼 wangking717 2010-11-03  
用配置方式进行解耦,确实很灵活,但是增加了复杂性,学习成本就高。。如LZ所说,用约定俗成的东西,那么大家就不用关心内部实现,更多关心的是业务逻辑,这样不是很EASY有趣么。
LZ的dispatcher已经看过了,很受启示,DBUTIL还没看,不会用,希望LZ能把项目DEMO给出来,会用了后,提出一些更好的意见。

相关推荐

    开源软件在煤炭企业信息化中的应用

    叙述了开源软件的发展情况,及开源软件在软件市场中占有的比例和企业应用现状。结合实际观察情况对开源软件在煤炭企业信息化过程中遇到的问题进行了探讨,并对开源软件未来发展提出了一些看法。

    开源图形处理器(GPU)Nyuzi.zip

    这标志着第一次的团队采取了一个开源的GPU的设计和运行的一系列的实验,看看不同的硬件和软件配置会影响电路的性能。根据Miller的说法,其结果将有助于科学家们做出自己的GPU计算能力和推到一个新的水平。“作为一个...

    Rhema STH:免费的开放语音和听力障碍的开源软件-开源

    我们现在正在发布此软件,因为我们希望它会鼓励更多有才华的开发人员和设计师投入他们的专业知识,并使其在没有任何语言和区域性障碍的情况下成为可行的想法,从而对所有4.16亿残疾人士有用。没有任何费用。

    Pyramid 3D:开源3D建模软件-开源

    这是一个用于3D建模的开源软件。 基本上,它是在2005年开发的,为我在国立德拉戈马诺夫大学(乌克兰基辅)的硕士文凭论文提供了软件支持。 由于某种原因,该项目被冻结,最后我为数学的一个硕士学位论文辩护。 但是...

    开源项目管理工具 Blumine.zip

    最近开始按自己的想法来开发一款项目管理工具,因为我发现找不到符合自己要求的类似软件。 Redmine 很有名,但我并不喜欢。 经过半个月的奋斗,BluMine基本可以使用了。同时为了研究Amazon EC2,就把BluMine部署了...

    LinusTorvalds自传

     对自由软件/开源软件的看法,对自由软件/开源软件主要领导人的映像  对软件版权的看法,展望软件产业的发展  芬兰、美国的一些风景、民俗  虽然其中一些观点值得磋商,但仍然有相当的借鉴意义,相当值得一读...

    Physic Research Tools:Python,物理学,PyQt,软件,数据采集,光谱学,UV-开源

    作为物理研究所的计算机技术人员,随着时间的推移,需要创建不同的软件来解决日常情况。 在这个项目中,我将在 Python 2.7 中添加我正在编写的小程序,为实验室中每天出现的一些问题提供解决方案,例如与某些设备或...

    chatwoot:开源实时聊天软件,可替代Intercom,Zendesk,Drift,Crisp等。

    一个简单而优雅的实时聊天软件对讲,Zendesk,Drift,Crisp等的开源替代品。 Chatwoot是开源的全渠道客户支持软件。 Chatwoot的开发始于2016年。该业务未能成功,最终于2017年倒闭。在#Hacktoberfest期间,维护人员...

    Wekan:开源看板-开源

    Wekan 是一个完全开源且免费的协作看板应用程序。 看板是组织事物和想法的理想工具,使用 Wekan,您可以免费且私密地获得它——只需在您自己的计算机或服务器上安装 Wekan。 Wekan 可在所有主要平台上一键安装:...

    p2p-sip:Python 中的开源点对点互联网电话 (P2P-SIP) 软件

    #P2P-SIP 该项目旨在使用 Python 编程语言中的会话启动协议 (P2P-SIP) 实现开源对等互联网电话软件。 新增:项目描述已从 39peers.net 网站移至此页面点对点系统本身具有很高的可扩展性、容错性和针对灾难性故障的...

    SimaPro Connector-开源

    该项目的想法是创建一个工具,即连接器,以通过COM界面访问生命周期评估(LCA)软件SimaPro。

    project-ideas:自由和开源软件项目构想

    自由和开源软件项目构想想法存储在这里: 如果您希望进行任何项目实施,请将票证分配给自己,然后将其移入“执行中”。

    开源ERP项目Gooderp_Addons.zip

    开阖软件发起的开源ERP项目如果你有一个苹果,我也有一个苹果,彼此交换后,你我还是一人一个苹果,但是如果你有一个想法,我有一个想法,彼此交换后,你我就都有两个想法,三个人呢?一百个人呢?使用openobject...

    dManage:用于管理学者的开源软件

    #dManage 用于管理学术活动的开源软件。 #Initial Ideas up 现在我们正计划做一个基于 JSP servlet 的存储库。 有几个与此相关的问题,但背后的想法仍然是一个 UI 友好的界面,最好是在 JSP 中,将功能嵌入其中,与...

    Arduino:开源电子平台

    有关更多信息,请访问在关注我们就像我们在错误报告和技术讨论要报告软件中的错误或请求简单的增强,请转到更复杂的请求和技术讨论应该在如果您对修改或扩展Arduino软件感兴趣...

    开源软件:来自SME和SMI的客户感知?-研究论文

    许多研究调查都认为,与专有产品相比,开源软件的整体性能在创新,总成本,稳定性,社区参与方面……许多因素使开源软件成为可行的项目和发展之路。 本文的目的是仅从中小企业和SMI来分析客户对OSS的看法,以了解...

    开源业务模型分析-研究论文

    开源软件不再适合业余爱好者。 相反,它是一种具有广泛适用性的业务策略。 可以围绕这个想法建立业务。 在本文中,我希望读者能对如何建立和发展这种业务的细节有所了解。 为此,我提出了三种基本的业务模型-分销商...

    bites:Bites项目是具有AI图像识别功能的GIS开源软件,可为居民提供蛇和狂犬病感染动物的信息

    Bites项目是具有AI图像识别功能的GIS开源软件,可为居民提供蛇和狂犬病感染动物的信息。 看法 桌面检视 流动检视 启动服务。 克隆仓库 cd ~ git clone https://github.com/jiankaiwang/bites.git cd ./bites 准备 ...

    恩布企业IM-安卓手机开源项目旨在提供高效稳定的即时通讯服务

    以下是对恩布企业IM开源项目进行扩写的一些想法: 首先,可以考虑对IM的用户界面进行优化和定制。通过设计更加直观友好的界面,提升用户体验,增加用户粘性。可以增加主题切换功能,让用户根据喜好选择不同的界面...

Global site tag (gtag.js) - Google Analytics