{"id":8320,"date":"2020-11-20T16:39:47","date_gmt":"2020-11-20T21:39:47","guid":{"rendered":"http:\/\/blogs.library.duke.edu\/bitstreams\/?p=8320"},"modified":"2021-03-16T11:24:34","modified_gmt":"2021-03-16T15:24:34","slug":"implementing-arclight-a-reflection","status":"publish","type":"post","link":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/","title":{"rendered":"Implementing ArcLight: A Reflection"},"content":{"rendered":"<p>Around this time last year, <a href=\"https:\/\/blogs.library.duke.edu\/bitstreams\/2019\/11\/15\/arclight-at-the-end-of-the-tunnel\/\">I wrote about our ambitious plans to implement ArcLight software<\/a> for archival discovery and access at Duke in 2020. While this year has certainly laid waste to so many good intentions, our team persisted through the cacophony undeterred, and\u2014I\u2019m proud to report\u2014still hit our mark of <a href=\"https:\/\/blogs.library.duke.edu\/rubenstein\/2020\/06\/25\/new-rubenstein-finding-aid-interface-to-launch-on-july-1\/\">going live on July 1, 2020<\/a> after a six-month work cycle. The site is available at <strong><a href=\"https:\/\/archives.lib.duke.edu\/\">https:\/\/archives.lib.duke.edu\/<\/a><\/strong>.<\/p>\n<p>Now that we have been live for awhile, I thought it\u2019d be worthwhile to summarize what we accomplished, and reflect a bit on how it\u2019s going.<\/p>\n<h2>Working Among Peers<\/h2>\n<p>I had the pleasure of presenting about ArcLight at the <a href=\"https:\/\/trln.org\/event\/blacklight-summit\/\">Oct 2020 Blacklight Summit<\/a> alongside Julie Hardesty (Indiana University) and Trey Pendragon (Princeton University). The three of us shared our experiences implementing ArcLight at our institutions. Though we have the same core ArcLight software underpinning our apps, we have each taken different strategies to build on top of it. Nevertheless, we&#8217;re all emerging with solutions that look polished and fill in various gaps to meet our unique local needs. It\u2019s exciting to see how well the software holds up in different contexts, and to be able to glean inspiration from our peers\u2019 platforms.<\/p>\n<figure id=\"attachment_8333\" aria-describedby=\"caption-attachment-8333\" style=\"width: 1919px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/tinyurl.com\/aery-blacklight-summit-2020\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8333 size-full\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.14.12-AM.png\" alt=\"Title slide to ArcLight@Duke presentation at Blacklight Summit\" width=\"1919\" height=\"1079\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.14.12-AM.png 1919w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.14.12-AM-300x169.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.14.12-AM-1024x576.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.14.12-AM-768x432.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.14.12-AM-1536x864.png 1536w\" sizes=\"auto, (max-width: 1919px) 100vw, 1919px\" \/><\/a><figcaption id=\"caption-attachment-8333\" class=\"wp-caption-text\">Slides from ArcLight@Duke presentation, 10\/7\/2020<\/figcaption><\/figure>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/0lEsNuPBHss\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p>A lot of content in this post will reiterate what I shared in the presentation.<\/p>\n<h2>Custom-Built Features<\/h2>\n<p>Back in April, <a href=\"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/04\/24\/arclight-migration-a-status-update-after-three-months-of-work\/\">I discussed at length our custom-built features and interface revisions<\/a> that we had completed by the halfway point for the project. So, now let\u2019s look closer at everything else we added in the second half (and in the post-launch period).<\/p>\n<h3>Browsing Collection Contents<\/h3>\n<p>This is one of the hardest things to get right in a finding aids UI, so our solution has evolved through many iterations. We created a context sidebar with lightly-animated loading indicators matching the number of items currently loading. The nav sticks with you as you scroll down the page and the Request button stays visible.\u00a0 We also decided to present a list of direct child components in the main page body for any parent component.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-9.24.54-AM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8331\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-9.24.54-AM.png\" alt=\"\" width=\"2472\" height=\"1492\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-9.24.54-AM.png 2472w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-9.24.54-AM-300x181.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-9.24.54-AM-1024x618.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-9.24.54-AM-768x464.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-9.24.54-AM-1536x927.png 1536w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-9.24.54-AM-2048x1236.png 2048w\" sizes=\"auto, (max-width: 2472px) 100vw, 2472px\" \/><\/a><\/p>\n<h3>Restrictions<\/h3>\n<p>At the collection level, we wanted to ensure that users didn&#8217;t miss any restrictions info, so we presented a taste of it at the top-right of the page that jumps you to the full description when clicking &#8220;More.&#8221;<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.12.34-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8321\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.12.34-PM.png\" alt=\"Collection restrictions snippet\" width=\"1799\" height=\"1080\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.12.34-PM.png 1799w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.12.34-PM-300x180.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.12.34-PM-1024x615.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.12.34-PM-768x461.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.12.34-PM-1536x922.png 1536w\" sizes=\"auto, (max-width: 1799px) 100vw, 1799px\" \/><\/a><\/p>\n<p>We changed how access and use restriction indexing so components can inherit their restrictions from any ancestor component. Then we made bright yellow banners and icons in the UI to signify that a component has restrictions.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.11.11-PM-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8322\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.11.11-PM-2.png\" alt=\"Restrictions presented on a component\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.11.11-PM-2.png 1920w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.11.11-PM-2-300x169.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.11.11-PM-2-1024x576.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.11.11-PM-2-768x432.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.11.11-PM-2-1536x864.png 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n<h3>Hierarchical Record Group Browse<\/h3>\n<p>Using the excellent <a href=\"https:\/\/github.com\/sul-dlss\/blacklight-hierarchy\">Blacklight Hierarchy plugin<\/a>, we developed a way to <a href=\"https:\/\/archives.lib.duke.edu\/collections\/ua-record-groups\">browse University Archives collections<\/a> by an existing hierarchical Record Group classification system. We encoded the group numbers, titles, nesting, and description in a <a href=\"https:\/\/gitlab.oit.duke.edu\/dul-its\/dul-arclight\/-\/blob\/develop\/config\/ua_record_groups.yml\">YAML config file<\/a> so they&#8217;re easy to change as they evolve.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.21.57-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8323\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.21.57-PM.png\" alt=\"Browse by Record Group\" width=\"1918\" height=\"1080\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.21.57-PM.png 1918w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.21.57-PM-300x169.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.21.57-PM-1024x577.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.21.57-PM-768x432.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.21.57-PM-1536x865.png 1536w\" sizes=\"auto, (max-width: 1918px) 100vw, 1918px\" \/><\/a><\/p>\n<h3>Digital Repository &amp; Bento Search Integration<\/h3>\n<p>ArcLight exists among a wide constellation of other applications supporting and promoting discovery in the library, so integrating with these other pieces was an important part of our implementation. <a href=\"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/04\/24\/arclight-migration-a-status-update-after-three-months-of-work\/\">In April<\/a>, I showed the interaction between ArcLight and our <a href=\"https:\/\/requests.library.duke.edu\/\">Requests app<\/a>, as well as rendering digital object viewers\/players inline via the <a href=\"https:\/\/repository.duke.edu\/dc\">Duke Digital Repository (DDR)<\/a>.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.59.42-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8327\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.59.42-PM.png\" alt=\"Inline digital object viewing via the DDR\" width=\"1915\" height=\"1080\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.59.42-PM.png 1915w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.59.42-PM-300x169.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.59.42-PM-1024x578.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.59.42-PM-768x433.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.59.42-PM-1536x866.png 1536w\" sizes=\"auto, (max-width: 1915px) 100vw, 1915px\" \/><\/a><\/p>\n<p>Two other locations external to our application now use ArcLight&#8217;s APIs to retrieve archival information.\u00a0 The first is the <a href=\"https:\/\/repository.duke.edu\/dc\">Duke Digital Repository (DDR)<\/a>. When viewing a digital collection or digital object that has a physical counterpart in the archives, we pull archival information for the item into the DDR interface from ArcLight&#8217;s JSON API.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.24-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8325\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.24-PM.png\" alt=\"Duke Digital Repository pulls archival info from ArcLight\" width=\"1832\" height=\"1080\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.24-PM.png 1832w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.24-PM-300x177.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.24-PM-1024x604.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.24-PM-768x453.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.24-PM-1536x906.png 1536w\" sizes=\"auto, (max-width: 1832px) 100vw, 1832px\" \/><\/a><\/p>\n<p>The other is our <a href=\"https:\/\/library.duke.edu\/find\/all\">&#8220;Bento&#8221; search application<\/a> powering the default <strong>All<\/strong> search available from the <a href=\"https:\/\/library.duke.edu\/\">library website<\/a>. Now when your query finds matches in ArcLight, you&#8217;ll see component-level results under a <strong>Collection Guides<\/strong> bento box. Components are contextualized with a linked breadcrumb trail.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.39-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8326\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.39-PM.png\" alt=\"ArcLight search results presented in Bento search UI\" width=\"1864\" height=\"1072\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.39-PM.png 1864w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.39-PM-300x173.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.39-PM-1024x589.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.39-PM-768x442.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-3.58.39-PM-1536x883.png 1536w\" sizes=\"auto, (max-width: 1864px) 100vw, 1864px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Bookmarks Export CSV<\/h3>\n<p>COVID-19 brought about many changes to how staff at Duke Libraries retrieve materials for faculty and student research. You may have heard <a href=\"https:\/\/today.duke.edu\/2020\/09\/story-behind-library-takeout-video\">Duke&#8217;s Library Takeout<\/a> song (<em>819K YouTube views &amp; counting!<\/em>), and if you have, you probably can&#8217;t ever un-hear it.<\/p>\n<p>But with archival materials, we&#8217;re talking about items that could never be taken out of the building. Materials may only be accessed in a controlled environment\u00a0in the <a href=\"https:\/\/library.duke.edu\/rubenstein\/research\/readingroom\">Rubenstein Reading Room<\/a>, which remains highly restricted.\u00a0 With so much Duke instruction moving online during COVID, we urgently needed to come up with a better workflow to field an explosion of requests for digitizing archival materials for use in remote instruction.<\/p>\n<p>ArcLight&#8217;s Bookmarks feature (which comes via Blacklight) proved to be highly valuable here. We extended the feature to add a CSV export. The CSV is constructed in a way that makes it function as a digitization work order that our <a href=\"https:\/\/library.duke.edu\/about\/directory\/dept\/digital-collections-and-curation-services\">Digital Collections &amp; Curation Services staff<\/a> use to shepherd a request through digitization, metadata creation, and repository ingest. Over <a href=\"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/10\/16\/access-for-one-access-for-all-dpcs-approach-towards-folder-level-digitization\/\">26,000 images have now been digitized<\/a> for patron instruction requests using this new workflow.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-4.27.41-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8328\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-4.27.41-PM.png\" alt=\"Bookmarks export to CSV\" width=\"1899\" height=\"1077\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-4.27.41-PM.png 1899w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-4.27.41-PM-300x170.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-4.27.41-PM-1024x581.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-4.27.41-PM-768x436.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-19-at-4.27.41-PM-1536x871.png 1536w\" sizes=\"auto, (max-width: 1899px) 100vw, 1899px\" \/><\/a><\/p>\n<h3>More Features<\/h3>\n<p>Here&#8217;s a list of several other custom features we completed after the April midway point.<\/p>\n<ul>\n<li>Relevancy optimization<\/li>\n<li>WCAG2.0 AA accessibility<\/li>\n<li>ARKs &amp; permalinks<\/li>\n<li>Advanced search modal<\/li>\n<li>Catalog record links<\/li>\n<li>Dynamic sitemaps (via <a href=\"https:\/\/github.com\/sul-dlss\/blacklight_dynamic_sitemap\/\">gem<\/a>)<\/li>\n<li>Creative Commons \/ RightsStatements.org integration<\/li>\n<li>Twitter card metadata<\/li>\n<li>Open Graph metadata<\/li>\n<li>Google Analytics event tracking with Anonymize IP<\/li>\n<li>Debug mode for relevancy tuning<\/li>\n<\/ul>\n<h2>Data Pipeline<\/h2>\n<p>Bringing ArcLight online required some major rearchitecting of our pipeline to preview and publish archival data. Our archivists have been using ArchivesSpace for several years to manage the source data, and exporting EAD2002 XML files when ready to be read by the public UI. Those parts remain the same for now, however, everything else is new and improved.<a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.10.20-AM.png\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8332\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.10.20-AM.png\" alt=\"Data pipeline diagram for Duke finding aids\" width=\"920\" height=\"998\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.10.20-AM.png 920w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.10.20-AM-277x300.png 277w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-11.10.20-AM-768x833.png 768w\" sizes=\"auto, (max-width: 920px) 100vw, 920px\" \/><\/a><\/p>\n<p>Our new process involves two GitLab repositories: one for the EAD data, and <a href=\"https:\/\/gitlab.oit.duke.edu\/dul-its\/dul-arclight\">another for the ArcLight-based application<\/a>. The data repo uses <a href=\"https:\/\/docs.gitlab.com\/ee\/user\/project\/integrations\/webhooks.html\">GitLab Webhooks<\/a> to send <code>POST<\/code> requests to the app to queue up reindexing\u00a0 jobs automatically whenever the data changes.\u00a0 We have a test\/preview branch for the data that updates our dev and test servers for the application, so archivists can easily see what any revised or new finding aids will look like before they go live in production.<\/p>\n<p>We use <a href=\"https:\/\/docs.gitlab.com\/ee\/ci\/\">GitLab CI\/CD<\/a> to easily and automatically deploy changes to the application code to the various servers. Each code change gets systematically checked for passing unit and feature tests, security, and code style before being integrated. We also aim to add automated accessibility testing to our pipeline within the next couple months.<\/p>\n<p>A lot of data gets crunched while indexing EAD documents through <a href=\"https:\/\/github.com\/traject\/traject\">Traject<\/a> into Solr. Our app uses <a href=\"https:\/\/github.com\/resque\/resque\">Resque<\/a>-based background job processing to handle the transactions. With about 4,000 finding aids, this creates around 900,000 Solr documents; the index is currently a little over 1GB. Changes to data get reindexed and reflected in the UI near-instantaneously. If we ever need to reindex every finding aid, it takes only about one hour to complete.<\/p>\n<h2>What We Have Learned<\/h2>\n<p>We have been live for just over four months, and we&#8217;re really ecstatic with how everything is going.<\/p>\n<h3>Usability<\/h3>\n<p>In September 2020, our <a href=\"https:\/\/library.duke.edu\/about\/depts\/assessment-user-experience\">Assessment &amp; User Experience staff<\/a> conducted ten usability tests using our ArcLight UI, with five experienced archival researchers and five novice users. Kudos to Joyce Chapman, Candice Wang, and Anh Nguyen for their excellent work. Their <a href=\"https:\/\/hdl.handle.net\/10161\/21558\">report is available here<\/a>. The tests were conducted remotely over Zoom due to COVID restrictions. This was our first foray into remote usability testing.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/remote-test-screen-shot.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8335\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/remote-test-screen-shot.png\" alt=\"Remote usability testing screenshot\" width=\"843\" height=\"612\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/remote-test-screen-shot.png 843w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/remote-test-screen-shot-300x218.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/remote-test-screen-shot-768x558.png 768w\" sizes=\"auto, (max-width: 843px) 100vw, 843px\" \/><\/a><\/p>\n<p>Novice and advanced participants alike navigated the site fairly easily and understood the contextual elements in the UI. We&#8217;re quite pleased with how well our custom features performed (especially the context sidebar, contents lists, and redesigned breadcrumb trail). The Advanced Search modal got more use than we had anticipated, and it too was effective. We were also somewhat surprised to find that users were not confused by the <code>All Collections<\/code> vs. <code>This Collection<\/code> search scope selector when searching the site.<\/p>\n<blockquote><p><span style=\"font-weight: 400;\">\u201cThe interface design does a pretty good job of funneling me to what I need to see\u2026 Most of the things I was looking for were in the first place or two I\u2019d suspect they\u2019d be.\u201d &#8212; Representative quote from a test participant<\/span><\/p><\/blockquote>\n<p>A few improvements were recommended as a result of the testing:<\/p>\n<ol>\n<li>make <strong>container information<\/strong> clearer, especially within the requesting workflow<\/li>\n<li>improve visibility of the <strong>online access<\/strong> facet<\/li>\n<li>make the <strong>Show More<\/strong> links in the sidebar context nav clearer<\/li>\n<li>better delineate between <strong>collections and series<\/strong> in the breadcrumb<\/li>\n<li>replace jargon with clearer labels, especially &#8220;<strong>Indexed Terms<\/strong>&#8220;<\/li>\n<\/ol>\n<p>We recently implemented changes to address 2, 3, and 5. We&#8217;re still considering options for 1 and 4.\u00a0 Usability testing has been invaluable part of our development process. It&#8217;s a joy (<em>and often a humbling experience!<\/em>) to see your design work put through the paces with actual users in a usability test. It always helps us understand what we&#8217;re doing so we can make things better.<\/p>\n<h3>Usage<\/h3>\n<p>We want to learn more about how often different parts of the UI are used, so we implemented Google Analytics event tracking to anonymously log interactions. We use the <a href=\"https:\/\/support.google.com\/analytics\/answer\/2763052?hl=en\">Anonymize IP<\/a> feature to help <a href=\"https:\/\/library.duke.edu\/about\/privacy\">protect patron privacy<\/a>.<\/p>\n<figure id=\"attachment_8339\" aria-describedby=\"caption-attachment-8339\" style=\"width: 630px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.26.29-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8339 size-full\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.26.29-PM.png\" alt=\"Google Analytics Event Tracking\" width=\"630\" height=\"859\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.26.29-PM.png 630w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.26.29-PM-220x300.png 220w\" sizes=\"auto, (max-width: 630px) 100vw, 630px\" \/><\/a><figcaption id=\"caption-attachment-8339\" class=\"wp-caption-text\">Top Google Analytics event categories &amp; actions, Jul 1 &#8211; Nov 20, 2020.<\/figcaption><\/figure>\n<p>Some observations so far:<\/p>\n<ul>\n<li>The context nav sidebar is <em>by far<\/em> the most interacted-with part of the UI.<\/li>\n<li>Browsing the Contents section of a component page (list of direct child components) is the second-most frequent interaction.<\/li>\n<li>Subject, Collection, &amp; Names are the most-used facets, in that order. That does not correlate with the order they appear in the sidebar.<\/li>\n<li>Links presented in the Online Access banners were clicked 5x more often than the limiter in the Online Access facet (which matches what we found in usability testing)<\/li>\n<li>Basic keyword searches happen 32x more frequently than advanced searches<\/li>\n<\/ul>\n<h3>Search Engine Optimization (SEO)<\/h3>\n<p>We want to be sure that when people search Google for terms that appear in our finding aids, they discover our resources. So when <a href=\"https:\/\/www.jack-reed.com\/2020\/01\/10\/sitemaps-that-scale.html\">several Blacklight community members combined forces<\/a> to create a <a href=\"https:\/\/github.com\/sul-dlss\/blacklight_dynamic_sitemap\/\">Blacklight Dynamic Sitemaps<\/a> gem this past year, it caught our eye. We found it super easy to set up, and it got the vast majority of our collection records Google-indexed within a month or so. We are interested in exploring ways to get it to include the component records in the sitemap as well.<\/p>\n<p><a href=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.42.43-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8340\" src=\"http:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.42.43-PM.png\" alt=\"Google Search Console showing index performance\" width=\"1875\" height=\"982\" srcset=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.42.43-PM.png 1875w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.42.43-PM-300x157.png 300w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.42.43-PM-1024x536.png 1024w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.42.43-PM-768x402.png 768w, https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/Screen-Shot-2020-11-20-at-2.42.43-PM-1536x804.png 1536w\" sizes=\"auto, (max-width: 1875px) 100vw, 1875px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>Launching ArcLight: Retrospective<\/h2>\n<p>We&#8217;re pretty proud of how this all turned out. We have accomplished a lot in a relatively short amount of time. And the core software will only improve as the community grows.<\/p>\n<p>At Duke, we already use <a href=\"https:\/\/projectblacklight.org\/\">Blacklight<\/a> to power a bunch of different discovery applications in our portfolio. And given that the responsibility of supporting ArcLight falls to the same staff who support all of those other apps, it has been unquestionably beneficial for us to be able to work with familiar tooling.<\/p>\n<p>We did encounter a few hurdles along the way, mostly because the software is so new and not yet widely adopted. There are still some rough edges that need to be smoothed out in the core software. Documentation is pretty sparse. We found indexing errors and had to adjust some rules. Relevancy ranking needed a lot of work. Not all of the EAD elements and attributes are accounted for; some things aren&#8217;t indexed or displayed in an optimal way.<\/p>\n<p>Still, the pros outweigh the cons by far. With ArcLight, you get an extensible Blacklight-based core, only catered specifically to archival data. All the things Blacklight shines at (facets, keyword highlighting, autosuggest, bookmarks, APIs, etc.) are right at your fingertips. We have had a very good experience finding and using Blacklight plugins to add desired features.<\/p>\n<p>Finally, while the ArcLight community is currently small, the larger Blacklight community is not. There is so much amazing work happening out in the Blacklight community&#8211;so much positive energy! You can bet it will eventually pay dividends toward making ArcLight an even better solution for archival discovery down the road.<\/p>\n<h2>Acknowledgments<\/h2>\n<p>Many thanks go out to our Duke staff members who contributed to getting this project completed successfully. Especially:<\/p>\n<ul>\n<li><strong>Product Owner<\/strong>: Noah Huffman<\/li>\n<li><strong>Developers\/DevOps<\/strong>: Sean Aery, David Chandek-Stark, Michael Daul, Cory Lown (<em>scrum master<\/em>)<\/li>\n<li><strong>Project Sponsors<\/strong>: Will Sexton &amp; Meghan Lyon<\/li>\n<li><strong>Redesign Team<\/strong>: Noah Huffman (<em>chair<\/em>), Joyce Chapman, Maggie Dickson, Val Gillispie, Brooke Guthrie, Tracy Jackson, Meghan Lyon, Sara Seten Berghausen<\/li>\n<\/ul>\n<p>And thank you as well to the Stanford University Libraries staff for spearheading the ArcLight project.<\/p>\n<hr\/>\n<p><em>This post was updated on 1\/7\/21, adding the embedded video recording of the Oct 2020 Blacklight Summit ArcLight presentation.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Around this time last year, I wrote about our ambitious plans to implement ArcLight software for archival discovery and access at Duke in 2020. While this year has certainly laid waste to so many good intentions, our team persisted through the cacophony undeterred, and\u2014I\u2019m proud to report\u2014still hit our mark of going live on July &hellip; <a href=\"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Implementing ArcLight: A Reflection<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":103,"featured_media":8342,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[96,12,38],"tags":[],"class_list":["post-8320","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-duke-digital-repository","category-tech","category-user-experience"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Implementing ArcLight: A Reflection - Bitstreams: The Digital Collections Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Implementing ArcLight: A Reflection - Bitstreams: The Digital Collections Blog\" \/>\n<meta property=\"og:description\" content=\"Around this time last year, I wrote about our ambitious plans to implement ArcLight software for archival discovery and access at Duke in 2020. While this year has certainly laid waste to so many good intentions, our team persisted through the cacophony undeterred, and\u2014I\u2019m proud to report\u2014still hit our mark of going live on July &hellip; Continue reading Implementing ArcLight: A Reflection &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/\" \/>\n<meta property=\"og:site_name\" content=\"Bitstreams: The Digital Collections Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dukedigitalcoll\" \/>\n<meta property=\"article:published_time\" content=\"2020-11-20T21:39:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-16T15:24:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/arclight-for-blog.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1036\" \/>\n\t<meta property=\"og:image:height\" content=\"574\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sean Aery\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dukedigitalcoll\" \/>\n<meta name=\"twitter:site\" content=\"@dukedigitalcoll\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sean Aery\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/\"},\"author\":{\"name\":\"Sean Aery\",\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/#\\\/schema\\\/person\\\/b1cdd20f3c85d271cfb87386a1dd28fe\"},\"headline\":\"Implementing ArcLight: A Reflection\",\"datePublished\":\"2020-11-20T21:39:47+00:00\",\"dateModified\":\"2021-03-16T15:24:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/\"},\"wordCount\":2105,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/files\\\/2020\\\/11\\\/arclight-for-blog.jpg\",\"articleSection\":[\"Duke Digital Repository\",\"Technology\",\"User Experience\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/\",\"url\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/\",\"name\":\"Implementing ArcLight: A Reflection - Bitstreams: The Digital Collections Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/files\\\/2020\\\/11\\\/arclight-for-blog.jpg\",\"datePublished\":\"2020-11-20T21:39:47+00:00\",\"dateModified\":\"2021-03-16T15:24:34+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/#\\\/schema\\\/person\\\/b1cdd20f3c85d271cfb87386a1dd28fe\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/files\\\/2020\\\/11\\\/arclight-for-blog.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/files\\\/2020\\\/11\\\/arclight-for-blog.jpg\",\"width\":1036,\"height\":574,\"caption\":\"ArcLight at Duke\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/2020\\\/11\\\/20\\\/implementing-arclight-a-reflection\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Implementing ArcLight: A Reflection\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/#website\",\"url\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/\",\"name\":\"Bitstreams: The Digital Collections Blog\",\"description\":\"Notes from the Duke University Libraries Digital Projects Team\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/#\\\/schema\\\/person\\\/b1cdd20f3c85d271cfb87386a1dd28fe\",\"name\":\"Sean Aery\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de490821e24542e00ba40994017cf2414ed2510c15138b471561acc5fdff47f6?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de490821e24542e00ba40994017cf2414ed2510c15138b471561acc5fdff47f6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/de490821e24542e00ba40994017cf2414ed2510c15138b471561acc5fdff47f6?s=96&d=mm&r=g\",\"caption\":\"Sean Aery\"},\"url\":\"https:\\\/\\\/blogs.library.duke.edu\\\/bitstreams\\\/author\\\/seanaeryduke-edu\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Implementing ArcLight: A Reflection - Bitstreams: The Digital Collections Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/","og_locale":"en_US","og_type":"article","og_title":"Implementing ArcLight: A Reflection - Bitstreams: The Digital Collections Blog","og_description":"Around this time last year, I wrote about our ambitious plans to implement ArcLight software for archival discovery and access at Duke in 2020. While this year has certainly laid waste to so many good intentions, our team persisted through the cacophony undeterred, and\u2014I\u2019m proud to report\u2014still hit our mark of going live on July &hellip; Continue reading Implementing ArcLight: A Reflection &rarr;","og_url":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/","og_site_name":"Bitstreams: The Digital Collections Blog","article_publisher":"https:\/\/www.facebook.com\/dukedigitalcoll","article_published_time":"2020-11-20T21:39:47+00:00","article_modified_time":"2021-03-16T15:24:34+00:00","og_image":[{"width":1036,"height":574,"url":"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/arclight-for-blog.jpg","type":"image\/jpeg"}],"author":"Sean Aery","twitter_card":"summary_large_image","twitter_creator":"@dukedigitalcoll","twitter_site":"@dukedigitalcoll","twitter_misc":{"Written by":"Sean Aery","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/#article","isPartOf":{"@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/"},"author":{"name":"Sean Aery","@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/#\/schema\/person\/b1cdd20f3c85d271cfb87386a1dd28fe"},"headline":"Implementing ArcLight: A Reflection","datePublished":"2020-11-20T21:39:47+00:00","dateModified":"2021-03-16T15:24:34+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/"},"wordCount":2105,"commentCount":0,"image":{"@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/arclight-for-blog.jpg","articleSection":["Duke Digital Repository","Technology","User Experience"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/","url":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/","name":"Implementing ArcLight: A Reflection - Bitstreams: The Digital Collections Blog","isPartOf":{"@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/#primaryimage"},"image":{"@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/arclight-for-blog.jpg","datePublished":"2020-11-20T21:39:47+00:00","dateModified":"2021-03-16T15:24:34+00:00","author":{"@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/#\/schema\/person\/b1cdd20f3c85d271cfb87386a1dd28fe"},"breadcrumb":{"@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/#primaryimage","url":"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/arclight-for-blog.jpg","contentUrl":"https:\/\/blogs.library.duke.edu\/bitstreams\/files\/2020\/11\/arclight-for-blog.jpg","width":1036,"height":574,"caption":"ArcLight at Duke"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/2020\/11\/20\/implementing-arclight-a-reflection\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.library.duke.edu\/bitstreams\/"},{"@type":"ListItem","position":2,"name":"Implementing ArcLight: A Reflection"}]},{"@type":"WebSite","@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/#website","url":"https:\/\/blogs.library.duke.edu\/bitstreams\/","name":"Bitstreams: The Digital Collections Blog","description":"Notes from the Duke University Libraries Digital Projects Team","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.library.duke.edu\/bitstreams\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blogs.library.duke.edu\/bitstreams\/#\/schema\/person\/b1cdd20f3c85d271cfb87386a1dd28fe","name":"Sean Aery","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/de490821e24542e00ba40994017cf2414ed2510c15138b471561acc5fdff47f6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/de490821e24542e00ba40994017cf2414ed2510c15138b471561acc5fdff47f6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/de490821e24542e00ba40994017cf2414ed2510c15138b471561acc5fdff47f6?s=96&d=mm&r=g","caption":"Sean Aery"},"url":"https:\/\/blogs.library.duke.edu\/bitstreams\/author\/seanaeryduke-edu\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/posts\/8320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/users\/103"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/comments?post=8320"}],"version-history":[{"count":14,"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/posts\/8320\/revisions"}],"predecessor-version":[{"id":8482,"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/posts\/8320\/revisions\/8482"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/media\/8342"}],"wp:attachment":[{"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/media?parent=8320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/categories?post=8320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.library.duke.edu\/bitstreams\/wp-json\/wp\/v2\/tags?post=8320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}