Dear Community,
I wanted to share with you some ideas and also ask you for your opinion and feelings on the following topic:
Would it be a good idea to push efforts on our shinny new Islandora Claw project to develop for the upcoming (19 Nov) Drupal 8 instead of Drupal 7?
For those not involved yet in this new Islandora architecture, let me tell you what/how we are doing stuff right now (very simplified)
Our current stack:
- Drupal 7 ecosystem
- Karaf (OSGI) under which coexist and interact series of features and bundles (camel, islandora-collection, islandora-image, islandora-sync, islandora-component, fcrepo4 camel)
- Fedora4 repository (4.4.0) + activeMQ broker
- blazeGraph(Big data) as triple store
Our workflow looks like this:
Drupal data definition:
We use Drupal Nodes with rdf fields/image/etc -> bundles, also know as content types, as our local representation of a fedora4 resource (not called object anymore)
We have two types of content types right now: islandora collection and islandora basic image.
Ingest Workflow:
When a user wants to ingest a new fedora4 resource (lets say an islandora basic image)
It chooses a islandora basic image content type (node), fills out drupal node form with all the extra rdf fields (mappings) and submits it
Drupal store this as a node inside Mysql (like it would for any normal drupal node derived content type)
on submit we send a JSON representation (multipart) of this to our islandora-image endpoint which lives under Karaf, and is really a series of camel routing/processing/transformation chained processor. Think of this as a series of pipes.
islandora-image gets from Fedora4 the info (RDF) for the parent resource (lets say a collection), completes the rdf with all the needed info and creates finally a Fedora4 resource using sparql + binary upload
Fedora4 on it's side creates the resource and puts a message into the activeMQ broker
Islandora-sync reads that message, logs into drupal and updates the already created node with the full info coming from Fedora4.
We can put derivative creation/other post processing there. Means we don't have to wait for drupal anymore. We just need to make sure the preservation master is already in fedora.
Note( there are a lot of intermediate steps missing, it's the big picture only)
So, the main idea is to make full use of Drupal Core and modules, and make every other process async. This architecture allows us further growing, scalability and a lot of goodies and also to reuse all other drupal contribute modules to make user interaction more dynamic. We are handling real drupal nodes.
But Drupal 7 is at the end, just a synchronous system, a very heavily developed one who is loved by all of you, but does not follow a modern event driven idea. This means we have do a lot of compromises and workarounds to make this work as we would love to. Drupal 8 on the other part, is a different beast. It's heavily based on a php development framework called Symphony 2, which includes a kernel that allows for event driven (routing also) system.
What does this mean? That instead of creating a node and hooking like we do right now, there are events dispatched, which can be intercepted, routed, modified by other libraries/modules, etc.
This architecture is more close to what we (or I?) would love to have. More over, we can reuse a lot of external classes/components that are not written for drupal. Means our possibilities grow.
I have been doing some parallel work/thinking/planning on the drupal 8 side and islandora, moving from nodes to custom entities and looking for ways to move on this direction.. It's an personal effort, slow and lots of baby steps, which does not compromises the roadmap or any other work we are doing currently on D7, but my experience with this positive, so i would love to know what are/could/are not your feelings on this.
I don't think we have the resources to do both developments, D7 and D8. Also D8 is about to be released (new) but the development has being done but a lot of people for long time. The current RC4 is also very stable. Also, Daniel lamb and Nick have been doing an amazing job on Chullo, a component to talk directly to fedora4 that can be used directly on a D8 scenario.
Long post: I would love to have your feedback on this, so we can keep this discussion on multiple levels. I probably omitted a lot of stuff.
Thanks a lot
Diego Pino