Genera

Genera

Discussion
Ask a question about 'Genera'
Start a new discussion about 'Genera'
Answer questions from other users
Full Discussion Forum
 
Encyclopedia
Genera is a commercial
Commercial software
Commercial software, or less commonly, payware, is computer software that is produced for sale or that serves commercial purposes.Commercial software is most often proprietary software, but free software packages may also be commercial software....

 operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

 and development environment
Development environment
In hosted software development, a development environment refers to a server tier designated to a specific stage in a release process....

 for Lisp machine
Lisp machine
Lisp machines were general-purpose computers designed to efficiently run Lisp as their main software language. In a sense, they were the first commercial single-user workstations...

s developed by Symbolics
Symbolics
Symbolics refers to two companies: now-defunct computer manufacturer Symbolics, Inc., and a privately held company that acquired the assets of the former company and continues to sell and maintain the Open Genera Lisp system and the Macsyma computer algebra system.The symbolics.com domain was...

. It is essentially a fork
Fork (software development)
In software engineering, a project fork happens when developers take a legal copy of source code from one software package and start independent development on it, creating a distinct piece of software...

 of an earlier operating system originating on the MIT AI Lab's Lisp machine
Lisp machine
Lisp machines were general-purpose computers designed to efficiently run Lisp as their main software language. In a sense, they were the first commercial single-user workstations...

s which Symbolics had used in common with LMI and Texas Instruments
Texas Instruments
Texas Instruments Inc. , widely known as TI, is an American company based in Dallas, Texas, United States, which develops and commercializes semiconductor and computer technology...

. Genera is also sold by Symbolics as Open Genera, which runs Genera on computers based on an Alpha
DEC Alpha
Alpha, originally known as Alpha AXP, is a 64-bit reduced instruction set computer instruction set architecture developed by Digital Equipment Corporation , designed to replace the 32-bit VAX complex instruction set computer ISA and its implementations. Alpha was implemented in microprocessors...

 processor using Tru64 UNIX
Tru64 UNIX
Tru64 UNIX is a 64-bit UNIX operating system for the Alpha instruction set architecture , currently owned by Hewlett-Packard . Previously, Tru64 UNIX was a product of Compaq, and before that, Digital Equipment Corporation , where it was known as Digital UNIX .As its original name suggests, Tru64...

. This software is available as proprietary software
Proprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...

. However, older versions are available as free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

.

Genera is an example of an operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

 written in Lisp. It is an object-oriented operating system
Object-oriented operating system
An object-oriented operating system is an operating system which internally uses object-oriented methodologies.An object-oriented operating system is in contrast to an object-oriented user interface or programming framework, which can be placed above a non-object-oriented operating system like DOS,...

.

Genera supports incremental and interactive development of complex software using a mix of programming styles with extensive support for object-oriented programming.

MIT's Lisp Machine operating system


The Lisp Machine operating system was written in Lisp Machine Lisp
Lisp Machine Lisp
Lisp Machine Lisp is a dialect of the Lisp programming language, a direct descendant of Maclisp, and was initially developed in the mid to late 1970s as the systems programming language for the MIT Lisp machines. Lisp Machine Lisp was also the Lisp dialect with the most influence on the design of...

. The Lisp Machine was a one-user workstation initially targeted at software developers for artificial intelligence
Artificial intelligence
Artificial intelligence is the intelligence of machines and the branch of computer science that aims to create it. AI textbooks define the field as "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions that maximize its...

 projects. The Lisp Machine had a large bitmap screen, a mouse, a keyboard, a network interface, a disk drive and slots for expansion. The operating system was supporting this hardware. The Lisp Machine operating system provided (among others):
  • code for a Frontend Processor
  • a way to boot the operating system
  • virtual memory management
  • garbage collection
    Garbage collection (computer science)
    In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...

  • drivers for the hardware (mouse, keyboard, screen, disk, …)
  • an interpreter and a native code compiler for Lisp Machine Lisp
  • an object system (Flavors)
  • a window system and a window manager
    Window manager
    A window manager is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface. Most window managers are designed to help provide a desktop environment...

  • a local file system
    File system
    A file system is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device which contain it. A file system organizes data in an efficient manner and is tuned to the...

  • support for the CHAOS
    CHAOSnet
    Chaosnet was first developed by Thomas Knight and Jack Holloway at MIT's AI Lab in 1975 and thereafter. It refers to two separate, but closely related, technologies...

     network
  • an Emacs
    Emacs
    Emacs is a class of text editors, usually characterized by their extensibility. GNU Emacs has over 1,000 commands. It also allows the user to combine these commands into macros to automate work.Development began in the mid-1970s and continues actively...

    -like Editor named Zmacs
    Zmacs
    Zmacs is one of the many variants of the Emacs text editor. Zmacs was written for the MIT Lisp machine and runs on its descendants . Zmacs is written in Lisp Machine Lisp...

  • a mail program named Zmail
  • a Lisp listener
  • a debugger
    Debugger
    A debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...



