Uploaded image for project: 'Wookie'
  1. Wookie
  2. WOOKIE-329

Adding features to Widgets in Wookie: improving feature management with versioning and dependencies

    XMLWordPrintableJSON

Details

    Description

      Wookie allows the dynamic injection of feature implementations into Widgets; what this means is that when an author creates a Widget, and declares that it wants to use "feature xxx", then when the Widget is installed Wookie will look for a "feature xxx" and inject any JavaScript and CSS into the Widget specified in the Feature definition. This definition is an XML file that Wookie reads in on launch. For more information see http://incubator.apache.org/wookie/docs/developer/features.html

      However, there are some issues with this mechanism that could be improved. One is that sometimes one feature may depend on another - for example, if the feature required is JQuery Mobile, this also depends on JQuery; however as there is no way to handle this dynamically, the usual solution is to include all dependencies in the feature. However, if the same widget requires multiple features, each of which require the same set of dependencies, then it is very easy for a widget to end up with multiple versions of common includes such as JQuery.

      A related issue is versioning - if a widget author has tested their widget using a particular version of a feature, they don't want their widget to fail in deployment if there has been a breaking change in the latest version of the feature dynamically injected by Wookie.

      So overall there is a need to make features more robust and predictable for authors and with less duplication of common includes by adding dependencies and versioning to the feature management aspect of Wookie.

      Attachments

        Activity

          People

            Unassigned Unassigned
            scottbw Scott Wilson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: