Voyage Linuxon
Voyage MPDon
Voyage MuBoxon

You are hereBlogs / punkytse's blog / Project Dynamite

Project Dynamite


By punkytse - Posted on 10 March 2007

Project Dynamite is an initiative to create a GUI frontend and backend framework for managing and configuring network interfaces and system services for embedded devices. Such GUI feature have been requested by Voyage Linux users for very long time.

Here are the design philosophy and guidelines:

  1. Small. It must be damn small in size as it runs on embedded system.
  2. Extensible. It must be easily extensible to add support for managing new services without code change so that 3rd party developer (including OSS communities and commercial vendors) can enhance its features and evolve it. Hence, the architecture design is the key.
  3. Large Scale. It not only can work on single node but also can manage multiple nodes. This is useful for enterprise-grade large scale deployment.

A high-level functional definition and requirements

  • The software components consists of two parts: a) The front-end GUI interface; b) the backend daemon. The GUI interface interacts with user for inputing configuration parameters and send configuration and commands to the embedded device. The backend daemon handles configuration changes and commands (such as start/stop/restart) sent from GUI.
  • The backend daemon runs on the embedded device while the front-end GUI could be run on any remote machines (of course, running front-end and backend on the same embedded device as also works).
  • The GUI front-end and backend daemon should not have any hardcode logic for handling particular services or configuration parameters. Hence, both frontend and backend are implemented as generic engine: GUI front-end draws the input screen based on the definition by querying the service backend; The backend passes the service definition to front-end and handle the command sent from front-end. In that sense, it is the service definition that is extensible.

There is no restriction on which software technology will be use in this project. Possible candidates are:

  • Programming Language: C, Python, Ruby, Php, shell script
  • Graphical UI Front-end: web-based, Java application or text console (ncursed-base)
  • Backend: HTTP, Web-service, service daemon

Open Source License: Dual-license (GPL and BSD) preferred.
Why dual-license? It allows commercial developer to incorporate their own modifications in their own products by choosing BSD license. On the other hand, open source developer can still license their new code in GPL to protect the "freedom".

Why a new project is created? Are there any OSS currently available?

  • Webmin, but it is far too heavy for embedded device
  • m0n0wall has a cool webgui interface, but it is not extensible. You can see bad examples like freeNAS and pfSense. They have their own webgui, adding their own features and rarely gave back.
  • Mikrotik has a Dude network monitor, it is free of charge but not open source