See also #5 and #35 and #79 and #80 and #103 for a complete historic recreation.
This is our working enumeration of concrete tasks until November of 2021 (a long year), per Component and Service, for public evaluation (new ideas, requests, critics and comments welcome).
Still calm waters and sunny shores around Archipelago allow us and you to navigate smoothly and number of instances already deployed is growing, public and running and the unsuspected home-alone repositories we suspect exists makes us wonder how much more we can all discover or re-discover together
Checked tasks are ready, unchecked are in progress or planned. Priority is not given by this order.
Please feel free to comment, request more info or ask for clarification. Feature requests are also highly appreciated and taken in account (always, please!).
Strawberryfield
Field Property exposure to Drupal strategies
[x] JSON KEY Provider (flattener)
[x] JSON Flatten Keys
[x] JSONPATH/JMESPATH
[x] Entity Reference Casting Provider (Using UUID loading and configurable entity type) using JSON based hints to expose any semantic relationship to Search API. New to RC2 with Entity Type Selector allowing also Terms/Taxonomies, etc.
[x] JSON stored Service Endpoints with extended logic (e.g HOCR) - A.k.a Strawberry Flavor Data Source.
[x] Multi Map/ join: many properties to single. e.g All keys - Authorities- referring to creators, contributors etc unified as Agents keys. This leads to Fractal Ontologies and our Buckets approach.
File downloads and streaming
[x] Ranged Request Streamer with back-to-front S3 managment and buffer/memory managment. For any exposed Binary Endpoint. Also streaming, fixed Local Files. This was some not sleeping much!
[x] Strawberry Flavor Data structures can now hold NLP data and metadata
[x] Strawberry Flavor Data structures and indexed Documents in Solr have cleanup on deletes and caching management
[x] SMART (very) Breadcrumb generation with strategy selection (Longest Path, common repeating Path)
JSON representation and enrichment
Better File management (Better than Drupal)
[x] File referencing via UUID instead of via Entity ID
[x] Handle temporary files when moving from TEMP storage to PERMANENT
[x] Increment file usage count on new versions
[x] Decrement file usage count on version removal
[x] Change file usage on Delete, EDIT on existing active content and versions
[ ] Add Webform based UI managment (reorder, replace, delete) for files
[x] File based Post processing
[x] TECHMD
[ ] ~~ ZIP/UNZIP ~~ MOVED to Strawberry Runners.
[ ] Derivative for larger MEDIA (video and Sound) MOVED to Strawberry Runners.
[x] Pronom Service/Preservation
[x] New JSON Service Architecture reference
[x] Deposit/save on Node save whole, selfs sustainable Strawberry JSON blob in S3/Minio/FileSystem
[x] Keep track of Service and action on Ingest/edit using Activity Streams
[x] Add more agent information on our activity streams for provenance and tracking.AMI now also adds Set IDs
[x] Add More Event Driven Subscribers. And better
[x] Hook-able and override-able storage Pattern for files. @alliomeria we need to doc this for Developers.
[x] Selective size of TECHMD generation based on amount of files present on a single ADO
[x] MEDIAINFO processing
Webforms integration
[x] Webform Driven UI Ingest with custom handler and widget
[x] Handler allows direct CRUD without any node attached and also prepopulation of data using an existing node UUID @alliomeria we need docs here too 🥰 🥰
[x] Create a set of Demo Webforms that cover base of our GLAM source data needs
[x] Full Autosaving during Creation (sessions are kept alive for a week. Users can skip Steps, jump back and forth and Validation will still happen but at the end. Log out, come back, continue.
[ ] Allow Webform Field Widget selection be driven by RDF type and permissions.
[x] Webform Widgets can start Open/Rendered or closed via settings and have "cancel edit" hidding to avoid users leaving the edit realm.
[x] New Solr Aware Entity Select Views (with code code to handle Solr to Entity) which allows
[x] Complex autocomplete elements (like get me all Digital Objects of Type Book with a green Cover the user can see
[x] New Fine grained Entity (node to node) reference possible through this.
[x] CSV to JSON importer element
[x] XML to JSON importer element
[x] Strawberry transplanter. Any JSON into filled Webform Elements (display) using a twig template.
[x] Special Date element ISO8601, with Ranges, Single Dates and free form representation.
[ ] Create new, better, LoD Webform elements
[x] WIKIDATA
[x] LoC (with support for any Suggest endpoint)
[x] LoC with support MADS RDF Types
[x] WIKIDATA Agents with LD Roles
[ ] WIKIDATA using custom SPARQL
[x] Viaf
[x] EUROPEANA
[x] SNAC/Orgs/Names/Family Names
[x] MeSH (PubMed)
[x] Multi Source, Multi Agent Element. Agents/Corporate can use now multiple Authority Controls.
[x] Getty with exact and fuzzy search (updated to be better!)
[x] Nominatim Geo reconciliation. Normal and Reverse.
[x] Panorama Tour Building App (like 1200 lines of code, gosh!)
[x] Image and EXIF extraction on upload for UI/facing previews.
[ ] Create Stub (temporary) WIKIDATA entities if query shows desired WIKIDATA entity does not exist upstream.
[ ] "publish" to wikibase functionality
[ ] Replace repo wide stub uri with official one once pushed.
[ ] Keep track on the stub who is referencing it is (bidirectional reference?)
[x] Deal with as:documents, as:video, as:sound, as:dataset elements
[x] Deal with as:models
[x] Allow anonymous submits to be converted into proper Nodes by Admin (Self deposit, crowd sourced metadata) WOHO! This also allows self standing endpoints and custom mappings.
[x] Make Webform API Interaction work with States(JS) by removing one From wrapper.
[ ] Make Webform API Interaction more versatile for our use. Use as schema validator. WIP. AMI.
[x] Add JS to avoid main node CRUD to submit/validate embedded Webform as widget
Media Displays Entities
[x] Display settings, new tab that shows only the active View Mode for an ADO
[x] Admin/contextual block that shows how ADO to Type was chosen by the system (admin hint)
[x] Add expected mime/type output to Media displays. Allows to tag media displays as JSON, XML, CSV, JSON-LD or HTML only.
[x] React to mime type to allow JSON or XML output to be downloaded too.
[x] Native/self rendering and Content-Type tagging with caching.
[x] Automatic extraction From template of required/used variables (context). Not front facing yet but for sure useful for building a Pick-and-chose (or Data color picker) to aid in Twig Template building
[x] Webforms are injected as Context. So a Webform Element Title can be used to match its value.
[x] AMI set id and URLs are injected as Context during batch ingest
[ ] Add new Data Views Plugin integration to allow Media Displays to preprocess values on views exposed as API endpoints
[ ] Version/Revision Media Display Entities (This is config, annotations and Update Hooks)
[x] Inline Preview with ADO selection. Means users can see the data, test the data and see the output with Live Updates even without saving
[x] Per Metadata Display Extra data injection via any strawberry field that is added. @alliomeria we need docs!
[x] Provide example Twig templates for
[x] MODS
[x] DC and
[x] JSON-LD
[x] GEOJSON
[x] IIIF Manifest 2.1
[x] IIIF Manifest 3.0
[x] EAD2002 (With recursive C Element generation from CSV)
[x] EAD3 (With recursive C Element generation from CSV)
[x] IIIF Manifests for Creative WorkSeries and Children based on Views
[x] a Carrousel
[x] Metadata Display Exposed endpoints (reuse as Standalone API/download/streams)
[ ] API builder via UI using Endpoints. Any API, OAI, IIIF, etc. Allows a VIEW to be injected to feed data. Arguments are filtered and fully customizable. WIP. Coming to 1.0.0
Field Formatters
[x] Static IIIF Images
[x] Open Seadragon IIIF Images
[x] W3C Web Annotations! Box and Polygon, fully IIIF compliant with CRUD endpoints. Caches until you are ready to save.
[x] Add thumbnail navigation
[x] IABookreader IIIF Images
[x] Integrate Flavor based Solr Search (WIP via Amazing https://github.com/dbmdz/solr-ocrhighlighting!) @alliomeria we will write a full doc about this. Includes also hiding of search if no HOCR has been processed
[x] Panorama via IIIF now with webGL max texture calculator and max Image size/memory preprocessing to avoid breaking Cantaloupe when using 400MP images.
[x] Panorama Tours via other Panorama Objects and IIIF, including Hotspots of many types
[x] Metadata up-casters
[x] Metadata up-casters with download endpoint (Metadata Display Exposed endpoints)
[x] Video (HTML5) with Subtitles (with grouping, multi Video, multi Subtitle)
[x] Audio (HTML5) with Subtitles (with grouping, multi Audio, multi Subtitle)
[x] PDF with multi file selection(custom, derived from the base PDF.js library. Not fancy. But Mozilla asks people to NOT use their fancy one directly and we agreed.
[x] Web annotations (IIIF) with JMESPATH fine grained selector of which Files to attach
[ ] Complex nested structures (Whole graphs)
[x] 3D! (Three + JSM) with Full Material Support and UV Textures
[x] 3D UV Mapping using IIIF Sources and Scene/Light settings
[ ] 3D Point Clouds from JSON or URLS
[x] Mirador 3.0 (With Resource comparison and multi sourced IIIF manifests, using full release now)
[x] Expose View Mode to JSON Type value mapping that triggers automatic View Mode Selection
[x] Webrecorder.io native player (WARC replay) with WACZ capabilities version 1.3.2
[x] Lazy Image Loading via CSS class. JS driven, only loads (when used) Images when visible by the user (+100 px to give them some time to load while users navigate)
[x] All formatters can handle Embargoes based on Time and IP address/ranges with caching. Includes alternative Source for Media when embargoed
[x] All formatters can handle with JMESPATH fine grained selector of which Files to attach
API Ingest, Migration and backup
[x] Strawberryfield Normalizer: expands JSON string as a JSON when exporting
[x] Strawberryfield denormalizer: string-ify JSON when importing
[x] Wrap JSONAPI on a set of Drush script to (Strawberry Seeds)
[x] Allow Single command line invoke files and node ingest
[x] Create virtual field Entity "bucket" to allow Media to be ingested into those as links and routed to internal Strawberryfield elements (utility methods for ingest)
[x] AMI (Archipelago Multi Import)
[ ] API Source (Other repos, ContentDM, generic Solr)
[x] API Source (ISLANDORA Solr)
[x] Google Spreadsheets (same as IMI)
[ ] Complete Drush 9 integration
[x] AMI Set Entities
[x] AMI Sets Entity processing via Batch or Enqueuing (for Hydroponics)
[x] Separate processing for remote/single files allowing longer processing
[x] AMI Sets Delete Ingested ADOs by this Set via batch (to clear and reingest)
[x] LoD Reconciliation with complete per Label Processing and multiple Endpoint calls. Can be edited/refined and reused in a Metadata Display
[ ] Reusable, canned public facing AMI ingest strategies. Users can only add the source data, all the rest is pre-setup.
[x] S3 Sources for AMI
[x] Local file (server) Sources for AMI
[x] Remote HTTP sources for AMI
[x] ZIP (on the works)
[ ] Folder as a source (on the works)
[ ] Vouchers
[ ] Filesystem drop-and-forget ingest. You save a JSON file into S3, Archipelago creates entities and relationships.
[ ] Use JSON API to allow seamless moving of dependent assets between repositories and also for backups
Service Architecture (Strawberry Runners)
[x] Develop webhook driven notification service for derivatives
[x] Custom, user facing Plugins. Build your own derivative workflows (system calls, JSON processing, etc)
[ ] Document/deploy webhook triggers for minio S3 per mimetype
[ ] Document/deploy webhook triggers for AWS S3 (via lambda) per mimetype
[x] Develop Shell processing using Custom Plugins (Processors) and user configurable for each case (rule system)
[x] Allow Processor to be chained! And have multiple outputs.
[x] Queue-worker processing
[x] Generate JSON reference-able Services (plugins) for complex non descriptive metadata and data
[x] HOCR
[x] TECHMD
[x] WACZ
[ ] Web Annotations
[ ] Tabular datasets
[ ] Transcripts (similar to Web Annotations, mostly dependant)
[x] File Conversions (any that your Shell allows) with reingest
[x] Smart checks on existing processed output to avoid double processing.
[x] ~~ Build slim Content entity that can be used to index natively that content into Solr via search API ~~ This is now a fully capable Search API Datasource that can hold any output. one (node) to many (files) to even more sequences.
[x] Allow Services to be self explaining of its capabilities. WIP how we expose this to the world. Probably GET will be allowed
[x] Two Hydroponics approaches. Single Thread lineal one (default) and Multi Child, with how many children are spawn config. All using ReactPHP
SEO and API
[ ] Allow Media displays output to be embeded in HTML head for SEO
[ ] Test/Develop nested DATA VIEWS integration for OAI-ORE and OAI-PMH (See Format Strawberryfield and API builder)
[x] Create (TWIG, metadata displays) and expose as endpoints full set of IIIF API JSON outputs.
[x] Add helper methods and twig extensions to allow Metadata displays to access pre existing views (like object listings for a collection) to help build those lists.
ACL / Permissions
[ ] Integrate custom ACL with JSON Paths into per NODE ACL. Allowing this way to apply permissions to individual metadata elements/paths.
[x] Embargoes with JSON key setup for dates/IPs (Individual and ranges). Includes Cron "release" system (deletes caches) and applies to Formatters, Metadata endpoints too
[ ] Same but needs better UI for referenced Services and Media
[ ] Allow Metadata (rule) to trigger ACL permissions. e.g if embargo_date == bla bla = remove public access
[ ] Allow for ACL inheritance (from parent, recursive) without hard copies.
Deployment and DevOPS
[x] Sync Configurations and remove non used ones for minio branch / periodic for each Drupal release
[x] Site-build and remove orphan blocks
[x] Add more utility views
[x] Enable JSONAPI by default on minio branch
[x] Create jsonapi user with jsonapi credentials for minio branch
[x] Create basic scripts to automate Docker/Bash operations
[x] Update AWS deployer to match minio including docs and Cloud Services integration
@DiegoPino I'd like to suggest a couple of things related to biological object as GBIF and NCBI taxonomy link and Darwin Core as an example more of twig template, just in case
Archipelago autumn 2021 Roadmap
See also #5 and #35 and #79 and #80 and #103 for a complete historic recreation. This is our working enumeration of concrete tasks until November of 2021 (a long year), per Component and Service, for public evaluation (new ideas, requests, critics and comments welcome).
Still calm waters and sunny shores around Archipelago allow us and you to navigate smoothly and number of instances already deployed is growing, public and running and the unsuspected home-alone repositories we suspect exists makes us wonder how much more we can all discover or re-discover together
Checked tasks are ready, unchecked are in progress or planned. Priority is not given by this order.
Please feel free to comment, request more info or ask for clarification. Feature requests are also highly appreciated and taken in account (always, please!).
Strawberryfield
JSON representation and enrichment
Derivative for larger MEDIA (video and Sound)MOVED to Strawberry Runners.Webforms integration
as:images
as:documents
,as:video
,as:sound
,as:dataset
elementsas:models
Media Displays Entities
C
Element generation from CSV)C
Element generation from CSV)Field Formatters
API Ingest, Migration and backup
JSONAPI
on a set of Drush script to (Strawberry Seeds)Service Architecture (Strawberry Runners)
SEO and API
ACL / Permissions
Deployment and DevOPS
Batch Operations
Future roadmap
Documentation: