News / 09 July 2014

iRODS User Interfaces


Note: See https://irods.org/2015/12/update-irods-client-interfaces/ for the December 2015 update to this post.

There's a lot to iRODS, and we will admit that the documentation is a work in progress (but it is in progress. I'll post some details soon.). Consequently, I get a lot of questions about iRODS capabilities. Today I'm going to talk about one in particular: "How will my users access iRODS?" In other words, what client will they use?

The answer is, "It depends." The core iRODS package that we installed last week includes iCommands, which comprise the most basic iRODS client. These are command line executables, and many of them are based on POSIX-style command line utilities. There are iput and iget for adding and retrieving data to and from a collection. There are imeta and iquest for adding and querying metadata. And there are about 50 additional iCommands that cover capabilities from administering resources and users to executing rules on the fly. At the moment, the best reference for iCommands is the wiki.

Several additional client options exist:

  • The iRODS FUSE implementation is included in the iCommands package. The FUSE implementation makes an iRODS collection mount on a Unix-based system as though the collection was a local or NFS-hosted file system.
  • Parrot allows local programs to process files in an iRODS collection as if the collection was a local directory. This is similar to the FUSE implementation, but with reports of better performance. Note: the pre-compiled binaries work. However, Parrot will not compile against iRODS 4.0 yet. Until this is fixed, Parrot can be compiled against the iRODS-legacy repository
  • iDrop is a graphical client with desktop and web-based flavors. iDrop is maintained by the DICE group, which originated iRODS (more about DICE and and iDrop-web demo in future posts).

Finally, many advanced sites choose to implement their own clients. The iRODS core code provides a C++ API; DICE maintains a Java API called Jargon. There are additional APIs built on top of these, which will be covered in a future post.


Dan Bedard