<acronym id="6ic2k"><wbr id="6ic2k"></wbr></acronym>
<rt id="6ic2k"><optgroup id="6ic2k"></optgroup></rt>
<samp id="6ic2k"></samp>
查看: 83463|回复: 9

专访Tiny开源框架创始人£º用心构建优秀的开源框架

[复制链接]
论坛徽章:
127
茶鸡蛋
日期:2012-01-16 14:24:41鲜花蛋
日期:2012-06-06 14:48:18双黄蛋
日期:2013-01-07 21:07:482013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:082014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上?#26377;?日期:2014-03-18 09:57:11马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11
跳转到指定楼层
1#
发表于 2015-9-6 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1.和大家认识一下£¬介绍一下你的技术背景¡¢目前所负责的领域¡£

ITPUB的各位网友£¬大家好£¡我是悠然£¬Tiny开源框架创始人£¬主要技术领域为J2EE及应用开发平台领域£¬涉猎广泛£¬在模块化¡¢元数据¡¢模板引擎¡¢数据库分区分表¡¢SOA等等领域等都有较深入?#23548;ù£?#21507;过N多的亏£¬上过N多的当£¬?#27604;?#20063;积累了N多的经验¡£在业余时间也热心于参与开源软件相关工作£¬在进行软件开源的同时£¬也编写了大量的技术博客£¬从问题¡¢原理¡¢?#23548;?#36827;行了深入浅出的讲解¡£我比较欣赏的是£º好的软件设计是¡°品?#32972;?#26469;的¡£我信奉£¬好的软件架构一定是简单的¡£


2.你们的团队架构是怎样的£¿如何分工£¿

TinyFramework的开发团队是由稳定的团队成员组成的¡£我也尝试过?#24515;?#19968;些愿意参与的爱好者£¬?#23548;手?#34892;效果不太好£¬?#27604;?#21407;因也是各方面的£¬我也?#27973;?#29702;解没有坚持下来的参与者¡£


团队架构与分工¡£对于成功的开源团队而言£¬个人?#30475;?#30340;技术是一方面£¬但团队力量远大于一群人的简单相?#21360;?#25105;们项目组由项目管理¡¢需求分析¡¢软件设计¡¢编码¡¢测试¡¢实施等各方面的专业人士组成£¬每位成员在自己专业领域内发挥主导作用£¬并可以为项目的成功提出非自己领域内的建议¡£最终的项目成果是各位专业人士共同努力的结果£¬所有人对最终成功承担同等的责任¡£就像竹子¡°千磨万击还坚劲¡±的精神一样£¬每个项目成员都有当家做主的机会£¬应相信自己在本领域内是专家£¬在我的专业范围内£¬我可以说了算£¡Tiny团队就是这样£¬我们每个团队成员的自主精神贯穿在日常的工作始终¡£



团队成员的沟通方式主要有如?#24405;?#31181;?#28023;?£©聚众吃饭£º基本上一年当中£¬聚众吃饭的次数得有20多次¡£吃饭的理由千奇百怪了£¬家里添丁要请¡¢技术晋级要请¡¢获奖了请等等£¬?#27604;?#26368;多的请客理由还是由于出现?#29616;ØBUG¡¢有?#29616;?#30340;设计缺陷¡¢提交了影响开发的代码等等技术相关的理由£¬边吃边聊边打闹£¬同?#26412;?#25552;升了大家的能力£¬同?#24065;?#35753;大家认识到这种类型的错误£¬会导致请客吃饭的后果£¬下次自然是坚决不犯了¡££¨2£©社区公开课¡£我们通过论坛£¨http://bbs.tinygroup.org£©定期进行公开课交流¡£一般是每周四晚上?#35828;ã¡?#36890;过交流£¬我们也建立了?#27973;?#22909;的互动效果¡££¨3£©GIT中的Issues£º团队有句口头禅£¬嘴巴讲的不算¡£所以不管是需求还是BUG£¬?#23478;?#32479;统录到Issues当中£¬于是提出问题¡¢批注问题¡¢解决问题¡¢跟踪问题¡¢关闭问题£¬都在Issues当中进行管理¡£?#27604;»£?#25152;有的过程也?#32479;?#20026;呈堂证供£¬抵赖不得¡£不论是线上还是线下的交流£¬对于我们的团?#26377;?#20316;与和谐都起了?#27973;?#22823;的作用£¬互为补充¡£




