This chapter has presented the approaches to the customization of widgets in increasing order of complexity. The widget developer, in eliminating a simpler approach and moving on to consider a more complex approach, takes on more responsibility for the proper operation of the resulting user interface. UIM insulates client application developers from most of these responsibilities, but this insulation is, to a significant extent, provided by the widgets that underlie the UIM fields. Therefore, the widget developer is responsible for ensuring that the custom widget continues to insulate the UIM developer from concerns such as the following:
- The Cúram user interfaces evolves with each new release. Widgets that attempt to emulate the output produced by standard elements of the Cúram user interface, such as clusters and lists, will need to evolve in step with Cúram to ensure that the consistency of presentation of the user interface is preserved. This is a long-term maintenance task that should be considered as part of the cost of development of any such custom widget.
- Rendering HTML to the application page is a low-level process. It offers considerable power and flexibility to customize the application. However, it also, by its nature, opens up the possibility of introducing unwanted side-effects that interfere with the presentation of other parts of the application page, or introducing security defects, such as vectors for cross-site scripting (XSS) attacks. The widget developer assumes the responsibility for ensuring that such defects are not introduced.
- Complex widgets with ambitious presentation requirements can be an expensive undertaking. Much of the development effort goes not into developing the widget source code, but into fine-tuning the styling of the HTML for that widget within the browser. Where there is a requirement for cross-browser support, either different versions of the same web browser, or different web browsers entirely, the time required to achieve a consistent look across all web browsers should not be underestimated.
- The CDEJ provides considerable assistance to the widget developer to aid with the internationalization of a widget. However, this assistance is only of value if the widget developer takes advantage of it to ensure that the widget can be properly localized after development.
- The widget developer may not have a free hand to implement all presentation requirements as specified. Most jurisdictions implement regulations and guidelines requiring that web applications be available and accessible to as many people as possible and, in particular, be inclusive of those with disabilities. The technical requirements may differ between jurisdictions and it is the responsibility of the widget developer to understand and comply with any such requirements.
- The perceived quality of the application can be diminished if a widget does not operate correctly or if it introduces inconsistencies or unwanted side-effects. As the complexity of a widget increases, so too does the effort required to test it in all of its aspects and to ensure that it enhances, not degrades, the application and the experience of the users. The widget developer should not underestimate the effort required to test a complex widget properly and the need to test it repeatedly as the application is further customized or upgraded.
This guide explains these concerns in more detail in the later chapters and appendixes and advises on how they can be addressed. By choosing the simplest approach possible to achieve a presentation requirementafter evaluating if the presentation requirement can be modified to permit a simpler approachthe widget developer can minimize the effort required to meet all of these added responsibilities.