共计 1816 个字符,预计需要花费 5 分钟才能阅读完成。
Faker 是一个风行的模仿数据生成库,程序员只需简略地几步操作,就能够在浏览器和 Node.js 中生成大量的假数据,GitHub 的 Star 已超过 25000 星,但 Faker 的开发人员 François Zaninotto 打算放弃对 Faker 更新保护。
依据 GitHub 的数据显示,最近一次更新在 2020 年 12 月 11 日。
Faker 意外诞生
Faker 诞生很意外,François Zaninotto 须要为他的我的项目生成模仿数据,于是就在 2011 年 10 月开发了 Faker 我的项目。因为 Faker 能产生大量的模仿真切的数据,因而 Faker 在 PHP 社区被很多开源爱好者应用并获得好评。据 François Zaninotto 在博文中走漏,截至 2020 年 10 月已有 450 多个贡献者(感激他们的付出),被 713k 个我的项目所依赖。
<?php
// use the factory to create a Faker\Generator instance
$faker = Faker\Factory::create();
// generate data by accessing properties
echo $faker->name;
// 'Lucy Cechtelar';
echo $faker->address;
// "426 Jordy Lodge
// Cartwrightshire, SC 88120-6700"
echo $faker->text;
// Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit
// et sit et mollitia sed.
// Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium
// sit minima sint
Faker 存在设计瑕疵
François Zaninotto 示意 Faker 很臃肿,在于很多用户下载了不必要的语言版本,原先只有 10 KB,当初却必须下载 3 MB。另一个外围设计问题是 seed(数据库模仿数据填充命令),为了容许可复用的构建,Faker 生成器承受 seeder,应用雷同的 seeder,Faker 将始终生成雷同的模仿数据。这导致无奈对现有提供程序进行任何重大更改,例如删除过期的数据或反复的内容,为了填入新的模仿数据,Faker 必须防止数据被批改。
Faker 保护太难了
作者认为保护这个 Faker 太难了,因为 Faker 很多模仿数据都是从别的中央粘贴复制过去的,并受到版权法律爱护,还有用户提交的 PR 都是作者看不懂的语种,因而他无奈辨析数据的优劣,出于版权等危险思考,他最终敞开了许多 PR,并自觉地合并了局部其余 PR。最次要起因是 François Zaninotto 没有工夫去保护 Faker,而且他曾经有 5 年工夫没有写过一行 PHP 代码了。
有人提议将 Faker 移交到专门保护我的项目的组织,François Zaninotto 回绝了,他认为这是在“诽谤”一个 25,000 Star 我的项目的名誉。
Faker 使命实现了
François Zaninotto 示意:“Faker 被下载了 1.21 亿次,足以阐明它曾经足够好。成千上万的 Faker 用户不可能同时都错了,对吧?”
所以 François Zaninotto 决定“退休”,意味着 François Zaninotto 不会承受新的 PR,不会合并现有的 PR,不会公布新版本,也不会承受新的维护者,将齐全禁用来自 Faker 存储库的告诉,并删除收件箱中所有与 Faker 相干的音讯的存档——这对地球来说又是一个好动作。他认为这个决定挫伤了那些为 Faker 付出工夫和工作的贡献者,他对此深表歉意,另外他认为这个行动合乎 PHP 社区的利益。
François Zaninotto 最初示意:“Faker 依然能够在 Packagist 上应用,只有您不降级 PHP 版本,它就会持续工作。置信其他人很快就会公布一个新的库来代替 Faker,它会比 Faker 好得多,而且会倒退得更快。”
最初,屏幕前的你应用过 Faker 我的项目吗?你要是原开发者会放弃这个我的项目吗?
参考链接:
https://marmelab.com/blog/202…
开源前哨
日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。