从工作到现在陆陆续续的接触到了很多不同的开源软件,也就是些形形色色的框架,包括出名的包括不出名的,有成功的也有一直默默无闻的。
如今咱也做开源了,有些东西不吐不快。
首先开源软件的目的:
对于作者而言存在什么目的?出名?当然有那么点,但是不是全部,你为什么写一个框架呢?我是这样的,慢慢的熟悉了一些设计模式之后逐渐发觉自己在写代码的时候不断地重复这些代码和设计,这种重复到了一定程度之后我就开始觉得繁琐,于是乎在某天找个时间抽象出来,作为开源软件出现了,当然也是一种标榜,标榜自己达到了什么样的程度。
当然也有不是基于这样的考虑的开源软件,比如我在写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出现。
但是,我或者说我们烦了。我总觉得很多东西是可以被忽略掉的,工作的机会如果我们把事情做得简单了那么将会促进很多东西的进步,然后会有更多更好的东西出现,当然还有更多的工作机会。
第三,开源软件的出路
这个是我所关心的,因为自己也想从事开源,很多大的开源软件现在我想主要是从事技术支持,但是我们的出路还不是很明确,而且以无限降低学习曲线和维护代价为目标的开源软件,真的不知道出路在何方了
分享到:
相关推荐
6. 企业对开源软件的看法:通过调查,我们可以看到,许多企业已经开始使用开源软件,并且对其进行了高度的评价。 7. 开源软件的挑战:开源软件也存在一些挑战,例如版权问题、安全问题等。但是,这些挑战可以通过...
李道兵在其演讲《重整工具箱:从开源软件到开放服务》中详细地探讨了软件开源运动的发展及其带来的变革,并对如何适应未来软件服务的趋势提供了深入见解。以下是他演讲中的主要知识点。 首先,李道兵作为Debian...
这些开源软件不仅仅改变了软件产业的格局,也改变了人们对软件的看法。 二、基础软件的云化和开源化 基础软件的云化和开源化是当前最热门的技术之一。云计算、大数据、人工智能、区块链等技术的兴起,使得基础软件...
1.1 促进技术创新:开源软件鼓励社区参与,开发者可以共享代码、交流想法,从而加速技术的迭代和创新。 1.2 提供研究基础:许多开源库提供了预训练模型和数据集,为研究者提供了快速验证新算法的基础,减少了重复...
- **企业级应用**:针对企业级用户的需要,这一栏目介绍了如何利用开源软件构建高效的IT环境。内容覆盖了开源软件的选择、部署和维护等方面,旨在帮助企业节省成本并提高效率。 - **混源新视界**:随着开源与商业...
**图形化开源软件jgraph详解** `jgraph`是一款强大的图形化开源软件,主要用于创建复杂的图表和图形用户界面。在后台或JApplet开发中,它提供了一套完整的解决方案,帮助开发者实现直观、动态的图形展示。这款工具...
- **简介**:JBpm移植到.NET平台下的开源工作流软件。 - **特点**: - 容易与.NET应用程序集成。 3. **BpmTool** - **简介**:支持将业务模型转换成软件模型。 - **特点**: - 使用模型驱动的方法来设计、...
3. **开源社区动态**:开源社区是开源软件的核心,杂志可能会报道一些重要的社区事件,比如新的社区倡议、大型开源会议(如OSCON)的回顾,以及社区领袖和贡献者的访谈。 4. **开源法律与政策**:开源软件的法律...
演讲中还提及了“OSSI”,即Open Source Software Institute(开源软件协会),并指出该协会在推动开源技术发展方面起到了帮助作用。这显示了开源技术的兴起并不完全是独立个体行为的结果,同样也得益于各种组织和...
**基于Mycroft人工智能框架的开源语音助手软件** Mycroft是一个强大的开源人工智能框架,专注于构建语音识别和理解能力。它旨在为开发者和爱好者提供一个可自定义、可扩展的人工智能平台,用于创建自己的语音助手...
### CU出品开源时代电子杂志第...此外,通过Gartner的调查结果,揭示了当前企业在采用开源软件过程中面临的挑战和解决方案。这份杂志不仅为开源爱好者提供了宝贵的信息资源,也为促进开源文化的传播和发展做出了贡献。
《开源时代》杂志是一本专注于开源技术和文化的出版物,它以中文形式呈现,旨在推广开源理念,分享Linux操作系统以及相关开源软件的最新进展和应用。这五期分别为2009年的第六期至第十期,涵盖了当年二月到七月的...
这个框架的核心目标是促进技术交流,鼓励开源社区的爱好者贡献他们的想法和改进方案,从而打造出一个能够帮助广大开发者快速构建高性能应用的工具集。 在NetDF框架中,"文档"目录包含了详细的使用指南、API参考以及...
Karpuz是一款专为摄影师和图像处理爱好者设计的开源软件,其主要功能在于照片的对齐和叠加。在摄影领域,尤其是进行多张曝光、全景拼接或者堆栈拍摄时,这款软件能够发挥巨大的作用。通过精确的照片对齐算法,Karpuz...
4. 创新驱动:开源社区鼓励创新,新的技术和想法往往首先出现在开源项目中。 5. 技能提升:参与开源项目有助于提升开发者的技术能力和协作经验。 总的来说,"beme-abide" 是一个致力于API测试的开源项目,它为...
作为开源软件,小便签工具还可能有活跃的社区支持,用户可以通过论坛、邮件列表等渠道与其他用户交流,报告问题,提出建议,或者获取技术支持。此外,开发者可能会定期发布更新,修复已知问题,添加新功能,以保持...
总结来说,Newbeecoder.UI开源控件库是WPF开发者的得力助手,它通过提供丰富多样的UI组件和易用的设计工具,降低了桌面应用开发的门槛,使得开发者能够更加专注于业务逻辑的实现,同时保证了软件界面的美观和用户...
开源软件鼓励社区参与,通过共享和协作推动软件质量的提升,同时也降低了企业与个人用户的成本。开源杂志则成为了传播这些理念、技术、最佳实践和成功案例的媒介。 在这些PDF文件中,我们可以期待找到以下几类内容...