谈谈我对 JFinal Marketing 的一些看法

原创
2019/12/20 17:30
阅读数 3.8K

今天我参与到一桩嘲讽 JF 的公案中 , 坦率的讲, 这不是一件光彩的事. 在 ActFramework QQ 群里也群友表达不赞同. 我当时回应的是 "这也是对 JF 看法一种比较间接的表达方式". 后来想了一下, 这的确有背后伤人的小气在里面, 所以干脆就借助 OSC 的博客平台公开自己对 JF 的一些看法.

首先, 技术上是有一些不认同的地方, 但这些不认同并不妨碍 JF 在我心中属于优秀国产开源项目的看法. 放下技术方面的看法不论, 这里谈谈我对 JF Marketing 方面的一些异见:

  • “极”,“可怕”这一类的修饰词放在文学作品中当然没有问题,但像这样夸张地方式在广告中尚且不对,出现在一个工程产品的发布新闻,甚至说明手册中,真的让人难以接受

  • 欧拉恒等式当然是优美简洁的坐标,可拉出来佐证 JF 的“极简”,这怕是比拉大旗作虎皮还要过分很多倍的事情吧

  • 谈性能 9 年,居然不拿出(或者拿不出?)三方平台的数据报告;放出自己搞的性能数据只有模板生成的,这是不敢面对真实的自己呢,还是不敢面对外面的世界呢?

  • 产品手册中随意使用“平庸”,“浪费生命”之类的字眼来形容其他产品;自己做的就修饰为“独创”- 当然也不管是不是独创. 这样的做法非常不专业. 我很难相信会出自一个相对成功的国产开源软件.

在我心中软件工程属于科学技术的范畴, 不是用文字修饰的对象. 能客观准确地描述包括软件产品在内的概念是软件工程师的基本素质, JF 并没有做到这一点

更新 - 2019-12-24

三篇扩展讨论的博客

展开阅读全文
打赏
5
2 收藏
分享
加载中
该评论暂时无法显示,详情咨询 QQ 群:912889742
我写这篇博客是自己在内心坦诚面对这件事了. 不知道你觉得怎样的行为和言语才是真诚, 才不是耍太极?
2019/12/23 10:52
回复
举报
我是说嫌疑哈,我为什么这么想呢,是因为你们都没有得到想要的答案。 作为一个吃瓜群众,我也经常看到一个新出的框架,就会得出比业界同类成熟框架各种快N倍的宣传 这个快(或者其它优秀方面)到底怎么得来的呢?往往是: 1、自己写的,一段文字一个图搞定,至于怎么测不告诉你 2、自己写的,也给了一些维度及测试细节,但维度不全,或挑选到自己有利的维度 3、第三方测的,但没有足够的权威让人信服 总之,吃瓜者拍手看个热闹就行,毕竟也没能力去评测别人的作品,但对于大佬可能就不是这样想了。
2019/12/23 14:42
回复
举报
包括技术在内的很多事情都很可能找不到让各方都满意的答案. 我写这篇博客的目的在于 1. 公开自己的意见与立场, 2. 建立一条和波总进行沟通的渠道. 我认为这两个目标都已经达到.如果没有让你这样的吃瓜群众得到淋漓致敬的感觉, 我很抱歉, 这个不是我写这篇博客的目的.
2019/12/23 17:21
回复
举报
最后谈谈罗总,我很早就看过 actframwork,知道罗总技术高超,纯极客类型,并且罗总坚持开源很多年,比 jfinal 坚持的时间还要长久,作为同行我十分佩服、敬重

我深知坚持维护开源项目的不易,所以国产开源项目我除了最敬重项目 nutz 以外,再就是罗总的 actframework 了

nutz 极其低调,代量质量要求极高,对开源的坚持比 jfinal 还要久。 jfinal 以往让人有高调之嫌,但 nutz 从来都没站出来批评过,他们不出来批评我都觉得有些不可思议了,因为 nutz 与 jfinal 有很多的竞争要素

罗总也是一样,在相当长的时期内极其低调,但后来慢慢加入了 beetl 这帮人,越来越有针对性的对待 jfinal

今天罗总共同参与了极其明显针对 jfinal 的一起事件,我内心比较失落,毕竟 actframework 让我很敬重:
https://gitee.com/gavink/SFinal/blob/master/README.md

最后我想说的:世界是多样化的,其他人并不是你认为的样子,人与人之间充满了误解

我本人对各种事情的看法很淡定,世界是由无数变量(力量)互相作用后呈现给我们的样子

