Phase 1: Trigger (2009/06-2009/11)
The idea of ComponentJS was born in summer 2009 when
Ralf S. Engelschall and
Thomas Lotterer
in the
OpenPKG GmbH tried to implement a small shopping card application as a Web-based Rich Client.
The primary challenge was that multiple input dialogs caused multiple output
dialogs to update and the corresponding
JavaScript/jQuery code was rather tangled
and hence nearly incomprehensible.
Phase 2: Inspiration (2009/12-2010/01)
At this time
Ralf S. Engelschall was department manager and principal architect at the
Capgemini sd&m's
CSD Research (formerly
sd&m Research). One of the projects in his team was
Quasar Client, an embattled and published architecture for
a so-called "component-based user interface architecture". The obvious idea was to transfer
those conceptual ideas of
Quasar Client to the JavaScript world. The initial version of ComponentJS
was developed by
Ralf S. Engelschall during his winter vaction 2009/2010.
Phase 3: Conceptual Steroids (2010/02-2011/02)
Very quickly it became apparent to
Ralf S. Engelschall that although the core concept of
Quasar Client, the
Component
Tree, is a really great one, it was still by far not really maxed out from a conceptual
perspective. He especially started to investigate on two main points: how to
perfect the hierarchical state transitions and how to leverage more from
the component tree when it comes to the communication between components. As a result, a
rather advanced state transition mechanism was born (which needed a lot of time to really get
right and bug free) and the event mechanism was really placed on steriods. As a result, even the
service and hook mechanism now were based on the event mechanism.
Phase 4: HTML5 Single-Page-Apps Practice (2011/03-2012/01)
With the advent of
HTML5 and the inherent complexity of so-called
Single-Page-Apps (SPA) ComponentJS finally became absolutely vital.
Ralf S. Engelschall,
now department manager and principal architect at
msg Applied Technology Research, started to apply
ComponentJS to its first real-world HTML5 SPAs. The features of ComponentJS were
already extremely useful and it worked as designed, but regularily one conceptual point still
caused headaches: what roles should the individual components playing and what code to put into which component?!
Phase 5: User Interface Component Architecture (2012/02-2012/08)
An
User Interface Component Architecture was established, based on a
modern variation of the all-dancing-all-singing
Model-View-Controller (MVC) architecture pattern
which can be driven on a
Component Tree with the help of ComponentJS. There, the View
is observing and binding to the Model from one side, the
Model is a fully passive Presentation Model and the Controller is provisioning and observing
the Model from the other side. The triad of Model-View-Controller components then
occurs an arbitrary times in the
Component Tree.
Phase 6: Full-Blown Business Information System (2012/09-2012/12)
At
msg Applied Technology Research, a full-blown Business Information
System named
Mission Control (an employee mission planning application)
was developed. From the start it was based on the new
User Interface Component
Architecture and the implementation was based on ComponentJS and Sencha Ext JS.
This was the final ultimate test case in industrial practice which ComponentJS had to survive. And it it
mastered it with bravery.
Phase 7: Maturity and Architecture Dissertation (2013/01-...)
After such a lot of pre-investigation efforts,
Ralf S. Engelschall finally officially started his
doctoral thesis project at
Prof. Dr. Alexander Knapp,
with the
User Interface Component Architecture and its underlying
"Model-View-Controller on a Component Tree" architecture pattern as
the central research topics. ComponentJS became the
official reference implementation and also the ultimate proof that the
concepts work perfectly also in practice. In parallel, more and
more UIs of business information systems were developed with the
help of ComponentJS and the UI architecture behind it...