ComponentJS Imprint  

Your contact to the ComponentJS author and some background


Dipl.-Inf. Univ. Ralf S. Engelschall

 Postal: Weblinger Weg 28, 85221 Dachau/Munich, GERMANY
 Twitter: @engelschall
 Github: rse
 Stackoverflow: ralf-s-engelschall

About Author

Ralf S. Engelschall, the ComponentJS author, is a 41-year old Computer Scientist and Open Source Software Hacker, living with his wife and three children in Munich, Germany. He is founder of the Apache Software Foundation (ASF), founder of the OpenSSL and OpenPKG projects, committer at the FreeBSD, GNU, OSSP, jQuery and Monotone projects and principal author of dozens of other popular Open Source Software solutions: Apache mod_ssl, Apache mod_rewrite, GNU pth, GNU shtool, OSSP uuid, etc. He is Department Manager at msg Applied Technology Research, a cross-division of the german, 4500-people large, custom software development company msg systems.

Project History

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...

Project Credits

As the history of ComponentJS indicates, many people have contributed (directly or indirectly) concepts, ideas, feedback, bugfixes and improvement requests. Without completeness, at least the following people (in chronological order of first contribution time) should be given credit for the major inputs ComponentJS absorbed over time:

  • Lisa Daske (msg Applied Technology Research, 2013): implementation
  • Prof. Dr. Alexander Knapp (Universität Ausgburg, 2013): UI architecture, constraints
  • Stefanie Grewenig (Universität Ausgburg, 2013): MVC/CT, responsive design
  • Philipp Langhans (Universität Ausgburg, 2013): implementation, MVC/CT
  • Axel Ruder (msg Applied Technology Research, 2013): UI architecture, data binding
  • Erwin Wacha (msg Applied Technology Research, 2013): implementation
  • Linda Turke (msg Applied Technology Research, 2012): implementation
  • Jochen Hörtreiter (msg Applied Technology Research, 2012): implementation, MVC/CT
  • Adrian Rumpold (Universität Augsburg, 2012): implementation
  • Christian Müller (Universität Augsburg, 2012): implementation
  • Christian Vaas (Universität Augsburg, 2012): implementation, MVC/CT
  • Thomas Lotterer (OpenPKG GmbH, 2009): UI architecture, MVC/CT
  • Martin Fowler (ThoughtWorks, 2010): UI architecture, MVC roles
  • Matthias Brusdeylins (Capgemini sd&m CSD Research, 2008): Quasar Client documentation
  • Dr. Martin Haft (Capgemini sd&m CSD Research, 2008): Quasar Client concepts
  • Bernd Olleck (sd&m Research, 2007): Quasar Client concepts
  • Prof. Dr. Bernhard Humm (sd&m Research, 2006): UI architectures