Tea.xyz: 一个去中心化模式的激励开源社区,Homebrew 作者建立

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

6bb65c757d097e56e8799aa33045859a.png

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

不过需要注意的是现在 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 type: exit

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爱好者」,原文:https://url.hi-linux.com/Kddb9,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

eaaa1b2b6f6043bfe4be73ce38221ffd.gif

最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。

ecac5b0f3a9377c2943697a5f03583b7.png

你可能还喜欢

点击下方图片即可阅读

205e0de7e2201e474cfd3fb32a40e338.jpeg

又一款好看的中文字体,可免费商用

4cf0b8992bbb4d60ba5c98ffa06c21a7.png
点击上方图片,『美团|饿了么』外卖红包天天免费领

279f89c27a778cb98150d8e2fdfb82e4.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值