Zenodo: [功能请求] 适当的 GitHub 存储库的“在活页夹中打开”选项

创建于 2018-02-06  ·  21评论  ·  资料来源: zenodo/zenodo

背景资料

  • Binder 从包含 Jupyter 笔记本的 git 存储库中启动 Docker 映像,以提供机会性的 JupyterHub 实例以进行代码的交互式执行。
  • Binder 简介(博客文章)
  • 活页夹网站: https :
  • 活页夹回购: https :
  • 活页夹示例: https :
  • 官方推特账号: https :

请求:在相关的 Zenodo 记录中添加一个按钮,用于在 Binder 中为交互式笔记本等打开 GitHub 存储库,以鼓励研究中的可重复性,使用 GitHub ↔ Zenodo 链接。

  1. 如果源 GitHub 存储库的READMELaunch Binder徽章,在 Zenodo 上的“在 GitHub 中可用”徽章下方提供类似的徽章。
  2. 与 Binder 团队合作,如果原始 GitHub 存储库消失(保存),则压缩存储库的内容可以直接从 Zenodo 存档在 Binder 中启动。

抄送: @betatim来自 Binder

Feature request Needs investigation Accepted GitHub

最有用的评论

BinderHub 和 repo2docker 现在支持从 Zenodo DOI 启动: https ://twitter.com/mybinderteam/status/1139136841792315392

所有21条评论

一般来说,这会很酷。

我对 (2) 更感兴趣,以便活页夹可以解析 Zenodo DOI 并直接从那些而不是 git 存储库启动。 大多数工作(在活页夹方面)可能在repo2docker ,这是我们用来实际构建容器的工具。 现在它使用git来获取内容或使用本地目录。

https://github.com/jupyterhub/binderhub/issues/216 中,我们讨论了这个从 OSF.io 启动的想法

支持 Tim 的评论 - 让 Binder 团队知道我们是否可以提供任何帮助!

我认为这与预览.tar.gz和其他压缩格式的 WIP 功能有关: https :

同意,这将是一个非常酷的功能。 从技术上讲,看起来 Binder 使用 Repo2Docker,据我所知,它需要一个 git 存储库才能工作。 我认为这是主要障碍,因为 Zenodo 只存档特定版本的 Zip-ball。 解决方法是简单地指向 GitHub 存储库(因为我们确实有我们存档的版本的 SHA),但是我们基本上只是绕过 Zenodo,并且仅在 GitHub 存储库上拥有徽章并没有真正的附加值.

感谢您就这个问题回复我们,@lnielsen! 一些想法:

解决方法是简单地指向 GitHub 存储库(因为我们确实有我们存档的版本的 SHA)[...]

与其直接指向 GitHub 存储库,不如在 Zenodo 上拥有一个“Binder”徽章,指向在 Zenodo 上存档的特定提交/标签(因为 Binder 可以处理分支、标签或提交)。 这意味着您可以直接跳转到与 DOI 链接的相同版本的代码/存储库。

[...] 那么我们基本上只是绕过 Zenodo,并且仅仅在 GitHub 存储库上拥有徽章并没有真正的附加价值。

好吧,如果您指向特定的提交/标签,仍然有价值,因为 GitHub 中的徽章通常指向master的最新提交。 然而,从 DOI 应该提供的“保存”和“持久性”的角度来看,如果我们确实可以绕过 GitHub 并直接从 Zenodo 渲染 repo,那么内容仍然是“交互式的”,即使原始 GitHub 存储库被删除。


@choldgraf , @betatim :有没有办法从 Zip-ball 中“伪造”Git 存储库? 通过在repo2docker工作流程中添加某种本质上毫无目的的* git init吗? 所以:

  • repo2docker解压 Zip-ball → repo2docker运行git init → Binder 指向内容/笔记本。

  • 编辑

@choldgraf , @betatim :有没有办法从 Zip-ball 中“伪造”Git 存储库? 通过在 repo2docker 工作流程中添加某种本质上的 git init ?

这是一个很好的问题 - 我认为这是可行的,可能作为 repo2docker 的构建包(可以在 r2d 中完成,也可以作为位于单独存储库中的“扩展”)。 该 buildpack 会将这些行插入到执行解压缩等操作的 dockerfile 中。

我刚刚在 r2d 中打开这个 issue 进行讨论: https :

这太棒了!

我认为这有两个部分:

  1. 添加从给定 URL 的 ZIP 文件读取到 repo2docker 的能力
  2. 添加将版本化的 zonodo 标识符读取到适当的 zip 文件的能力 + 缓存语义到 binderhub。

同时,我认为在 github 上添加标记版本的链接是最简单的事情!

嘿,@yuvipanda。 目前,是的,寻找 Binder 徽章然后链接到 GitHub 上的适当版本是一种临时解决方案——这取决于@lnielsen和 co. 当然优先考虑! :)

关于:

  1. 添加将版本化的 zonodo [sic] 标识符读取到适当的 zip 文件 + 缓存语义到 binderhub 的能力。

Zenodo 仅在发布新版本时获取 repos,我认为 Zenodo 条目上的 GitHub 标志本身指向 GitHub 上相应的tree 。 这有帮助吗?

如果我们已经知道 github 存储库支持 binder,那么徽章将很容易添加,但是我们不容易检测是否支持 binder。 我们可以做的是允许在“相关标识符”字段中添加链接,然后呈现一个像 github 这样的徽标,允许您在活页夹中启动它。

@lnielsen 想到的一些想法:

  1. 检查仓库的自述文件中是否有活页夹徽章
  2. 检查 repo 是否有某种标签(例如“binder-ready”、“binder”)
  3. 检查一个 repo 是否有一个或多个配置文件,如果有,尝试通过 Binder 构建 API 构建它……如果它返回成功,则继续。

只是在这里吐痰:-)

我认为,如果你在 BinderHub 上启动一个 repo 是否会做一些有用的事情,这对计算机来说是非常困难的。 许多存储库将构建和启动,但其中大多数都不起作用:-( 所以我会在自述文件中寻找活页夹徽章,但这也是一个粗略的启发式方法(您将如何找到(大规模)具有活页夹的存储库指向与 mybinder.org 不同的实例的徽章?)-> 使“绑定器就绪”状态人类选择加入可能是最好的,然后它也可以是机器可读的。

是否有 zenodo 查看的格式/文件来提取存储库的额外信息? 类似于.travis.yml类的?

我试图避免解析存储库中的文件:-)

我想说最好的方法是以某种方式通过 CodeMeta - https://codemeta.github.io,因为我们计划启用从 codemeta 文件中读取元数据。

BinderHub 和 repo2docker 现在支持从 Zenodo DOI 启动: https ://twitter.com/mybinderteam/status/1139136841792315392

正如在https://github.com/zenodo/zenodo/issues/1416#issuecomment -398732740 中提到的,我认为一个明智的解决方案是使用正确的 mybinder 链接(类似于 GitHub 链接)显示 Binder 徽标,当有是“相关标识符”中https://mybinder.org的链接(示例记录:https://zenodo.org/record/3402938)

我唯一的担忧,可能也是 Binder 团队(cc @betatim@yuvipanda 、@choldgraf)的担忧,正在为 MyBinder 服务创造更大的曝光率,并对其进行 DoS-ing,这最终会让用户点击链接到“损坏的“ 页。 想象一下,最终访问带有 Binder 徽标的 Zenodo 软件记录的用户可能只是出于好奇而单击它。

我已经阅读了可靠性文档,并且就地限速机制看起来不错,所以我想这只是一个问题,如果 MyBinder 服务维护者对此感到满意:)

作为一般规则,流量峰值不应太大,只要它们不是巨大的峰值。 你们都想象发送什么样的流量? :-)

作为参考,您可以在此处了解公共 binderhub 部署(mybinder.org 上的部署)的存储库的负载和“尖峰”:

https://grafana.mybinder.org/d/fZWsQmnmz/pod-activity?refresh=1m&orgId=1&var-cluster=default
我们已经让人们在使用它来教授课程等时一次性启动了大约 100-200 个活页夹,如果我们需要扩展到新节点,有时启动时间会更长,但总的来说应该没问题。

单个存储库的硬性限制是 100 个同时会话。

...当“相关标识符”中有指向https://mybinder.org的链接时(示例记录:https://zenodo.org/record/3402938)

作为一个相关问题,是否可以在此用例的“相关标识符”中包含更具体的元数据? “相关/替代标识符”部分中与该 URL 关联的元数据值非常缺乏信息(“补充材料”和“其他”)。 是否可以添加新的元数据值,例如“执行此上传”和“实时计算环境”,以明确链接允许读者执行软件? 我认为这将成为一个相对常见的用例。 谢谢

:+1: 对于关系类型。 我的建议是“交互式(计算)环境”,因为 Binders 供人类使用,而不是一次性执行(“执行此上传”可能意味着)。

相关标识符的可用关系类型词汇基于DataCite v4.1 模式,因此我会避免添加新的“自定义”关系类型。

恕我直言,最合适的关系类型将是isSourceOf (即在上传表单中“将此上传作为其源”),因为 Zenodo 记录是 Binder 用来执行它的源:

image

如果我们对此达成普遍共识,我相信我们可以在下一个版本中发布它:)

PS(@choldgraf):今天的愚蠢问题:版权方面,我们可以使用您回购中的 Binder 徽标吗?

@slint是的,您可以使用徽标。 我们没有做任何多余的被许可这样。 这可能不适合艺术品。

如果您打算制作一个供人们按下的“按钮”,还有https://static.mybinder.org/badge_logo.svg ,我们建议将其作为“启动活页夹的按钮”

@slint我没有意识到相关/备用标识符的关系类型是从 DataCite v4.1 模式中获取的。 也许这可以在 esection 的标题文本中说明,在说明可接受的标识符范围的文本之后。

我同意在可用的关系类型中, isSourceOf是最合适的,并且我已经更新了我的 Zenodo 记录作为示例。

资源类型字段是否基于DataCite 4.1(表7)中的resourceTypeGeneral? 如果是这样,在我看来, interactiveResource (“需要用户交互才能被理解、执行或体验的资源”)似乎是最合适的值。 不幸的是,这在下拉列表中不可用,所以我选择了“其他”。

此页面是否有帮助?
0 / 5 - 0 等级