2014 年对于ImageJ核心开发来说是重要的一年!
稳定的 ImageJ2 应用程序。 上半年,我们修复了 ImageJ2 中的许多错误,目标是在 6 月份稳定发布 ImageJ2 应用程序。为了反映这一点,我们将“2.0.0-beta-X”编号系列升级为“2.0.0-rc-X”,其中“rc”代表“候选版本”。 ImageJ2 应用程序现已基本稳定,尽管 ImageJ2 的某些组件(例如其 N 维图像数据模型)仍处于测试阶段。 ImageJ 的 Fiji 发行版现在完全构建在 ImageJ2 之上。我们相信 ImageJ2 当前的设计和组件结构从根本上来说是健全和稳定的,包括实现与ImageJ 1.x向后兼容的机制。 2015 年将把重点转向下一代 ImageJ2 库本身的更多错误修复和改进,以及为软件开发人员从 ImageJ 1.x 到 ImageJ2 API 提供更简单、记录更完善的迁移路径。
黑客马拉松。 2014 年,ImageJ 团队参加了六次不同的 hackathons:协作编码冲刺,旨在在目标问题上取得快速进展。其中四场黑客马拉松在美国威斯康星州麦迪逊的§§1§§§举行,另外两场在德国康斯坦茨和威斯巴登举行。由于这些努力,ImageJ Ops项目诞生并成长,ImgLib2稳定版本也在黑客马拉松中完成。我们还在多个相关项目上取得了进展,包括ImageJ-OMERO、Micro-Manager、OpenSPIM和KNIME Image Processing。
ImageJ Ops 的诞生和发展。 ImageJ Ops 组件于 2014 年 3 月在康斯坦茨大学的hackathon中诞生,旨在创建一个通用图像处理框架和操作库,我们可以在许多SciJava应用程序中重用和扩展它,包括ImageJ、KNIME、CellProfiler、OMERO、CellProfiler、OMERO和其他人。 Ops 的许多想法已经在数次设计迭代中萌芽:KNIME/ImageJ Ops 合作于 2012 年初以“ImgLib2 OPS”开始,然后于去年 3 月通过改进的设计重新命名为 ImageJ Ops。从那时起,随着相关人员抽出时间专注于该项目,该项目在受控的爆发中发展,迄今为止的结果非常令人兴奋。 Ops 项目建立在ImgLib2的基础上,旨在为图像处理算法提供“一次编写,随处运行”的解决方案,同时仍然能够针对特殊情况进行有针对性的性能优化。预计 2015 年运维工作将带来新功能和增长。
ImgLib2 发布。 10 月,核心ImgLib2库达到稳定发布状态,2.0.0 版本发布到 Maven Central。这个目标是当月早些时候在 LOCI 上非常成功的 ImgLib2 hackathon 的产物。然而,更新后的 ImgLib2 需要对许多核心 ImageJ2 和 Fiji 组件进行全面升级,这又花了两个月的基础设施工作才完成,formal release announcement 最终于 12 月完成。
可重复的构建。 去年秋天,生命科学领域的 ImageJ Fiji 发行版在其所有组件(超过 100 个)中进行了更新,以全面使用发布版本依赖性,以实现reproducible builds。
- 我们发现许多斐济组件“版本”实际上不可复制,因为它们依赖于非版本依赖项。我们改进了核心 SciJava 构建过程来检测这种情况并发出错误,以防止将来出现此类“受污染的版本”。
- 我们为斐济的所有组成部分发布了未受污染的版本。这是 Fiji 更新站点(用户运行 Help › Update… 时获得的内容)与 Fiji 源存储库(开发人员运行 build Fiji from source 时获得的内容)融合的重要一步。
- 作为这项工作的一部分,BigDataViewer 成为斐济核心更新网站的一部分!
- 我们为要包含在斐济核心 update site 中的插件建立了formal process。本文档是 wiki 上的几篇新文章之一,旨在记录和阐明 ImageJ 开发在各个级别的工作原理:philosophically、technically、socially 和 legally。我们还向用户扩展了 wiki 的插件开发指南,包括一篇关于 how to contribute to an existing plugin or library 的文章以及一篇关于 the best ways to distribute your plugin 的文章。 项目范围的组件标准化。 2014 年,GitHub 上的 SciJava、ImageJ、ImgLib2 和 SCIFIO 组织在最终组件组织和结构方面取得了巨大进展。现在,每个组件都位于自己的 Git 存储库中,以标准方式命名,并遵循相同的版本控制规则。 ImageJ 的结构现已稳定,并记录在 wiki 的 Architecture 页面上。
更好、更稳定的开发工具。 相关地,我们对 ImageJ 软件堆栈的构建基础架构进行了许多改进。我们现在拥有稳定且记录在案的工具辅助流程,用于各个级别的 SciJava 软件组件的开发和发布。站点status.imagej.net显示了每个组件源代码的状态,并特别回答了以下问题:自上次发布以来是否有任何更改?我们还创建了站点 javadoc.imagej.net,它为 SciJava 组件集合的所有组件以及常见依赖项提供 Java API 文档的中心资源。
网站改进和统一。 ImageJ 项目以前有几个不同的网站(developer.imagej.net、wiki.imagej.net 和mirror.imagej.net),现在已统一为一个中央信息中心:imagej.net。该网站主要是一个社区可编辑的 wiki,但也是 mirrors all ImageJ 1.x content。 old ImageJ2 development site 现在几乎完全迁移到 imagej.net。
下一步是什么? 2015 年,康斯坦茨举办了一场为期 10 天的大型黑客马拉松,取得了巨大成功。从与其他开发人员的讨论中可以清楚地看出:A)ImageJ2 软件堆栈现在已经真正可用; B) 2015 年将重新关注软件开发。工具和基础设施仍然不完善,但足以满足日常使用。我们必须继续“从头开始”稳定 SciJava 的各层:最底层的库 SciJava Common 于去年 2 月首次发布到 Maven Central,ImgLib2 库于 10 月发布到 Maven Central。因此,今年的重点是稳定 ImageJ 软件堆栈“中间”级别的重要功能:1)ImageJ Common 组件中的 ImageJ2 数据模型; 2) 用于可重用图像处理算法的 ImageJ Ops 库; 3) 用于图像 I/O 的 SCIFIO 库。一旦这些组件发布稳定的 1.0.0 版本,ImageJ2 将拥有完全成熟的代码库。
来年的一些最重要的计划包括:
- 统一的 SciJava I/O 包,其中许多类从 SCIFIO 迁移到上游并更新到 SciJava 范例。
- ImageJ2 数据模型的另一个主要开发迭代。去年年底,ImageJ Common 的元数据丰富的图像 API 实现了重大统一和简化,但仍有更多工作要做。 ImgLib2 的总体愿景是提供低级 N 维核心 API,而 ImageJ 则在顶部提供一组丰富的元数据功能。
- 持续推动 ImageJ Ops。特别是,强大的图像表达式解析器、更多图像处理算法以及其他易于使用的增强功能让用户可以非常简单地执行强大的图像处理工作流程。
- 主要 SCIFIO 性能改进。我们每天都在积极推动这个项目取得进展。
- 主要 SciJava 工具之间的更多互操作性改进:ImageJ、KNIME、CellProfiler、OMERO。
- ImageJ 应用程序的可用性改进:
- ImageJ Console window which shows all stdout and stderr output, but only pops up automatically when there are actual errors.
- A graphical troubleshooter that helps report bugs when things go wrong, and offers advice on solutions to common problems such as images which appear all black. No talking paperclip, though.
- ImageJ网站上的进一步工作:
- A stable download of ImageJ2 without the Fiji components.
- Migrate the remaining Trac tickets to GitHub issues in the appropriate places.
- Migrate the remaining developer.imagej.net pages to the ImageJ wiki.
- Improve the navigation of the ImageJ wiki. Three calls to action: Learn about ImageJ, Use ImageJ, Develop for ImageJ. 祝您2015年取得丰硕成果并取得成功!