3.开源往往需要很大的勇气¡£我们注意到£¬Tiny推出之后£¬在开源网站上高居Java类前几名¡£为什么要想到开源TinyFramework£¿

其实在开发TinyFramework之前£¬也在公司的体制下主导了开发平台的开发£¬但是由于在公司体制下£¬需要完全按照公司的要求和规范来开发£¬?#23548;?#19978;就是要做许许多多的?#20180;­£?#32780;这些?#20180;?#21487;能会对一个框架产生比较?#29616;?#30340;伤害¡£而?#25910;?#26399;望做一个各方面比较均衡的开发平台£¬于是就从各?#20013;?#30340;专题性验证开始£¬?#28909;¼‚?#27969;程化编程¡¢模块化设计¡¢数据库分区分表等等一一进行验证£¬当验证的范围越来越大£¬涵盖的领域越来越多的时候£¬才真正开始决定做一个开源框架¡£因此£¬追本溯源£¬最初的初衷就是对自己思想的一些验证而已¡£



4.很好奇£¬Tiny团队是如何运作的£¿是什么鼓舞你们从事开源工作£¿

在早期£¬我们还是默默无闻的£¬因为我们不想在框架还是一个半成品的时候就拿出来£¬直到我们已经开发完毕并且在自己的项目中进行了充分验证的时候才真正的在社区或相关网站进?#26032;?#38754;¡£我们大致是从以?#24405;?#20010;角度维护项目和社区的£º




  • 代码托管在git仓库£ºhttps://git.oschina.net/tinyframework/tiny¡£目前有360 watches£¬588 stars£¬451 forks£¬相对于它仅仅托管到git仓库一年的时间£¬数据还不错¡£
  • 构建Tiny文档WIKI£ºhttp://www.tinygroup.org/confluence/display/TF¡£Tiny文档总共有900多页£¬涵盖了设计¡¢实现¡¢示例¡¢?#23548;?#31561;方方面面£¬目前月访问量在4万PV左右¡£
  • 创建Tiny论坛社区£ºhttp://bbs.tinygroup.org¡£Tiny论坛是新推出的专注入Tiny方面的交流与沟通平台£¬目前论坛已有注册用户1000多人£¬包括£º有?#26102;?#31572;¡¢开源公开课¡¢精彩文摘¡¢实战分享等栏目¡£尤其是社区的¡°有?#26102;?#31572;?#20445;?a href="http://help.tinygroup.org" target="_blank">http://help.tinygroup.org£©栏目£¬对于产品的改进与完善£¬发挥了十分重要的作用£¬目前吸引了不少专业人士及Tiny爱好者加入¡£
  • 创建Tiny交流QQ群£º228977971¡£由于采取了比较?#32454;?#30340;管理方式£¬所以是对技术纯洁?#21592;£³址浅?#33391;好的群¡£目前已超过1000多人£¬并在不断增长¡£
  • 通过上面的一些与项目相关的社区¡¢博客¡¢QQ群等形式与广大Java框架¡¢Tiny爱好者进行了充分的互动与交流¡£不管是学习者¡¢参与者¡¢交流者¡¢使用者£¬都有自己的收获£¬在这个过程中£¬我们也受益匪浅£¬对开源这两个字也有了更深入的理解¡£


5.如何理解国内开源生态链£¿在2年多的开源实战中£¬印象最深的事情是什么£¿


?#23548;?#19978;£¬开源这事儿也是一个螺旋式发展的代表£¬好几年差几年¡£整体来看£¬国内对开源的认识也在由拿来免费用的初级理解向更高级别的层次发展¡£从整体来看£¬国人开源的技术和产品相对还处在一个初级阶段£¬?#28909;¼‚航?#20165;?#21069;?#20195;码开放出来£¬没有后续的社区建设£¬也没有形成生态圈等等各种问题¡£但是由于国内的开源产品基数太大£¬我们可以看到越来越多的优秀开源者和优秀开源产品涌现出来£¬这也符合量变引起?#26102;?#30340;客观规律¡£



TinyFramework的立意是企业级的开发平台£¬因此在方法论¡¢设计理念¡¢开发体系¡¢设计原则¡¢生态圈¡¢模块化¡¢热部署¡¢水平扩展¡¢元数据等非功能性要求方面做了大量的探索和?#23548;ù£¬µ比?#22312;这些领域也都有了相当不错或者可以接受的解¡£我们相信£¬只要能切?#23548;?#34892;我们团队的格言¡°Think big, start small, scale fast£¡?#20445;?#25105;们就一定会成功¡¢领先的开源产?#20998;?#19968;¡£



