SGI
Open Source
OpenGL® Sample Implementation FAQ

The OpenGL Specification is defined and evolved by its governing body, the OpenGL Architecture Review Board (ARB). SGI has provided a software reference implementation of the OpenGL 1.2 API as defined by the Specification. This reference implementation is called the OpenGL Sample Implementation (SI).

The Sample Implementation tracks the OpenGL Specification as it evolves, and software drivers built from the SI should be fully conformant to the Specification. SGI makes the SI available to OpenGL licensees so that they can verify that their drivers also behave correctly. In addition, the SI is designed to be used as the starting point for writing hardware drivers, and is in fact used by almost every major manufacturer of graphics hardware as the basis for their own drivers.

By open-sourcing the OpenGL Sample Implementation, SGI intends to make it considerably easier for developers in the open source community to ensure that there are high-quality, high-performance OpenGL drivers available for Linux, starting from the same code base as commercial drivers. Our commercial licensees may also take advantage of this opportunity to open source their own SI-based drivers, if they so choose.

Now that SGI has open sourced the Sample Implementation, we are looking forward to working together with the tremendous expertise available in the open source community. Some ways we can work together might include implementations of new ARB-specified OpenGL extensions; performance optimizations for existing elements of the SI; bug reporting and bug fixes; constructing reference hardware drivers for different platforms; and several infrastructure tasks described below.

Because the OpenGL Sample Implementation plays such an important role in the OpenGL world, there are some specific licensing issues that we will try to make clear in the following FAQ. However, the ultimate authority is the license text itself. This FAQ also addresses some more general questions.


General Questions

What is the Sample Implementation good for?
What platforms are supported?
Why is SGI open sourcing its Sample Implementation of the OpenGL API?
What are the benefits of this move for end users, ISVs, IHVs, and SGI?
What does this mean for the future of OpenGL?
What part does the OpenGL ARB play?
What does this mean for existing OpenGL licensees?
How does the Sample Implementation compare to Mesa?
What does this mean for Mesa-based drivers?
What's missing from the current Sample Implementation?
How can I contribute to the Sample Implementation?
What are some Sample Implementation tasks I could contribute to?

Licensing/Legal Questions

Do I still need a license for OpenGL?
How do I get a license to use the OpenGL trademark?
Without a license to the OpenGL trademark, how can I refer to SGI's OpenGL Sample Implementation as the source of any derivative software I may write?
Is SGI implicitly licensing any intellectual property by doing this?
What exactly am I (and am I *not*) licensed?
Who will own the code in the Sample Implementation, and modifications to it?
Why did you choose an X-style license?
Why the "B" designation?
Why didn't SGI simply apply a license such as BSD, X, or Mozilla, with which the open source community is already familiar?
Why didn't SGI simply apply the GLX license it already uses?



General Questions

What is the Sample Implementation good for?

The Sample Implementation is a reference implementation of the OpenGL, GLU, and GLX APIs, and also serves as the basis for almost all vendor-supported OpenGL hardware drivers in existence today. The internal structure of the SI is designed to hook out hardware acceleration at whatever level a graphics accelerator may be capable of, while gracefully falling back to software in other cases. Releasing the SI will also allow 3D hardware vendors to share common driver code and to maintain a single driver codebase for multiple OS platforms.

The Sample Implementation does not include any hardware drivers at this time, so it will not immediately benefit most end users running applications using the OpenGL API . As with our 1999 GLX source code release, the SI is not an end in itself; it is part of the software infrastructure on which drivers are built. The release is targeted at the developer community.

What platforms are supported?

As currently distributed, the Sample Implementation builds against the X Window System (X11R6) source tree and should run on any platform on which X runs. Practically speaking, we build and test routinely on Linux and XFree86 3.3.5, and will migrate to XFree86 4.0 once it's publically released in the near future.

Why is SGI open sourcing its Sample Implementation of the OpenGL API?

SGI has chosen Linux as a strategic direction for the company, and OpenGL is a critical component for success of Linux on the desktop. We have been involved in this area for some time, starting with the February 1999 GLX source code release, just as we have been helping enable Linux on high-end servers with our Linux kernel and XFS work.

What are the benefits of this move for end users, ISVs, IHVs, and SGI?

The availability of high performance, quality OpenGL implementations is an important enabler for the success of Linux as a desktop/workstation-class environment. This benefits end users, IHVs, ISVs, and SGI equally.

What does this mean for the future of OpenGL?

