Dear friends,

I've come across an architectural thing I don't like in the Hop codebase.
Yes, I know, one more of those...

Conceptually the thing I've always chased after was the separation of the
metadata (model), the way we interact with it (viewer) and the execution
engines that work with the metadata (controller).  On the whole this works
fine and we achieve that goal.
Where things become a bit murky is when we apply variables and parameter
values to metadata.
It's a very convenient thing to do since you can just ask a piece of
metadata to resolve a variable expression and change for example
"${HOSTNAME}" into something like "localhost".
However, it forces anyone using the Hop API to create cloned copies of all
the metadata because it now has a state and it's no longer safe to
re-use by other code pieces.

I realize that a change like this is pretty big but I do think it would
make the code and the API cleaner with an easier time fixing bugs and
adding features as a bonus.
The changes required are pretty much passing in IVariables in a lot of
places.  Some instability and a lot of testing would be required.

On the one hand I feel like it's longer term goal and on the other hand I
think now's the right time to do it.

Let me know what you think!

Cheers,
Matt
-- 
Neo4j Chief Solutions Architect
*✉   *[email protected]
☎  +32486972937

Reply via email to