Jogamp Versioning and Releases

Semantic Version Numbers
Given a version number MAJOR.MINOR.PATCH, increment the:


 * MAJOR version indicates major incompatible API changes,
 * MINOR version indicates minor incompatible API changes, and
 * PATCH version indicates backwards-compatible bug fixes or added backwards-compatible functionality, i.e. these versions are binary compatible and a drop-in replacement.

Above semantics describe binary compatibility, i.e. whether a new version can be used without recompilation (PATCH increment only).

Above semantics differ from Semantic Versioning since our MINOR change allows minor incompatible API changes.

An example of a MAJOR incompatible API increment is JOGL 1.y.z -> 2.y.z, where we thoroughly change the OO model, packaging, implementation or overall semantics.

Upgrading to a MINOR incompatible API increment of JogAmp shall assure users that the model has not changed and the differences are indeed minor.

Hence a PATCH increment not only allows bugfixes but also additional functionality, both backwards-compatible.

Note that manual test results showed that none of our 2.1 PATCH incrementing releases were satisfying above semantics and hence incompatibilities could appear. While this might be unlikely, the tests exposed at least removed protected fields or methods at some uncommon places and hence compatibility was broken.

From version 2.2.0 on, we incorporate semver in our JogAmp junit tests to guarantee automated validation and proper version increments.

See [/bugzilla/show_bug.cgi?id=1008 Bug 1008].

Releases

 * 2.2.1, 2.2.0
 * 2.1.5, 2.1.4, 2.1.3, 2.1.2, 2.1.1, 2.1.0
 * 2.0.2
 * 2.0.2-rc12,2.0-rc11,2.0-rc10, 2.0-rc9, 2.0-rc8, 2.0-rc7, 2.0-rc6, 2.0-rc5, 2.0-rc4, 2.0-rc3, 2.0-rc2, 2.0-rc1

Android Packages

Current Aliases

 * jogamp-current -> v2.2.0
 * jogamp-next -> v2.2.0
 * webstart -> v2.2.0
 * webstart-next -> v2.2.0

Release Classification
Releases follow the above mentioned versioning scheme.

The following list is ordered from stable and oldest to experimental and newest.

[/deployment/jogamp-current/ Signed Release]

 * This is our current signed release, IE a manual promoted and signed autobuild.
 * It is suitable for JNLP and Applets (with or without JNLP).
 * This is the most stable and recommended version.
 * [/deployment/jogamp-current/archive/ Archive folder] containing platform ZIP files for manual installation.
 * this section
 * See instructions for downloading and installing.

