规范开源,做良好的火山软件开发者!
开源是好事,但希望都能遵循基本规范开源
本帖仅供探讨交流,“规范开源”并无任何恶意,也希望水淼JSON的作者能进来看看。
开源!
是一个很伟大的事情,往大了说能够造福社会,比如安卓的开源早就了如今的国产手机,华米OV等都是在安卓的开源下茁壮成长。
甚至安卓系统的存在都是因为Linux开源贡献,才有了安卓系统,华为的鸿蒙也是基于安卓开源魔改而来,创造了自己的生态APP同时也兼容安卓APP,至于鸿蒙是否为安卓套壳这个不重要,毕竟安卓也是Linux套壳,探讨这些没有任何意义,毕竟鸿蒙敢于把“Android”从系统中移除也证明了鸿蒙已经脱力了谷歌的掌控,不再受谷歌的限制可以任意的修改系统源码。
扯远了,回归正题。
从上面的大案例可以看出,开源确实是很伟大很好的事情,哪怕你只是开源一个很小的工具集,对于很多人来说,可能如获至宝,可能会让很多小白从此走入软件开发者大门,创出一片天,掉更多的头发。
也可能会有很多大佬,基于这个开源的工具集进行扩展维护,创造了属于自己的工具集造福更多的开发者。
总之,开源是一个很好的事情,造福社会,造福他们,也造福自己。
开源是好事,这是一个很好的事情。但是开源也应当有开源精神,遵守基本的开源规范,就好像取GitHub或gitee发布开源代码的时候,会请你选择开源协议一样。遵循开源协议,基本上不能说所有人吧,至少大多数人都还是很遵守开源协议的。
当然开源协议有很多吃相都挺难看的,比如那个什么GPL病毒协议(太过理想化的协议,病毒一样,强制别人也开源),让暴风、QQ影音等一些音频视频相关的软件都因为这个开源协议被钉在“耻-辱-柱”上,甚至QQ影音直接下架停止更新数年,最近两年才重启项目。
火山作为很小众的编程平台,也都在在很谨慎的遵循开源协议,尽管这个开源协议是没有法.律效力,如果对方想打官司,实际上打不赢的,法.律不认可这些协议的,但是也依然在遵守。
目前火山的类库封装人员已经发现了很多很多很有意义的类库,很好的库,但是就是因为开源协议这个门槛,让火山官方很难去封装这个库,虽然封装了并不会有什么法律风险,仅仅只是随大众的也遵循一下,毕竟火山也不想被钉在“耻.辱.柱”上。
当然这个开源协议这个是小事,重点也不是开源协议,开源内容,也同样重要。
这里要说一下火山最近的开源贴“水淼JSON”模块很强,很好的开源项目,但是希望能够编辑一下帖子并注明,“本模块仅供交流学习JSON格式解析,建议规范使用JOSN解析,遵循JSON基本规范。”
可能会有一些疑惑,接下来解答一下。
问:为什么要添加这句话?
答:JSON使用是有自己的规范标准的,自研JSON解析并无错,哪怕自研一个路径解析,或者自己通过算法提升解析效率都无任何错,但是水淼JSON的容错处理已经超出的JSON解析规范,容错处理的太多了,容易误导新手,让新手,注意是新手小白,他们会认为JSON就是这样的,或者说JSON就应该这样。
这是一种极其不好的现象,虽然可能作者本人并没有意识到这一点,或者说觉得这个无所谓,毕竟火山还只是小众,终究只会影响少数人。
但是这就错了,火山现在用户是少,但是未来呢?火山下个平台出H5跨平台会吸引更多人进入火山生态,一传十十传百,可能会有很多新人小白来使用你的模块,影响会越来越大。
也可能吴总突然间开窍,下个平台开发鸿蒙插件,鸿蒙两个字,没准都能从华为那边吸引几十万的流量。
蝴蝶效应都知道吧?
我说的就是这个意思,虽然看上去没有影响,但是一旦影响起来也是非常大的。
虽然编辑帖子贴上那句话,可能并不会改变什么,也可能让人会影响很多人,但是你贴上和不贴上是两个完全不同的概念。
就好像我的无名模块里面永远帖子一条注释“开源提示:开源代码应遵循开源精神,请勿将本模块用于非法用途,否则后果自负,如转载模块源码请注明原作者.”
可能很多人不会遵循这个“规矩”但是你贴上就是表达了一种态度,别用模块搞坏事,如果搞了后果自负。
做一个好榜样的同时也要学会如何规避一些潜在的风险。
就比如这个JSON,既然起名叫JSON,就应当遵循JSON规范,容错处理可以有,但是不能过度,如果过度就会破坏JSON规范。
举个例子说:官方库用的是jsoncpp,这个库其实也是有容错处理的,但是这也仅仅是针对要解析的文本中存在JSON规范格式,如果有JSON规范格式,则会剔除无效文本,将正确的JSON解析。
这种程度的容错处理是可以被认可的,因为他并没有破坏内部的JSON格式解析,里面的键值解析是什么样子还是什么样,自然这种容错是可以被理解的,也可以被认可。
总结,这并不是我一家之言,这确实是一个需要重视的事情,我不希望火山软件开发平台因为没有遵循JSON规范被钉在JSON规范的“耻.辱.柱”上。
自研解析算法并无任何错,但是必要的提示还是很重要的,恳请编辑帖子声明:规范使用JSON,本模块仅供交流学习JSON容错解析,以及如何自定义解析文本存储格式(因为水淼JSON容错解析的容错已经脱离了JSON的解析规范,不属于JSON解析,算是自定义存储格式解析。)