Homebrew 作者发布的去中心化激励开源社区 – Tea.xyz

tea 是统一包装的基础设施。来自 brew 的创建者,tea 是一个独立的、适用于所有平台的二进制文件,使整个开源生态系统触手可及。打破编程社区之间的孤岛,把使用完全不同的工具和语言的脚本放在一期,通过简单的一行代码与世界分享。

Homebrew 作者发布的去中心化激励开源社区 - Tea.xyz

不过需要注意的是现在 tea 还没到 v1 版本,所以可能在日常使用中仍有一些小问题,当然这也意味着你更应该参与进来,这是关键和黄金时期,参与其中既容易又非常有趣。

tea/cli 0.13.8

开源是一个宝库 – 但这些宝箱都用粗糙的锁锁住了。tea 就是关键:

$ tea +rust-lang.org

tea: installing rust-lang.org and 13 other packages into a temporary sandbox
when done typeexit

tea $ cat <<EOF >hello.rs
fn main() {
  println!("Hello World!");
}
EOF
$ rustc hello.rs -o hello
$ ./hello
Hello World!

tea $ exit

$ rustc
command not found: rustc

tea 不安装软件包,至少不是传统意义上的,我们将它们存放在 ~/.tea 中,你的系统保持原始状态,并与 tea 的操作隔离开来,但当你需要使用的时候,一切都准备好了。

后面是一个包管理器,其中所有的软件包都是可重定位的。

tea+pkg 语法让整个开源生态系统触手可及,如果你在 +pkg 处,则会发生上述情况,我们在环境中打开一个包含这些包的新 shell,但如果你继续输入,你就可以构建直接使用。

# ^^ 一行程序启动本地 web 服务器并进行实时加载
$ tea +nodejs.org npx --yes browser-sync start --server

$ sh <(curl tea.xyz) +nodejs.org npx --yes browser-sync start --server
# ^^ 同样一行,适用于有网络的任何用户
# (如果 tea 已经安装了,则直接使用,如果没有安装,将创建一个临时的沙盒环境)

组合一切,结合一切——就像 UNIX 哲学一样,这样就可以把我们带入 tea 的管道 pipelines 中:

$ tea +gnu.org/wget wget -qO- tea.xyz/white-paper | tea +charm.sh/glow glow -

上面的示例命令会下载 tea 的白皮书文件,并使用 charm 非常优秀的 glow 终端 markdown 渲染器进行渲染。这是一个基本的示例,但 UNIX 受包管理器的限制实在太久了,这也是 tea 旨在克服的一个基本限制。

另外值得注意的是,使用 -X 语法可以更简洁地表达:

$ tea -X wget -qO- tea.xyz/white-paper | tea -X glow -

如果你想试用最新版本的 node,但不确定它是否适用于你的项目tea 也可以非常容器实现。

$ tea +nodejs.org^19 npm start

同样可以使用一行命令来创建一个 react 应用:

$ sh <(curl tea.xyz) -X npx create-react-app my-app

tea:通用解释器

$ tea https://gist.Githubusercontent.com/i0bj/2b3afbe07a44179250474b5f36e7bd9b/raw/colors.go --yellow
tea: installing go 1.18.3
go: installing deps
go: running colors.go

在这个基本的例子中,我们知道要根据文件扩展名先安装 go,很明显,对吧?

$ tea favicon-generator.sh input.png
tea: installing image-magick, optipng, guetzli and 3 other packages…

output: favicon-128.png…

$ cat favicon-generator.sh
#!/usr/bin/env tea
#---
# args: [/bin/sh, -e]
# dependencies:
#     imagemagick.org: 4
#     optipng.sourceforge.net: 1
# [snip]…
#---

tea 读取 YAML 文件的前端信息,允许你在整个开源生态系统中为脚本、gists 和一行程序进行操作。在运行时,脚本在其环境中具有这些依赖项,但系统的其余部分永远不会知道它们。

我们还知道更多的魔法:

$ tea -X node
tea: installing node@18.9.1
Welcome to Node.js v18.9.1.
Type ".help" for more information.
>

通常 tea 使用包的完全限定名称,但我们知道它们提供什么工具,所以只要你知道正在查找的是什么工具,我们就可以弄清楚其余的相关依赖。将来版本中会提供如下的方式来支持依赖声明:

---
dependencies:
 nodejs.org: 19
 npmjs.com:
   package.json:
     dependencies:
       react: ^18
---

tea:通用虚拟环境管理器

$ deno
zsh: command not found: deno

echo $PATH
/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin

cd my-project
$ deno
tea: installing deno.land^1.22
deno 1.27.0
> ^D

$ env
PATH=~/.tea/deno.land/v1.27.0/bin:/usr/bin:/bin
SRCROOT=/src/my-project
VERSION=…

同样比如需要 34 个依赖项来编译我们的白皮书,但有了 tea 就非常简单的了:

