KhronosGroup / KhronosGroup/OpenGL-Registry

Establishing a breaking change policy for groups

Open
#481 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
854
Forks
302
PR merge metrics
No merged PRs in 30d

Description

The strongly-typed enum groups which were "standardised" in #335 and have been heavily iterated upon for correctness since are garnering more use as time goes on. Google (for ANGLE) and Arm (for a debugging/API trace tool: [more info](https://github.com/KhronosGroup/OpenGL-Registry/pull/480#discussion_r685805570)).

Given Khronos do not use the group information directly themselves, they have often gone forgotten about and whatever a incoming community contribution says, goes. I think given the increasing importance of these groups we should be wary of breaking changes.

In bindings generated from the gl.xml, the groups may be used to define more friendly API signatures. A good example from the Silk.NET library can be found [here](https://github.com/dotnet/Silk.NET/blob/main/src/OpenGL/Extensions/Silk.NET.OpenGL.Extensions.ARB/ArbTextureBufferRange.gen.cs). By changing group information in gl.xml, this causes a break in that library. We have come to accept this, but it's important Khronos knows that implication.

One core tenet of the groups is correctness. They exist to provide information on what enums are valid for a particular parameter. As such, I do think we need some way of changing a parameter to a more correct one but how this looks from a breaking change policy perspective, I don't know. The thing is no group change, even if we did use `enum { ... }`s in C, would be breaking due to how C works.

But yeah, this issue mostly serves as a discussion as I don't know what a good (or any) solution is to this.

Thoughts?
- @joakim-arm @NogginBops @3b @SunSerega @devel0 @tsuoranta @Lucretia @PJB3005 @tksuoran @aloucks @pablode @tkaaad97 @StailGot @mode777 @luca-piccioni (as people who have authored PRs that are exclusively regarding groups in the past)
- @null77 (ANGLE stakeholder)
- @Dav1dde (GLAD)
- @HurricanKai @ThomasMiz (ccs from the Silk.NET project)

Contributor guide

No contributing guide indexed for this repository

Research direction

Review the group definitions in gl.xml and the Silk.NET generated binding example linked in the issue to understand how group changes affect consumers. The issue does not name an implementation file, test, or decided policy; done would require agreement on a breaking-change policy for group changes.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
api
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.