The project widget provides a framework that cleanly separates content from behavior (script) and styles (css) and promotes the writing of interactive activities that are easy to edit and modify for not-too-technical users or for any user who think that their time is better spent focusing on content than on fighting with techology.

The project widged is written to be easily extensible, allowing users to use the latest and most useful widgeds and extensions, as they appear.
This is achieved with loose coupling. The interaction between widgeds and extensions is done using a publish and subscribe mechanism. A publish/subscribe mechanism provides asynchronous communication, decouples the producers from the consumers and it allows a dynamic number of both producers and consumer.

Widgeds don't need to know which extensions exist or may exist in the future. Extensions don't need to know which widgeds exist or may exist in the future. In other words, new widgeds and extensions can be added at any time without requiring any code change in existing components.

Widgeds have no dependency on a core library. This means that many jquery plugins can be re-used without having to edit the code of the plugins, making easier to upgrade as new versions of the plugins are published.

The only dependency is on the naming of the events that control the interactions between widgeds and extensions.