What Makes Apis Hard to Learn? Answers from Developers

Total Page:16

File Type:pdf, Size:1020Kb

What Makes Apis Hard to Learn? Answers from Developers www.computer.org/software What Makes APIs Hard to Learn? Answers from Developers Martin P. Robillard Vol. 26, No. 6 November/December 2009 This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder. © 2009 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE. For more information, please see www.ieee.org/web/publications/rights/index.html. focuscooperative and human aspects of SE What Makes APIs Hard to Learn? Answers from Developers Martin P. Robillard, McGill University ost software projects reuse components exposed through APIs. In fact, A study of obstacles current-day software development technologies are becoming inseparable that professional from the large APIs they provide. To name two prominent examples, both Microsoft developers the Java Software Development Kit and the .NET framework ship with faced when learning MAPIs comprising thousands of classes supporting tasks that range from reading files to to use APIs uncovered managing complex process workflows. challenges and An API is the interface to implemented func- and interviewing developers about the obstacles resulting implications tionality that developers can access to perform they faced learning APIs, I discovered many is- for API users various tasks. APIs support code reuse, provide sues that complement those mentioned in API de- high-level abstractions that facilitate program- sign textbooks and articles. In particular, I found and designers. ming tasks, and help unify the programming ex- that API learning resources are critically impor- perience (for example, by providing a uniform tant when considering obstacles to learning the way to interact with list structures). However, API, and as worthy of attention as the structural APIs have grown very large and diverse, which aspects of the API. I also elicited specific relation- has prompted some to question their usability.1 ships between resources and API usage that API It would be a pity if the difficulty of using APIs designers and documentation writers shouldn’t would nullify the productivity gains they offer. To overlook when designing API documentation. ensure that this doesn’t happen, we need to know First, information about the high-level design of what makes APIs hard to learn. the API is necessary to help developers choose Common sense indicates that an API’s struc- among alternative ways to use the API, to struc- ture can impact its usability (see the “API Usabil- ture their code accordingly, and to use the API as ity” sidebar).2 This intuition is reflected by efforts efficiently as possible. Second, code examples can to flesh out sound design principles for APIs and become more of a hindrance than a benefit when empirical studies on the impact of design structure there’s a mismatch between the tacit purpose of on API usability.3–5 However, APIs don’t exist in the example and the goal of the example user. isolation, and other factors can also affect how de- Finally, some design decisions can influence the velopers experience them. So, what exactly does behavior of the API in subtle ways that confuse make an API hard to learn? developers. To answer this question, I investigated the ob- stacles professional developers at Microsoft faced Survey Design when learning how to use APIs. As opposed to In February and March 2009, I conducted a sur- previous API usability studies that focused on spe- vey to gather information about developers’ ex- cific design aspects, I used an approach completely periences learning APIs. Specifically, I sought grounded in developers’ experience. By surveying to identify areas of concern and themes worthy 0740-7459/09/$26.00 © 2009 IEEE November/December 2009 IEEE SOFTWARE 27 API Usability velopers, testers, and program managers. For the purpose of the survey, I considered all employees This article focuses on the obstacles to learning an API. Although learnabil- whose title implies software development as de- ity is only one dimension of usability, there’s a clear relationship between the velopers, but excluded testing engineers due to the two, in that difficult-to-use APIs are likely to be difficult to learn as well. Many specialized nature of their work. API usability studies focus on situations where developers are learning to use Because the survey also served to recruit par- an API. www.apiusability.org provides an extensive list of resources on API ticipants for in-person interviews, the sampling usability, including additional references to studies not mentioned here due to frame6 I used was the list of all Microsoft devel- space limitations. opers working at Microsoft’s Redmond, Wash., campus. This sampling frame includes many thousands of professional developers. From this of detailed investigation (as opposed to produc- pool, I randomly selected 1,000 and sent them a ing generalizable descriptive statistics). To ensure link to the survey. Targeted developers had two that I didn’t bias the results with preconceptions weeks to complete it. about obstacles I thought developers would face, I left the main questions open-ended. The survey Survey Respondents consisted of 13 questions, with the initial three A total of 83 developers answered the survey. assessing the respondent’s professional experi- However, three respondents didn’t provide an- ence. To focus the survey’s answers and get the swers to the six open questions on strategies and developers thinking about specifics, the remain- obstacles, so I discarded their responses. Despite der asked them to comment on their most recent the response rate of 8 percent, the set of respon- learning experiences with a publicly released API. dents constituted an excellent representation of The survey’s core consisted of a three-part, the target population, cutting across job titles, se- open-ended question on the obstacles developers niority levels, and technology use. faced learning APIs: Figure 1 shows the distribution of respondents across job titles and the corresponding distribu- What obstacles made it difficult for you to tion of job titles across the population (Redmond learn the API? Obstacles can have to do developers). The four leftmost bar groups repre- with the API itself, with your background, sent four seniority levels for software develop- with learning resources, etc. List the three ment engineers (SDEs). Each bar group repre- most important obstacles, in order of impor- sents a distinct job title with different associated tance (1 being the biggest obstacle). Please responsibilities. The following four bar groups be more specific than the general categories represent job titles in development management mentioned here. (lead SDEs). Although technically a management position, lead SDEs are typically involved in ac- I formatted this question as three comment tive software development along with their team. boxes. Respondents could fill in any number of The next two bar groups represent seniority lev- boxes, from none to all three. In addition, the els for architects, a multidisciplinary role involv- survey asked for information intended to help in- ing both program management and software de- terpret the respondent’s answers and discover his velopment. Finally, the population also included or her API learning strategies. I gathered con- a small fraction of developers with other titles text through seven questions on the specific API (typically specialists in areas such as security learned, the time frame, familiarity with the ap- and user experience), but I didn’t get respondents plication domain, and so on. Three questions from this pool. Among general job categories, ti- on learning strategies asked how developers ap- tles run left to right, from junior to senior. proached learning the API and were formatted in As the figure shows, respondents’ distribution the same style as the obstacle question. across job titles in the sample closely maps that of The survey concluded by asking for additional the population. Across all job titles, respondents comments and if respondents would be willing to had on average 12.9 years of professional experi- participate in future research. ence (self-reported). The median was 10 years, and 90 percent reported four of more years of profes- Population and Sample sional experience. The respondents also reported The survey targeted software developers at Mi- on their aggregated experience learning 54 distinct crosoft. Microsoft’s software development staff APIs covering a wide span of technologies, abstrac- consists of roughly 30,000 engineers, mostly de- tion levels, and application domains. Examples of 28 IEEE SOFTWARE www.computer.org/software 40 28 35 30 21 25 20 15 Sample Ratio to total (%) 15 Population 10 5 4 5 2 2 2 1 0 0 0 Software dev. engineers (SDEs) Lead SDEs Architects Other Novice Senior Novice Senior Novice Senior Job title Figure 1. Distribution of APIs the respondents reported learning included of 74 respondents mentioned at least one obstacle. respondents across job one that provides access to personal information I associated respondents with categories when they titles. Most respondents manager data on Windows mobile-based devices, indicated at least one obstacle in that category. For (49 percent) were classic windowing APIs, and Microsoft’s most re- example, 50 (out of 74) respondents mentioned at developers with junior cent Web application development platform. least one obstacle relating to API resources. Some or intermediate job responses pertained to multiple categories.
Recommended publications
  • MAGIC Summoning: Towards Automatic Suggesting and Testing of Gestures with Low Probability of False Positives During Use
    JournalofMachineLearningResearch14(2013)209-242 Submitted 10/11; Revised 6/12; Published 1/13 MAGIC Summoning: Towards Automatic Suggesting and Testing of Gestures With Low Probability of False Positives During Use Daniel Kyu Hwa Kohlsdorf [email protected] Thad E. Starner [email protected] GVU & School of Interactive Computing Georgia Institute of Technology Atlanta, GA 30332 Editors: Isabelle Guyon and Vassilis Athitsos Abstract Gestures for interfaces should be short, pleasing, intuitive, and easily recognized by a computer. However, it is a challenge for interface designers to create gestures easily distinguishable from users’ normal movements. Our tool MAGIC Summoning addresses this problem. Given a specific platform and task, we gather a large database of unlabeled sensor data captured in the environments in which the system will be used (an “Everyday Gesture Library” or EGL). The EGL is quantized and indexed via multi-dimensional Symbolic Aggregate approXimation (SAX) to enable quick searching. MAGIC exploits the SAX representation of the EGL to suggest gestures with a low likelihood of false triggering. Suggested gestures are ordered according to brevity and simplicity, freeing the interface designer to focus on the user experience. Once a gesture is selected, MAGIC can output synthetic examples of the gesture to train a chosen classifier (for example, with a hidden Markov model). If the interface designer suggests his own gesture and provides several examples, MAGIC estimates how accurately that gesture can be recognized and estimates its false positive rate by comparing it against the natural movements in the EGL. We demonstrate MAGIC’s effectiveness in gesture selection and helpfulness in creating accurate gesture recognizers.
    [Show full text]
  • Amigaos 3.2 FAQ 47.1 (09.04.2021) English
    $VER: AmigaOS 3.2 FAQ 47.1 (09.04.2021) English Please note: This file contains a list of frequently asked questions along with answers, sorted by topics. Before trying to contact support, please read through this FAQ to determine whether or not it answers your question(s). Whilst this FAQ is focused on AmigaOS 3.2, it contains information regarding previous AmigaOS versions. Index of topics covered in this FAQ: 1. Installation 1.1 * What are the minimum hardware requirements for AmigaOS 3.2? 1.2 * Why won't AmigaOS 3.2 boot with 512 KB of RAM? 1.3 * Ok, I get it; 512 KB is not enough anymore, but can I get my way with less than 2 MB of RAM? 1.4 * How can I verify whether I correctly installed AmigaOS 3.2? 1.5 * Do you have any tips that can help me with 3.2 using my current hardware and software combination? 1.6 * The Help subsystem fails, it seems it is not available anymore. What happened? 1.7 * What are GlowIcons? Should I choose to install them? 1.8 * How can I verify the integrity of my AmigaOS 3.2 CD-ROM? 1.9 * My Greek/Russian/Polish/Turkish fonts are not being properly displayed. How can I fix this? 1.10 * When I boot from my AmigaOS 3.2 CD-ROM, I am being welcomed to the "AmigaOS Preinstallation Environment". What does this mean? 1.11 * What is the optimal ADF images/floppy disk ordering for a full AmigaOS 3.2 installation? 1.12 * LoadModule fails for some unknown reason when trying to update my ROM modules.
    [Show full text]
  • Understanding and Mitigating the Security Risks of Apple Zeroconf
    2016 IEEE Symposium on Security and Privacy Staying Secure and Unprepared: Understanding and Mitigating the Security Risks of Apple ZeroConf Xiaolong Bai*,1, Luyi Xing*,2, Nan Zhang2, XiaoFeng Wang2, Xiaojing Liao3, Tongxin Li4, Shi-Min Hu1 1TNList, Tsinghua University, Beijing, 2Indiana University Bloomington, 3Georgia Institute of Technology, 4Peking University [email protected], {luyixing, nz3, xw7}@indiana.edu, [email protected], [email protected], [email protected] Abstract—With the popularity of today’s usability-oriented tend to build their systems in a “plug-and-play” fashion, designs, dubbed Zero Configuration or ZeroConf, unclear are using techniques dubbed zero-configuration (ZeroConf ). For the security implications of these automatic service discovery, example, the AirDrop service on iPhone, once activated, “plug-and-play” techniques. In this paper, we report the first systematic study on this issue, focusing on the security features automatically detects another Apple device nearby running of the systems related to Apple, the major proponent of the service to transfer documents. Such ZeroConf services ZeroConf techniques. Our research brings to light a disturb- are characterized by automatic IP selection, host name ing lack of security consideration in these systems’ designs: resolving and target service discovery. Prominent examples major ZeroConf frameworks on the Apple platforms, includ- include Apple’s Bonjour [3], and the Link-Local Multicast ing the Core Bluetooth Framework, Multipeer Connectivity and
    [Show full text]
  • Cooper ( Interaction Design
    Cooper ( Interaction Design Inspiration The Myth of Metaphor Cooper books by Alan Cooper, Chairman & Founder Articles June 1995 Newsletter Originally Published in Visual Basic Programmer's Journal Concept projects Book reviews Software designers often speak of "finding the right metaphor" upon which to base their interface design. They imagine that rendering their user interface in images of familiar objects from the real world will provide a pipeline to automatic learning by their users. So they render their user interface as an office filled with desks, file cabinets, telephones and address books, or as a pad of paper or a street of buildings in the hope of creating a program with breakthrough ease-of- learning. And if you search for that magic metaphor, you will be in august company. Some of the best and brightest designers in the interface world put metaphor selection as one of their first and most important tasks. But by searching for that magic metaphor you will be making one of the biggest mistakes in user interface design. Searching for that guiding metaphor is like searching for the correct steam engine to power your airplane, or searching for a good dinosaur on which to ride to work. I think basing a user interface design on a metaphor is not only unhelpful but can often be quite harmful. The idea that good user interface design is based on metaphors is one of the most insidious of the many myths that permeate the software community. Metaphors offer a tiny boost in learnability to first time users at http://www.cooper.com/articles/art_myth_of_metaphor.htm (1 of 8) [1/16/2002 2:21:34 PM] Cooper ( Interaction Design tremendous cost.
    [Show full text]
  • UC Santa Cruz UC Santa Cruz Electronic Theses and Dissertations
    UC Santa Cruz UC Santa Cruz Electronic Theses and Dissertations Title Efficient Bug Prediction and Fix Suggestions Permalink https://escholarship.org/uc/item/47x1t79s Author Shivaji, Shivkumar Publication Date 2013 Peer reviewed|Thesis/dissertation eScholarship.org Powered by the California Digital Library University of California UNIVERSITY OF CALIFORNIA SANTA CRUZ EFFICIENT BUG PREDICTION AND FIX SUGGESTIONS A dissertation submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY in COMPUTER SCIENCE by Shivkumar Shivaji March 2013 The Dissertation of Shivkumar Shivaji is approved: Professor Jim Whitehead, Chair Professor Jose Renau Professor Cormac Flanagan Tyrus Miller Vice Provost and Dean of Graduate Studies Copyright c by Shivkumar Shivaji 2013 Table of Contents List of Figures vi List of Tables vii Abstract viii Acknowledgments x Dedication xi 1 Introduction 1 1.1 Motivation . .1 1.2 Bug Prediction Workflow . .9 1.3 Bug Prognosticator . 10 1.4 Fix Suggester . 11 1.5 Human Feedback . 11 1.6 Contributions and Research Questions . 12 2 Related Work 15 2.1 Defect Prediction . 15 2.1.1 Totally Ordered Program Units . 16 2.1.2 Partially Ordered Program Units . 18 2.1.3 Prediction on a Given Software Unit . 19 2.2 Predictions of Bug Introducing Activities . 20 2.3 Predictions of Bug Characteristics . 21 2.4 Feature Selection . 24 2.5 Fix Suggestion . 25 2.5.1 Static Analysis Techniques . 25 2.5.2 Fix Content Prediction without Static Analysis . 26 2.6 Human Feedback . 28 iii 3 Change Classification 30 3.1 Workflow . 30 3.2 Finding Buggy and Clean Changes .
    [Show full text]
  • Automatic Program Repair Using Genetic Programming
    Automatic Program Repair Using Genetic Programming A Dissertation Presented to the Faculty of the School of Engineering and Applied Science University of Virginia In Partial Fulfillment of the requirements for the Degree Doctor of Philosophy (Computer Science) by Claire Le Goues May 2013 c 2013 Claire Le Goues Abstract Software quality is an urgent problem. There are so many bugs in industrial program source code that mature software projects are known to ship with both known and unknown bugs [1], and the number of outstanding defects typically exceeds the resources available to address them [2]. This has become a pressing economic problem whose costs in the United States can be measured in the billions of dollars annually [3]. A dominant reason that software defects are so expensive is that fixing them remains a manual process. The process of identifying, triaging, reproducing, and localizing a particular bug, coupled with the task of understanding the underlying error, identifying a set of code changes that address it correctly, and then verifying those changes, costs both time [4] and money. Moreover, the cost of repairing a defect can increase by orders of magnitude as development progresses [5]. As a result, many defects, including critical security defects [6], remain unaddressed for long periods of time [7]. Moreover, humans are error-prone, and many human fixes are imperfect, in that they are either incorrect or lead to crashes, hangs, corruption, or security problems [8]. As a result, defect repair has become a major component of software maintenance, which in turn consumes up to 90% of the total lifecycle cost of a given piece of software [9].
    [Show full text]
  • Intuition As Evidence in Philosophical Analysis: Taking Connectionism Seriously
    Intuition as Evidence in Philosophical Analysis: Taking Connectionism Seriously by Tom Rand A thesis submitted in conformity with the requirements for the degree of Ph.D. Graduate Department of Philosophy University of Toronto (c) Copyright by Tom Rand 2008 Intuition as Evidence in Philosophical Analysis: Taking Connectionism Seriously Ph.D. Degree, 2008, by Tom Rand, Graduate Department of Philosophy, University of Toronto ABSTRACT 1. Intuitions are often treated in philosophy as a basic evidential source to confirm/discredit a proposed definition or theory; e.g. intuitions about Gettier cases are taken to deny a justified-true-belief analysis of ‘knowledge’. Recently, Weinberg, Nichols & Stitch (WN&S) provided evidence that epistemic intuitions vary across persons and cultures. In- so-far as philosophy of this type (Standard Philosophical Methodology – SPM) is committed to provide conceptual analyses, the use of intuition is suspect – it does not exhibit the requisite normativity. I provide an analysis of intuition, with an emphasis on its neural – or connectionist – cognitive backbone; the analysis provides insight into its epistemic status and proper role within SPM. Intuition is initially characterized as the recognition of a pattern. 2. The metaphysics of ‘pattern’ is analyzed for the purpose of denying that traditional symbolic computation is capable of differentiating the patterns of interest. 3. The epistemology of ‘recognition’ is analyzed, again, to deny that traditional computation is capable of capturing human acts of recognition. 4. Fodor’s informational semantics, his Language of Thought and his Representational Theory of Mind are analyzed and his arguments denied. Again, the purpose is to deny traditional computational theories of mind.
    [Show full text]
  • The Impact of Code Review Coverage and Code Review Participation on Software Quality
    The Impact of Code Review Coverage and Code Review Participation on Software Quality A Case Study of the Qt, VTK, and ITK Projects Shane McIntosh1, Yasutaka Kamei2, Bram Adams3, and Ahmed E. Hassan1 1Queen’s University, Canada 2Kyushu University, Japan 3Polytechnique Montréal, Canada 1{mcintosh, ahmed}@cs.queensu.ca [email protected] [email protected] ABSTRACT 1. INTRODUCTION Software code review, i.e., the practice of having third-party Software code reviews are a well-documented best practice team members critique changes to a software system, is a for software projects. In Fagan's seminal work, formal design well-established best practice in both open source and pro- and code inspections with in-person meetings were found prietary software domains. Prior work has shown that the to reduce the number of errors detected during the testing formal code inspections of the past tend to improve the qual- phase in small development teams [8]. Rigby and Bird find ity of software delivered by students and small teams. How- that the modern code review processes that are adopted in a ever, the formal code inspection process mandates strict re- variety of reviewing environments (e.g., mailing lists or the view criteria (e.g., in-person meetings and reviewer check- Gerrit web application1) tend to converge on a lightweight lists) to ensure a base level of review quality, while the mod- variant of the formal code inspections of the past, where ern, lightweight code reviewing process does not. Although the focus has shifted from defect-hunting to group problem- recent work explores the modern code review process qual- solving [34].
    [Show full text]
  • Johnny Bock Andersen CV for Software Consultancy 1 Summary
    Johnny Bock Andersen CV for Software Consultancy 1 Summary and Introduction The consultant specializes in development and design of advanced and high- performance software. In the areas of compiler, programming language and computer vision and graphics technologies, he has particularly strong skills that he uses in his company, Hardcore Processing, to turn cutting edge technologies into real-life applications. In doing this, he has also gained considerable experience in implementing numerical algorithms where nu- merical stability is often a challenge. He has worked both as an employee and even more so as a consultant for several companies over the years us- ing a very broad spectrum of platforms, tools and languages with many of which he has thorough in-depth experience, which he often gains relatively quickly. He is usually in a good mood, well-liked among colleagues and gladly answers questions. He performs best when focusing on larger tasks alone. From his 32 years of experience, out of which 22 are professional, he has a very strong intuition about what the best, or at least near-optimal, solution is to many complex problems, even when it would be very hard and time-consuming to find the optimal solution by thorough analysis. He has worked more than full time over many of the years, which is hard to reflect with this style of CV where the workload is not fully specified. YearofBirth : 1975 Citizenship: Danish(Denmark) Current residence : Copenhagen, Denmark Education Year Education Place 2004-2010 M.Sc.ComputerScience UniversityofCopenhagen, Denmark The last 102.5 ECTS points were passed in 1.5 years, i.e.
    [Show full text]
  • Multi-Parameter Databases Remote-Access and Automatic Layout and Conjunct Analysis by Means of QT Cross-Platform Application Framework
    Multi-Parameter Databases Remote-access and Automatic Layout and Conjunct Analysis by means of QT Cross-platform Application Framework Wei Wu Weiwu Info, Portugal Abstract Nokia's Qt Development Frameworks division, which came into being after Nokia's acquisition of Norwegian Data acquirement and signal processing at Multi- company, Trolltech, the original producer of Qt. parameter records such as PhysioNet database records There are many powerful functions QT included and require accessing records remotely, laying out uncertain among those, the most interesting ones for our application number of parameters, and doing conjunct analysis. This mentioned above, are their layouts-manage mechanism paper proposes developing software by QT graphical and SIGNAL/SLOT communication mechanism. C++ toolkit can meet the requirements described above in less developing time and higher efficiency. Practical 2.1. Layout-manage mechanism works at a software tool development are introduced to show advantages of QT toolkit at software tool In QT, an object, such as a displayed signal, is defined development, particularly the advantages of as a widget. QT gives every widget that is placed on a SIGNAL/SLOT and Layout-manage mechanisms that are form an appropriate size and position by layout-manage fundamental for implement of conjunct analysisms of the mechanism. Qt provides several classes that lay out abstract before continuing with the next heading. widgets on a form: QHBoxLayout, QVBoxLayout, QGridLayout, and QStackedLayout. These classes can 1. Introduction implement the signals automatic layout by assigning each signal a frame at a multi-frame layout, and ensure that Some databases such as PhysioNet databases (WFDB) frames adapt automatically to different fonts, languages, include the record with uncertain number of parameters, and platforms.
    [Show full text]
  • Developing a Framework for a New Visual-Based
    DEVELOPING A FRAMEWORK FOR A NEW VISUAL-BASED INTERFACE DESIGN IN AUTODESK MAYA A Thesis by TIMOTHY CLAYTON WITHERS Submitted to the Office of Graduate Studies of Texas A&M University in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE August 2012 Major Subject: Visualization DEVELOPING A FRAMEWORK FOR A NEW VISUAL-BASED INTERFACE DESIGN IN AUTODESK MAYA A Thesis by TIMOTHY CLAYTON WITHERS Submitted to the Office of Graduate Studies of Texas A&M University in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE Approved by: Co-Chairs of Committee, Joshua Bienko Philip Galanter Committee Members, Tracy Hammond Justin Israel Head of Department, Tim McLaughlin August 2012 Major Subject: Visualization iii ABSTRACT Developing a Framework for a New Visual-Based Interface Design in Autodesk Maya. (August 2012) Timothy Clayton Withers, B.S., Texas A&M University Co{Chairs of Advisory Committee: Joshua Bienko Philip Galanter In this thesis, I develop an efficient and user-friendly node-based interface to be used in the creation of a particle system in Autodesk Maya. Maya's interface inconsis- tencies were identified and solutions were designed based on research in a number of fields related to human-computer interaction (HCI) as well as taking design queues from other highly successful 3D programs that employ a node-based interface. This research was used to guide the design of the interface in terms of organizing the data into logical chunks of information, using color to help the user develop working mental models of the system, and also using simple, easy to identify, graphical representa- tions of a particle system.
    [Show full text]
  • Microsoft Surface User Experience Guidelines
    Microsoft Surface™ User Experience Guidelines Designing for Successful Touch Experiences Version 1.0 June 30, 2008 1 Copyright This document is provided for informational purposes only, and Microsoft makes no warranties, either express or implied, in this document. Information in this document, including URL and other Internet Web site references, is subject to change without notice. The entire risk of the use or the results from the use of this document remains with the user. Unless otherwise noted, the example companies, organizations, products, domain names, e-mail addresses, logos, people, places, financial and other data, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, e-mail address, logo, person, places, financial or other data, or events is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft. Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property. © 2008 Microsoft Corporation. All rights reserved. Microsoft, Excel, Microsoft Surface, the Microsoft Surface logo, Segoe, Silverlight, Windows, Windows Media, Windows Vista, Virtual Earth, Xbox LIVE, XNA, and Zune are either registered trademarks or trademarks of the Microsoft group of companies.
    [Show full text]