Title: Attracting Reuse Authors: Brian Foote Joseph Yoder Contact person: Joseph Yoder Postal Address: Department of Computer Science University of Illinois at Urbana-Champaign 1304 W. Springfield Urbana, IL 61801 USA Email and Phone: foote@cs.uiuc.edu (217) 333-3411 yoder@cs.uiuc.edu (217) 244-4695 Abstract This paper takes a code's eye view of software reuse and evolution. It addresses the question of what an object might do to encourage programmers to (re-)use it, as opposed to using some other object, or building new ones. THE SELFISH CLASS shows how focusing on code, rather than systems, processes, or personnel, can lead to fresh insights into software evolution and the forces that drive it. The remaining patterns focus on more specific problems that evolving artifacts might confront. A software artifact that WORKS OUT OF THE BOX is more likely to appeal to programmers than one that does not provide such a positive first impression. An artifacts that present a LOW SURFACE-TO-VOLUME RATIO is easier to understand, and provide greater leverage than an artifact that presents a broader cross-section. GENTLE LEARNING CURVE admonishes designers to build artifacts that reveal their complexity and power gradually. PROGRAMMING-BY-DIFFERENCE shows how code can evolve without jeopardizing its identity. FIRST ONE'S FREE and WINNING TEAM contrast two strategies an artifact may employ to solve the problem of finding a broad audience.