有些事情看起来那么错误,那么不合理,但如果你深入了解到各种因素后,你会发现事出有因
2019/12/20 20:02
回复
举报
嘲讽这件事情我首先向波总道歉. 但要说到党群伐异这个地步, 我完全不能同意. 而且我相信其他人也绝不是对 JFinal 整个项目完全无底线的恶意. 就我自己而言, 嘲讽的由头和对象从头到尾是我在博客中提到: 过分宣传, 我自己也意识到这个方式的问题, 所以干脆坦率地开博把自己的意见摆出来. 从 Java 生态上来讲, 我非常珍惜国内不多的开源项目, 包括 JFinal, Nutz, Beetl, BeetlSQL, tio, blade 等等, 我也认为这些项目都有各自明显的优势和用户群体. 我衷心希望国内 Java 界的朋友能彼此尊重, 相互沟通包括技术分享甚至进行一些良性的 PK, 共同进步, 为中国 Java 人在世界强者之林立足做出自己的贡献
2019/12/20 20:20
回复
举报
我赞同罗总所说的这些,我本人也是这么做的,我从来没有对国产项目进行过攻击和批评,这里要说明,对于 beetl 的事情,纯属误解 我真没有、也没有必要要去针对 beetl,当时正好 enjoy 去除 antrl 我觉得这是件极好的事情,我指出 antrl 用于模板引擎并不是个好主意只字未提 beetl,但这却让 beetl 认为是针对了 beetl,我太难了 中国这两年来受美国欺负,开源界应该互相多支持、多鼓励,而不是互相攻击,否则被欺负就有活该之嫌,历史上有文人说中国人喜欢“窝里斗”,IT 界不要这样 我自己做开源八年多,帮助过无数小白,热心回复过很多问题,从来不攻击任何人, 只在被人攻击时回击别人
2019/12/20 21:24
回复
举报
相信你大概没有恶意地针对 beetl, 我只能说这又是一桩因为过分宣传自己引起的公案. 在你的文案中出现 "(用 Antlr 之类的 Parser Generator) 这种构建模板引擎的方式,相当于将自己的代码建立在一个飘摇不安的基础之上" - 这样的表述, 恕我之言, 非常非常不专业: 第一 - (无意之间)诋毁了使用 ANTLR 的其他产品, 包括 beetl, 第二, ANTLR 作为被 Groovy, Cassandra, APEX.. 一系列业界顶级作品使用的工具库能被你说成这样不堪, 这是"无知者无畏", 还是你的性格太过跳突, 以至于出现了迷之自信? Rythm 也没有用 ANTLR, 只能说是因为我对 ANTLR 理解不够, 用不出自己想要的效果. 从来就没有出现鄙视使用 ANTLR的其他引擎的想法, 更不敢去挑战 ANTLR 和 Parser Generator 这样的模式, 不是因为惧怕权威, 实在是因为自己在这方面能力没有达到这个地步. 至于中国受到美国欺负这个, 扯太远啦. 我也看不到和我们这里讨论的问题有任何联系, 就不多说了 ...
2019/12/21 03:12
回复
举报
Terence Parr is the maniac behind ANTLR and has been working on language tools since 1989. He is a professor of computer science at the University of San Francisco.antlr 是旧金山大学计算机科学教授写的.你知道的好多,我就知道groovy3的新解析器Parrot Parser就是用antlr写的,不过以前我看过使用antlr开发语言解析器是非常便利的,wikipedia上面也列出了不完全统计的使用antlr的项目,分别是 Groovy.[10] Jython.[citation needed] Hibernate.[citation needed] OpenJDK Compiler Grammar project experimental version of the javac compiler based upon a grammar written in ANTLR.[citation needed] Apex, Salesforce.com's programming language.[citation needed] The expression evaluator in Numbers, Apple's spreadsheet.[citation needed] Twitter's search query language.[citation needed] Weblogic server.[citation needed] Apache Cassandra.[citation needed] Processing.[citation needed] JabRef.[citation needed] Presto (SQL query engine)
2019/12/21 11:42
回复
举报
该评论暂时无法显示,详情咨询 QQ 群:912889742
我刚刚又看了一下你提到的 antrl 的事情,你想的有点偏了,我仅仅只是认为 antrl 用于模板引擎并不是个好主意,不是最好的方案,enjoy 的方案更好。 我从头到底都没否定过 antrl 用于别的领域,也没有说 antrl 有任何不好。我说的事是有限定的,限定于 antrl 用于模板引擎并不好,你仔细再回看我说的那些,antrl 会为你生成一个人类根本无法阅读的 parser,这个对于细致打磨是很有害的,因为你根本无法调试这个 parser,出了问题你也无法追踪。 @李嘉图 antrl 很牛逼,但我认为用于模板引擎并不是个好主意,仅此而已
2019/12/21 12:40
回复
举报
恩恩,原来你是这个意思,这个点我还从没考虑过,看来是场误会,应该就此打住😄😄
2019/12/21 13:52
回复
举报
回复 @李嘉图 : 我逐步了解到了你们的看法,发现这里头的误解太深了,我有必要澄清一下,绝大部分你们认为是怎么怎么的事情,我做梦也想不到。这两年中国被美国欺负得很厉害,我不希望让人觉得中国人喜欢 "窝里斗"。我强调一下,我本人从来没有攻击过任何人,从来不拿国产项目来比较,仅仅回击别人的攻击。
2019/12/21 14:26
回复
举报
回复 @李嘉图 : 👍 cc: @闲大赋 @JFinal 误会能消除最好. 技术方面的事情可以另外再谈
2019/12/21 14:33
回复
举报
回复 @罗格林 : 正常人谁会愿意没事故意去得罪人,做开源本来时间就不够,以往很多针对 jfinal 的负面的东西我都懒得回应,对于 beetl 的回应我是在 9 个月之后。别人都骑到你头上来了,你就不得不回击了
2019/12/21 15:33
回复
举报
@JFinal 这里是我在技术方面对这个问题的一些理解, 欢迎指正: https://my.oschina.net/greenlaw110/blog/3145851
2019/12/22 11:44
回复
举报
关于“谈性能9年”,一是谈性能并没有谈9年,有些新版本发新联时会谈谈性能,这取决于新版本中是否有较多性能优化的改进。虽然没有像 actframework 在某个权威性能PK网站上提交,jfinal 性能测试在 gitee.com 提供了测试代码

