The djnn framework is a hierarchical event-driven component system with a unified set of underlying theoretical concepts focused on interaction.

djnn supports combinations of interaction modalities and user centric design processes.

users, processes and requirements


djnn is a fractal collection of interactive components.

fractal collection of interactive components


djnn uses events as the ONLY execution mechanism

  • The execution of a program is described by the interactions between its components. Components react to events detected in their environment, and may themselves trigger events. This is called “activation
  • Creating a coupling between component A and component B ensures that the activation of A will trigger the activation of B. Control structures are components that create couplings. Other components store data, represent output modalities, or serve as event sources.
  • Designing interaction styles amounts to creating component patterns (e.g. building a multimodal component).

activation and coupling of components


Our open source philosophy

We, the creators and maintainers of djnn, have been raised in a world of open source software. We use and contribute to open source projects whenever we can, and it is natural for us that djnn is an open source project. We hope it will be useful to many other open source projects. Meanwhile, our salaries are paid by a university named ENAC, who pays for both the maintenance of djnn and the research behind it. It seems fair that ENAC wishes to recover part of its costs from corporations who make money using djnn. That is why djnn is available under two licenses: copyleft open source and commercial. Our philosophy is simple: djnn and the research behind it are free when you share your own code and results, otherwise you must pay.