草庐IT

请停止刷 GitHub star!

hackware 2023-10-06 原文

最近几年开源界刮起了一阵歪风,那就是刷 GitHub star。这种行为严重违背开源精神,严重扰乱开源社区秩序,严重破坏开源生态。百害而无一利。

据我的了解,不光是个人会刷 star,某些大厂也在刷,为了一探究竟,前段时间我以卧底的身份和某宝提供 GitHub 周边服务的商家展开了如下对话(对话中我的言辞纯属虚构):

star_blur.jpg
star_blur2.jpg

从言谈中可以看出卖家并不觉得自己在做恶心的事情,相反他们很引以为荣:

shame.jpg

他们的这一挺身而出可能会让中国开源走向失业。作为在 Android 开源圈内有一定影响力的人(GitHub star 9500+),接下来我来系统的分析一下刷 star 所带来的恶劣影响。

恶劣影响

1. 增加了技术选型成本

开源项目的 star 数一般代表项目受认可的程度,只有别人认可你的项目能给他带来价值,他才可能给你 star。

在日常开发过程中,为了节约研发成本,我们几乎总是首先在 GitHub 上找一找有没有满足自己需求的开源库,如果有就直接用,或小改后再用,如果没有才自己造轮子。一般同一个需求可能有好几个开源库可供选择,而我们一般倾向于按照 star 数从多到少来挨个了解它们,直到最终确定某一个开源库是更合适的选择。然而如果我们面对的高 star 的项目是虚假的,这无疑增加了我们的鉴别成本。

2. 简历初筛蒙混过关,增你企业招聘成本

很多个人刷 star 的目的很简单,就是增加自己简历的含金量。因为很多 JD 里把 GitHub star 数作为加分项。如果你自身技术实力不够,即便靠着虚假的 star 通过了简历初筛,你也很难通过后续的面试。真正有实力的人不会为了简历初筛去刷 star。如果你这么做了,那么后续面试可能会被面试官问更刁钻的问题。

由于这种人的存在,后续面试的淘汰率就更高了,这无疑增加了企业的招聘成本。

3. 给中国开源蒙上阴影

此处借用网友的一句话:“丢脸丢到国际上了。”,这个很好理解,虚假 star 的项目增加了老外技术选型的成本,并且可能在使用过程中又曝出更多的问题,那中国的开源项目在国际上的声誉就会降低。

4. 违背开源精神

作为一个资深的开源人,我在 6 年前开源的 MagicIndicator 斩获了 9200+ star,预计有数十万的 App 使用过。这让我很自豪。近期我又开源了两个 star 数分别可能破 5 万和 3 万的顶级开源项目,我还开源了世界上最快的通用排序算法。支撑我做这些开源项目的原因只有一个:

我总是从开源社区获取别人做的好东西,那自然应该把我做的好东西也分享出去。如果你只求索取而不奉献,那么你终将一无所有。---- 尼古拉斯 · 方兵

这就是我对于开源精神的理解,这是一种无私奉献的、不求回报的、非功利性的精神。

但刷 star 的行为却充满了功利性,甚至形成了一条产业链,这严重违背了开源精神。

5. 违背道德

这个无需多说,在任何领域的作假都是违背道德的。

唯一的“利”

从上面的对话中我们可以看出,貌似刷 star 可以有唯一的“利”,那就是让那些优秀的项目能获得更多的曝光量,这些项目一般是大厂的。它们面世之初需要更多的人知道。这样才能更大程度的发挥项目的价值。但我想说的是,大厂应该把刷 star 的钱拿去提高项目的曝光量,比如在某些大 V 的公众号做推广。而不是直接刷 star。

当然我认为更好的方案是 GitHub 推出付费的服务来提高项目的曝光量。请注意,一切都只是提高曝光量,至于别人给不给 star,还得看别人的主观意愿。

结束语

我是中国第一位 Android & Flutter 双料 GDFE hackware,关注我的微信公众号:FlutterFirst,带你起飞!

欢迎点赞、在看、分享三连,我们一起守护行业风气。

