SUN INDUSTRY STANDARDS SOURCE LICENSE
Version 1.2

1.0 DEFINITIONS
1.1 Commercial Use means distribution or otherwise making the Original Code
available to a third party.
1.2 Contributor Version means the combination of the Original Code, and the
Modifications made by that particular Contributor.
1.3 Electronic Distribution Mechanism means a mechanism generally accepted in
the software development community for the electronic transfer of data.
1.4 Executable means Original Code in any form other than Source Code.
1.5 Initial Developer means the individual or entity identified as the Initial
Developer in the Source Code notice required by Exhibit A.
1.6 Larger Work means a work which combines Original Code or portions thereof
with code not governed by the terms of this License.
1.7 License means this document.
1.8 Licensable means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently acquired, any and all
of the rights conveyed herein.
1.9 Modifications means any addition to or deletion from the substance or
structure of either the Original Code or any previous Modifications. A
Modification is:
A. Any addition to or deletion from the contents of a file containing Original
Code or previous Modifications.
B. Any new file that contains any part of the Original Code or previous
Modifications.
1.10 Original Code means Source Code of computer software code which is
described in the Source Code notice required by Exhibit A as Original Code.
1.11 Patent Claims means any patent claim(s), now owned or hereafter acquired,
including without limitation, method, process, and apparatus claims, in any
patent Licensable by grantor.
1.12 Source Code means the preferred form of the Original Code for making
modifications to it, including all modules it contains, plus any associated
interface definition files, or scripts used to control compilation and
installation of an Executable.
1.13 Standards means the standards identified in Exhibit B.
1.14 You (or Your) means an individual or a legal entity exercising rights
under, and complying with all of the terms of, this License or a future version
of this License issued under Section 6.1. For legal entities, You includes any
entity which controls, is controlled by, or is under common control with You.
For purposes of this definition, control means (a) the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (b) ownership of more than fifty percent (50%) of the
outstanding shares or beneficial ownership of such entity.
2.0 SOURCE CODE LICENSE
2.1 The Initial Developer Grant The Initial Developer hereby grants You a
world-wide, royalty-free, non-exclusive license, subject to third party
intellectual property claims:
(a)under intellectual property rights (other than patent or trademark)
Licensable by Initial Developer to use, reproduce, modify, display, perform,
sublicense and distribute the Original Code (or portions thereof) with or
without Modifications, and/or as part of a Larger Work; and

(b) under Patents Claims infringed by the making, using or selling of Original
Code, to make, have made, use, practice, sell, and offer for sale, and/or
otherwise dispose of the Original Code (or portions thereof).
(c) the licenses granted in this Section 2.1(a) and (b) are effective on the
date Initial Developer first distributes Original Code under the terms of this
License.
(d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for
code that You delete from the Original Code; 2) separate from the Original
Code; or 3) for infringements caused by: i) the modification of the Original
Code or ii) the combination of the Original Code with other software or
devices, including but not limited to Modifications.
3.0 DISTRIBUTION OBLIGATIONS
3.1 Application of License. The Source Code version of Original Code may be
distributed only under the terms of this License or a future version of this
License released under Section 6.1, and You must include a copy of this License
with every copy of the Source Code You distribute. You may not offer or impose
any terms on any Source Code version that alters or restricts the applicable
version of this License or the recipients rights hereunder. Your license for
shipment of the Contributor Version is conditioned upon Your full compliance
with this Section. The Modifications which You create must comply with all
requirements set out by the Standards body in effect one hundred twenty (120)
days before You ship the Contributor Version. In the event that the
Modifications do not meet such requirements, You agree to publish either (i)
any deviation from the Standards protocol resulting from implementation of Your
Modifications and a reference implementation of Your Modifications or (ii) Your
Modifications in Source Code form, and to make any such deviation and reference
implementation or Modifications available to all third parties under the same
terms a this license on a royalty free basis within thirty (30) days of Your
first customer shipment of Your Modifications. Additionally, in the event that
the Modifications you create do not meet the requirements set out in this
Section, You agree to comply with the Standards requirements set out in Exhibit
B.
3.2 Required Notices. You must duplicate the notice in Exhibit A in each file
of the Source Code. If it is not possible to put such notice in a particular
Source Code file due to its structure, then You must include such notice in a
location (such as a relevant directory) where a user would be likely to look
for such a notice. If You created one or more Modification(s) You may add Your
name as a Contributor to the notice described in Exhibit A. You must also
duplicate this License in any documentation for the Source Code where You
describe recipients rights or ownership rights relating to Initial Code.
You may choose to offer, and to charge a fee for, warranty, support, indemnity
or liability obligations to one or more recipients of Your version of the Code.
However, You may do so only on Your own behalf, and not on behalf of the
Initial Developer. You must make it absolutely clear than any such warranty,
support, indemnity or liability obligation is offered by You alone, and You
hereby agree to indemnify the Initial Developer for any liability incurred by
the Initial Developer as a result of warranty, support, indemnity or liability
terms You offer.