This was already a complete operating system and development environment for a Lisp-based one-user operating system.

The MIT Lisp Machine operating system has been developed from the middle 1970s to the early 1980s.

In 2006 the source code for this Lisp Machine operating system from MIT was released as open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

.

Genera operating system


Symbolics
Symbolics
Symbolics refers to two companies: now-defunct computer manufacturer Symbolics, Inc., and a privately held company that acquired the assets of the former company and continues to sell and maintain the Open Genera Lisp system and the Macsyma computer algebra system.The symbolics.com domain was...

 developed new Lisp Machine
Lisp machine
Lisp machines were general-purpose computers designed to efficiently run Lisp as their main software language. In a sense, they were the first commercial single-user workstations...

s and published the operating system under the name Genera. Genera 8.5 is the latest version. Symbolics Genera has been developed from the early 1980s to the early 1990s. In the recent years there were mostly patches developed and very little new functionality.

Symbolics developed Genera based on this foundation of the MIT Lisp machine operating system. It sells the operating system and layered software. Some of the layered software has been integrated into Genera in later releases. Symbolics improved the operating system software from the original MIT Lisp Machine and expanded it. The Genera operating system was only available for Symbolics Lisp Machines and the Open Genera virtual machine.

Symbolics Genera has a large number of features and supported all the versions of various hardware that Symbolics built over its lifetime. Its source code is more than a million lines of code (the number depends on the release and what amount of software is installed). Symbolics Genera was published on tape and CD-ROM
CD-ROM
A CD-ROM is a pre-pressed compact disc that contains data accessible to, but not writable by, a computer for data storage and music playback. The 1985 “Yellow Book” standard developed by Sony and Philips adapted the format to hold any form of binary data....

. The release of the operating system also provided most of the source code of the operating system and its applications. The user has free access to all parts of the running operating system and can write changes and extensions. The source code of the operating system is divided into systems. These systems bundle sources, binaries and other files. The system construction toolkit (SCT) maintains the dependencies, the components and the versions of all the systems. A system has two numbers: a major and a minor version number. The major version number counts the number of full constructions of a system. The minor version counts the number of patches to that system. A patch is a file that can be loaded to fix problems or provide extensions to a particular version of a system.

Symbolics developed a Genera version, named Open Genera, that included a virtual machine that enabled executing Genera on DEC Alpha based workstations, plus several Genera extensions and applications that were sold separately (like the Symbolics S-Graphics suite). Also, they made a new operating system named Minima for embedded uses, in Common Lisp
Common Lisp
Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers...

.

The original Lisp Machine operating system was developed in Lisp Machine Lisp
Lisp Machine Lisp
Lisp Machine Lisp is a dialect of the Lisp programming language, a direct descendant of Maclisp, and was initially developed in the mid to late 1970s as the systems programming language for the MIT Lisp machines. Lisp Machine Lisp was also the Lisp dialect with the most influence on the design of...

, using the Flavors object-oriented extension to that Lisp. Symbolics provided a successor to Flavors named New Flavors. Later Symbolics also supported Common Lisp
Common Lisp
Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers...

 and the Common Lisp Object System. Then Symbolics Common Lisp became the default Lisp dialect for writing software with Genera. The software of the operating system was written mostly in Lisp Machine Lisp (named ZetaLisp) and Symbolics Common Lisp. These Lisp dialects are both provided by Genera. Also parts of the software was using either Flavors, New Flavors and Common Lisp Object System. Some of the older parts of the Genera operating system have been rewritten in Symbolics Common Lisp and the Common Lisp Object system. Many parts of the operating systems remained written in ZetaLisp and Flavors (or New Flavors).

User interface