在我们进行?#23548;?#30340;过程中£¬也会碰到一些人的不理解或者说是非议吧£¬有时候直接就在我们的软件¡¢博文下面回复¡°轮子¡±或者¡°然并卵¡±什么的¡£我是这样?#21019;?#36825;个问题的£¬不管是在哪里的开源托管网站里£¬确实有一些项目确实水准不高£¬在初始阶段£¬确实没有什么新意£¬确实是在做重复的事情¡£但是?#23548;?#19978;这些重复的意义在于£º这些开源作者正是在做轮子的过程中£¬了解了如何做轮子£¬做轮子过程中?#24515;?#20123;坑£¬?#24515;?#20123;?#27809;?#19981;好的东西£¬在这个过程中锻?#35835;?#23454;战经验£¬提升了战斗力£¬为下一轮的创新或做出不是轮子的产?#36820;?#23450;了更好的基础¡£开源作者们既使现在做的是你们看起来的¡°轮子¡±或者¡°然无卵¡±的事情£¬但是在量变的过程中£¬终将会产生?#26102;ä¡?#21326;丽丽的完成蜕变的过程¡£就是最终开源作?#35775;?#26377;蜕变成高大上的产品£¬开源者在这个过程中也会得到洗礼£¬得到技术的提升能力的提高¡£




6.你认为TinyFramework最突出的优点是什么£¿能否介绍一下你们的新开源?#23548;ù£¬±热?#27169;板语言£¬分库分表£¬等等¡£

TinyFramework的优点很多£¬主要有以?#24405;?#20010;方面£º

首先£¬设计理念决定了设计的目标¡£

(1)使用灵活£º可以整个使用它£¬也可以只用它的一个或几个部分¡£Tiny构建者认为£¬一个完整的框架可能需要有许许多多个部分组成£¬但是对于?#23548;?#24212;用的用户来?#25285;?#23427;可能只需要其中的一部分功能¡£构架一定要有这种能力£¬可以由使用者进行点菜式£¬使用£¬避免只要用一点点功能£¬就要引入许许多多的内容¡£

(2)学习成本低¡¢上手容易£º框架的学习成本必须?#27973;?#20302;£¬这样才可以让使用者更容易上手£¬避免由于学习难度大而导致的学习曲线太陡¡¢太长¡£

(3)保持核心的稳定性£ºTiny框架是立足于在需要稳定¡¢安全要求?#27973;?#39640;的应用环境中使用的£¬因此其稳定性就是框架构建者首要思考目标£¬核心部分只使用经过充验证及广泛应用的第三方包¡£

(4)资产的可积累性£º只有?#23376;?#30693;识积累£¬才可以真正做到越用越强¡£


其次£¬设计原则解决目标冲突时的解决策略¡£

(1)?#32423;?#20248;于配置原则-COC

(2)不要重复你自己原则-DRY

(3)减法原则 £º减法原则是我们自己提出的£¬意思就是给程序员做减法¡£

(4)模块化原则£º模块化对于软件开发过程中开发¡¢高度¡¢集成¡¢发布¡¢维护过程中所起的作用及节省或花费的巨大成本¡£因此提出了Business Unit的概念£¬使得与模块相关的所?#24515;?#23481;都可以放在一起¡£

(5)?#36828;?#32452;装原则£º在整个Tiny框架的构建过程中£¬都?#27973;?#27880;重集成过程的?#36828;?#32452;装£¬要求做到扔进去不用管£¬由框架?#36828;?#38598;成¡£

(6)?#24405;斗?#20174;上级原则£ºTiny框架则从框架层级做了限制£¬使得?#24405;?#24517;须服务上级¡£

(7)单一原则?#21644;?#36807;单一原则进行强制性的?#38469;ø£?#20351;得一个模块只解决单一模块应该解决的问题£¬从而避免不同的问题放在一起解决所导致的胡?#29992;?#27611;缕不清的问题£¬同?#24065;?#36991;免了不恰当的?#35272;导?#27169;板引用¡£

      (8)集中配置原则£º在Tiny框架我们对配置做了大量的工作£¬一个是COC方式£¬如果不配£¬则采用系统默认的?#25285;?#19968;个是集中原则£º把需要人工需要配置的内容?#25216;?#20013;起来统一配置£»一个是对于不需要人工干预的配置£¬那就集成在Jar包中£¬作为发布者发布项的一部分¡£

再就是£¬一些创新性的技术应用¡£


£¨1£©SOA£ºTiny的服务是一次开发到处使用的£¬也就是一旦完成了服务的开发£¬你可以用RMI£¬WebService,Json,Xml等等£¬各种你想到想不到的方式进行服务调用¡£

£¨2£©服务水平扩展能力£º在遵守Tiny开发规范的前提下£¬可以?#22870;?#30340;进行接入和服务层的水平扩展¡£也就是?#31561;?#26524;你的处理能力不足的时候£¬只要加一台机器就可以增加处理能力£¬而不必对现有运行的环境进行任何变化¡£

£¨3£©模块化技术£ºTiny的模块化的设计思想是没有什么不能进?#24515;?#22359;化£¬也就是说所有的文件都可以放在Jar包中¡£为此我们做了大量的研究与?#23548;ù£?#20570;到了所有的文件都可以放入到Jar包中£¬甚至连Jsp也可以放入Jar包¡£通过模块化技术£¬可以?#22870;?#30340;进?#24515;?#22359;分隔与复用¡£

£¨4£©自组装技术£ºTiny的自组装设计思想是所有的模块都可以做到加入即可用£¬去除就消失¡£也就是?#25285;?#22914;果你用别人的一个组件£¬你只要通过Maven?#35272;?#23427;即可以£»如果你不想用了£¬取消Maven?#35272;导?#21487;¡£这样就会大大减少集?#19978;?#20851;的工作量¡£

£¨5£©热部署技术£º关于热部署的?#23548;ù£?#36825;个有许多种£¬?#28909;çOSGI等等£¬但是不管哪一种£¬都有一定的强?#35272;?#24615;£¬或者说是侵入性¡£Tiny的热部署实?#21482;?#21046;则简单的多£¬只要按照正常的方式来开发Jar包£¬并且配置一个Bundle声明文件即可¡£?#23548;?#24212;用当中£¬即可以按照Bundle机制运行£¬也可以按照普通Jar包来运?#23567;?/p>

£¨6£©UIML技术£ºUIML也就是统一界面描述语言的意思¡£通过这一特性£¬再加上配套的可视化界面设计工具£¬就可以实现一次开发到处使用的界面开发目标¡£

£¨7£©AOP缓冲框架£º可以有效剥离缓冲与业务代码£¬可以?#35813;?#30340;切换缓冲方?#30422;?#25442;£¬可?#28304;?#24133;?#26723;突?#20914;相关代码编写的开发与重构成本¡£

£¨8£©文档生成框架£º?#24425;前?#29031;Tiny开发规范进行开发£¬许多的文档都可以通过工具?#36828;?#21270;生成£¬文档与代码不一致不再是一个问题£¬同时还可以节省大量的文档编写时间¡£



本来是没有自己写一个模板引擎的计划的£¬因为按我的理解£¬一直认为这种¡°语言¡±级的引擎£¬难度是?#27973;?#22823;的¡£总感觉自己的水平不够£¬因此不敢有这个念头¡£直到大量使用Velocty的时候£¬碰到Velocty诸多不尽如人意的地方£¬但是又无能为力£¬退回到JSP吧£¬又心不有?#30465;?#20110;是?#25512;?#26395;着寻找一种语法结构接近Velocty£¬但是又没有Velocity这些不?#22870;?#20043;处的模板语言¡£但是?#23548;?#19978;一圈找下来£¬并没有?#19994;?#28385;足自己期望的模板语言£¬于是就萌生了写一个模板语言的想法¡£?#27604;»£?#36807;程中也经历了诸多折腾£¬但是目前已经是相当有竞争力的模板语言£¬概括的介绍一下£º



Tiny模板语言是一个基于Java技术构建的模板引擎£¬它具有体量小¡¢?#38405;?#39640;和扩展易的特点¡£ 适合于所有通过文本模板生成文本类型内容的场景£¬如£ºXML¡¢源文件¡¢HTML等等£¬可以?#25285;?#23427;的出现就是为了替换Velocity模板语言而来£¬因此在指令集上在尽量与Velocity接近的同时£¬又扩展了一些Velocity不能很好解决问题的指令与功能£¬在表达多方面则尽量与java保持一致£¬所以?#27973;?#30340;易学易用¡£






  • 体量小£º表现在总共5000+行的代码£¬去掉一些扩?#26500;?#33021;£¬核心引擎只有不行3000?#20889;?#30721;
  • ?#38405;?#39640;£º表现在与现在国内几款高?#38405;?#27169;板语言如£ºHTTL¡¢Jetbrick¡¢webit等引擎的?#38405;?#30456;比£¬近乎伯仲之间£¬但是比Velocity¡¢Freemarker等则有长足的进步£¬效率大致是Velocity四倍
  • 扩展性高£º表现在Tiny模板语言在所有组成部分都可以自行扩展
  • 易学习£º表现在Tiny模板语?#24895;?#24565;清晰¡¢语言组织方式采用了现有流行度?#27973;?#39640;的Velocity语法体系£¬有相关经验的人可以快速上手¡£
  • 使用方式灵活£º表现在£¬可以单例方式¡¢多例方式£¬并可以与Spring等有良好集成


功能特点介绍



  • 类似于 Velocity 的指令方式£¬相同或相似指令达80%左右
  • 支持可变参数方法调用
  • 支持类?#32479;?#21592;方法重载
  • 支持函数扩展
  • 采用弱类型方式£¬对于模板层的代码编写?#38469;?#26356;小£¬模型层怎样变化£¬模板层的代码调整都?#27973;?#23481;易
  • 支持宏定义 #macro
  • 支持布局 Layout
  • 支持宏嵌套调用
  • ?#30475;?#30340;开发工具支持Eclipse插件方式
  • HTML代码渲染支持



其实在开发TinyDbRouter之前£¬我们主要是想找一个比较?#40092;?#30340;数据库分区¡¢分表方?#31119;?#20026;此也学习了各种实?#22336;˜ª福?#20294;是总是在功能性¡¢可控性等方面不能得满足£¬评估下来之后£¬还是决定自己尝试写一下£¬?#27604;?#20889;完之后感觉还是?#27973;?#19981;错的£¬经过一段时间的验证¡¢测试¡¢?#23548;?#24212;用£¬在各方面都有?#27973;?#19981;错的反应£¬因此才有现在开源的TinyDbRouter¡£



  • 水平扩展
  • Tiny DB Router是一种数据库水平扩展解决方案
  • 支持JDBC 3及JDBC 4
  • 使用限制
  • 不支持物理跨库关联(Join)查询
  • 分表时只支持游标分页£¬不支持SQL分页
  • 分表规则字段不允许修改
  • 设计目标
  • 支?#25351;?#31181;常见数据库
  • 分布式主键生成器
  • 自增长主键完美支持
  • 支持SQL92规范中除使用限制之外的绝大多数SQL语句
  • 在?#38405;?#26041;面最大程度接近原生数据库系统
  • 能完美支持统计¡¢排序
  • 支持?#21015;?#20998;离£¬支持权重负载均衡方案
  • 集群事务统一
  • ?#21015;?#20998;离
  • 单库分表
  • 多库分表
  • 良好的扩展能力£¨分区规则扩展¡¢分表规则扩展¡¢主键生成扩展£©





整体来?#25285;?#26159;?#27973;?#19981;错的数据库分库分表方?#31119;¬µ比?#20102;£¬它也存在一些不足£¬它的?#23548;?#24212;用目前还是在我们自己的项目当中£¬还需要进行充分的应用?#23548;?#21435;锤?#19969;?/p>

?#27604;»£?#36825;两个子项目只是Tiny框架中的比较有代表性的子项目£¬?#23548;?#19978;Tiny框架中有?#27973;?#22810;的优秀子项目£¬希望大家能多多了解Tiny£¬自己发掘其中的内容¡£



7.TinyFramework的应用案例?#24515;?#20123;£¿目前已经开放了哪些应用£¿可?#38498;?#25105;们分享下吗£¿

TinyFramework从初版出来£¬目前主要在我们自己的公司进行推广和应用¡£目前已经有许多企业级和互联网级产品基于Tiny开发£¬并在几十家客户中使用¡£Tiny框架开源以来£¬许多团队或企业也在使用Tiny开发自己的应用£¬在应用过程中提出了许多好的意见¡¢建议¡¢需求£¬有的甚至直接帮我们提交了Pull Request¡£一年来£¬Tiny的社区环?#21507;?#26469;越完整¡£在2015年Tiny的外部用户数上将会有一个较大的提升¡£

在功能性需求方面£¬Tiny框架有?#27973;?#22810;的?#40644;Æ£?#30001;于涵盖的功能太多£¬因此只能拿几个有代表性来简单介绍一下£º




  • TinyDBRouter(数据库分区分表)£º基于JDBC层实现£¬可以支持SQL92规范下的各种数据库进行?#35813;?#30340;数据库分区¡¢分表?#21015;?#20998;离?#20154;?#24179;扩展¡£
  • TinyTemplate(模板引擎)£º一个类 Velocity的模板引擎£¬但是功能更?#30475;ó£?#28155;加了许多Velocity不支持的特性£¬运行速率大致是Velocity的4?#19969;?br />
  • TinySqlDSL(数据库开发框架)£º基于领域查询语言方式的数据库开发框架£¬可以在Java中用类似于写SQL的方式来进行数据库编程£¬比较好的解决了数据库与Java两层之间结?#40092;?#30340;问题(要么两者是分离的如iBatis£¬要么引入一种全新的语言如Hibernate的HSQL£¬要么就是在Java中进?#20889;?#37327;的SQL拼接)¡£?#27604;?#25968;据库的开发方案有许多种解£¬各种解有各种解的优缺点£¬DSL方式也是一种实?#22336;˜ª福?#26377;其自己的优缺点¡£
  • TinyUI(界面引擎)£º主要解决WEB应用开发中的模块化及JS¡¢CSS及各种静态资源管理的问题£¬主要解决静态资源Jar包化¡¢CSS 合并打包压缩¡¢JS合并打包压缩£¬UI模块之间的?#35272;倒?#31995;等等体系性问题¡£
  • TinyStudio(集成开发工具)£º提供了可视化界面设计£¬可视化流程编排¡¢模板引擎编辑器¡¢代码生成器£¬服务编辑器¡¢元数据编辑器¡¢数据库设计器¡£

还有许多许多的内容£¬?#38431;?#22823;?#19994;?#25105;们的官网查阅相关内容¡£



8.为?#25991;?#20250;?#25285;º¡?#22909;的软件设计是¡°品?#32972;?#26469;的£¬信奉好的软件架构一定是简单的¡°¡£这句话怎么理解£¿在你看?#26149;?#30340;软件应具?#25913;?#20123;条件£¿

在软件?#23548;?#20013;£¬对于一个特定的问题£¬不会是有一个唯一的最好的解决方案的¡£因为我们在软件?#23548;?#36807;程中£¬不仅仅要考虑功能性问题£¬还要考虑非功能性问题£¬?#28909;¼‚?#23433;全性¡¢可靠性¡¢互操作性¡¢健?#25215;Ô¡?#26131;使用性¡¢可维护性¡¢可移植性¡¢可重用性¡¢可扩充性等等£¬更要命的是£¬这些非功能特性有些是矛盾的£¬存在此消彼涨的情况¡£这个时候£¬每?#22336;?#26696;的选择都会影响到这些非功能指标£¬这个时候£¬作为一个技术决策者£¬就要对左边走还是右边走£¬进行仔细的斟酌£¬也就是我说的¡°品?#20445;?#21482;有把每?#22336;?#26696;都¡°品¡±到位了£¬才可以真正选择出真正符合自己要求的解决方案¡£

我经常?#25285;?#36719;件能不能做好£¬要看你是不是能把一个软件分解得粒度足够小¡£当你能把一个复杂的问题分解成?#27973;?#21333;一的小问题的时候£¬这个时候你就一定可以有相当不错的解决方案¡£因为针对每一个小问题£¬我相信只要水平不是太差的£¬都可?#24895;?#20986;完美的解或者相当不错的解£¬当我?#21069;?#25152;有的小问题都能给出完美的解或者相当不错的解£¬甚至是可以接受的解的时候£¬最初的大问题也就可以有完美的解或者相当不错的解¡£而一个简单的小问题£¬它的软件架构一定是简单的£¬而这些简单架构的累加£¬由于是高内聚¡¢低耦合的£¬那么整个软件架构也可以认为是简单的¡£这也是我们的框架采用¡°Tiny¡±这个名字的原因之一¡£



9.未来的下一步计划是什么£¿

Tiny框架从诞生?#20004;ñ£?#19981;管是从框架规模¡¢?#23548;?#24212;用?#23478;?#32463;取得了相当的成绩£¬?#27604;?#20063;存在一些问题£¬接下来我们将会在以下方面进行完善£º

文档完善£º目前我们的文档已经有近千页£¬但是文档的质量还有待提高£¬接下来要对文?#25269;?#37327;在条理性¡¢有效性¡¢针对性方面作重点提升


实例完善£º目前我们已经有了一些简单的示例£¬但是还缺少重量级的实例£¬这方面会做一些即能体现Tiny特性£¬又有?#23548;?#24212;用价值的开源产品¡££¨剧透一下£º目前我们正在基于Tiny开发一个项目管理软件£¬到?#24065;?#28982;会开源发布£©

?#24736;到?#35299;£º对于内部客户来?#25285;?#25105;们通过培训可以解决一些文档和实例不足的问题£¬但是对于外部用户来说由于缺少培?#25285;?#23454;例也相对简单£¬导致客户上手?#26376;ý¡?#20026;此我们准备录制?#24736;到?#35299;课件£¬?#22870;?#29992;户上手¡£

功能扩展£º后面我们会重点对互联网应用方面的一些技术及功能进行功能扩展¡£

组件库£º由于Tiny框架?#23548;?#19978;一个面向组件的开发框架£¬我们自己做了许多的组件£¬这些组件可?#28304;?#22823;提升软件的开发效?#22987;?#36719;件的成熟度¡£组件库的构建对于构建Tiny框架生态圈是?#27973;?#37325;要的¡£




10.有什么话和ITPUB网友分享£¬一起进步£¿

ITPUB是一个?#27973;?#20248;秀的程序员社区£¬同?#24065;?#26377;自己的代码托管及开源版块£¬并且也吸引了大量的开源作者入驻¡£在这里£¬我把开源过程中的一些?#20889;?#21644;大家分享一下£¬不一定正确£¬大家一起探讨¡£

关于收入的问题£¬如果期望开源能够快速给自己带来收入£¬这个可能绝大多数的可能是会失望的¡£一般来?#25285;?#19968;个开源产品£¬从开始¡¢发展£¬到能有收入£¬能营收平衡£¬这个一个漫长及艰难的过程¡£如果靠这个买米买肉£¬估计要饿死的¡£问题来了£¬如果做开源不关心收入£¬为什么还要开源呢£¿我?#19978;?#21487;能有如下可能£º

获取精神上的满足¡£?#28909;¼‚?#20320;做了一个好东西£¬但是?#33268;?#19981;了钱£¬放在自己兜兜里£¬一点成就感也没有£¬拿出来开源£¬让大家使用使用£¬自己获得一下成就感£¬也是满不错的¡£

获取社会的认可¡£通过开源£¬获得相当的社会认可度£¬有可能东?#35762;?#20142;西方?#31890;?#33719;得更好的发展机会或工作机会£¬或者获得与别人合作的机会¡£

收集需求¡£一个人在那里做£¬总是有这样那样局限的£¬即使你是超级牛人£¬通过给别人免费使用£¬别人给你提出这样那样的意见和建议£¬可以帮你快速丰富和完善产品¡£

用户测试¡£有时候£¬你做了个东东£¬自己也不知道到底好不好£¬现在有许多用户来使用£¬?#23548;?#19978;也同时给你做了测试¡£

获取用户群¡£有时候£¬一个产品放在那里没有什么价?#25285;?#20294;是随着用户群越来越大£¬可能就可以有盈利的潜质了¡£同?#24065;?#26159;潜在用户的一种培育£¬免费使用的人多了£¬可能就有愿意掏钱获得更好的服务与产品或者定制开发的人了¡£

一种?#35856;?#33829;销手段¡£本来产品做也还可以£¬通过开源£¬获得?#35856;?#35748;可£¬提高知名度£¬为后续推广奠定基础£»同?#27604;?#20154;们看到内部的实现£¬从黑盒变成白盒£¬让人们放心的选择¡£

?#27604;?#20063;可能是其中的几个或者全部¡£总之£¬开源是一个艰辛的选择£¬需要长久的坚守£¬需要不急不燥的一份态度¡£所以£¬开源是一?#20013;?#34892;£¬有可能是没有成果的凡人£¬也可能是小有成就的佛子£¬也有可能大有成就的尊者£¬还有可能是至真至高的佛¡£如果想了解Tiny的更多内容£¬可以访问Tiny官网£ºhttp://www.tinygroup.org/

