Increasingly, powerful and inexpensive computers are situated near individual users, and these computers are linked together either locally or across long distances. The computers are heterogeneous because users require different capabilities; legislating the use of identical systems in any organization seems as unlikely in the future as it has been in the past. Together with parallel processing, heterogenity and distribution are likely to be the dominant characteristics of computer systems during the next decade. The advent of distributed, heterogeneous systems has led to some new problems. One particularly important problem is the lack of support for sharing of programs and data in a safe and convenient manner across a heterogeneous network. This project is aimed at correcting this problem by providing a language-independent object repository. The repository can be used by programs written in different programming languages, and running on different hardware and under different operating systems, to share information. The new repository will be language independent, will store typed, structured objects, will support atomic transactions, will be both highly reliable and highly available, will control access to its objects, will perform well, and will be scalable, so that it can support a wide range of system sizes.