The early versions of Symbolics Genera were built with the original windowing system
Windowing system
A windowing system is a component of a graphical user interface , and more specifically of a desktop environment, which supports the implementation of window managers, and provides basic support for graphics hardware, pointing devices such as mice, and keyboards...

 of the Lisp Machine operating system. Symbolics then developed a radically new windowing system named Dynamic Windows with a presentation-based user interface. Many of the applications of Genera have then been using Dynamic Windows for their user interface
User interface
The user interface, in the industrial design field of human–machine interaction, is the space where interaction between humans and machines occurs. The goal of interaction between a human and a machine at the user interface is effective operation and control of the machine, and feedback from the...

. Eventually there was a move to port parts of the window system to run on other Common Lisp implementations by other vendors as the Common Lisp Interface Manager
Common Lisp Interface Manager
The Common Lisp Interface Manager is a Common Lisp-based programming interface for creating user interfaces — i.e., GUIs. It is completely object-oriented and is based on the idea of stream input and output. There are also facilities for output device independence...

 (CLIM). Versions of CLIM have been available (among others) for Allegro Common Lisp
Allegro Common Lisp
Allegro Common Lisp is a commercial implementation of the Common Lisp programming language developed by Franz Inc. Allegro CL provides the full ANSI Common Lisp standard with many extensions...

, LispWorks
LispWorks
LispWorks is a commercial implementation and IDE for the Common Lisp programming language. The software runs on Microsoft Windows, Mac OS X , Linux, FreeBSD, Solaris and HP UX....

 and Macintosh Common Lisp. An open source version is available (McCLIM).

Dynamic Windows uses typed objects
Type system
A type system associates a type with each computed value. By examining the flow of these values, a type system attempts to ensure or prove that no type errors can occur...

 for all output to the screen. All displayed information keeps its connection to the objects displayed (output recording). This works for both textual and graphical output. At runtime the applicable operations to these objects are computed based on the class hierarchy and the available operations (commands
Command pattern
In object-oriented programming, the command pattern is a design pattern in which an object is used to represent and encapsulate all the information needed to call a method at a later time...

). Commands are organized in hierarchical command tables with typed parameters. Commands can be entered with the mouse, keystrokes and with a command line interface. All applications share one command line interpreter implementation, which adapts to various types of usage. The graphical capabilities of the window system are based on the PostScript
PostScript
PostScript is a dynamically typed concatenative programming language created by John Warnock and Charles Geschke in 1982. It is best known for its use as a page description language in the electronic and desktop publishing areas. Adobe PostScript 3 is also the worldwide printing and imaging...

 graphics model.

The user interface is mostly in black-and-white
Black-and-white
Black-and-white, often abbreviated B/W or B&W, is a term referring to a number of monochrome forms in visual arts.Black-and-white as a description is also something of a misnomer, for in addition to black and white, most of these media included varying shades of gray...

 (since that was what the hardware console typically provided). But there was also extensive support for color (using color frame buffers or X11 servers with color support). The activities (applications) are using the whole screen with several panes (though windows can also be smaller). The layout of these activity windows adapts to different screen sizes. Activities can also switch between different pane layouts.

Genera provides a system menu for controlling windows, switching applications and for window system operations. Many features of the user interface (switching between activities, creating activities, stopping/starting processes and much more) can also be controlled with keyboard commands.

The Dynamic Lisp Listener is an example of a command line interface with full graphics capabilities and support for mouse-based interaction. It accepts Lisp expressions and commands as input. The output is mouse sensitive. The Lisp listener can display forms to input data for the various built-in commands.

The user interface provides extensive online help
Online help
Online help is topic-oriented, procedural or reference information delivered through computer software. It is a form of user assistance. Most online help is designed to give assistance in the use of a software application or operating system, but can also be used to present information on a broad...

 and completion of choices in various contexts.

Documentation


Genera supports fully hyperlinked online documentation. The documentation is read with the Document Examiner
Symbolics Document Examiner
Symbolics Document Examiner was a powerful and early hypertext system developed at Symbolics by Janet Walker in 1985...

, an early hypertext
Hypertext
Hypertext is text displayed on a computer or other electronic device with references to other text that the reader can immediately access, usually by a mouse click or keypress sequence. Apart from running text, hypertext may contain tables, images and other presentational devices. Hypertext is the...

 browser. The documentation is based on small reusable documentation records that can also be displayed in various contexts with the Editor and the Lisp Listener. The documentation is organized in books and sections. The books were also provided in printed versions with the same contents as the online documentation. The documentation database information is delivered with Genera and can be modified with incremental patches.