[/deployment/jogamp-next/ Signed Release Candidate]

 * This is our signed release candidate, IE a manual promoted and signed autobuild.
 * It is suitable for JNLP and Applets (with or without JNLP).
 * [/deployment/jogamp-next/archive/ Platform ZIP archive's URL] for manual installation.
 * [/deployment/jogamp-next/archive/ Archive folder] containing platform ZIP files for manual installation.
 * See instructions for downloading and installing.

[/deployment/v2.0-rc3/ Signed Release Specific Version]

 * This is a specific signed release, IE a manual promoted autobuild.
 * It is suitable for JNLP and Applets (with or without JNLP).
 * [/deployment/v2.0-rc3/archive/ Archive folder] containing platform ZIP files for manual installation.
 * See instructions for downloading and installing.

[/deployment/archive/master/?C=M;O=D Latest Aggregated Autobuild]

 * This is our latest aggregated autobuild, which we seem fit for broad testing and submitting a bugreport.
 * It is not signed and hence not suitable for JNLP and Applets.
 * See instructions for downloading and installing.

[/deployment/autobuilds/ Autobuilds]
What others call nightlies, we call it autobuild. Autobuilds are provided by our [/chuck/job/jogl/ Jenkins build server]:
 * For [/chuck/job/jogl/ each project build reports] are available:
 * [/chuck/job/jogl/lastSuccessfulBuild/ Last Successful JOGL Build]
 * [/chuck/job/jogl/476/ JOGL Build 476]
 * They are [/chuck/job/jogl/476/changes#detail0 triggered by git commits]
 * Here is a [/chuck/job/jogl/changes list of all JOGL changes].
 * These builds are also tested on all supported platforms automatically with junit, see a [/chuck/job/jogl/label=win7-x86_64-nvida/lastCompletedBuild/testReport/ complete test report from one platform].
 * [/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ Autobuild URL] containing platform ZIP files for manual installation.

[/deployment/archive/ Archived builds]

 * Contains archived builds and releases.
 * May be signed.
 * [/deployment/archive/rc/gluegen_28-joal_17-jogl_41-jocl_25/archive/ archive URL] containing platform ZIP files for manual installation.

Version Fingerprint
You can get the get the source code via git, hence all references of a JogAmp module version boils down to:


 * module base version
 * git commit sha1 hash
 * build number
 * module OS and ARCH

We construct a full version string as follows: --b-

artifact.properties
The version fingerprint is available in the [/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/artifact.properties artifact.properties] file: gluegen.build.branch=origin/master gluegen.build.commit=3fec08a69de571cf2939e6028487faea8a23ccaa gluegen.build.id=2013-11-01_05-57-23 gluegen.build.number=741 gluegen.build.version=2.1.2 jogl.build.branch=origin/master jogl.build.commit=3ed74abaddb90cb537897b9928e923be50f7f99f jogl.build.id=2013-11-01_19-08-47 jogl.build.number=1135 jogl.build.version=2.1.2

We deploy artifacts.properties in the online [/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ build folder] and within the platform ZIP archives.

JAR Manifest
The version fingerprint is also included within each JAR Manifest file, where the Specification-Version equals the module base version and the Implementation-Version equals the above mentioned full version string Manifest-Version: 1.0 Ant-Version: Apache Ant 1.8.2 Created-By: 1.7.0_45-b18 (Oracle Corporation) Application-Name: Java Bindings for OpenGL Specification-Title: Java Bindings for OpenGL API Specification Specification-Version: 2.1 Specification-Vendor: JogAmp Community Implementation-Title: Java Bindings for OpenGL Runtime Environment Implementation-Version: 2.1.2 Implementation-Build: 2.1-b1135-20131101 Implementation-Branch: origin/master Implementation-Commit: 3ed74abaddb90cb537897b9928e923be50f7f99f Implementation-Vendor: JogAmp Community Implementation-URL: http://jogamp.org/ Extension-Name: javax.media.opengl Implementation-Vendor-Id: com.jogamp Trusted-Library: true Permissions: all-permissions Codebase: *.jogamp.org

Each module has also a base version, like major and minor, ie 2.0, which we may change to emphasize major feature and API changes.

Runtime Version Check
Each module has a build in JogampVersion specialization with a static  method to access the singleton instance, eg. for the GlueGenVersion or JoglVersion. You may utilize the version information from within your application in a programmatic manner. For the latter you may find the Platform information useful as well.

Each module's JogampVersion specialization also contain a static main entry allowing you to retrieve the version information at runtime as described below.

When invoked, ie via JOGL's platform ZIP file: you will see the full dump of the runtime platform and the above mentioned version footprint.
 * sh etc/test.sh (Unixoid), or
 * etc\test.bat (Windows)

- Platform: LINUX / Linux 3.11.6-x64-k10-nlb-jau01 (3.11.6), amd64 (arch), GENERIC_ABI, 8 cores MachineDescription: runtimeValidated true, littleEndian true, 32Bit false, primitive size / alignment: int8   1 / 1, int16   2 / 2 int    4 / 4, long    8 / 8 int32  4 / 4, int64   8 / 8 float  4 / 4, double  8 / 8, ldouble 16 / 16 pointer 8 / 8, page   4096 Platform: Java Version: 1.7.0_45 (1.7.0u45), VM: Java HotSpot(TM) 64-Bit Server VM, Runtime: Java(TM) SE Runtime Environment Platform: Java Vendor: Oracle Corporation, http://java.oracle.com/, JavaSE: true, Java6: true, AWT enabled: true - - Package: com.jogamp.common Extension Name: com.jogamp.common Specification Title: GlueGen Java Bindings Generator Specification Vendor: JogAmp Community Specification Version: 2.1 Implementation Title: GlueGen Run-Time Implementation Vendor: JogAmp Community Implementation Vendor ID: com.jogamp Implementation URL: http://jogamp.org/ Implementation Version: 2.1.2 Implementation Build: 2.1-b741-20131101 Implementation Branch: origin/master Implementation Commit: 3fec08a69de571cf2939e6028487faea8a23ccaa - Package: javax.media.opengl Extension Name: javax.media.opengl Specification Title: Java Bindings for OpenGL API Specification Specification Vendor: JogAmp Community Specification Version: 2.1 Implementation Title: Java Bindings for OpenGL Runtime Environment Implementation Vendor: JogAmp Community Implementation Vendor ID: com.jogamp Implementation URL: http://jogamp.org/ Implementation Version: 2.1.2 Implementation Build: 2.1-b1135-20131101 Implementation Branch: origin/master Implementation Commit: 3ed74abaddb90cb537897b9928e923be50f7f99f -

GLProfiles on device X11GraphicsDevice[type .x11, connection :0, unitID 0, handle 0x0, owner false, ResourceToolkitLock[obj 0x207fd4ec, isOwner false, <2873e29f, 50234978>[count 0, qsz 0, owner ]]] Natives GL4bc  true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GL4 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GLES3  false GL3bc  true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GL3 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GL2 true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GLES2  true [2.0 (ES profile, ES2 compat, FBO, software)] GLES1  true [1.0 (ES profile, FP32 compat, software)] Count  7 / 8 Common GL4ES3 true GL2GL3 true GL2ES2 true GL2ES1 true Mappings GL2ES2 GLProfile[GL2ES2/GL4.hw] GL2ES1 GLProfile[GL2ES1/GL4bc.hw] GL2 GLProfile[GL2/GL4bc.hw] GL4 GLProfile[GL4/GL4.hw] GL3 GLProfile[GL3/GL4.hw] GL4bc  GLProfile[GL4bc/GL4bc.hw] GLES2  GLProfile[GLES2/GLES2.sw] GLES1  GLProfile[GLES1/GLES1.sw] GL4ES3 GLProfile[GL4ES3/GL4.hw] GL2GL3 GLProfile[GL2GL3/GL4bc.hw] GL3bc  GLProfile[GL3bc/GL4bc.hw] default GLProfile[GL4bc/GL4bc.hw] Count  11 / 12

Desktop Capabilities: GLCaps[glx vid 0x21, fbc 0x105: rgba 8/8/8/0, opaque, accum-rgba 16/16/16/16, dp/st/ms 24/8/0, dbl, mono, hw, GLProfile[GL4bc/GL4bc.hw], on-scr[fbo, pbuffer, bitmap]] .....

Requesting: GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono, hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]] - X11GraphicsDevice[type .x11, connection :0]: Natives GL4bc  true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GL4 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GLES3  false GL3bc  true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GL3 true [4.4 (Core profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GL2 true [4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware)] GLES2  true [2.0 (ES profile, ES2 compat, FBO, software)] GLES1  true [1.0 (ES profile, FP32 compat, software)] Count  7 / 8 Common GL4ES3 true GL2GL3 true GL2ES2 true GL2ES1 true Mappings GL2ES2 GLProfile[GL2ES2/GL4.hw] GL2ES1 GLProfile[GL2ES1/GL4bc.hw] GL2 GLProfile[GL2/GL4bc.hw] GL4 GLProfile[GL4/GL4.hw] GL3 GLProfile[GL3/GL4.hw] GL4bc  GLProfile[GL4bc/GL4bc.hw] GLES2  GLProfile[GLES2/GLES2.sw] GLES1  GLProfile[GLES1/GLES1.sw] GL4ES3 GLProfile[GL4ES3/GL4.hw] GL2GL3 GLProfile[GL2GL3/GL4bc.hw] GL3bc  GLProfile[GL3bc/GL4bc.hw] default GLProfile[GL4bc/GL4bc.hw] Count  11 / 12

GL Profile    GLProfile[GL4bc/GL4bc.hw] GL Version    4.4 (Compat profile, arb, ES2 compat, ES3 compat, FBO, hardware) - 4.4.0 NVIDIA 331.13 [GL 4.4.0, vendor 331.13.0 (NVIDIA 331.13)] Quirks        [] Impl. class   jogamp.opengl.gl4.GL4bcImpl GL_VENDOR     NVIDIA Corporation GL_RENDERER   GeForce GTX 660/PCIe/SSE2 GL_VERSION    4.4.0 NVIDIA 331.13 GLSL          true, has-compiler-func: true, version: 4.40 NVIDIA via Cg compiler / 4.40.0 GL FBO: basic true, full true GL_EXTENSIONS 292 GLX_EXTENSIONS 28 - Requested: GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono, hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]] Chosen  : GLCaps[glx vid 0x27, fbc 0x10d: rgba 8/8/8/0, opaque, accum-rgba 16/16/16/16, dp/st/ms 24/0/0, dbl, mono , hw, GLProfile[GL4bc/GL4bc.hw], on-scr[.]] GL impl. class jogamp.opengl.gl4.GL4bcImpl GL4ES3 retrieved, impl. class jogamp.opengl.gl4.GL4bcImpl GL3 retrieved, impl. class jogamp.opengl.gl4.GL4bcImpl

