[Feedhenry-raincatcher] Raincatcher 2.0 architecture

Wojciech Trocki wtrocki at redhat.com
Fri Apr 21 10:58:23 UTC 2017


Dear Raincatcher developers

After consultations with team and community we decided to propose new
architecture of Raincatcher solution. Main target for Raincatcher 2.0 is to
remove most of the problems related with module development and simplify
our API.

New Architecture

Raincatcher will still use modular based aproach with dedicated modules
(plugins) for:

- Server side code
- Client side code
- UI components and frameworks.

We think that plugin/module aproach is really effective and valuable for
developers.
Modules can be developed in reusable way providing both UI and logic in
organized and supportable manner.

Architecture changes:

*1) Removing mediator and event driven api*

After more than 2 years we decided that our implementation of mediator
pattern is not as effective and easy as we initially thought. Describing
API using topics is not as clear as direct method calls.

*2) Replacing mediator with direct module method calls*

After removing mediator Raincatcher modules will communicate directly by
using javascript object passed to module from top level app. This object
will expose all module interfaces.
This change will affect how Raincatcher modules are build and talk to each
other.
For most of the use cases migration to new architecture will require
updating versions of all Raincatcher modules and making small modifications
to top level application.

*Code changes*

Old mediator call:


*[image: Inline image 4]*

New direct module call:

[image: Inline image 1]

*modules *object is singleton containing all module interfaces.

Modules object contain fixed namespaces that allows users to provide custom
implementation with extended API. For example:

*        modules.storage *field can be assigned to
*        fh-wfm-simple-store* or* fh-wfm-mongoose-store* module as they
implement the same api.

*3) Using promises to return results between modules*

Modules will interact with with each other using promises (Bluebird
library)
We currently doing investigation around rxjs library

*4) Adding ability to generate modules [Optional]*

We also planning to add generator that would help with bootstrapping new
modules.

Regards

WOJCIECH TROCKI

SOFTWARE ENGINEER

Red Hat Mobile <https://www.redhat.com/>

IM: wtrocki
<https://red.ht/sig>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/feedhenry-raincatcher/attachments/20170421/2f97348d/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen Shot 2017-04-19 at 9.11.23 PM.png
Type: image/png
Size: 56901 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/feedhenry-raincatcher/attachments/20170421/2f97348d/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen Shot 2017-04-21 at 11.36.20 AM.png
Type: image/png
Size: 60233 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/feedhenry-raincatcher/attachments/20170421/2f97348d/attachment-0001.png>


More information about the Feedhenry-raincatcher mailing list