## 3 Literature Review
### End User Programming  
Another challenge being addressed by mashup researchers is how to seamlessly package mashup technologies in such a way that non-technical users can easily and effectively create mashup application in a myriad of different domains. As represented by the attention given to this topic in literature, developing mashup environments that are conducive to non-technical end user development is one of the more difficult challenges. Of the 60 publications that were reviewed in Appendix A, 25% (15) can be classified as 'End User Programming'.  
Two different approaches are commonly taken in addressing (enabling) end user mashup development. The first approach is passive by nature and focuses on designing plugins that work with the user's current browser, observe what the user is viewing, to suggest related sources for potential mashing (e.g. [46; 47; 51; 53]). There are several benefits to extending the user's current browser for the mashup process. First, the mashup process is very close to the user's web browsing experience, if the user encounters data that they would like to manipulate, the user would not have to launch a separate program to begin mashing [56]. Secondly, as mentioned previously in the client based mashup agent discussion, it makes it easier to access local data on the user's machine that the browser normally has access to. Lastly, installing a browser plug-in is easier than installing a separate application, and thus may foster use [56].  
A second approach to end user mashup development is proactive by nature and is necessary when the mashup process becomes more complicated (e.g. process modeling or advanced interface integration) [52]. [PERSON] _et al._[54] present a tool that enables users to develop mashups in complicated integration domains by first providing examples of what the end mashup should look like; the tool then aims to mimic the format of the end result, allowing for mashups to be developed by end users who don't have programming experience. [PERSON] _et al._[13], take a similar 'by example'  
Figure 2: Classifications of Web Mashup User Interfaces.  
approach in developing a tool that allows users to mashup disparate data sources by creating abstracted target schemas that are populated based on examples provided by the user. Mashroom is another end user mashing application that is based on the nested relational model, and allows users to iteratively construct mashups through continuous refinement [55].  
As mentioned previously, end user programming literature seems to generally fall into one of two categories, passive or proactive. Passive approaches piggyback onto the user's current web browsing experience and function as browser plugins, and proactive approaches are executed from a separate application and are designed for more complicated mashup domains. Figure 2 illustrates a third approach that is beginning to appear in literature that is a middle ground to the passive and proactive approaches (e.g. [47]). In this scenario, the user's browsing experience begins as normal with the mashup process being passive. The browser has a plugin installed that observes the user's browsing patterns. Next, the plugin activates a server based inference engine (e.g. Google Suggest) that suggests potential mashup sources in a side bar. The user can continue browsing or at any point begin creating a mashup.