the Fiddler's picture

OpenTK 0.9.9-2 and the modified structure

So, OpenTK 0.9.9-2 is now out. This release contains a solid month worth of work with more than 250 code commits and contributions from no less than 4 independent developers.

Maybe the most significant change in this release is the modified project structure. OpenTK 0.9.9-2 contains two kinds of visible structural changes: modified namespaces and different assemblies. (It also contains a number of internal changes but this is not important right now.) Modified namespaces affect the bindings (OpenTK.Graphics.OpenGL instead of OpenTK.Graphics, OpenTK.Audio.OpenAL instead of OpenTK.Audio, OpenTK.Compute.OpenCL instead of OpenTK.Compute) and the DisplayDevice and DisplayResolution (root OpenTK instead of OpenTK.Graphics). Different assemblies affect OpenTK.GLControl and OpenTK.Utilities.

Were these changes actually necessary? In short, yes. Placing OpenGL bindings into the OpenTK.Graphics namespace prohibits you from using OpenGL|ES (namespace clashes) and stops us from shipping side-by-side profiles (e.g. forward-compatible OpenGL 3.2 profile). OpenTK.GLControl adds a dependency to Windows.Forms, which is not desirable. OpenTK.Utilities contains classes that we cannot support in OpenTK 1.0.

So, will 0.9.9-2 break my applications entirely? No. OpenTK 0.9.9-2 ships a new OpenTK.Compatibility assembly that contains the old namespaces and all functionality of OpenTK.Utilities. Add a reference to OpenTK.Compatibility and your project will continue to work with minor changes only. It is up to you to decide if you wish the OpenTK.Compatibility dependency or not - both options are acceptable.

What will happen to the TextPrinter and the WaveReader classes? Both of these have been moved to OpenTK.Compatibility and marked as deprecated. Unless a willing developer shows up, these projects will not be developed any more. Hopefully, the community will adapt them and improve them - until then, both projects will remain in OpenTK.Compatibility.

What are the plans for the next versions? Development will now focus solely on the 0.9.9-series and the upcoming 1.0 release. If everything goes according to plan, we will have a 1.0 beta 1 and API freeze around the end of October, followed by release candidates and a final release in December.