广告

红芯道歉,程序员们“群嘲”其代码水平

时间:2018-08-20 作者:网络整理 阅读:
处于风口浪尖的红芯浏览器,其中的两款插件代码被公开以后,发布了道歉公告,但这并不妨碍程序员群体对其开启“群嘲”模式。不少专业码农发现,红芯的代码存在过度注释、代码冗余、语言陈旧等问题,甚至还有工程师测试后发现,它在插件的保密性上存在虚假宣传。

8月16日,自称“打破美国垄断,中国首个自主创新智能浏览器内核”的红芯浏览器,被网友发现“只是谷歌浏览器换了一层皮”——红芯浏览器安装包解压后发现,最终可以得到一个版本号为49.1.2623.213的Chrome文件。(相关报道

“不是抄袭,是站在巨人肩膀上创新”

事情败露后,对于网友质疑的抄袭,红芯联合创始人高婧回应,承认红芯浏览器“包含Chrome在里面”,但并非抄袭,而是“站在巨人的肩膀上去做创新”,如智能感知渲染引擎及应用安全方面都有创新,这些功能需连接云端服务,“单看安装包是看不到任何东西的。”她还称,客户满意度很高,“绝不是那些人说的拿国产概念去骗钱。”

有网友将该浏览器的抄袭事件比作当年的“汉芯一号“造假事件。由于两个事件过程相似度很高,只是一个硬件、一个软件的差别。这也使得网友质疑红芯浏览器是打着“自主创新”、“打破美国垄断”的旗号,在骗中国取国家基金。

对此,红芯的CEO陈本峰在接受《财经》采访时表示:“我们没有什么钱是从国家那来的,都是我们移动化和安全的技术给客户创造价值而获得的。”
20180820-redcore-1.jpg
新京报事后采访红芯创始人陈本峰。(图自:新京报)

而在他们说这话两天前,该公司刚刚宣布完成2.5亿元(人民币)C轮融资,投资方有中国的大型上市公司、政府客户、晨兴资本、达晨创投和IDG资本。

红芯时代官方也在周四(8月16日)晚发布声明称:红芯浏览器内核,是基于通用的浏览器内核架构(即Chromium开源项目,但不是Chrome浏览器)的基础上进行技术创新的。区别于传统的浏览器,红芯浏览器是专门针对企业办公场景设计的国际上浏览器内核技术是不断迭代更新的,红芯浏览器内核 Redcore是基于 Chromium/Bnk。

20180820-redcore-2.jpg

这一声明,与该公司之前在官网上声称的“打破美国垄断,中国首个自主创新智能浏览器内核”的说法完全不同。

随后,红芯公司官方微信周五(8月17日)上午发表致歉信。信中称,“红芯在近期的融资宣传过程中存在一定程度的夸大,给公众带来了误导,这一点我们有不可推卸的责任,我们确实做错了,在此郑重地向大家道歉。”

20180820-redcore-3.jpg

报道引述致歉信提到,红芯浏览器内核Redcore,是基于国际通用的开源Chromium内核架构进行的改造和创新。“这一点红芯前期宣传中没有明确提及,误导部分读者认为其从零开始研发了浏览器内核”。致歉信称,“公司在宣传过程中应该更强调具体功能和客户价值,而不应特别强调国产自主,作为服务于大中型企业巿场的技术公司,我们更应该严谨务实,而不应该是夸大其词。”

“别的不说,你这代码写得就很业余”

目前,在红芯浏览器的安装包中有两个浏览器插件可以看到源代码,澎湃新闻采访了不少互联网工程师,他们通过阅读代码发现,红芯的代码存在过度注释、代码冗余、语言陈旧等问题,甚至还有工程师测试后发现,它在插件的保密性上存在虚假宣传

一位从事数据相关业务的工程师对澎湃新闻记者表示,红芯浏览器插件的源代码中存在大量的注释,显得注释过度。一般熟练的程序员日常写代码时不会所有内容都进行注释,简单的接口不用注释,也不用重复注释。

“注释的主要功能是提醒程序员某一段代码的用途,但每一句都加注释,太浪费工作效率,而且显得十分业余。”一位从事汽车软件开发的工程师这样说道。

另一位来自外资科技公司的程序员则向记者评价称:“中文注释说明水平可能不高,说明懂英文的人不多。”

而且,一位程序员认为,产品上线后大量注释都没有处理,没办法期待它有什么安全性可言的,“注释就是解释程序运行的文档,产品上线之后一般是要去掉的,防止被其他人摸清运行机制后进行攻击,这是最基本的安全意识。”
20180820-redcore-0.jpeg
红芯浏览器插件代码几乎每一行都有中文注释。

而另一个比较显着的问题是,红芯的代码被指层层复制,存在大量冗余的内容


“以密码管家这款插件为例,它的源代码中,一个仅350行的文件就有100行是重复的。说明写该插件代码的程序员不懂封装,即把代码中相同的部分抽象成一个单独的函数。”一位程序员指出。

“有些重复的代码可以写成一个函数。业务逻辑通过参数传进去。”一位工程师向澎湃新闻记者打比方称,“比如要得到某人老公的姓名,用函数实现的话,就是输入‘孙俪’得到‘邓超’,而不用写孙俪老公邓超、杨颖老公黄晓明等好多个。”

另外,还有程序员向记者指出,上述插件代码中,大量使用常量字符串,这使得之后可能的重构变得非常困难,以及不利于国际化等进一步开发。此外还充斥着大量面条式代码,导致开发人员阅读和后续开发困难。(编注:面条式代码,指源代码的控制流程复杂,混乱难以理解。)

一位在出行互联网公司工作的工程师在看过红芯插件的代码后表示:“水平还凑合,就是写法有些陈旧,差不多是四五年前的写法吧。”这一说法得到另一位工程师的认同:“代码中大量使用的jQuery是12年前发布的,已经过时,使得代码冗长不易读懂”。

一位资深前端工程师则指出,现在市面上成熟的前端团队很少使用JavaScript语言,为了工程化都是用Typescript进行工程构建的。“红芯的代码不仅是JavaScript,还是第六版之前的风格,没有经过代码构建和混淆以及去注释、压缩等过程。这是严重缺乏专业性的表现,一般这种代码只会在外包代码中出现。”

除了代码的被指显得不够专业,更值得注意的是,红芯浏览器插件在数据安全方面也值得商榷

一位程序员试验发现,红芯的密码管家插件中所存储的密码仅存储于本地并且没有加密,即用户可知道使用同一台计算机的其他人的密码。

该程序员向澎湃新闻记者指出,通过阅读密码管家的代码,发现存在密码管家里的密码都是明文存在一个叫做“local storage”的地方,local storage在chromium里是存在一个本地的sqlite数据库文件里,并且这个数据库文件没有加密。这个文件被存在每个用户的AppData文件夹里。

 




插件将明文密码存在local storage中,存在本地的sqlite数据库的文件没有被加密。

红芯浏览器的官网产品介绍称,其数据缓存及存储层使用了数据加密箱。然而该程序员发现,经他试验,红芯浏览器的数据缓存并未如其宣称的那样进行加密
20180816-redcore-2.jpeg
程序员测试发现,红芯浏览器插件没有实现产品宣传中的数据加密沙盒功能。

对此,不少程序员纷纷吐槽,红芯浏览器套用的谷歌49.1.2623.213版本的Chrome文件,是比较陈旧的版本,因为这是谷歌浏览器Chrome最后一个支持Windows XP系统的版本,而红芯浏览器是支持XP系统的。

这说明他们连最起码的代码修改都不会,360浏览器也是基于Chrome内核,用的是最新的69版本,它们就做了XP的适配。”一位程序员告诉记者。

红芯时代在声明中称,Redcore内核的技术创新体现在以下三方面:第一,红芯隐盾该功能主要是让企业的应用系统隐身,只对特定身份和设备可见,从而有效避免外部可能的攻击。第二,红芯云适配,主要是将企业PC端系统适配至移动端,从而帮助企业快速实现移动办公;第三,安全可控浏览器,通过私有DNS、加密缓存国密算法支持等功能,帮助企业迸行数据保护和隐私保护这些功能都源自于企业客户的需求。

一位资深的前端工程师向澎湃新闻记者直言,红芯时代所称的三点创新“完全是在混淆视听”。

“因为他们是通过浏览器插件的形式实现的,他们将话题锁定在浏览器上,让公众以为浏览器是他们的创新。而打开Chrome插件市场,类似功能的插件可以说是非常多的。” 该工程师解释道,“至于价值,好的浏览器插件是有可能有千万级估值的,但是现在Chrome插件市场整体不景气,高质量的Chrome插件应该有百万左右的价值。但我不认为红芯的插件是高质量插件。”

履历造假之“实习生”变“创始团队”

同时,新京报记者经过大量求证发现,红芯创始人陈本峰和联合创始人高婧的简历,同样“严重夸大”。红芯的创始人陈本峰和高婧,一个80后,一个90后,一个坚信“小池塘养不出大鲨鱼”,一个坚信“要在产品里‘走火入魔’”。

20180820-redcore-5.jpg

陈本峰在微软的英文名为Benjiamin Chen,2006年至2012年在微软工作的经历属实,但和此前官网宣传相比,也属于夸大了在微软的经历。和此前所宣传的IE核心研发工程师相比,陈本峰在微软期间主要是测试工程师,大部分项目经历为基础岗位工作。

此前,在红芯官网陈本峰的介绍中写道:担任IE浏览器核心研发工程师,参与开发了IE8、IE9、IE10浏览器。由于工作出色,陈本峰获得了微软产品技术最杰出贡献奖。介绍中还称,全球知名404页面也由陈本峰开发。

新京报记者追溯他的职业经历独家获悉,他在微软时确实参与了IE浏览器的相关工作,但主要是承担基础测试工作(TESTER)、IE多语言界面的开发,并非核心研发工程师。一位内部人士告诉新京报记者,“陈本峰的工作属于测试工程师,是基础岗位,并不是核心研发人员,也没有看到他曾经参与过微软H5相关的工作。”

在云适配此前的官网中,陈本峰还被形容为IE404页面的缔造者,“微软省了2.97亿”,还陆续获得微软最有价值荣誉专家(MVP)、微软最佳产品贡献奖等等。

新京报记者通过微信联系到陈本峰,询问在IE404项目的测试工作中,其是否为Developer(开发人员)的身份?陈本峰回应:“是开发工作,不是测试工作”。

记者查询发现,微软IE404项目的负责人另有其人,上述内部人士分析,“陈本峰并不能算是缔造者或者404之父,但确实参与了IE404项目,但也只是项目内一个Developer(开发人员)。”

而对于此前所宣称的“MVP”,陈本峰在微信上回应新京报记者,“MVP拿过好几届的,你可以和微软的MVP负责人证实”。一位微软内部人士告诉新京报记者,该奖项主要用于对微软社区有所贡献的各地工程师,基本不会发给自己的在职员工,而新京报记者在微软MVP公开查询系统,也并未查询到和陈本峰(Benjiamin Chen/Ben Chen)有关的任何获奖信息。

一位在国外生活多年的工程师告诉新京报记者,“陈本峰的经历来看,本身是一个很优秀的人,但是并没有担任很核心的工作,夸大了自己的职业经历,在国外大部分都是项目制,一个项目经理牵头,不同的岗位分工很精细。很多在国外科技公司工作过的工程师,回国可能就会直接带团队,有的人哪怕是只参与了一小部分工作,却会把项目功劳揽在自己身上,有知名项目参与,这样容易拿到投资。”

“80”后陈本峰,曾参与科大讯飞萌芽,硕士毕业后进入微软总部,他在官网中的介绍自带“光环”,而这些光环却并不全是真实的。

陈本峰在接受人民网的采访中表示,其在1998年高考中以全市理科第三名的成绩顺利考入有“科技英才的摇篮”之称的中国科技大学电子工程专业。进入科大后,本是硬件专业的陈本峰却对软件痴迷,大一自学编程,大二获得科大软件比赛第一名。

2000年,由于编程能力出众,20岁的陈本峰被他的本科导师——科大讯飞创始董事长、中文语音合成技术宗师王仁华教授“招致麾下”。

此前他均称自己“成为了当时的初始团队”。他的工作是帮助讯飞完善中文分词系统,使其准确率从70%提升到93%。

和陈本峰一样,科大讯飞董事长刘庆峰也是科大讯飞创始人王仁华教授的学生。8月16日,刘庆峰回应,陈本峰不是科大讯飞的联合创始人,曾经是科大讯飞实验室的一名实习生。

一名知情人士告诉新京报记者,“很多科技公司初创阶段都是找了在校学生干一些基本的工作,所以陈本峰确实是在科大讯飞的初创团队工作过,但并不是创始人之一,最多算是创始团队实习生。”

履历造假之“交流生”变“哈佛毕业”

红芯官网对红芯联合创始人、COO高婧的介绍长期为毕业于美国哈佛大学&香港科技大学。红芯浏览器事件之后,高婧的介绍改为了毕业于香港科技大学,而哈佛大学则被移至介绍的下方小字中,并标注为(交流学生)。

20180820-redcore-4.jpg

新京报记者在领英找到了Mirranda Gao(高婧)的页面,显示她的教育记录为香港科技大学商学院的“Ungergraduate(本科生)”,而哈佛大学只有为期一年的交流,社团活动记录为“sponsorship coordinator(赞助协调员)”和兼职英语家教。

在2014年她接受侨报网采访时表示,在读大学期间她以访问的身份去了哈佛。曾加入一个名为SLP(创业领导培训计划),为创业者提供导师培训等机会的组织。也正是SLP将她和陈本峰联系到了一起。

除了引入SLP,她还是哈佛中国论坛组织者之一(经查证只是赞助协调员),凭借这些经历,她上榜《福布斯》“30位30岁以下创业者”,还获得“亚洲品牌十大创新女性”、“中国移动互联网行业品牌女性”、“北京海英人才”等荣誉。

和高婧接触过的人形容她“女王范”,极擅长营销。在侨报网2014年对她的报道中,说到营销经验中开发市场这个重点,她用了“不择手段”这个词语:足够的狠劲是每天破茧重生的坚实力量。


本文综合自澎湃新闻、36kr、新京报、hkcnews报道

qrcode_EETCwechat_120.jpg

关注最前沿的电子设计资讯,请关注“电子工程专辑微信公众号”

本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
广告
相关新闻
广告
广告
广告
广告