At Drupalcamp Cluj in Romania I got really excited again about the possibility for building a CCMS (component content management system) in Drupal.
Ages ago when we did our first experiments with DITA in Drupal this was our goal. We did a prototype for a tool that was able to do single pass transformations of topics, allowed you to manage DITA maps in a mindmap and that had a form for creating DITA topics.
At Drupalcamp Cluj, Ser_Mir gave a presentation about the Paragraphs module, a module I had heard about before but never used. It allows you to define a series of "paragraphs" that can be chosen by the author. So instead of using a WYSIWYG editor, you can build a rich text with variable types of block content that are built through a field type interface.
During the presentation it struck me that it would be possible to use Paragraphs to create the child elements of the top elements in a topic. So that you could provide a form based interface that still allows for some flexibility in the structure (e.g. in the task steps, you could choose the step type as a paragraph). Normally if you use fields you are stuck with the order in which they appear in the form, using paragraphs you can have some form elements that are in a fixed place and interspace them with form elements of which the order can be chosen by the author.
Another project that Sergey recommended me when I explained to him what I'm looking for, is the Asset module. It would allow us to drag and drop elements, again populated through a form based interface, into a WYSIWYG field. The elements available in the WYSIWYG field could be heavily limited to keep the content clean.
There will probably be a few elements that won't work, but the resulting content type would allow us to easily create specialisations, especially if they are not too complex. Since all the data is stored in a structured format, we could also easily create an export function that renders the content as a DITA file. The other way around, a sufficiently specialised topic could be imported into Drupal using the Feeds module.
The main advantage of this approach is that it would require very little custom work, and be able to leverage the existing Drupal architecture.
What do you think? Can you imagine this approach to work?