$ git clone https://github.com/teaxyz/white-paper
cd white-paper
$ make  #†
tea: installing pandoc.org and 33 other dependencies…

$ open tea.white-paper.pdf

我们的白皮书依赖项在我们的 README 中以简单的 markdown 格式编写。tea 只需进入目录即可为他们设置一个虚拟环境。

在 macOS 上,你可能需要先执行 tea -S,因为我们重新使用系统 make(我们尝试检测系统安装的 deps),因此我们无法拦截调用。

基本原理

tea 使用 shell hook 将你项目所需的工具插入到 shell 环境中。开发现在在包管理器级别进行了容器化,你不再需要担心你的团队使用不同版本的基础工具,也不必担心系统级更新会破坏你正在处理的不同项目。

有数以千计的版本管理器来支持成千上万的工具,也许现在是时候停止这种重复工作的时候了。项目可以准确地指定他们需要什么,你可以在今天、明天或十年后准确地满足这些需求。

在上面的示例中,如果 deno 尚未安装,我们将插入一个 hook,以便尝试执行它时将首先安装它。

停止使用 Docker

Docker 非常适合部署和交叉编译,但是……让我们面对现实吧:它对开发人员来说很糟糕。

Docker 扼杀了 builders,它限制了你;技术不断进步,但你的 Docker 容器仍然不能动,没有人知道如何使用 docker,一旦配置了 Dockerfile,就没有人敢碰它了。

让我们面对现实吧,让你的个人开发和调试工具在这个镜像中工作是非常令人沮丧的,为什么要限制你的潜力呢?

继续使用用 Docker 部署,但是用 tea 来开发

然后当你部署时,你也可以用 tea 来安装这些依赖组件

tea 与系统打包程序不同,它有适当的版本控制,所以使用 tea,你的部署实际上会更稳定。

可执行的 Markdown

Markdown 已经成为了开发的标准文档格式,与其编写带有注释的脚本,不如编写可以运行的文档。

$ tea .  # interprets `# Getting Started`, could also be `tea ./README.md`
tea: npm install
tea: npm start

$ sh <(curl tea.xyz) https://github.com/my/project
tea: cloning…
tea: npm start

$ git clone https://github.com/my/project
cd project
$ tea build
tea: executing `# Build`

在 CI 中使用这些脚本很简单:

steps:
  - uses: teaxyz/setup@v0
    with:
      target: build

可以查看 teaxyz/setup 了解们的 GitHub Action 执行的所有操作。

安装使用

tea 是一个独立的二进制文件,因此,如果你愿意,可以自己下载安装,我们推荐使用我们的安装程序:

$ sh <(curl https://tea.xyz)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  9259  100  9259    0     0   7956      0  0:00:01  0:00:01 --:--:--  8030

  hi 👋 let’s set up tea

  • we’ll put it here:  /Users/cnych/.tea
  • everything tea installs goes there
  • (we won’t touch anything else)

  │ docs https://github.com/teaxyz/cli#getting-started

  k, we installed  /Users/cnych/.tea/tea.xyz/v0.13.8/bin/tea



  one second!

  tea’s not in your path!

  │ we may need to ask for your root password (via  sudo  obv.)

Password:


  want magic?

  tea’s shell magic works via a one-line addition to your  ~/.zshrc
  it’s not required, but we do recommend it.

  │ docs https://github.com/teaxyz/cli#usage-as-an-environment-manager


  you’re all set!

  try it out:

 ┌───────────────────────────────────────────────────────────────────────────┐
 │tea +gnu.org/wget wget -qO- tea.xyz/white-paper | tea +charm.sh/glow glow -│
 └───────────────────────────────────────────────────────────────────────────┘

如果你想要 tea 的虚拟环境管理器功能,上面的安装方式是最简单的。

协议

Tea.xyz 是以去中心化协议的模式激励开源社区。通过 tea 协议,开源软件包维护者,可以把自己负责的版本发布到由区块链驱动的去中心化注册仓库,从而消除单一故障源,发布无法篡改的版本,允许社区管理整个开源生态系统区域,避免外部影响。

tea 可以激励开源生态系统,主要方式是是通过让参与 tea 协议的开发者,将能够获取的价值与所依赖并希望保护的软件包进行质押。tea 协议的图表可以提供不可篡改的的软件包注册、对于依赖性要求、验证软件包的真实性,以及通过预言机告知 tea 报酬激励算法。系统性的通货膨胀,基于算法会被分摊到所有软件包上,如果发现安全或开发问题,开发者可以通过上传证据,可以针对软件包的索赔,系统会对有错误和安全上传方进行索赔。开源社区的成员可以审查软件包的质量问题,而 tea 协议可以通过制定比例的削奖励减,来应对这些审查。

Git 仓库:https://github.com/teaxyz/cli

▲ 点击上方卡片关注Github爱好者,获取前沿开源作品

原文始发于微信公众号(Github爱好者):Homebrew 作者发布的去中心化激励开源社区 – Tea.xyz

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/87784.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!