OpenGL is extremely successful as the standard, cross-platform 3D graphics API today. Releasing the Sample Implementation is part of SGI's commitment to and support for OpenGL, and will help it move to new platforms as the computing industry and 3D graphics hardware evolve. This move strengthens OpenGL's future.

What part does the OpenGL ARB play?

The OpenGL Architecture Review Board will continue to play the crucial role of defining the OpenGL Specification and controlling the evolution of the standard. The ARB's role is not changed by this announcement.

What does this mean for existing OpenGL licensees?

Existing licensees are unaffected. SGI's open sourcing of the Sample Implementation (SI) will make it possible for our current commercial licensees to open source their own hardware drivers that are based on the SI. We hope that many of our licensees will choose to do so, but that decision is not ours to make.

How does the Sample Implementation compare to Mesa?

We believe the Sample Implementation is strong in areas such as internal state management as well as complete feature coverage (such as the optional imaging features of the OpenGL 1.2 Specification, which Mesa does not provide). By comparision to the currently distributed SI, Mesa will probably provide better software rendering performance, and there are existing open-source hardware drivers projects based on Mesa. We think the two codebases can be complementary. Based on discussions with some of the active Mesa developers, there's a reasonable chance of merging the two together into a single reference implementation and driver kit over time.

What does this mean for Mesa-based drivers?

In the long term, it may be possible for the Sample Implementation and Mesa codebases to merge together, drawing on the different strengths of both. Whether or not this happens, elements of the Sample Implementation such as the previously released GLX will continue to be used to support drivers based on either Mesa or the Sample Implementation. We expect both Mesa-based and SI-based drivers will be widespread for some time to come.

What's missing from the current Sample Implementation?

Dynamic assembly code generation for rasterization is not yet included, making software rendering performance slow. The geometry path assembly code optimizations which we ship to our commercial licensees are actually owned by other companies, so we don't have the rights to place them under an open source license. We will work with the companies involved to try and free up these components.

There are also a number of companion libraries, such as the GLS stream codec and the GLC character renderer, which are not being open sourced now because we are uncertain of their value to the community relative to the significant resources we'd have to expend on releasing them. We continue to evaluate what OpenGL-based SGI software technologies would be suitable for open sourcing.

How can I contribute to the Sample Implementation?

We encourage interested developers to contribute to the Sample Implementation. Follow the How To Contribute link on this page to gain access to the CVS repository and mailing lists.

What are some Sample Implementation tasks I could contribute to?

The Sample Implementation is a large and complicated body of code, and it will probably take some time for open source developers to come up to speed on it and begin developing hardware drivers - though we hope this happens as soon as possible. There are also a variety of infrastructure tasks which will benefit everyone, such as:

  • Port the SI to non-X and/or non-Linux/Unix environments.
  • Extend xmon (the X protocol stream analyzer) to understand GLX protocol.
  • Move the documentation to a more modern format such as SGML.
  • The .spec files provide a very detailed machine-readable description of the functions and enumerants defined by the OpenGL 1.2.1 API and its numerous extensions. These files are already used in many ways, but there are likely to be many other interesting uses - surprise us!

These ideas (and they are just a few ideas - there are many other possibilities) are described in more detail on the contributions page.


Licensing/Legal Questions

Do I still need a license for OpenGL?

Yes. The source code for the sample implementation of the OpenGL API is being released under this license. In addition, use of the OpenGL trademark requires a separate license from SGI. The license that applies to the source code release does not cover the use of the trademark, in other words, we are not releasing "OpenGL®".

How do I get a license to use the OpenGL trademark?

Currently, only commercial licensees of OpenGL may use the trademark. We are working on a new license that applies specifically to open source implementations. We are expecting to announce this license in a few weeks time. We can't answer any questions about this until we're finished with the license, so please hold onto those questions until later.

Once you have a license, your software needs to pass the OpenGL conformance tests before you are allowed to use the trademark. The conformance tests are included with the license.

Without a license to the OpenGL trademark, how can I refer to SGI's OpenGL Sample Implementation as the source of any derivative software I may write?

We understand that you may want to attribute the source of software you have written that is based on this Sample Implementation. However, as outlined in other FAQs herein, SGI must carefully control the use of the OpenGL trademark in order to maintain that mark as the symbol of assured quality in 3D graphics. To accommodate these conflicting interests, we allow you to use the following exact attribution (no more, no less) in your software products that are based on this Sample Implementation:

This software was created using the published OpenGL® version 1.2.1 Sample Implementation, but has not been independently verified as being compliant with the OpenGL®1 version 1.2.1, GLU version 1.3, or GLX version 1.3 Specifications.

This is the only way in which you can refer to OpenGL® in conjunction with any derivatives, copies, modifications or any other use you make of this Sample Implementation.

Is SGI implicitly licensing any intellectual property by doing this?

We are granting rights to claims in SGI patents embodied in the Sample Implementation, but only for software drivers. We are not granting rights to those patents for use in hardware, and SGI will vigorously defend our IP against any IHVs who make use of these patents in their hardware without executing a patent license with SGI.

What exactly am I (and am I *not*) licensed?

The SGI Free Software License B, as applied to the OpenGL Sample Implementation, is a license to the sample implementation, a reference implementation of the OpenGL, GLU, and GLX APIs, as well as the basis for almost all vendor-supported OpenGL hardware drivers. What is not licensed, under this specific open-sourcing of the SI is use of the OpenGL trademark. An entirely separate license applies to the OpenGL trademark, which relates to (and relies upon) the licensee's having secured SGI's certification of the licensee's drivers as having passed the OpenGL conformance tests.

Who will own the code in the Sample Implementation, and modifications to it?

Ownership of the original code will remain in SGI. Contributors of modifications to the original code will own their own modifications (independent of the original code); however, SGI will ask for assignment back to SGI of any contributors' modifications offered to SGI as gatekeeper of the "official" Original Code of the SI. This is to ensure that the OpenGL SI can continue to play the role of "the gold standard", freely shared with the development community.

As with every other sort of open-source license, the "B" license includes certain requirements ("action items," if you will) regarding language to be placed in comments fields and the like, which, among other things, keep SGI from being responsible for the worthiness, legitimacy, originality, etc., of modifications over which SGI has no control. Modifications which are taken back into the SGI code base for the open-source version of the SI will be released under the SGI Free Software License B.

Why did you choose an X-style license?

For the same reasons we developed the similar GLX Public License last year, when the GLX source code was released: this enables code derived from the Sample Implementation to be distributed as part of the reference implementation of X or as part of XFree86.

Why the "B" designation?

The first "leaner cleaner" SGI open-source license was designated as "SGI Free Software License A." It was first applied to SGI's open-sourcing of its newest revision of the OpenVault product (and, in the process, made several improvements warranting greater acceptance of both the OpenVault product and the license applied to it); and, the "A" license will apply to any other software SGI open-sources with the same sort of aims it had for OpenVault. The "B" license is very similar to the "A" license, but had to differ to to meet SGI's aims relating to the OpenGL Sample Implementation, as well as other products and code for which SGI will have similar aims.

It's possible that SGI may open-source other software products or code with a different set of aims, in which case there would be an SGI Free Software License C. However, SGI is highly motivated (frankly, for selfish as well as egalitarian reasons) to minimize the number of licenses it has to create, maintain, and justify. We are keenly aware of the sentiments of the open source community, and share the opinion that it's better to have a few well conceived licenses than a glut of ugly ones.

Why didn't SGI simply apply a license such as BSD, X, or Mozilla, with which the open source community is already familiar?

Actually, the SGI Free Software License B is closely modeled after the BSD, X, and Mozilla licenses. Among other effects, the "B" license enables code derived from the Sample Implementation to be distributed as part of the reference implementation of X or as part of Xfree86. SGI is, of course, a publicly held corporation, with certain minimum responsibilities to its shareholders, to protect its own software and the corporation. SGI used the minimum "legalese" to accomplish this in the license, and did its best to make the license as clear and concise as possible. This accounts for the greatest amount of difference between the SGI Free Software License B and Mozilla. One way in which the SGI Free Software License B is like BSD (and other similar licenses) is that it allows the user to use and modify the software in practically any way it likes - including even making commercial products from it.

Why didn't SGI simply apply the GLX license it already uses?

SGI is on a mission to keep its open-source licenses to a minimum (as well as to make them leaner and cleaner). The very name of the GLX license ties it to the GLX source code. If SGI continued in that fashion, there'd be a separate open source license for each and every product or collection of code SGI open-sourced. SGI's plan moving forward is to establish better and more sensible ways in which to deliver and apply our software licenses - all of our software licenses, whether for regular SGI software or open-sourced software. So, while the text of a given license may remain the same, the format for delivery and application may change - but only for the better, for everyone.