Digital media. Interactive design. Media convergence. The
World-Wide Web. Digital editing. You see the terms
everywhere in the computer industry. Personal computers are
at the focal point of a merging of video data streams, audio
information, 3-D models and visualization, communications
capabilities, and graphical data. From these ingredients
will emerge new products that will integrate the features we
see today in PCs, televisions, radios, telephones, and a
host of other electronic devices.
Software developers understand what it will take to make
this digital convergence a reality. They know it will take
higher bandwidth communications and new software tools. They
know that dealing with digital media will take much more
processing power than they can get in today's personal
computers. The industry is attempting to address these
issues, with new companies going public every week on the
promise. New software is bolted onto current operating
systems; new tools that handle complex data are introduced.
And users are being bombarded with new software packages,
which present an unbelievable array of capabilities -- and
complexity.
Complexity -- there's the hitch.
The very solutions that should enable media convergence
are unapproachably complex. Complexity increases costs while
customers expect falling prices. Complexity decreases a
programmer's productivity and lengthens the time it takes to
bring a product to market. Complexity increases software
overhead and consumes processing power. And most of all,
complexity drives end users crazy -- in purchase decisions
and in product use -- making personal computers less
approachable and, ironically, less useful.
Out-of-Date Assumptions This growing complexity
is a symptom of a larger problem. The decisions that the
computer industry's main players make are based on several
key assumptions that are well over two decades old:
The Uniprocessor Assumption
Today's PC architectures were designed over two decades
ago, in an era when microprocessors were expensive. Today,
microprocessors are commodities. Yet, we're still using
operating systems that can only run on one processor. The
question, "Which is better at solving problems, one 200 MHz
chip or two 120 MHz chips?" can't be answered -- because you
can't find a mainstream OS that knows how to take advantage
of a second processor, even though such a configuration
would deliver a new level of price-performance. As a result,
products deliver less performance than is inherent in the
hardware, at prices that are higher than they should be.
OS Assumptions: Aging DNA
Many of the capabilities required by digital media simply
weren't conceived of when today's PC architectures were
created. Place yourself in the role of a systems designer
twenty years ago. Real-time, high-bandwidth media?
Interactive manipulation of megabytes of data? The Internet?
Theories, maybe. Reality, not. The result is a cost and
performance drain created by the need to bolt, shove, and
cram these new pieces of functionality into architectures
that simply can't handle them. Programming models are so
riddled with rules and exceptions that new applications take
years to come to market and consume more and more memory and
processing power. The industry is attempting to deliver the
next decade's solutions using architectures designed to
solve the last decades' problems.
The Compatibility Assumption
Each year, advances in hardware significantly improve the
speed -- and cut the costs -- of computer processors and
peripherals. But the end user sees only a small fraction of
the increased power delivered by new hardware. Software
programmers know what's happening: The power that's
delivered by new, faster hardware is being lost in a morass
of software overhead created by the "need" for backward
binary compatibility.
Backward compatibility isn't a bad thing -- but are we
getting our money's worth striving for binary compatibility
when network and data compatibility are far more important?
The standards that increasingly matter today -- HTML, VRML,
Java, JPEG, MPEG, MIDI -- don't involve binary codes. These
are the standards that determine interoperability in a
net-connected world.
Increasing Demands for Power The expectations
of today's personal computer users are increasing rapidly.
They demand the functionality and performance that they see
on workstations, but their price expectations are driven by
the high-volume PC market. Moving against these expectations
is a rising tide of complexity, decreasing performance
improvements, and increasing product delays.
The experience of the people at the heart of multimedia
activity -- the digital designers who create CD-ROMs, DVDs,
Web sites, and print ads -- is similar. They buy high-end
personal computers, stuff them with expensive
high-performance graphics cards, communications devices, and
high-speed I/O options -- but they still can't get the
performance they need. Digital designers are consuming
processing power faster than it's being delivered to the
market.
Their numbers are growing, increasing at a rate that's
some three to four times the growth in the PC market
overall. Their frustration is growing as current PC
architectures fail to keep up with their needs. These users
represent a shift in the personal computer market -- a set
of consumers who are actively searching for new solutions.
They don't need to be convinced that they need digital media
capabilities; they already know it.
These new multimedia consumers present software
developers with a major opportunity to build new business
franchises and to be in at the ground floor of a
transformation in the industry. But taking advantage of this
shift means delivering products that meet these customers'
needs. And doing so with today's personal computer
architectures is increasingly complex and difficult.
Challenging the Assumptions We're faced with a
set of users who are demanding the interactive design
capabilities and power available in workstations, but at
prices similar to today's PCs. Given the architecture of
today's personal computer, how can we reach this new level
of price-performance quickly? And how can we solve the
problems of increasing software overhead, time-to-market,
and complexity?
Be, Inc. was formed to address these issues head-on -- to
see what could be accomplished if you designed a new
personal computer system using new assumptions based on
cutting-edge software concepts. The result is a new level of
price-performance, and a dramatic reduction in the
complexity of software development. The assumptions on which
Be's products are based include the following:
One Processor per Person is Not
Enough. There are computer systems on the market today
that use more than one microprocessor. But almost all of
them are used as servers, or in expensive, turn-key
installations. Be's focus is to bring the power of multiple
processors to personal computing, and to apply that power so
individuals can do things that are too difficult and
time-consuming today. This certainly describes the demands
of many applications in digital video, digital audio, image
processing, 3-D, and communications. It's our belief that
the multiprocessor approach is the most cost effective way
to deliver this power at a low price point.
Build in the Future. Be's products are designed
with the applications of the next ten years in mind. We
build products that are focused on media and
communications-based capabilities, while providing a fast,
light-weight software foundation.
Learn from the Past, Don't Blindly Copy It. The
industry has learned a great deal about building and
improving software and hardware over the last twenty years
-- experience that Be has taken advantage of. But while
learning from the past, Be's products don't copy it. For
example, data and Internet compatibility is of paramount
importance within Be's products, enabling them to take
advantage of a wealth of existing information. But we've
intentionally avoided older software programming
architectures that are ill-equipped for newer application
areas, or that would interfere with the goal of increasing
performance.
Ride with Industry Cost Curves. Each year personal
computer users can purchase twice the hard drive capacity
for the same dollar. New peripherals come to market; CD-ROM
drives increase in performance and decrease in price. The
personal computer industry is so large that it generates its
own unique dynamic of increased capacity and lower prices.
PC users want to be able to ride these curves -- and that's
exactly what Be delivers. Be's products make use of
industry-standard components that are readily available,
constantly improving, and easily replaceable. This strategy
means that Be's focus is not simply on performance, but on
price-performance.
To achieve these goals, Be has abandoned old
architectures and concepts. We're not backward compatible --
we don't support twenty-year-old ideas. But for users who
are involved in digital design and who need more power than
today's platforms can deliver -- and for developers who are
building the tools these types of people use -- Be
represents a new field in which to lay down fresh tracks.
Breaking Barriers: The Be Operating System The
heart of the Be product line is the Be Operating System
(BeOS(tm)), a new software system designed for the media and
communications-based applications of the next decade. While
retaining compatibility with data and network standards in
use today, the BeOS jettisons many of the assumptions
inherent in older OS architectures to achieve a new level of
performance, and a significantly simplified programming
model. The BeOS features:
A Fully Threaded System. The BeOS is a
heavily threaded system. The application model is designed
to divide an application into multiple threads even if the
programmer doesn't explicitly do so. For example, every
window in the OS is controlled by its own thread, which is
initiated automatically simply by creating a window object.
Furthermore, the OS is reentrant: Any object can be used by
any thread. Threading increases the efficiency and
performance of applications. Reentrancy allows developers to
structure their applications for simplicity and performance
without worrying about architectural limits.
Symmetric Multiprocessing. Even a single-processor
machine can take advantage of a threaded operating system.
But the primary reason for designing software this way is to
take advantage of multiple processors in a single personal
computer. The most intelligent way to do this is to allow
threads to move from one processor to another depending on
system load -- a process called symmetric multiprocessing.
This is exactly what the BeOS accomplishes, supporting one,
two, four, or more processors. The result is significantly
greater parallelism on multiprocessor systems, and
significantly higher overall performance throughout the
system.
Object-Oriented Design. The application
programming interface (API) of the BeOS is object-oriented
(written in C++). Creating a window within the BeOS, for
example, involves simply creating a BWindow object rather
than having to procedurally construct the data structures
and call a myriad of other routines. Furthermore, the Be API
is a full application framework. When new features are added
to the BeOS, they're added to the framework, enabling them
to be used immediately by programmers to enhance their
applications. There is no delay waiting for a separate
framework to "catch-up" to the new features of the OS. The
result is faster time-to-market for new applications, and
faster revisions to existing applications.
Designed for Real-Time Media and Communications.
The structure of the BeOS is optimized for dealing with
real-time, high-bandwidth data signals, such as audio and
video, and for handling a wide array of communications
capabilities. These capabilities can be found within the
BeOS Media Kit, and within several of the built-in servers,
such as the Audio Server.
Simplicity. Throughout the BeOS, there has been a
heavy emphasis on delivering simple, elegant solutions to
programming problems. The API is simple because we started
from scratch. We designed a new OS using everything learned
over the past twenty years of software design, incorporating
the good, ignoring the bad, and streamlining the result. For
example, a single object, BMessage, is used for
inter-application communication, cut-and-paste,
drag-and-drop, client-server communication within the BeOS,
and for distributed communication over networks. In current
software architectures, you need a separate interface for
each of these tasks. The attention to simplicity within the
BeOS stems from an underlying belief that software
programmers are most effective and efficient when the entire
OS model can be understood by each programmer.
Considerably more can be said about the features of the
BeOS, and the benefits obtained through its architecture.
But overall, the end result of the structure -- the goal of
the OS design -- is superior performance and reduced
time-to-market.
Superior Performance. From
uniprocessor systems up through four processor systems (and
more), the BeOS makes optimal use of the underlying
hardware, significantly reduces OS overhead, and increases
parallelism compared with other mainstream OS architectures.
Reduced Time-to-Market. The Be API is extremely
simple and compact. Developers working with the BeOS have
already proven that they can be more efficient writing for
the BeOS than for current mainstream architectures --
reducing development costs and speeding time-to-market.
Superior performance and reduced time-to-market go
hand-in-hand -- in order to be fast, an OS must be compact;
a compact OS is easier to learn and faster to program. These
two goals will remain central to the design of the BeOS.
BeOS Structure The BeOS can be divided into
three layers. At the bottom, right above the hardware, is
the microkernel. Above the microkernel is a wide array of
servers, providing higher level services to application
processes and to the OS itself. Finally, the object-oriented
set of software kits is the programmer's interface to the
operating system. In addition, the kits combine the
functions of various servers into more complex capabilities.
Microkernel
The BeOS employs a microkernel to abstract the hardware
and to provide basic OS services. As you might expect, the
Be kernel is optimized to take advantage of multiple
processors, and for handling large numbers of simultaneously
executing threads. Programmers can access the kernel
directly by making system calls (global C functions), or
they can use the object "covers" (such as BLooper and
BLocker) that encapsulate kernel functionality.
Kernel capabilities can be extended through software
drivers, which are dynamically loaded and unloaded as needed
by the system.
Servers
A wide array of software servers encapsulate key areas of
functionality used by applications and by the OS itself.
Examples of these servers are the Storage Server, which
provides file system and database functionality, the Network
Server, which provides TCP/IP capabilities, and the Audio
Server, which handles real-time audio streams from a variety
of sources. These servers are automatically started at
system start-up, are designed around a client-server model,
and are heavily threaded themselves.
Software Kits
The capabilities of the servers are accessed through the
various software kits available in the BeOS. Each kit is
made up of a set of C++ objects, which can be used and
subclassed. (Exceptions to the C++ rule are the Network and
Kernel Kits, which are C-based for simplicity and
ease-of-use.) These objects in turn call the servers -- and
each other -- to accomplish more complex tasks. Examples of
the software kits are the Interface Kit, handling most
window, view, and drawing functions, the Application Kit,
handling application-level capabilities and communications,
and the Media Kit, handling audio and video capabilities.
The array of BeOS software kits provide a wide range of
classes and functions that applications use to build complex
capabilities. These kits are constantly being extended and
improved by Be through each release of the BeOS. A sampling
of the core software kits includes:
Application Kit
Contains core application objects, such as BApplication,
BMessage (for communications), and BLooper (for creating new
threads).
Storage Kit
One of the key advantages of the BeOS is that is provides
both file system capabilities and integrated database
capabilities. The Storage Kit works with the Storage Server
to provide objects such as BFile, BDirectory, and BDatabase.
Interface Kit
The largest of the kits, the Interface Kit works with the
Application Server to provide objects such as BWindow and
BView, which provide the basis for other interface objects
such as BListView, BCheckBox, BTextView, and many others.
The Interface Kit (through BView) also encapsulates all
drawing capabilities.
Media Kit
The Media Kit handles real-time streams of data through the
system - which means it's the kit that deals with
audio and video streams. The kit employs a "subscriber"
model, through objects such as BAudioSubscriber, which
allows multiple processes to access and manipulate a single
stream of data.
Midi Kit
This kit provides a set of classes that know how to decipher
and construct MIDI messages and that can listen to and
broadcast to the built-in MIDI ports.
Kernel Kit
This is a C-based kit, allowing application threads
low-level access to kernel services.
Device Kit
This kit provides a generalized interface for building
drivers that extend the capabilities of the kernel - such
as hardware drivers, graphics drivers and
others. It also includes such objects as BSerialPort.
Network Kit
The Network Kit provides TCP/IP services based on the
Berkeley Sockets (BSD) model. It also provides a class and
functions that know how to send and receive e-mail.
3D Kit
The 3D Kit offers a 3-D rendering engine and classes with
which a developer can easily construct and manipulate
interactive 3-D graphics. This kit will be exapanded in the
future to incorporate the OpenGL standard.
Software Development
Software designed for the BeOS is highly modular, and in
most cases allows for the dynamic loading and unloading of
modules as needed. Software designed for the BeOS generally
falls into one of four categories:
Application Software. Application
software can be graphically based or command-line based (as
described below). All applications are multithreaded, a
capability inherent through the use of the Be software kits.
Most applications will also create threads of their own.
Shared Libraries. Executable code can be placed in
shared libraries, allowing multiple applications and
processes to share common code, and reducing overall memory
footprint. The BeOS itself makes use of shared libraries,
resulting in significantly smaller application sizes than in
traditional OS architectures.
Add-On Components. Also known as "plug-ins," the
BeOS provides a standard architecture for software add-ons
that extend the functionality of an application or driver.
Add-ons can be dynamically loaded and unloaded as needed.
Drivers. Usually associated with hardware, drivers
extend the BeOS kernel and OS servers to enable access to
new hardware, network, and graphics capabilities. Drivers
are also dynamically loaded and unloaded as needed.
Development Environment
A fast, object-oriented operating system provides the
foundation for building high-performance, highly interactive
applications. But that foundation is wasted without the
right software development tools to take advantage of the
capabilities.
That's why Be partnered with Metrowerks early in the BeOS
development process to deliver the CodeWarrior integrated
development environment native for Be systems. The
award-winning CodeWarrior environment complements the tools
already built-in to Be systems, allowing programmers to
build GUI and command-line applications, shared libraries,
and add-on components of any size. The familiar CodeWarrior
features are there -- and more. CodeWarrior for the BeOS
includes a multithreaded IDE that supports concurrent
compilation -- taking advantage of multiple processors to
speed application building.
- Other features of the CodeWarrior environment
include;
- Support for C++ templates and zero-overhead exception
handling
- Multiple inheritance and RTTI support
- Global optimization for PowerPC C/C++ compilers
- Instruction scheduling for PowerPC 601, 603, and 604
processors
- Metrowerks Standard Library (MSL) for C, includes
source code
- Sample code
- Command-line tools for generating resources
Command-Line Environment and Posix
Designed in from the start, the BeOS provides a
command-line shell environment based on the UNIX
Bourne-Again Shell (bash) -- in addition to the native
graphical environment. Many programmers find that they can
be more productive during the development process using a
command-oriented environment -- and a wide variety of
programming tasks can only be accomplished from a text-based
shell. The command-line shell can be accessed at any time by
launching the Terminal application, and multiple shells can
be invoked simultaneously.
In addition, the BeOS goes a step further by providing a
Posix-compliant layer within the operating system. This
library allows a wide array of UNIX shell tools to be
compiled and run on the BeOS without change. The BeOS comes
with over one hundred of these tools already installed, and
more are being ported by Be and by third parties every day.
Leveraging Standards
Although the BeOS represents a fresh start in OS design,
we'd be foolish not to leverage many of the key standards
the software industry has adopted for functionality, from
typeface design, to networking software, to the latest in
multimedia formats.
The BeOS incorporates standards such as TCP/IP networking
and Internet protocols for a wide variety of network-based
services, TrueType and PostScript font technology, Posix and
standard UNIX tools, MIDI musical data formats, MPEG and
QuickTime video format support, and many other standards
from across the industry. In each of these examples, we've
taken the best the industry has to offer and incorporated it
cleanly and effectively into the BeOS environment.
Support for standards within the BeOS is being extended
even further. We're working in partnership with Metrowerks
to bring the Java language and run-time environment to the
BeOS. And we're incorporating one of the key standards for
3-D graphics, OpenGL(r), into the BeOS as well.
Demand and Distribution In delivering a product
to market, software developers have to face the three "Ds"
-- development, demand creation, and distribution. They must
address all three for their products to succeed. Our goal at
Be is to aid developers in maximizing the opportunity for
software that uses the BeOS as a platform, while minimizing
costs and speeding time-to-market. To that end, Be is
putting into place a range of programs that will aid
developers in each stage of bringing a product to market.
Be Developer Programs
Immediately after the original BeBox was announced, the
Be Developer Program was established. The Developer Program
is designed to give programmers access to the tools and
information they need to get new software up and running.
Benefits of the program include:
- Immediate notice of the latest Be product and
technology announcements through electronic mail and
through the Be Internet site.
- Fast delivery of new versions of the Be Operating
System for development purposes, and early notice of the
features planned for future releases.
- Access to Be developer support resources to answer
technical questions and connections to others in the Be
development community. Through developer support,
developers have access to the Be engineering team to
solve OS problems and suggest changes for future versions
of Be products.
- Access to Be developer purchase programs -- allowing
participants to get access to the latest in Be hardware
for development purposes, at discount prices.
The Be Developer Program has no complex qualification
process. The Be developer profile is simple; members must be
experienced programmers who have shipped products (shareware
or commercial), have experience in C and C++, and have a
good idea that they want to bring to the BeOS and
Be-compatible hardware. (If you match this profile and want
to develop BeOS-compatible hardware and/or software, a visit
to the Be Web site is all you need to submit an application
for the Developer Program.)
Distribution
Traditional distribution models, which carry significant
risk and require considerable up-front capital for catalog
advertising and for building retail infrastructure, have
long been recognized as a factor in limiting the
introduction of new technologies and ideas.
But the world of software distribution is changing, and,
in the process, is opening horizons of opportunity for
developers. How? The Internet enables delivery of detailed
information about products, downloading of demo versions of
software, and can provide extensive support for customers.
It can even deliver products directly to the customer's
personal computer. And the Internet can provide support for
hybrid distribution programs that include traditional
distribution channels.
From its inception, Be has leveraged the Internet for
communication with developers and customers, for developer
support, and for developer and customer sales and
distribution. Be is building on this initial Web site
foundation with the goal of providing a single location
where all Be customers can turn for support, for information
about the latest from Be, and for the latest information
about third-party products. We'll be providing a range of
options developers can choose from -- from simple hyperlink
connections to Web-site hosting and purchase transaction
completion. Through the Be site, developers will have
regular access to Be customers, and customers will have a
central place to turn for information and support for total
solutions -- a win-win situation overall.
Be will also provide developers with access to Be
value-added resellers and dealers. This aids not only the
developer, who gets access to potential physical
distribution, but also the reseller, who gets access to the
latest product information and new solutions.
Comarketing
In addition to the programs described above, Be will be
presenting a range of comarketing opportunities to
developers -- from access to the Be Internet site, to demo
placement on software CDs, to joint efforts targeting
vertical markets. The core of the identity campaign for
Be-compatible software will revolve around the Be Internet
site, and the BeWare software mark, which any developer who
produces Be-compatible software can use.
Why Develop for Be?
The decision to develop software or hardware for any
platform involves evaluating a wide range of factors,
including the ability to reach potential customers, the
complexity of development, the cost of distribution, and
possibly the most important factor: The ability to bring to
market new, innovative ideas that would not otherwise be
possible. As developers make plans for their next
cutting-edge applications, Be offers a number of things to
consider:
A New Technology Base. The BeOS
provides a cutting-edge foundation for designing software
that will fulfill the needs of the next decade's
applications -- applications that involve extensive
real-time media, complex graphics, and intensive
communication capabilities. It jettisons much of the baggage
associated with other mainstream operating systems, while
retaining compatibility with key data and networking
standards such as MPEG, TCP/IP, and MIDI. The BeOS delivers
workstation-level performance at mainstream PC price points
and provides an object-oriented environment compact enough
for developers to be highly efficient, reducing
time-to-market.
A New Business Model. The Be system presents a new
business model for developers -- a model that delivers wider
and more direct exposure to customers than traditional
models. A model that eliminates distribution overhead and
focuses on electronic delivery for wide reach, aided by
informed, knowledgeable resellers focused on vertical
markets. A model that delivers wide customer reach while
reducing overall costs of distribution.
A Dedicated Partner. Since day one, Be has
recognized that our success depends upon the success of our
developers. It's the development community that will
translate the power inherent in the BeOS into power usable
by individual customers. For this reason, we have focused on
making the BeOS environment as productive as possible for
developers, and we're working to provide a complete,
cost-effective business model for Be-compatible products.
We're committed to continuing this dedication -- and
partnership -- in the future
We're confident that the Be architecture delivers a fresh
and exciting alternative for developers who are frustrated
by the limitations of today's computing architectures. We
invite developers to take the next step by contacting us to
find out more about Be products, and about becoming an
official Be developer. We can be reached directly through
the Internet at our World-Wide Web site at
http://www.be.com or via any
of the avenues listed on the
back cover of this
document.
|