论坛徽章:
220
状元
日期:2015-08-13 09:42:33榜眼
日期:2015-08-03 13:57:54探花
日期:2015-07-31 13:44:02举人
日期:2015-07-01 15:00:51秀才
日期:2015-07-27 09:45:52进士
日期:2015-07-27 11:26:492015年中国系统架构师大会纪念徽章
日期:2015-07-23 09:58:092014系统架构师大会纪念章
日期:2015-07-23 09:58:092013系统架构师大会纪念章
日期:2015-07-23 09:58:092012系统架构师大会纪念章
日期:2015-07-23 09:58:09
2#
发表于 2015-9-6 16:49 | 只看该作者
想做开源太难¡£

使用道具 举报

回复
求职 : SAP实施
论坛徽章:
262
土豪章
日期:2018-07-10 16:19:05ITPUB18周年纪念章
日期:2018-09-17 10:09:49ITPUB18周年纪念章
日期:2018-09-17 10:12:57妮可¡¤罗宾
日期:2018-10-28 13:07:10ITPUB18周年纪念章
日期:2018-11-13 15:31:24ITPUB18周年纪念章
日期:2018-11-13 15:40:45玉石琵琶
日期:2019-04-20 10:29:45玉兔
日期:2019-04-20 15:19:54铁扇公主
日期:2019-04-20 15:20:09
3#
发表于 2015-9-6 16:51 | 只看该作者
支持大牛

使用道具 举报

回复
论坛徽章:
0
4#
发表于 2015-9-6 17:35 | 只看该作者
开源是一个艰辛的选择£¬需要长久的坚守£¬需要不急不燥的一份态度¡£支持Tiny开源框架£¡

使用道具 举报

回复
论坛徽章:
176
现任管理团队成员
日期:2011-05-07 01:45:08版主7段
日期:2012-07-05 02:21:03ITPUB长老会成员
日期:2015-05-07 15:11:10ITPUB年度最佳版主
日期:2011-04-08 18:37:09ITPUB年度最佳版主
日期:2011-12-28 15:24:18ITPUB牛人
日期:2010-10-25 12:41:322010数据库技术大会纪念徽章
日期:2015-04-23 10:33:192011数据库大会纪念章
日期:2015-04-23 10:33:192012数据库大会纪念章
日期:2015-04-23 10:33:192013数据库大会纪念章
日期:2015-04-23 10:33:19
5#
发表于 2015-9-9 16:20 | 只看该作者

使用道具 举报

回复
论坛徽章:
242
至尊黑钻
日期:2015-09-25 14:27:26粉钻
日期:2015-10-16 10:53:36紫钻
日期:2015-10-16 10:53:21红钻
日期:2015-09-25 15:05:50黄钻
日期:2015-10-17 12:23:40?#22871;?日期:2015-10-24 10:29:30至尊黑钻
日期:2015-08-14 13:24:07粉钻
日期:2015-10-24 10:30:07紫钻
日期:2015-11-03 22:32:09红钻
日期:2015-11-06 17:21:40
6#
发表于 2015-9-9 16:32 | 只看该作者

使用道具 举报

回复
论坛徽章:
2
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442013年新春福章
日期:2013-02-25 14:51:24
7#
发表于 2015-9-12 17:48 | 只看该作者
支持大牛£¬加油

使用道具 举报

回复
论坛徽章:
0
8#
发表于 2015-10-10 13:45 | 只看该作者
zhichi!

使用道具 举报

回复
论坛徽章:
2
秀才
日期:2015-12-14 14:51:16秀才
日期:2016-01-25 15:02:04
9#
发表于 2015-12-9 15:13 | 只看该作者
这些基本原则的确是在?#23548;?#39033;目开发中摸爬滚打出来的£¬心有戚戚焉

使用道具 举报

回复
论坛徽章:
0
10#
发表于 2016-4-13 22:06 | 只看该作者
支持大牛

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分?#21495;?/a> 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. ?#26412;?#30427;拓优讯信息技术有限公司版权所有¡¡联系我们¡¡
京ICP备09055130号-4 ¡¡?#26412;?#24066;公安局海淀分局网监中心备案编号£º11010802021510¡¡广播电视节目制作经营许可证£º编号£¨京£©字第1149号
  
快速回复 返回顶部 返回列表
пìÈý¿ª½±½á¹û
<acronym id="6ic2k"><wbr id="6ic2k"></wbr></acronym>
<rt id="6ic2k"><optgroup id="6ic2k"></optgroup></rt>
<samp id="6ic2k"></samp>
<acronym id="6ic2k"><wbr id="6ic2k"></wbr></acronym>
<rt id="6ic2k"><optgroup id="6ic2k"></optgroup></rt>
<samp id="6ic2k"></samp>