 Rahmenarchitektur, Komponenten, Konventionen
e2 elements ist hochgradig modular aufgebaut. Festgelegt ist nur ein sehr schlankes Framework. Auf Basis von abstrakten C++ Schnittstellen stellen dynamisch geladene Bibliotheken bestimmte Funktionalitäten zur Verfügung. Durch strikte Trennung von Schnittstelle und Implementation, der Versionierung von Schnittstellen und dem Einhalten bestimmter Konventionen wurde eine erweiterbare Basis entwickelt, auf der mit einem Maximum an Wiederverwertbarkeit aufgebaut werden kann. Viele Funktionen, die bei bisherigen Ansätzen Bestandteil des Frameworks waren, sind so beim e2 elements flexibel austauschbare Komponenten. emlix selbst bietet bereits eine kleine Bibliothek standardisierter Komponenten an. Eigene Komponenten, die den Konventionen genügen, können problemlos integriert werden.
e2 elements erlaubt die Programmierung von grafischen Oberflächen mit den üblichen GUI-Toolkits wie etwa Qt und nano-X. Somit ist der Anwender nicht auf eine spezifische GUI-Bibliothek festgelegt.
Trotz des zwergenhaften Formats - die Kernbibliothek beansprucht gerade einmal 100K - kann das e2 elements mit erfreulichen Features glänzen: 
 | XML basierte Konfiguration
|  | generelle Logging Möglichkeiten
|  | datenbasierte Schnittstellen
|  | Socket Communications Layer
|  | Skriptfähig in bis zu 15 Skriptsprachen
|  | Eingebaute Skript-Engine
|  | Serialisierung von Binärdaten
|  | I/O- und Timerbasiertes Scheduling von Prozesse |

Die Komponenten innerhalb des e2 elements werden als separate binäre Einheiten ohne strukturelle Abhängigkeiten zu anderen Komponenten erstellt Dies garantiert zum einen, dass eine einmal ausgelieferte Komponente immer kompatibel zu Ihrer Schnittstelle bleibt, und zum anderen, dass strukturelle Implementationsdetails nicht nach außen dringen.
Jede Komponente wird als eine Implementation einer oder mehrerer Schnittstellen, das heißt einer oder mehrerer abstrakter Basisklassen umgesetzt. Zugehörig zu einer Schnittstelle existiert eine „Interface ID“, eine eindeutige textuelle Kennung. Wird eine Schnittstelle als „stabil“ markiert oder ausgeliefert, gilt die Schnittstellenspezifikation als fest: Sie darf nicht mehr verändert und muss gegebenenfalls durch eine neue Version ersetzt werden. Software, welche bereits im Einsatz ist, wird davon nicht beeinflusst. Dies beruht auf Konventionen und definiert einen bestimmten Entwicklungsprozess. Statisches Linken einer Komponenten-basierten Anwendung wird zusätzlich erlaubt, wenn die Zielplattform dynamische Bibliotheken nicht ermöglicht. Feste Einsprungpunkte erlauben die Initialisierung einer Komponente sowie das Erzeugen einer Instanz.
Alle Komponenten sind ebenso auf embedded wie auf Desktop Systemen benutzbar. Allgemein wurde jedoch auf niedrigen Ressourcenbedarf und minimale Systemabhängigkeiten geachtet.
Programmiert wird üblicherweise in C++. Ebenso kann mit Skriptsprachen auf Komponenten zugegriffen werden. Ein Interpreter für Lua ist bereits als Komponente in das Framework integriert. Über „SWIG“ (einen Generator für Skriptsprachenanbindungen) können e2 elements Komponenten von verschiedensten Sprachen wie Python, Perl, PHP, Ruby, Lisp sowie Java genutzt werden.
Das e2 elements-Komponentenframework wurde erfolgreich auf ARM-basierten embedded Systemen, generischen x86 Systemen sowie auf einem Coldfire 68k Board mit mCLinux ohne MMU getestet. Grundsätzlich wird jedes Linux System unterstützt. Es existiert außerdem ein experimenteller Windows Port, um beispielsweise Demos und Emulationen zu erstellen.
Einsatzmöglichkeiten sind beispielsweise: 
 | Applikationen für Embedded Systeme mit begrenzten Ressourcen
|  | Mensch-Maschine-Interfaces (MMI) in Verbindung mit diversen GUI-Toolkits
|  | Client-Server basierte Anwendungen
|  | Single- oder multithreaded Applikationen |

|