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.
It looks pretty good! Responsive design. A 'skip to content' button which makes me think accessibility is a priority.
Also looks pretty good. Based on Adaptive Theme, which means it's responsive and should be accessible.
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.
The interface is vanilla Drupal 8. The metadata fields are very limited, only title and description.
Searching works wonderfully, with a great interface and facets which are ready to use. It searches within all the fields I tried.
Searching works, but I couldn't enable facets blocks, and the Default Solr content index set to not use the Description field.
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.
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.
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.
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.
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.
Intuitive versioning is built in. I can revert the image to a previous version easily.
I can version a file, but I can't list revisions or revert to a previous version easily.
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.
I can create a new repository item with a tag 'Collection' and make the test image a member of that collection.
This feature isn't available, but both Rails (the front-end for Hyrax) and Drupal have modules/gems to make LDAP work.
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.
Comments, corrections, and additional information are welcome!