The documentation was created with a separate application that was not shipped with Genera: Symbolics Concordia. Concordia provides an extension to the Zmacs editor for editing documentation records, a graphics editor and a page previewer.

The documentation provides user guides, installation guidelines and references of the various Lisp constructs and libraries.

The markup language is based on the Scribe
Scribe (markup language)
Scribe is a markup language and word processing system which pioneered the use of descriptive markup. Scribe was revolutionary when it was proposed, because it involved for the first time a clean separation of structure and format.-Beginnings:...

 markup language and also usable by the developer.

Genera supports printing to postscript printers, provides a printing queue and also a PostScript interpreter (written in Lisp).

Features


Genera also has support for various network protocols and applications using those. It has extensive support for TCP/IP.

Genera supports one-processor machines with several threads (called processes).

Genera supports several different types of garbage collection
Garbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...

: full Garbage Collection, in-place Garbage Collection, Incremental Garbage Collection and Ephemeral Garbage Collection. The Ephemeral Garbage Collector only uses physical memory and uses the memory management unit to get information about changed pages in physical memory. The garbage collector uses generations and the virtual memory is divided into areas. Areas can contain objects of certain types (strings, bitmaps, pathnames, ...) and each area can use different memory management mechanisms.

Genera implements two file systems: the FEP file system for large files and the LMFS (Lisp Machine File System, optimized for many small files). These file systems also maintain different versions of files. If a file is modified, Genera still keeps the old versions. Genera also provides access to other (local and remote) file systems: NFS, FTP, HFS, CDROMs and others. Genera also can read from and write to and tape drives.

Genera supports netbooting.

Genera provides a client for the Statice object-oriented database from Symbolics.

Genera makes extensive use of the condition system (exception handling) to handle all kinds of runtime errors and is able to recover from many of these errors. It allows for example to retry network operations in case a network connection has a failure - the application code will continue to run. In case of errors the user will be presented a menu of restarts (abort, retry, continue options) that are specific to the error signalled.

Genera has extensive debugging tools.

Genera can save versions of the running system to worlds. These worlds can be booted and then will contain all the saved data and code.

Programming languages


Symbolics provided several programming languages for use with Genera:
  • ZetaLisp, the Symbolics version of Lisp Machine Lisp
  • Common Lisp
    Common Lisp
    Common Lisp, commonly abbreviated CL, is a dialect of the Lisp programming language, published in ANSI standard document ANSI INCITS 226-1994 , . From the ANSI Common Lisp standard the Common Lisp HyperSpec has been derived for use with web browsers...

     in several versions: Symbolics Common Lisp, Future Common Lisp (ANSI Common Lisp), CLtL1
  • Symbolics Pascal, a version of Pascal
    Pascal (programming language)
    Pascal is an influential imperative and procedural programming language, designed in 1968/9 and published in 1970 by Niklaus Wirth as a small and efficient language intended to encourage good programming practices using structured programming and data structuring.A derivative known as Object Pascal...

     written in Lisp
  • Symbolics C, a version of C
    C (programming language)
    C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

     written in Lisp
  • Symbolics Fortran
    Fortran
    Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...

    , a version of Fortran written in Lisp


Symbolics Common Lisp provides most of the Common Lisp standard with a huge number of extensions (many of those coming from ZetaLisp).

Other languages from Symbolics

  • Symbolics Prolog, a version of Prolog written and integrated in Lisp
  • Symbolics Ada, a version of Ada written in Lisp


It is remarkable that these programming language implementations inherited some of the dynamic features of the Lisp system (like garbage collection and checked access to data) and supported incremental software development.

Third-party developers provided additional programming languages (like OPS5
OPS5
OPS5 is a rule-based or production system computer language, notable as the first such language to be used in a successful expert system, the R1/XCON system used to configure VAX computers....

) and development tools (like the Knowledge Engineering Environment, KEE, from Intellicorp).

Applications