有关请停止刷 GitHub star!的更多相关文章

  1. ruby - 使用 Ruby Daemons gem 检测停止 - 2

    我正在使用rubydaemongem。想知道如何向停止操作添加一些额外的步骤?希望我能检测到停止被调用,并向其添加一些额外的代码。任何人都知道我如何才能做到这一点? 最佳答案 查看守护程序gem代码,它似乎没有用于此目的的明显扩展点。但是,我想知道(在守护进程中)您是否可以捕获守护进程在发生“停止”时发送的KILL/TERM信号...?trap("TERM")do#executeyourextracodehereend或者你可以安装一个at_exit钩子(Hook):-at_exitdo#executeyourextracodehe

  2. ruby - 如何停止 jekyll 本地服务器 - 2

    我刚刚在本地设置了我的第一个Jekyll项目。我已经让服务器运行,但我忘了使用自动标志。所以现在我想停止服务器并使用标志重新启动。但是,在我启动服务器后的命令行中,我没有得到新的提示,所以我无法输入任何新命令。我不太习惯命令行,所以我真的很感激知道我应该做什么!我正在使用MacOSX和terminal.app,如果有区别的话! 最佳答案 psaux|grepjekyll|awk'{print$2}'|xargskill-9 关于ruby-如何停止jekyll本地服务器,我们在StackO

  3. ruby-on-rails - EC2 实例在负载均衡器中停止服务 - 2

    我有一个EC2实例正在运行。我有一个负载均衡器,它与EC2实例相关联。PingTarget:HTTP:3001/healthCheckTimeout:5secondsInterval:24secondsUnhealthythreshold:2Healthythreshold:10现在该实例显示为OutofService。我什至尝试更改监听端口等等。一切正常,直到重新启动我的EC2实例。任何帮助将不胜感激。仅供引用:我有一个在端口3001上运行的Rails应用程序,我有一个用于HTTP:80(loadbalancer)到HTTP:3001的监听器。我还在终端中通过ssh检查了正在运行的应

  4. c - ruby的rb_raise如何停止调用它的c函数的执行? - 2

    如果你在C中将一个ruby​​方法写成一个使用rb_raise的函数,调用后的函数部分将不会被执行,程序将停止,你会认为rb_raise使用了exit()。但是如果你在ruby​​中拯救异常,比如:beginmethod_that_raises_an_exceptionrescueendputs'Youwilstillgethere.'ruby代码将继续,但您的函数将停止执行。rb_raise如何实现这一目标? 最佳答案 推测它使用了setjmp(在调用方法之前)和longjmp(在rb_raise中)。

  5. ruby - 停止分布式 Ruby 服务 - 2

    我有一个启动DRb服务的脚本,然后生成处理程序对象并通过DRb.thread.join等待。我希望脚本一直运行直到被明确杀死,所以我添加了trap"INT"doDRb.stop_serviceend在Ruby1.8下成功停止DRb服务并退出,但在1.9下似乎死锁(在OSX10.6.7上)。对该进程进行采样显示在semaphore_wait_signal_trap中有几个线程在旋转。我假设我在调用stop_service时做错了什么,但我不确定是什么。谁能给我任何关于如何正确处理它的指示? 最佳答案 好的,我想我已经找到了解决方案。如

  6. ruby-on-rails - 上帝停止resque worker rake - 2

    我在生产网站上使用Resque。当我部署时,我希望GOD停止所有worker然后重新启动它们,因为有时我们更改类的代码并重新排队失败的作业。问题是,当我执行godstopresque时,rake实际上并没有停止,工作人员仍然活着并使用旧代码,这给我带来了各种各样的问题。即使我“上帝终止”它也不会杀死worker。现在,我正在使用shell脚本来杀死工作人员,但由于我有不止一台服务器,所以在所有生产服务器上进行操作非常痛苦。这是我的上帝配置文件:rails_env=ENV['RAILS_ENV']||"production"rails_root=ENV['RAILS_ROOT']||"/

  7. ruby - 为什么一个简单的瘦服务器在进行基准测试时会在 16500 个请求时停止响应? - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:'ab'programfreezesafterlotsofrequests,why?这是一个简单的测试服务器:require'rubygems'require'rack'require'thin'classHelloWorlddefcall(env)[200,{"Content-Type"=>"text/plain"},"OK"]endendRack::Handler::Thin.runHelloWorld.new,:Port=>9294#I'vetriedwiththeseaddedtoo,'rack.mu

  8. ruby - 启动和停止 Ruby 线程 - 2

    我如何从另一个线程中启动和停止一个单独的线程?loop_a_stopped=trueloop_a=Thread.newdoloopdoThread.stopifloop_a_stopped#Dostuffsleep3endendloop_b=Thread.newdoloopdoresponse=ask(">")caseresponse.strip.downcasewhen"start"loop_a_stopped=falseloop_a.runwhen"stop"loop_a_stopped=truewhen"exit"breakendendendloop_a.joinloop_b.j

  9. ruby-on-rails - 如何从命令行停止 Rails 服务器? - 2

    我有一个奇怪的事件,我关闭了我的终端,但服务器继续运行。当我尝试再次运行服务器时,我收到一条消息,表明服务器仍在运行。如何通过命令行停止服务器? 最佳答案 方法1:只需在运行服务器的终端中键入:Ctrl+C。方式2:另一种方式:在您的终端中找出进程的PID:$lsof-wnitcp:3000然后,终止进程:$kill-9PID方法3:您还可以使用以下命令杀死所有正在运行的名称中包含rails的应用程序:killall-9rails 关于ruby-on-rails-如何从命令行停止Rail

  10. ruby - 停止 ruby​​ http 请求修改 header 名称 - 2

    我正在用ruby​​做一个http请求:http=Net::HTTP.new(uri.host,uri.port)req=Net::HTTP::Post.new(uri.path)req.body=payloadreq['customeheader']='xxxxxxxxx'http.set_debug_output$stdout我打开了调试,当请求被发布时,我可以看到标题被发布为:Customheader:xxxxxxxxx有没有办法阻止这个,我发布到的第三方服务器给出了一个错误,因为header名称不正确-它期待customheader: 最佳答案

随机推荐