Shared, Reusable Components
At the core of the Fluid technology is a suite of customizable user interface components that can be shared across applications. Much like UIdesign patterns, these components provide an overall design logic that can be highly customized based on the context in which they are being used. The Fluid framework will provide the APIs and development supports to enable the creation of new, shareable UI components.
The Fluid Project will also create a public repository of exemplary user interface components that can be used to build new applications and customize existing user interfaces within Sakai, uPortal, and Kuali Student.
What is a Fluid Component?
In the realm of Web presentation frameworks, the term component can be an ambiguous term that has different meanings for diverse technologies. To clearly distinguish flexible components from the sorts of components found in other presentation technologies, a Fluid component can be defined as a composable, reusable aspect of the user interface that consists of the following elements:
- A template: some HTML markup and CSS that defines the static structure and appearance of the component
- JavaScript controller logic
- Metadata describing the roles and states of the component
- Configurable properties and bindings to other components and to application logic
Components can be composed of other components and often play a role in larger-scale relationships that make up the overall design of a page or user interface panel. This deep composability of components may potentially occur not only spatially on a given page, but also may include navigational relationships across a sequence of pages in a workflow. As such, components in the Fluid architecture are different in nature from those in many other presentation technologies due to the emphasis on loosely-coupled relationships and communication among components in the user interface.
Technically speaking, a component will be implemented in the Fluid framework as a combination of HTML, CSS, and JavaScript. We will extend existing Ajax toolkits in order to support the level of flexibility and composition required by this architecture. Currently the most likely toolkit for this purpose is Dojo. The plan to work with Dojo is motivated both by its clean technical design and the fact that it provides growing support for the W3Cstandard Accessible Rich Internet Application (ARIA) semantics. This support is required to ensure Ajax-based components are accessible and useful for users of assistive technology, and has not yet been adopted by most other Ajax toolkits. As part of our fundamental goal to improve user interface accessibility, we'll continue to work with IBM, Mozilla, and the Ajax community to ensure a viable approach for client-side flexible UI components. Other Ajax toolkits will be seriously evaluated during the project exploration phase, and proof-of-concept versions of the architecture will be implemented using a variety of client and server Ajax technologies to ensure the viability of particular tools.
Repository of Shared Components
A repository of reusable components will serve as the primary means for sharing flexible UIcomponents publicly. The repository is envisioned as a lightweight library containing exemplary user interface components that can be customized and reused across applications. The repository will be based on standard web idioms such as RESTto ensure that components can be securely and efficiently located and downloaded. The repository also provides a means to query components and their associated metadata. At configuration time, developers and integrators can browse this repository and select appropriate components for their application. At run-time, the component matcher will communicate with the component repository to query and download components directly into the browser. The repository will use a decentralized design that allows individual institutions to mirror it locally or even embed it directly into the application infrastructure for greater reliability and performance.
The repository is intended as a source for high-quality reusable components, and proper stewardship will be required to maintain the credibility of the repository. This will be accomplished by ensuring that designs are reviewed and vetted by community members with experience in user interface design, security, and application architecture.