罗总认为我没有三方平台的数据报告,猜测:这是不敢面对真实的自己呢,还是不敢面对外面的世界呢?这个是多虑了,我自己从 2011 年开始创业,中途两次创业都以失败告终,失败的打击,让我对真实自己的认知比一般人还是要高的,我知道自己哪些缺点,jfinal 哪些不足我也很清楚。我并不是你认为的那么封闭

jfinal 在 3.3发布时在 gitee 上给出了两个性能测试项目:
https://www.oschina.net/news/90815/jfinal-3-3
全都是别人写的,一个是我自己很懒,二是可能是我潜意识对 jfinal 的性有太有信心了,而是将可用的时间精力都花去打磨改进 jfinal,以及进行社区建设了

要知道 jfinal 多年前一直想建生态,到今天才正式开始,时间太不够用了,有些事情能不做就懒得做

退一步讲,jfinal 是完全开源的,任何人都可以对其进行性能测试,无需我自己花时间去弄这个事
2019/12/20 19:50
回复
举报
对产品信心的建立是需要数据佐证的. 在我看来性能并不是产品质量中最重要的部分, 但也是属于必须照顾到的部分. TFB 这样的平台对我来讲就是一面镜子, 能帮助我发现 Act 性能方面的问题. 我也曾经在性能方面出过 Regression issue, 也是出乎自己意料的. 搞技术的人, 有这样严谨的测试平台来帮助自己提高和稳固产品质量, 我只会感激. 当然这个完全是建议. 是否采纳完全在波总自己了
2019/12/20 20:07
回复
举报
好多更重要的事情来不及做,先全力做好生态吧,你的建议我记住了
2019/12/20 20:13
回复
举报
时间关系,我简单回复一下吧,要不然罗总对我的误解会越来越深

首先,jfinal 文档中出现了“平庸”、“浪费生命” 这个我并不是有意识地贬低其他产品,我只是想突出 jfinal 这个功能确实很好用。罗总将这个问题指了出来,我才知道意识到这真的是个问题,今天晚上我会将这些字眼去掉。这也是别人视角纠正自己无意识错误的好处

关于 jfinal 用到的数学、物理思维,我很早就意识到这个肯定会被人误解决,很多人不会相信并加以攻击,所以我在上码云封面人物时硬是没有说出来我最大的业余爱好是数学、物理(注意看倒数第二个问题):
https://gitee.com/gitee-stars/2

我的思维方式就是这样的,并不是用数学来佐证什么事情。由于 jfinal 下一步要依靠俱乐部会员建立生态,我希望将我用了多年的极简设计思维复制到 jfinal 生态项目中去,所以选择这个时候将之公布出来

