ImageJ2和相关的SciJava项目利用了多个项目管理工具。
git
SciJava 项目使用Git改进的控制系统来管理其source code。
有关更多信息、教程等,请参阅第 Git 页。
Maven
SciJava 项目使用 Maven 作为其项目基础设施。他们使用SciJava Maven repository(运行Sonatype Nexus)来部署组件和访问项。这样的存储库有两个主要目的:
部署
SciJava Maven 存储库的主要目的是为尚未准备好部署到 OSS Sonatype 的工件提供服务。通常,这些组件处于 versioned at 0.x状态,即等待中。一旦达到组件 1.0.0,我们就会尝试release them to the central Maven repository via OSS Sonatype。
对于跨多个组件的敏捷开发这个目的也至关重要。有关详细信息,请参阅Nine Reasons to Use a Repository Manager和Repository Management with Nexus。
代理
SciJava Maven 存储库的次要目的是充当 Maven Central 以及几个有用的第三方存储库的快速本地镜像。
它就像公共 Maven 存储库的统一、镜像,减少了远程服务器上的负载,并可能减少本地构建时间。
开发人员可以通过将以下部分添加到其 $HOME/.m2/settings.xml 文件中来来自复制中的受益人:
持续集成
SciJava 项目使用Github Actions,是一个基于云的工作流自动化系统,它是 Github 的一部分,并支持continuous integration (CI)。Github Actions 自动检查代码是否存在构建和测试错误。
问题跟踪
SciJava 软件项目使用 GitHub Issues 管理任务和优先级:
您可以使用 ImageJ 搜索门户的 GitHub 按钮在搜索此处问题:
以前,一些项目使用不同的问题跟踪器。这些旧问题仍然可以作为归档提供:
| ImageJ2 Trac |
| LOCI/Bio-Formats Trac |
| Fiji BugZilla |
问题有什么用?
问题和里程碑是面向公众的实体,但其内容可能技术性最强,作为可以开发人员的路线图和实施指南。正如我们所看到的,问题和里程碑的不同人群及其需求如下:
| WHO | 什么 | 如何? | |
|---|---|---|---|
| 用户 想... |
了解已经报道的内容 | 浏览和搜索所有未解决的问题. | |
| 跟踪感兴趣的问题 | 使用订阅所需的问题通知. | ||
| 了解版本中修复了哪些问题 | 浏览特定问题里程碑 (e.g., 1.0.0 问题, 1.0.0 错误, 1.0.0 增强功能). |
||
| 提出问题并报告新问题 | 使用大绿色“新问题”按钮报告新问题, or via ImageJ's 报告错误 plugin. |
||
| 臂 想... |
跟踪他们当前的任务 | 浏览分配给特定开发人员的问题 (e.g., 克特鲁登, 希讷姆). |
|
|
寻找新的工作任务 |
|||
|
实施讨论细节等的地方 |
使用拉取请求. |
||
|
维护者 |
轻松查看需要注意的事项 |
浏览没有里程碑的问题. |
|
|
忽略不活动的问题而关闭它们 |
使用“计划外”的里程碑. |
||
|
规划制定时间表 |
|||
|
报告已完成的功能 |
为了满足这些需求,我们对 GitHub 问题使用以下约定: 里程碑
- 对于短期活跃开发,使用名称 m1、m2 等。
- These milestones themselves have no due date and never close, and contain only open issues
- When an issue is closed, it is moved to match its corresponding release milestone.
- 未来计划的重大变更应包含在SemVer命名的里程碑中。
- 所有项目都应该有一个“计划外”的里程碑。
- Issues in “unscheduled” are things that core developers and maintainers cannot make time to address. 问题
- 使用标准 GitHub 标签。
- 对于具有多个组件的存储库(例如,imagej-ui-swing),根据需要添加橙色的“组件:XXXX”标签。
- 每个问题都必须属于一个里程碑。
- Use the “unscheduled” milestone for inactive issues.
- 如果您当前正在解决某个问题,则须将其分配给自己。
- 近期里程碑中的所有问题都应该有一个受托人。
使用这些约定会产生一个工作流程,其中新问题出现时不会受让人也没有里程碑,项目维护人员或将他们分配给将执行工作的开发人员,或者将问题置于“未计划”状态而不会受让人。
当问题结束时,它们会被分类为与每个项目的发布标签相匹配的里程碑,从而可以轻松浏览每个版本中解决了哪些问题。
感兴趣的高级主题(即bugs和enhancements)可以通过标签轻松过滤,而里程碑则确定时间表和功能开发。
请注意,里程碑和软件版本之间的可以是偶多的:例如,错误关系修复版本,甚至添加新功能,可能不需要它们自己的里程碑。好的里程碑结构应该与好的githistory读起来类似:信息丰富但又于冗长。
文章提交
为 SciJava 项目做出贡献的首选机制是使用 GitHub pull requests!有关详细信息,请参阅Contributing页面。
路线图链接
- News关于ImageJ2和斐济的发展,包括状态更新、有关Smashing的观察和评论。
- Recent changes本网站(不是来源代码本身)。
可引用代码
其中许多工具用于从技术角度促进reproducibility。从社会角度来看,我们正在为科学编写软件 - 其中scholarly citations提供了另一种可重复性的货币。
为此,开发人员现在可以使用digital archives like Zenodo来提供一致的引用方法。
另请参阅
- Releases页面,了解有关如何使用这些资源发布SciJava软件工件的更多信息。