The dump is hold in the file test.log which you should send to us in case of a bugreport.

Runtime Debug Logs
You may also like to send us the debug version: which produces the file test_dbg.log and should be send to us to complete the bugreport as well.
 * sh etc/test_dbg.sh (Unixoid), or
 * etc\test_dbg.bat (Windows)

Retrieve Release Version Tag from GIT Hash
git-show-tags-of-commit.sh
 * 1) ! /bin/sh

sha1=$1 shift

git show-ref --tags -d | grep ^$sha1 | sed -e 's,.* refs/tags/,,' -e 's/\^{}//'

JOGL example: > git-show-tags-of-commit.sh 9ff0b0dafea2a03a915c97eb1513c39c27b6a7ae v2.0-rc8

GlueGen example: > git-show-tags-of-commit.sh 4ce601b38ca8418eddbe8cca4d531e6161fae26b v2.0-rc7 v2.0-rc8

Maven
See the maven instructions for a guide to using Jogamp in Maven projects.

Autobuild Files
[/deployment/autobuilds/master/jogl-b485-2011-09-20_08-30-36/ Autobuild Platform ZIP files] for each module follow the versioning scheme plus contain the platform identifier [/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention OS and ARCH]: jogl-2.0-b210-20101110-linux-amd64.zip

Release and Archived Files
The [/deployment/jogamp-current/archive/ release archive folder] contains 7z archive files for each platform containing all modules, ie. jogamp-linux-os.and.arch.7z. The os.and.arch refers to the [/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFileNameConvention native file naming convention].

For example:
 * jogamp-linux-amd64.7z
 * jogamp-linux-i586.7z
 * jogamp-windows-amd64.7z
 * jogamp-windows-i586.7z

The folder also contains the Java API document ZIP files:
 * gluegen-javadoc.zip
 * jogl-javadoc.zip
 * jocl-javadoc.zip</tt>
 * joal-javadoc.zip</tt>