Symbolics Genera comes with several applications. Applications are called activities. Some of the activities:
  • Zmacs
    Zmacs
    Zmacs is one of the many variants of the Emacs text editor. Zmacs was written for the MIT Lisp machine and runs on its descendants . Zmacs is written in Lisp Machine Lisp...

    , an Emacs-like text editor
  • Zmail, a mail reader also providing a calendar
  • File system browser with tools for file system maintenance
  • Lisp Listener with command line interface
  • Document Examiner
    Symbolics Document Examiner
    Symbolics Document Examiner was a powerful and early hypertext system developed at Symbolics by Janet Walker in 1985...

     for browsing documentation
  • Restore Distribution to install software.
  • Distribute Systems, to create software distributions
  • Peek to examine system information (processes, windows, network connections, ...)
  • Debugger
  • Namespace Editor to access informations about objects in the network (users, computers, file systems, ...)
  • Converse, a chat client
  • Terminal
  • Inspector, for browsing Lisp data structures
  • Notifications
  • Frame-Up, for designing user interfaces
  • Flavor Examiner, to examine the classes and methods of the Flavor object-oriented extension to Lisp


The Symbolics Museum from Ralf Möller provides screenshots of those of these activities.

Other applications from Symbolics


Symbolics sold several applications that were running on top of Symbolics Genera.
  • Symbolics Concordia, a document production suite
  • Symbolics Joshua, an expert system shell
  • Symbolics Macsyma
    Macsyma
    Macsyma is a computer algebra system that was originally developed from 1968 to 1982 at MIT as part of Project MAC and later marketed commercially...

    , a computer algebra system
  • Symbolics NS, a chip design tool
  • Symbolics Plexi, a neural network development tool
  • Symbolics S-Graphics, a suite of tools: S-Paint, S-Geometry, S-Dynamics, S-Render
  • Symbolics S-Utilities: S-Record, S-Compositor, S-Colorize, S-Convert
  • Symbolics Scope, Image processing with a Pixar Image Computer
  • Symbolics Statice, an object-oriented database

Third-party applications


Several companies developed and sold applications for Symbolics Genera. Some Examples:
  • ART (Automated Reasoning Tool), an expert system shell from Inference Corporation
  • iCad
    ICAD
    ICAD was a Knowledge-Based Engineering system that was based upon the Lisp programming language...

    , 3d parametric CAD system
  • Illustrate, graphics editor
  • KEE
    KEE
    KEE is a frame-based development tool for Expert Systems. KEE was developed and sold by IntelliCorp. It was first released in 1983 and ran on Lisp Machines. KEE was later ported to Lucid Common Lisp with CLX...

    (Knowledge Engineering Environment), an expert system shell, from IntelliCorp
  • Knowledge Craft, an expert system shell, from Carnegie Group
  • Metal, machine translation system from Siemens

Highlights

  • Genera is written completely in Lisp (using Zeta Lisp and Symbolics Common Lisp)
  • Even all the low-level system code is written in Lisp (device drivers, garbage collection, process scheduler, network stacks, etc.)
  • The source code is more than a million lines of Lisp and available for the user to be inspected and changed. The source is relatively compact, compared to the provided functionality, due to extensive reuse
  • The operating system is mostly written in an object-oriented style using Flavors, New Flavors and CLOS
  • It has extensive online documentation readable with the Document Examiner
  • Dynamic Windows provides a presentation-based user interface
  • The user interface can be used locally (on Lisp Machines and MacIvories) and remotely (using X11)
  • Groups of developers can work together in a networked environment
  • A central Namespace Server provides a directory of machines, users, services, networks, file systems, databases and more

Limitations

  • Genera only runs on Symbolics Lisp Machines or the Open Genera emulator.
  • Genera supports only one user logged in at any time.
  • There is only one Lisp system running at any time. Data and code is shared by applications and the operating system. (Though one can run multiple instances of Open Genera on one DEC Alpha).
  • There is mostly no protection against changing the operating system. The whole system is fully accessible and changeable.
  • Development effectively stopped in the middle 1990s.

Releases

  • 1982 - Release 78
  • 1982 - Release 210
  • 1983 - Release 4.0
  • 1984 - Release 5.0
  • 1985 - Release 6.0, introduction of Symbolics Common Lisp, the Ephemeral Object Garbage Collector and the Document Examiner
  • 1986 - Genera 7.0
  • 1990 - Genera 8.0, introduction of CLOS
  • 1991 - Genera 8.1, introduction of CLIM
  • 1992 - Genera 8.2
  • 1993 - Genera 8.3
  • 1993 - Open Genera 1.0
  • 1998 - Open Genera 2.0


An experimental version of Open Genera that can run on x86-64 Linux exists.

External links