Ubiquitous computing is viewed as a computing paradigm where minimal user intervention is necessitated emphasizing detection of environmental conditions and user behaviors in order to maximize user experience. Context-awareness plays vital role in achieving such user-centered ubiquity. In this paper1 , we describe the desired characteristics of a middleware for context-aware ubiquitous computing. Four key issues are addressed: unified sensing framework, formal modeling and representation of the real world, pluggable reasoning engines for high-level contexts, and response to the real world. Our implementation experience indicates that a comprehensive approach throughout the system layers results in a flexible and reusable middleware framework.