3.3 Distribution of Executable Versions. You may distribute Original Code in
Executable and Source form only if the requirements of Sections 3.1 and 3.2
have been met for that Original Code, and if You include a notice stating that
the Source Code version of the Original Code is available under the terms of
this License. The notice must be conspicuously included in any notice in an
Executable or Source versions, related documentation or collateral in which You
describe recipients rights relating to the Original Code. You may distribute
the Executable and Source versions of Your version of the Code or ownership
rights under a license of Your choice, which may contain terms different from
this License, provided that You are in compliance with the terms of this
License. If You distribute the Executable and Source versions under a different
license You must make it absolutely clear that any terms which differ from this
License are offered by You alone, not by the Initial Developer. You hereby
agree to indemnify the Initial Developer for any liability incurred by the
Initial Developer as a result of any such terms You offer.
3.4 Larger Works. You may create a Larger Work by combining Original Code with
other code not governed by the terms of this License and distribute the Larger
Work as a single product. In such a case, You must make sure the requirements
of this License are fulfilled for the Original Code.
4.0 INABILITY TO COMPLY DUE TO STATUTE OR REGULATION
If it is impossible for You to comply with any of the terms of this License
with respect to some or all of the Original Code due to statute, judicial
order, or regulation then You must: (a) comply with the terms of this License
to the maximum extent possible; and (b) describe the limitations and the code
they affect. Such description must be included in the LEGAL file described in
Section 3.2 and must be included with all distributions of the Source Code.
Except to the extent prohibited by statute or regulation, such description must
be sufficiently detailed for a recipient of ordinary skill to be able to
understand it.

5.0 APPLICATION OF THIS LICENSE
This License applies to code to which the Initial Developer has attached the
notice in Exhibit A and to related Modifications as set out in Section 3.1.

6.0 VERSIONS OF THE LICENSE
6.1 New Versions. Sun may publish revised and/or new versions of the License
from time to time. Each version will be given a distinguishing version number.
6.2 Effect of New Versions. Once Original Code has been published under a
particular version of the License, You may always continue to use it under the
terms of that version. You may also choose to use such Original Code under the
terms of any subsequent version of the License published by Sun. No one other
than Sun has the right to modify the terms applicable to Original Code.
7.0 DISCLAIMER OF WARRANTY
ORIGINAL CODE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS, WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
LIMITATION, WARRANTIES THAT THE ORIGINAL CODE IS FREE OF DEFECTS, MERCHANTABLE,
FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE ORIGINAL CODE IS WITH YOU. SHOULD ANY ORIGINAL
CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER) ASSUME THE
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY ORIGINAL
CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

8.0 TERMINATION
8.1 This License and the rights granted hereunder will terminate automatically
if You fail to comply with terms herein and fail to cure such breach within 30
days of becoming aware of the breach. All sublicenses to the Original Code
which are properly granted shall survive any termination of this License.
Provisions which, by their nature, must remain in effect beyond the termination
of this License shall survive. 8.2 In the event of termination under Section
8.1 above, all end user license agreements (excluding distributors and
resellers) which have been validly granted by You or any distributor hereunder
prior to termination shall survive termination.
EXHIBIT A - Sun Industry Standards Source License

"The contents of this file are subject to the Sun Industry Standards Source
License Version 1.2 (the License); You
may not use this file except in compliance with the License."

"You may obtain a copy of the License at
gridengine.sunsource.net/license.html"

"Software distributed under the License is distributed on an AS IS basis,
WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing rights and
limitations under the License."

"The Original Code is Grid Engine."

"The Initial Developer of the Original Code is:
Sun Microsystems, Inc."

"Portions created by: Sun Microsystems, Inc. are Copyright (C) 2001 Sun
Microsystems, Inc."

"All Rights Reserved."

"Contributor(s): __________________________________"

EXHIBIT B - Standards

1.0 Requirements for project Standards. The requirements for project Standards
are version-dependent and are defined at: Grid Engine standards.
2.0 Additional requirements. The additional requirements pursuant to Section
3.1 are defined as:
2.1 Naming Conventions. If any of your Modifications do not meet the
requirements of the Standard, then you must change the product name so that
Grid Engine, gridengine, gridengine.sunsource, and similar naming conventions
are not used.
2.2 Compliance Claims. If any of your Modifications do not meet the
requirements of the Standards you may not claim, directly or indirectly, that
your implementation of the Standards is compliant.