Self is an object oriented programming language and associated programming environment. It is close in spirit and semantics to Smalltalk, but is considerably simpler than Smalltalk in syntax and semantics. Most of the basic facilities in the Self system are implemented in Self, itself. Self has no classes. Instead, a more direct object-based inheritance mechanism is provided. The programming environment facilitates direct manipulation in which the programmer communicates with objects directly (or appears to), instead of applying "tools" to effect changes.