4. The non-transitory computer-readable storage medium of claim 1 , wherein the instructions that cause the performance of defining the first variable further comprise instructions which, when executed by the one or more processors, cause the performance of: determining a data type of the first variable based on the first user input; and selecting the first variable from a list of variables based on the data type.
1. A non-transitory computer-readable storage medium for designing a mashup, the non-transitory computer-readable storage medium storing instructions which, when executed by one or more processors, cause the performance of: prior to run-time: receiving first user input that relates a first Graphical User Interface (GUI) object, that represents a first widget, to a second GUI object that represents a second widget; wherein the first widget and the second widget are to be included in the mashup; wherein the first widget conforms to a first widget specification and the second widget conforms to a second widget specification that is different than the first widget specification; in response to receiving the first user input: defining a first variable in the mashup based on the first user input, wherein the first variable is configured to store a first variable value at run-time, and wherein, at run-time, the first variable value of the first variable will be replaced by a value of an output parameter of the first widget and the first variable value of the first variable will be used as an input parameter of the second widget; based on the first user input, generating an event definition that defines an event which, when detected at run-time, causes contents of at least one of the first widget and the second widget to be refreshed; storing a binding definition that associates the event definition of the event, the first variable, the output parameter of the first widget, and the input parameter of the second widget; and generating a definition of the mashup, wherein generating the definition of the mashup comprises including the binding definition in the definition of the mashup; at run-time: receiving second user input comprising a data value; in response to receiving the second user input, replacing the data value to the first variable value of the first variable, using the first variable value as the input parameter to the second widget to refresh contents of the second widget.