Tools

The contribution process

How a tool gets from a registration form to a published page, told from the developer's side. This page is about the pipeline; What you can publish as a tool is about the program you put through it.

The nine states

Every tool contribution sits in one of nine states. The state decides who the pipeline is waiting on: you, or a hub administrator.

# State Waiting on What happens next
1 Registered Administrator The administrator creates the project area and the repository
2 Created You Commit your code, then flip the state to Uploaded
3 Uploaded Administrator The administrator installs the code on the hub
4 Installed You Test the tool, write its information page, pick a licence, then approve
5 Updated Administrator You committed new code; the administrator reinstalls it
6 Approved Administrator The administrator publishes the tool
7 Published The tool is live. Committing new code moves it back to Updated
8 Retired The tool page stays as a record; the tool can no longer be run
9 Abandoned You cancelled the contribution before it was published

(Verified: the numbers are the state column on #__tool and the names come from getStatusName() in com_tools.)

The administrator's half of each step — what the buttons do, what the host scripts are called, and how the output is reported — is in Tools in the hub managers book. That page also lists every field on the registration form. Read it alongside this one; between them they cover both sides of the same pipeline.

Registering

Start the contribution flow on the hub and choose the tool contribution type, or go straight to /tools/create. The form asks for a tool alias of 3 to 15 alphanumeric characters, which becomes the tool's directory name and cannot be changed afterwards. Everything else on the form can be changed later.

Two of the choices decide how the rest of your work looks:

Repository Host — where the source lives:

Option Label on screen
gitExternal Host Git repository on GitHub, GitLab, etc.
gitLocal Host Git repository here
svnLocal Host subversion repository here

gitExternal is the default where the hub has the component's External GitHub Repo option turned on, and it adds a field for the repository URL. Subversion is still supported but is no longer the only choice, and it is not the default on a current hub.

Publishing Option — what kind of tool it is:

Option Label on screen
standard Rappture or Linux-GUI based tool
jupyter Web application (Jupyter, Rstudio, ...)
simtool Sim2L

The Jupyter and Sim2L choices appear only where the hub has turned the matching options on. Which one you pick decides the starter invoke script the hub writes for you; see Tool repository structure.

(Verified: both option sets are read from the registration form and the com_tools configuration.)

Register Tool puts the contribution in the Registered state and opens a support ticket for it. From then on the tool has a status page under /tools/pipeline, which is where every remaining step starts.

Writing the code

Once an administrator has moved the tool to Created, the project area and its repository exist. Check the repository out — in a workspace on the hub, or on your own machine for an external Git repository — and lay the tool out the way the hub expects it. Tool repository structure covers the directory layout and the middleware/invoke script every tool needs.

The commands for the checkout, the build, and the commit are in the hub managers' walkthrough, which gives the Subversion form and notes the Git equivalents. Test the tool in a workspace before you flip the state:

$ cd src
$ make all install
$ cd ..
$ ./middleware/invoke -T $PWD

That is the same sequence the administrator runs when installing the tool, so anything that fails here fails there too.

When the code is committed, use the What's next? panel on the tool's status page to say that it is ready to install. The state becomes Uploaded.

Testing and approving

After the administrator installs the tool, the status page offers a Launch tool button. Use it and run the tool the way a member would. Each time you fix something, commit and use the status page link to move the state to Updated, which asks for another install.

Before the tool can be approved it needs:

  • a tool information page — the resource page with authors, credits, publications, and screenshots, built by a wizard the status page links to;
  • a licence, chosen from the same page. Closed source needs a reason.

Then Approve this tool. An administrator publishes it, and it becomes a resource page with a Launch Tool button like any other. See Tools in the users book for what members get.

After publishing

A published tool stays published while you work on the next version. Commit the changes and move the state to Updated: the published version keeps serving members, and the install–approve–publish cycle runs again on the development version.

You can cancel a contribution that has not been published yet, with the Cancel link under Developer Tools. It unpublishes the draft page and sets the state to Abandoned. Cancelling a published tool is refused.

Background material

These recorded seminars are hosted on nanoHUB and are the original source for this material. They predate the Git and Jupyter options above.

Rewritten and checked against 2.4-main @ e097e0236d on 2026-09-10.