【代码故事】VSCode知名主题material-theme仓库代码清空

news2024/9/22 1:22:59

大家好,我是前端之虎陈随易。

这是我的个人网站 https://chensuiyi.me。

出大事了

看到了一篇前端社区开源扛把子 Anthony Fu 的帖子。

Anthony Fu的帖子

经过一番了解,出大事了!

知名 VSCode 主题 material-theme 仓库清空了!

连带着所有提交的历史纪录,统统没了。。。

背景知识

在进一步的对这个事情报道之前,根据我查到的资料,我们先对 material-theme 简单了解一下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是 material-theme 官网,可以看到,不仅是 VSCode,对于很多其他软件和工具,都提供了主题适配。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据官网显示,光是VSCode的用户,就有600万。Star数11k,5星好评,800左右的fork数。

那么,如此成功的项目,为什么会一夜之间把仓库全部清空呢?我们追寻蛛丝马迹,娓娓道来。

Anthony Fu的担忧

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作为开源大佬,Anthony Fu 一直是我非常敬佩的开发者。

不仅是他的作品和项目,给众多开发者带来了难以估量的体验改进和效率提升。

他本人对于开源界和编程界的维护和担心,每次都首当其冲,第一个站出来。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

仓库的额外说明

在这个事情发生的第一时间,Anthony Fu 克隆了一份代码仓库,并做了补充说明。

恢复仓库?

作为一个有着800个fork的知名开源项目,就算代码被完全清空了,也还是存在着无数个备份,要想恢复,也是很简单的事情。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

针对代码恢复这个问题,Anthony Fu 有着他的思考和观点。

是的,如果贸然恢复仓库,由社区接手继续维护和更新,那么对于整个开源社区而言,在某些情况下,是不利于开源氛围的。

试想一下,如果是我们自己开源了这样一个仓库,因为某些原因,自己突然删除了仓库,接着马上就有社区接手继续维护,换做是谁都会不舒服。

辛辛苦苦,无数个日夜的更新与维护,成他人之嫁衣。

所以,我们需要知道,这清空仓库背后的原因。

删除原因

仅剩的2个issue

这是 material-theme 仓库 https://github.com/material-theme/vsc-material-theme 仅剩的2个issue。

第一个是 Anthony Fu 的,呼吁恢复仓库。

原文

这是第二个issue的原文。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是第二个issue的译文。

从这个说明中,我们也明白了事情发生的一些原因,有好有坏。

好的一面就是,该项目会继续维护。

坏的一面就是,该项目不会开源了。

同时呢,也会以一次性付费的形式,进行有偿使用,我觉得,这可以理解。

从以上说明中,我大概列举一下2点具体原因:

  1. 项目维护9年以来,消耗了大量的时间和精力,但却几乎没有多少盈利,反而要掏钱买域名,买服务器等。
  2. 9年以来,贡献者寥寥,绝大部分人,只想索取,不愿意贡献。

笔者的思考

我认为,事情的本质,很简单,就是没有赚到钱。

如果是我,只要做开源可以赚钱,没有人贡献代码,没有人一起维护,完全没问题,我可以贡献到老。

同时呢,这也是很多很多开源维护者,贡献者的窘境。

费尽精力,时间,减少了陪伴家人,孩子的时间,做了很多伟大又有用的事情,自己的回报却寥寥无几。

如果有人说,你觉得开源这么难,可以不做开源啊。

很多事情,都不是头脑简单地这么一刀切的,社会和人,都是很复杂的。

如果没有开源的力量,我们的社会和科技,压根不会发展到现在这个程度。

同样的,自己付出了精力和时间,做出了有用有价值的事情,也理应获得一些回报。

程序员是一个非常单纯的群体,单纯到很多时候误解了 开源 的含义。

开源 不等于 免费,这个问题我们在一开始就要搞清楚。

否则,当你的开源对现实世界产生影响,而不是只在自己的世界中意淫的时候,作为免费劳动力当你,是继续开源呢,还是停止维护呢?

基于这个问题,有很多开源项目,都提供了一些非常好的实践和案例。

在兼顾开源的同时,也通过开源赚到了或多或少,甚至是可观的收入。

所以,在此,我想跟每一个 单纯 的同行们说:请采取适当的策略,让自己产生的价值,变成价格

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1997313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】1.MySQL基本操作

目录 一、MySQL数据库登陆 1、设置环境变量 2、cmd命令登陆数据库 二、基本操作语法 1、显示数据库——SHOW 2、使用/选择数据库——USE 3、删除——DROP 4、创建——CREATE 5、查看表结构——DESC 6、数据操作——增删改查 (1)增/插入&#…

SpringCloud-gateway编码实现路由策略的自动刷新,动态路由

文章目录 一、概述1、背景2、实现思路 二、编码实现1、nacos配置刷新公共类2、自定义RouteDefinition3、route缓存类4、动态更新路由网关service5、动态路由加载类 三、测试 一、概述 1、背景 gateway可以配置路由断言过滤器,但是通常一个微服务体系下&#xff0c…

KCTF 闯关游戏:1 ~ 7 关

前言 看雪CTF平台是一个专注于网络安全技术竞赛的在线平台,它提供了一个供网络安全爱好者和技术专家进行技术交流、学习和竞技的环境。CTF(Capture The Flag,夺旗赛)是网络安全领域内的一种流行竞赛形式,起源于1996年…

虚拟机Linux系统字体太小怎么办?

每次用虚拟机的Linux系统时,都觉得字体小得伤眼睛,所以就尝试找了下,没想到可以直接用大号字体,这感觉好多啦~ 这里针对centOS的图形界面,非常简单,见下面的图: 应用程序 --> 系统工具 --&…

ELK三个开源软件的工作原理

一、Elasticsearch Elasticsearch的工作原理主要涉及其数据处理、索引机制、查询过程以及集群管理等方面。一下是对Elasticsearch工作原理的详细解析: 1. 数据处理 1.1 数据导入 Elasticsearch支持多种数据源,包括直接输入、通过Logstash和Beats等工具…

js日期处理库--dayjs

js中处理日期是一件比较麻烦的事情,这里推荐使用day.js库来处理,文档:Day.js中文网 引入库 如果没有引入过dayjs,需要先执行npm install,然后import就能使用了 npm install dayjs import dayjs from dayjsconsole.log(dayjs().format()) 如果使用的…

leetcode日记(67)单词搜索

太坑了!老是时间超限,不是时间超限就是内存超限! 思路很简单,就是先遍历整个网格寻找开头,然后上下左右搜寻找下一个字母,引用递归。 最终看边答案边写出来的: class Solution { public:bool …

36-《茅膏菜》:自然奇境中的捕虫艺术家

茅膏菜 腺毛闪烁诱昆虫,粘液缠绕捕食成。 绿叶如网藏陷阱,茅膏菜展捕虫情。 中文名:茅膏菜 拉丁名:Drosera peltata Thunb. 别名:捕虫草、落地珍珠、一粒金丹、苍蝇草、珍珠草 科属:茅膏菜科茅膏菜属 生…

词向量,位置嵌入;归一化;自注意力层;投影;残差连接:防止梯度消失;MLP;

目录 词向量,位置嵌入 归一化 自注意力层 我们该如何处理Q、K和V向量呢 投影 残差连接:防止梯度消失 MLP 层归一化处理 GELU激活函数 MLP Weights 和MLP Projection Weights区别和联系 一、MLP Weights 二、MLP Projection Weights:输入数据或隐藏层的输出投影到…

指针(1)-学习笔记

指针(1)-学习笔记 1.内存1.1内存 2.指针变量和地址2.1取地址操作符(&)2.2指针变量和解引用操作符(*)2.2.1 指针变量2.2.2解引用操作符 3 指针变量类型的意义3.1指针的解引用3.2指针-整数3.3 void*指针 …

PyTorch深度学习实战(7)—— 线性回归

线性回归是机器学习的入门内容,应用十分广泛。线性回归利用数理统计中的回归分析来确定两种或两种以上变量间相互依赖的定量关系,其表达形式为$y wxbe$。其中,$x$和$y$是输入输出数据,$w$和$b$是可学习参数,误差$e$服…

Pod的调度机制

文章目录 一、Pod调度概述二、Pod调度策略实现方式三、kube-scheduler调度1、kube-scheduler调度的流程2、过滤阶段3、打分阶段4、kube-scheduler 调度示例4.1、创建 Deployment 资源清单4.2、应用Deployment4.3、查看被kube-scheduler自动调度的Pod 四、nodeName调度1、创建Po…

MySQL操作2——表的的操作(增删查改)

创建表; 样例: 注意不同的存储引擎创建出来的表在目录下的个数不同 显示此数据库下的所有表:show tables; show create table name \G ——查看创建表时的具体信息 查看某个表的结构:desc 表名; 查看表中储存的数据&…

阿里云与优酷联袂:Create@AI江湖创作大赛,探索AI创新边界

随着网剧《少年白马醉春风》的热播,许多人心中的江湖梦被唤醒,渴望踏入那个充满传奇色彩的影视世界,体验一段属于自己的江湖之旅。在 AIGC 技术日益成熟的今天,这一梦想变得触手可及。阿里云携手优酷,发起了 Create A…

Hadoop YARN:现代大数据集群资源管理与作业调度

1.Yarn的概述 1.1.解释Yarn的定义和基本概念 Hadoop YARN(Yet Another Resource Negotiator)是 Hadoop 2.x 版本引入的一种资源管理器,用于管理和调度大数据集群中的资源,是 Hadoop 集群的核心组件之一。YARN 的设计目标是提高 H…

浅谈C语言动态内存分配

1、什么是动态内存分配 正常情况下,我们创建变量,都是向计算机内存中申请一个静态的内存,也就是说,一旦申请成功,这块内存的大小便不能再改变,并且能申请多少内存在一定程度上都是确定的。比如说&#xff…

【网络层】路由基础

文章目录 技术背景IP 路由工作原理IP路由表 技术背景 路由是能够让整个Internet持续运转的关键。回看之前的网络历史,最开始用一根网线将两台设备连接起来,面对面就能通信。到后面出现了交换机,能够让区域内的所有设备互相通信,形…

WPF篇(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说,Border并不是一个布局控件,因为它并不是Panel的子类,而是Decorator装饰器的子类,而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。 public class Decorator : FrameworkElement, IAddChild {public…

少儿编程 2024年6月scratch四级 电子学会图形化编程等级考试四级真题和答案解析(选择题)

2024年6月scratch编程等级考试四级真题 选择题(共10题,每题2分,共20分) 1、运行下列程序,输入单词“PLAY”最后角色说 A、LY4AP B、AP4LY C、YA4PL D、PL4AY 答案:B 考点分析:考查积木综合…

英伟达元宇宙平台Omniverse的学习,技术调研

NVIDIA Omniverse™ 是一个基于 USD (Universal Scene Description) 的可扩展平台,可使个人和团队更快地构建自定义 3D 工作流并模拟大型虚拟世界。 Omniverse:三维设计协同、模拟的开发平台,实现3D实时渲染,RTX光线追踪技术 协…