iRODS
During the summer of 2023, I worked as a software development intern on iRODS.
What is iRODS?
From irods.org: "The Integrated Rule-Oriented Data System (iRODS) is open source data management software used by research, commercial, and governmental organizations worldwide."
It acts as a distributed file system which allows users to access their files like any normal file system. This means that it is easy to use, but has the extra assurance that there are backups in different physical locations.
iRODS is maintained by the iRODS Consortium, a collection of iRODS users, with the core maintainers and developers at the Renaissance Computing Institute (RENCI), located at the University of North Carolina, Chapel Hill.

Why I Joined
I was excited to join the iRODS team at RENCI for multiple reasons.
For one, I would have the opportunity to work on a large, meaningful codebase. I had never worked on such a large codebase before, so this was a big step up for me. I saw it as a challenge and was excited to tackle it. I was also excited to work on something that would have a large impact. My previous projects were either for myself or for one other person, so it was interesting to work on something that would be used by many people.
Secondly, I would have the opportunity to work with the iRODS team. As I said, almost all my code was for myself, and as a result, I did not have much experience coding as part of a larger group. I was interested to learn how to code and work in a larger group.
I also wanted to learn how to work on open source projects and had the opportunity to do so with iRODS. While I had some experience with Git and GitHub, I had not used it extensively.
Finally, working on iRODS would allow me to learn about industry standard software development and how it is to be a software developer.
What I Did
I was brought on to work on the zone report. After finishing my work on the zone report about halfway through the internship, I started to work on other issues in the main server. During my internship, I helped facilitate iRODS User Group Meeting (UGM). At the end of the internship, I presented my experience and what I did at TRiRODS in August, 2023.
In total I worked on 17 issues, making around 1900 additions and 500 deletions in 21 commits across 6 repositories.
Zone Report
izonereport
is an "icommand" that can be used by administrators to collect information from all servers in a zone or iRODS instance about the iRODS configuration.
The zone report is printed in a json format and can be checked against the
zone bundle schema in the iRODS repository using a json schema validator.
Firstly, I flattened the Zone Report. In the past there used to be a single provider assumption, meaning only one server could access the SQL database and that server was called the "icat" server, however, that assumption no longer holds true. This meant that the icat server was no longer special, and should instead be in the list with the other servers. While moving the icat server into the list with other servers, I moved the coordinating resources out of the icat server. Coordinating resources are rules that allow for things like replication of data and they do not belong to a specific server but rather the whole iRODS instance. In all, I moved the icat server into the servers list and the coordinating resources into the zone as a whole.
Secondly, I worked on exposing the comment and info information for resources to the zone report. It was possible to add and modify the comment and info of resources, but it would not be printed in the zone report so I added the ability to print those fields.
Finally, I added the ability to calculate checksums for plugins. iRODS is very extensible and has support for plugins, and having checksums allows an administrator to ensure that they are using the correct version of a plugin.
Other Server Fixes
Here are a few of the other server changes I made:
- Added support for relative paths for
iticket
. - Added change to update modification time for tickets.
- Refactored testing scripts.
- Added bound checks for environment variables.
- Moved errors for client login functions from
stderr
to iRODS error stack. - Changed the default file object size to be negative one as zero is a valid size for a file.
TRiRODS, August 2023
During the tri-annual TRiRODS meeting, myself and the other interns presented our work, thoughts, and take-aways from the internship. You can view the talk I gave above or on YouTube.
Alternatively you can view the actual presentation below.
During my presentation I reflect on working on iRODS. I am truly grateful for the opportunity and want to thank the iRODS team for being very helpful and supportive. I learned a lot from this experience and I beleive it made me a better software developer and computer scientist.