Hello Everybody!
I'm writing this guest blog post on the kind request of Dan Bedard of the iRODS Consortium. Lately I've been working to build a research data store for a Finnish university and in the course of this work I developed something that we thought could be of more general use as well.
As the title of this post suggests, I'm talking about a graphical user interface for iRODS that runs natively on Mac OS X and Linux. The software is written in C++ on top of the Qt framework and the native iRODS Client API and thus runs with full native performance on the supported platforms while remaining portable. Also, because of the native iRODS interface, the application supports both SSL and TCP transport modes and all of the iRODS authentication plugins (e.g. Kerberos).
Just a while ago I was able to release my project - codenamed Kanki (a rod in Finnish) by one of my colleagues. The release was made in source form with the 3-Clause BSD license and the source repository can be found at github.com. Currently it builds against irods-4.1.x on Linux and Mac OS X.
There are precompiled RPM packages for CentOS/RHEL versions 6 and above - distributed alongside the source releases at GitHub. For these Linux distributions the installation is very straightforward, simply install the iRODS RPM packages and the client RPM. I am also planning to provide prebuilt Ubuntu packages later as well as Mac OS X packages, which I'm currently working on.
As of yet the client doesn't have its own configuration and credentials management for iRODS connections and uses the same iRODS environment as the iRODS icommands. Thus to be able to log in using the client you should have your iRODS environment configured and credentials in place by running iinit . Later on there will be proper graphical configuration management of iRODS connections and credentials.
Currently the client has most of the basic iRODS functions implemented as well as a graphical metadata editor with configurable schema management, which will be developed further as well, to later on include features such as metadata templates, validators and different kinds of attribute editors.
Other features which will be implemented as soon possible, include drag&drop, a search UI with arbitrary criteria, an iRODS ACL editor, a rule exec interface for submitting user rules to iRODS for execution, (pre)viewers for data objects and perhaps even visualization tools for iRODS object relations etc.
If you happen to use Red Hat Linux or CentOS, the installation is very easy, as there are prebuilt RPM packages. For other Linux distributions, currently you may have to adjust the build configuration. I intend to configure and test the build for other distros as well, starting with Ubuntu since it's already supported by RENCI prebuilt iRODS packages. For the Linux installation, see README at GitHub. An OS X build can at this moment only be done from the develop branch.
Now this is still bleeding edge since there are yet no release packages - those will become available with the next release 1.0.4 shortly. To build in an OS X environment you have to install some prerequisites first. Xcode and its command line tools package are assumed to be installed.
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install"
$ brew tap homebrew/dupes
$ brew install autoconf automake curl wget libiconv help2man libtool mysql openssl pcre pkg-config shtool
$ sudo cpan install JSON
Install FUSE for OS X.
Clone my forked irods repo, with build patches to build against openssl-1.0 from Homebrew.
$ git clone https://github.com/ilarik/irods
$ cd irods
$ git submodule init; git submodule update
$ ./packaging/build.sh --run-in-place icommands
export PATH=$PATH:$IRODS_HOME/iRODS/clients/icommands/bin
git clone https://github.com/ilarik/kanki-irodsclient.git -b develop
OSX_IRODS_BUILD=IRODS_HOME
OSX_IRODS_BOOST=boost_1_58_0z
OSX_IRODS_JANSSON=jansson-2.7
$ cd kanki-irodsclient
$ ./build.sh -q ~/Qt/5.5/clang_64
$ iinit
One or more fields in your iRODS environment file (irods_environment.json) are
missing; please enter them.
Enter the host name (DNS) of the server to connect to: [hostname]
Enter the port number: [probably 1247]
Enter your irods user name: [iRODS username]
Enter your irods zone: [zone name]
Those values will be added to your environment file (for use by
other iCommands) if the login succeeds.
Enter your current iRODS password:
The client has a configurable metadata schema which can be defined via a bundled XML file. The location of the metadata schema XML is
/etc/irods/schema.xml
in the Linux version and
/Applications/iRODS.app/Contents/Resources/schema.xml
in Mac OS X. The format is pretty straightforward - you configure namespaces and attribute definitions in the namespaces. I will post instructions for this later on. An example attribute definition looks like
<irods:attribute name="modified" unit="false" editable="true">
<irods:label>Modification Time</irods:label>
<irods:displayFilter type="regExp">
<irods:regExpRule>(\d+)-(\d+)-(\d+).(\d+):(\d+):(\d+)</irods:regExpRule>
<irods:regExpFilter>\3.\2.\1 \4:\5:\6</irods:regExpFilter>
</irods:displayFilter>
</irods:attribute>
If you are interested in knowing more or ran into trouble while installing etc. you may contact me via email and I will try to help. Also if someone wishes to participate in the development of this application, please let me know!