我在 jfinal 俱乐部 qq 群里面很早就谈到过我用数学思维对世界的理解,对 jfinal 设计的理解,虽然群里没几个人感兴趣,但我也自得其乐

我在文档或者发布新版本新联时用到了一些“极端的词”,这个纯粹是性格使然,我在生活中就喜欢用这些词。罗总你可以注意到并不是我一个人有这毛病,马云平时讲话也喜欢用一些极端的词,例如永远、一定、不可能、活着、死亡等等既极端又带感情色彩的词

除了性格使然,也因为我是真心觉得新版本的功能好用,我首先是打动了自己,才真诚的说出了比较极端的词,你可以认为我夸张了,但我认为我是打动了我自己,你可以认为我是一个比你感性的人,但你不能说我是有什么其它不良动机

要知道 jfinal 很少发版本新闻,上次发新版本是半年前:https://www.oschina.net/news/107259/jfinal-4-2-released

如果新版本功能不能打动我,我会选择不发,而是等功能攒多了,打动自己了以后再发,这次 4.8 是较上次 4.2 以后发的版本,中间跨越几个版本。

jfinal 很少发新版本新闻,除发新版本新闻外从来不对外做宣传,但是在你的认知你面, jfinal 比较 marketing,这是个极大的误解,你觉得我有心,但我本无意
2019/12/20 19:39
回复
举报
感谢波总回复. 也感谢你接受我关于 JFinal 产品手册遣词方面的建议. 关于数学修养, 我向来佩服具有良好数学修养的人, 当然我也认为数学修养会让一个人的思维更加严谨. 确切地讲如果要在 4.8 的发布新闻中引用欧拉恒等式, 无论如何应该提到欧拉恒等式至少在某个方面和 JFinal 的某方面存在同构, 而且如果有一篇博客能详细阐述甚至证明这种同构的存在, 那我认为这是出自一个有良好数学修养的工程师一个相对严谨的表达, 否则我只能认同是一个马老师式的 Marketing, 而且是一个比较过分的 Marketing. 关于动机, 从头到尾我就没有认为波总会有任何不良动机. 这个地方我们只看现象, 不看动机. 关于发版, 我并不认为发版是不好的事情, 有新版本, 通过发新闻给大家沟通是理所当然的做法. 即便当做 Marketing 的手段也没毛病. 关于 Marketing, 我从不认为一个产品不需要 Marketing, 我只是不认同某些 Marketing 的做法.
2019/12/20 19:58
回复
举报
我是从欧拉恒等式中抽取出:要素 + 关系,作为建模而使用的基本单元,将之对应到极简设计中的:类 + 方法,这里头的内容不可能都发到新版本新闻中去。那个新闻对数学的表述我都觉得多了,更多的内容我用视频录制出来了。marketing 用于开源这事我头一回听说,我完全意识不到有这么一说,这是你将我的性格表露当成了 marketing 行为
2019/12/20 21:53
回复
举报
不好意思, 我真的没有看懂你的逻辑, 要素 + 关系, 这个不是整个数学研究的对象吗 ? 类 + 方法? 类不是数据 + 方法的封装吗? 要说这两对之间存在同构, 倒不如说因为存在, 所以存在, 太哲学,不, 太玄学了, 期待看到你的视频阐述. 开源当然有 marketing, 而且还专门为之定义了一个角色: Technology Evangelist (https://en.wikipedia.org/wiki/Technology_evangelist). 如果你仅仅是性格表露就能做到这样, 可能你天生就适合做这方面的事情吧, 只是我觉得还是要稍微落地一点, 无论如何都是 Technology based, 做成罗永浩对你对 JF 其实都不好. Josh Long 是 Spring 的 Evangelist, 你可以稍微看看他是怎么做的, 从他的表达中我看到过激情, 自嘲, 幽默, 但看不到瞎扯, 更看不到因为自己对 Spring 的热爱就诋毁或贬低其他产品.
2019/12/21 03:28
回复
举报
就因为要素 + 关系是很普适很好用的建模因子,所以才会像你所说的与很多东西存在同构。这里的关键、难点在于:你将什么东西提取并抽象成为要素与关系,一百个人可以有一百种提取方式。数学大师欧拉提取了e、i、pi、0、1、+、= 这五个要素与两个关系,请问为什么不是另一个普通人提取出来,就因为这个提取过程极难、极难,需要对本质有深刻洞察。提取抽象出要素与关系只是建模的第一步,你得验证要素与关系之间是不是逻辑自洽、续洽、他洽,否则你建立的这个模型就是错误的。光是这一步就是极难的事情。好了,下一步是将要素、关系的数量最少化,也就是说你从你建立的模型中无法再删除任何一个要素或者关系,否则模型就是错误的,这个达成不能再继续删去要素或者关系的状态 jfinal 称之为极简。对应到 jfinal 顶层设计是五个要素Handler、Interceptor、Controller、Render、Plugin,无法再删除任何一个,否则很多功能实现不了。你认为是哲学,是玄学,但这个却是我的日常。你没有这种思维方式,不代表别人有了就是错误的,你有你自己的思维方式,或许别人也不是很赞同
2019/12/21 12:12
回复
举报
我再举个jfinal 极简思维在jfinal enjoy 模板引擎设计中的应用,enjoy 设计中提取出来的要素有:顶层:Engine、Template(用户使用 API), 中层:Stat、Expr、Env、Scope、Writer(执行 AST), 底层:Lexer、Parser、Token、Symbol(构建 AST),需要花很长时间才能确定下来这些要素,然后试着删除其中的要素,确定不能删除任何一个,要素的设计才算完成。同理,关系的设计也类似。 我这里强调一下,jfinal 极简思维是指极简设计,用于设计阶段,用于建立系统的内核、骨架,而不是用于肌肉部分,肌肉部分会为了开发体验,新增一些常用的类、方法,而这些类和方法是可以删除的,只是用户没有了这些类和方法在使用时会很不方便。数学思维方式是我的日常与习惯,常人很少有这么干的,所以常人难以理解
2019/12/21 12:22
回复
举报
继续说说要素、关系的提取,以及极简状态的达成。你翻看一下 oschina 所有开源的模板引擎,你自己也过一个模板引擎,对比一下所有作者提取出来的要素,是不是不仅要素(class)本身千差万别,要素之间的关系(method)差别也很大,要素、关系的数量也大不一样。所有这些作者都成功实现了模板引擎的功能,但 jfinal 是在建模的时候就使用极简思维去提取要素、关系,并将之数量减至最小,从而达成极简状态。其他作者我并不知道他们用的什么思维方式,反正我用的数学、物理思维挺好用。希望罗总在这里能谈谈 actframework 在设计顶层架构时使用的思维方式,有没有一个系统化的方法论或者叫思维方式
2019/12/21 12:56
回复
举报
谢谢波总的回复, 这个地方太局促, 我们可以移步这里继续讨论这个话题: https://my.oschina.net/greenlaw110/blog/3145865
2019/12/22 13:05
回复
举报
要素、关系貌似在所有模型中都有的基本单元,但这个更像是事后诸葛亮式的眼光。 就好比你看到爱因斯坦的质能方程,也看到的是要素 + 关系,但为什么提取出 E、m、c、乘、平方、= 这些要素与关系的不是别人而是爱因斯坦? 知道别人做出来的架构中尽是些要素 + 关系并不重要,刻意有这个思脉并做出好设才重要。 jfinal 是死死抱着这个思脉去建立普适的要素、关系,再将其数量最小化。 将这个思脉当成默认背景,如果没有这个思脉,jfinal 永远不可能迭代 9 年才 29003 行代码。 通过以上这些说明,相信罗总不再认为数学思维是玄学
2019/12/21 12:57
回复
举报
这里是我对这个点的理解: https://my.oschina.net/greenlaw110/blog/3145865
2019/12/22 13:03
回复
举报
非常有道理,做人不能太贾总!
2019/12/20 18:26
回复
举报
一个'极'字,你们就受不了.有啥受不了的.人家的习惯而已.
何必鸡蛋中挑骨头?
要团结,不要分裂.要多说人好话,多赞叹别人.
2019/12/20 18:23
回复
举报
哈哈,霸气
2019/12/20 17:52
回复
举报
是的,JF是优秀的,这点我认可。

我只是在JF这种“极简”思想以及JF的欧拉公式启发下,使用道家思想,进一步发扬光大,做出了 SFinal。

这里我承认是对 JF 这种宣传行为的讽刺,我并没有否认JF是一个优秀的国产开源框架,重申一下,我讽刺的是这种浮躁的技术风气,这种宗教性质的技术洗脑,这种怒极而骂的人身攻击行为。

非常同意楼主的观点,做技术的人,还是踏实点好。
2019/12/20 17:40
回复
举报
赞同,不要像现在太极大师一样,吹嘘上天了
2019/12/20 17:45
回复
举报
看破说不破,还是好朋友
2019/12/20 17:38
回复
举报
很赞同老大说的!
2019/12/20 17:33
回复
举报
更多评论
打赏
36 评论
2 收藏
5
分享
返回顶部
顶部