关闭

2018年9月22日

浏览软件遗产档案:导览

这个软件遗产使命是从所有公开可用的软件中收集、保存和共享源代码。该项目的一个重要里程碑是支持访问和浏览Software Heritage归档,一年前,我们通过RESTful API实现了编程访问,迈出了第一步。

2018年6月7日,我们很高兴在联合国教科文组织总部向公众揭幕web应用程序它提供了对软件遗产档案内容的轻松访问,打开了亚历山大图书馆软件源代码的大门。

我们一直在提供一些功能,旨在让档案更容易被更广泛的受众访问,这篇博客文章将指导您完成这些功能。

作为一等公民的源代码

根据我们将软件源代码识别为文化遗产中的一等公民的目标,我们添加了许多软件伪造web界面的常见关键功能,例如:

  • 收集的软件项目列表的搜索引擎(称为起源)以便访问其内容;
  • 完全浏览项目的文件树,支持在层次结构中向上和向下导航目录;
  • 正确显示收集的源代码文件(称为目录)语法高亮显示;
  • 在不同分支之间轻松切换起源(这组分支称为快照);
  • 清晰地展示了起源通过按时间顺序显示提交列表(称为修订).

考虑到软件开发人员,我们还创建了高级功能,包括:

  • 修订之间变化的计算和显示;
  • 显示特定内容的历史记录。

最后,为了完成Software Heritage的任务,该应用程序还提供以下功能:

  • «回程机器»视图,当用户在Software Heritage爬虫执行的不同访问期间收集源站的不同快照时,用户可以访问这些快照;
  • 与项目其他组件的交互,如软件遗产保管库,允许用户提取(或烹调正如我们在这里所说的)来自存档内容的存档;
  • 永久链接选项卡,允许用户轻松获取软件遗产永久标识符需要引用或引用软件源文件、修订版、版本或快照。

当前浏览功能概述

自2017年9月开始开发以来,我们在内部对浏览界面的一系列功能进行了试验。自那时以来,我们一直在努力实现web界面通用的核心浏览功能,这些功能可用于在Software Heritage归档中的源代码树中导航。

为了浏览存档,提供了两种不同的视图:context-independent和context-dependent。要获取更多详细信息,请参阅完整的SWH Web Browse应用程序的URI方案.

上下文相关的浏览

上下文相关的浏览提供有关Software Heritage对象(存储为软件遗产归档Merkle DAG)独立于它们所在的上下文(例如,特定存储库、分支、提交等)。例如,当前可以通过这种方式浏览以下对象:

  • 目录(源文件):软件遗产收集的所有源文件都可以通过使用不同哈希算法(SHA1、SHA256等)计算的校验和值进行浏览。相应的HTML视图提供语法高亮显示、行号显示和强调特定代码块的功能。

  • 目录:Software Heritage收集的所有目录(引用内容和其他目录)都可以使用其计算标识符.

  • 修订(提交):Software Heritage收集的所有修订都可以使用其计算标识符。相应的HTML视图允许浏览与修订版关联的源树,也可以查看文件更改及其差异的列表。

  • 快照(在访问起源):Software Heritage收集的所有快照都可以使用其计算标识符。相应的HTML视图允许在快照中包含的所有分支和版本之间轻松切换。

上下文相关的浏览

上下文相关的浏览提供有关Software Heritage收集的对象的信息,仅限于找到这些对象的特定上下文。目前,用户可以在起源。上面介绍的所有浏览功能在该上下文中都可用,但显示的软件工件是在软件遗产爬虫的特定访问期间从给定的软件源中收集的工件。

为了便于浏览并生成存档的相关入口点,提供了一个界面来搜索Software Heritage爬虫访问的源代码。目前,只能根据从中检索的url搜索源,但随着时间的推移,将逐步添加更多搜索条件。

其他浏览功能

除了前面章节中详细介绍的核心浏览功能外,Software Heritage web应用程序还提供以下功能:

  • 可以在自包含的捆绑包中下载部分存档内容,基于与软件遗产保管库允许请求将目录作为tarball进行烹饪,并从任意修订中重建完整的git存储库;
  • 显示特定修订标题的修订列表换句话说,提交日志;
  • 显示与存档中包含的对象关联的各种元数据例如,计算出的内容校验和;
  • 将各种格式(Markdown、ReStructuredText)的README文件呈现为HTML,以便更好地介绍所收集的软件来源;
  • 各种可视化详细说明了Software Heritage爬虫在特定软件源上执行的所有访问,使用户能够将应用程序用作«回程机器。 »

技术细节和征集投稿人

随着软件遗产的开发透明、协作,所有软件组件都作为自由/开源软件(FOSS)发布。因此,Software Heritage web应用程序的所有源代码都可以在专用的swh网站存储库托管在我们的发展锻造.

主要使用开发的软件遗产组件蟒蛇3。我们使用Django web框架用于在后端为web应用程序供电。

对于前端,我们使用网络包捆绑提供给客户的不同资产(脚本、样式表等)。我们依靠著名的web框架来实现图形界面,如引导数据库JQuery公司.

对于感兴趣的人,您可以参考swh-web的模块描述以更好地了解源代码组织。

结论和未来方向

Software Heritage web应用程序使任何人都能够自由浏览存档内容。在撰写博客帖子时,它为公众提供了以下访问权限:

  • 超过40亿源代码文件
  • 超过40亿目录
  • 超过10亿提交
  • 8000多万开源项目

尽管如此,当前部署的版本仍处于测试状态,未来的发展将包括:

  • 实现其他以开发人员为中心的功能如«修订历史记录步行»,以跟踪特定内容或目录的历史记录;
  • 更精细的来源搜索标准喜欢使用的主要编程语言或开源许可证类型;
  • 产地信息集成用于存档中包含的低级对象(内容、目录、修订),以获取这些对象所在的所有源;
  • 实现一个接口以向存档添加新源例如,通过指定要访问的源代码存储库的url。

欢迎为软件遗产网络应用程序的开发做出贡献。请参考我们的开发信息页面和我们的公共维基了解更多详细信息。