Skip to content

Instantly share code, notes, and snippets.

@cudevmaxwell
Last active July 25, 2018 18:07
Show Gist options
  • Save cudevmaxwell/bbb30977369e8d593ec1c7054b13a211 to your computer and use it in GitHub Desktop.
Save cudevmaxwell/bbb30977369e8d593ec1c7054b13a211 to your computer and use it in GitHub Desktop.
CLAW and Hyrax - Status as of 2018-07-13

CLAW and Hyrax - Status as of 2018-07-13

by Kevin Bowrin

created 2018-07-13

CLAW and Hyrax are two of the leading 'next gen' institutional repository software projects. Both are not widely used in production yet and are under heavy development. How much functionality is complete as of today, July 13th 2018? I did some testing in the two project's Vagrant boxes to see. One big caveat is that I tried to make as few configuration changes as possible on both boxes. This is not a complete test of what is technically possible right now.

An aside: both projects provide tools to help provision production ready enviroments. The Hyrax project provides AWS CloudFormation templates. The CLAW project uses the same Ansible scripts for provisioning a production enviroment or a small test VM. That approach is very smart and will hopefully lead to fewer 'doesn't work on my machine' bugs stemming from configuration problems.

For the Hyrax Vagrant box, I needed to include some small fixes from Stephen Gurnic's open issues at https://github.com/samvera-labs/samvera-vagrant/issues. My fork is is available at https://github.com/cudevmaxwell/samvera-vagrant.

One change isn't included in that fork. To have the two boxes running at the same time, I added 10000 to the mapped port numbers which would conflict with the CLAW box.

  config.vm.network :forwarded_port, guest: 8983, host: 18983 # Solr
  config.vm.network :forwarded_port, guest: 8984, host: 18984 # Fedora
  config.vm.network :forwarded_port, guest: 8888, host: 18888 # Jasmine Tests

For the CLAW Vagrant box, I needed to make some modifications so that the Ansible setup scripts were run on the guest VM, and not on the host. This makes it much easier to provision the Vagrant box on a Windows host. My fork is available at https://github.com/cudevmaxwell/claw-playbook.

Is there a working website?

Hyrax: Yes

It looks pretty good! Responsive design. A 'skip to content' button which makes me think accessibility is a priority.

Hyrax Front Page

CLAW: Yes

Also looks pretty good. Based on Adaptive Theme, which means it's responsive and should be accessible.

CLAW Front Page

Can I login, upload an image, and assign metadata to that image?

Hyrax: Yes

The UI is great and the UX is really good! I love the fact that the depositor agreement and the copyright statement are right out front.

Hyrax Upload

CLAW: Yes

The interface is vanilla Drupal 8. The metadata fields are very limited, only title and description.

CLAW Upload

Can I search?

Hyrax: Yes

Searching works wonderfully, with a great interface and facets which are ready to use. It searches within all the fields I tried.

Hyrax Search

CLAW: Yes

Searching works, but I couldn't enable facets blocks, and the Default Solr content index set to not use the Description field.

Claw Search

What does the object look like in Fedora?

Hyrax: No suprises

The data in Fedora looks correct, the ID in Hyrax is the same as in Fedora, there's a tree structure, and I can get to the image file from the resource through the 'ldp:contains' or hasMember triples.

Hyrax Fedora

CLAW: Some suprises

The data in Fedora for the test object is correct, I like the use of dcterms instead of dc, the UUID is the same, but there's no tree structure and I can't get to the image file from the resource.

CLAW Fedora

Can I restrict access to that image?

Hyrax: Yes

Hyrax has almost everything I would be looking for in access control, other than group access. I can make the resource public, 'institutional' (only logged in users), scheduled for public access later, scheduled for reduced access later, or kept private. Interestingly, I can change the visibility of individual files within a resource as well.

Hyrax Visibility Hyrax File Visibility

Group access, as far as I can tell, doesn't work. You can't assign users to a group, and then share a resource with a group.

CLAW: No

The only access control available is 'published' and 'unpublished' (and also user permissions on whole content types). Unpublishing a node does not restrict access, because all uploaded files are in Drupal's public file system. Drupal's private file system isn't active on in the Vagrant box.

That being said, Drupal has some good tooling around access control, if you needed to build this functionality yourself.

Can I version the image file?

Hyrax: Yes

Intuitive versioning is built in. I can revert the image to a previous version easily.

Hyrax Versioning

CLAW: Yes-ish

I can version a file, but I can't list revisions or revert to a previous version easily.

CLAW Versioning

Can I put the image in a collection?

Hyrax: Yes

After following the steps here to make the test user an admin, I was able to create a collection and add the image to it. The collection display has a built in search, which is really nice.

Hyrax Collection

Claw: Yes

I can create a new repository item with a tag 'Collection' and make the test image a member of that collection.

CLAW Collection

Can I use my institutional login (ie: LDAP integration).

Hyrax and CLAW: No

This feature isn't available, but both Rails (the front-end for Hyrax) and Drupal have modules/gems to make LDAP work.

My thoughts

Hyrax is the clear winner if you need to use one of these two systems tomorrow. It is better out-of-the-box, and has most of the functionalty I was looking for. However, I think any changes I would want to make to Hyrax would require a crash-course in Ruby+Rails, which might be a bit daunting for many folks looking for a turn-key solution. For example, I have no idea how I would add a new field to a content model.

The CLAW project has obviously spent a lot of time thinking about the plumbing of the repository behind the front-end, and I think that work will mean a great future for the project. If I were to spend some time building up the Drupal instance that comes with Vagrant, I could get a lot of the functionalty that Hyrax comes with. But that's a lot to ask for many small institutions with limited resources. If the CLAW project could build a Drupal 8 install that had all the basic functionalty people are looking for, they could more easily win over early adopters with previous Drupal experience. Adding a field to a content type in Drupal 8 is easy, but not having the RDF mapping UI in place is a big deal.

@manez
Copy link

manez commented Jul 14, 2018

Thanks for sharing this @cudevmaxwell. It's great to get feedback, and this highlights some areas we can focus on for Islandora development in the medium term 👍

@paulclifford
Copy link

Thank you for doing this, it's very helpful!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment