diff --git a/extensions/ARB/ARB_compute_shader.txt b/extensions/ARB/ARB_compute_shader.txt
index 1505f4a..4899269 100644
--- a/extensions/ARB/ARB_compute_shader.txt
+++ b/extensions/ARB/ARB_compute_shader.txt
@@ -29,7 +29,7 @@
 
 Version
 
-    Last Modified Date: December 7, 2018
+    Last Modified Date: December 10, 2018
     Revision: 28
 
 Number
@@ -356,57 +356,57 @@
     COMPUTE_SHADER. They are attached to and used in program objects as
     described in section 2.11.3.
 
-        Compute workloads are formed from groups of work items called work
-    groups and processed by the executable code for a compute program. A work
-    group is a collection of shader invocations that execute the same code,
-    potentially in parallel. An invocation within a work group may share data
-    with other members of the same work group through shared variables and
+        Compute workloads are formed from groups of work items called
+    _workgroups_ and processed by the executable code for a compute program.
+    A workgroup is a collection of shader invocations that execute the same code,
+    potentially in parallel. An invocation within a workgroup may share data
+    with other members of the same workgroup through shared variables and
     issue memory and control barriers to synchronize with other members of the
-    same work group.  One or more work groups is launched by calling:
+    same workgroup.  One or more workgroups is launched by calling:
 
         void DispatchCompute(uint num_groups_x,
                              uint num_groups_y,
                              uint num_groups_z);
 
-        Each work group is processed by the active program object for the
+        Each workgroup is processed by the active program object for the
     compute shader stage.  The error INVALID_OPERATION will be generated if
     there is no active program object for the compute shader stage.  The
     active program for the compute shader stage will be determined in the same
     manner as the active program for other pipeline stages, as described in
-    section 2.11.3.  While the individual shader invocations within a work
-    group are executed as a unit, work groups are executed completely
+    section 2.11.3.  While the individual shader invocations within a
+    workgroup are executed as a unit, workgroups are executed completely
     independently and in unspecified order.
 
         <num_groups_x>, <num_groups_y> and <num_groups_z> specify the number of
-    work groups that will be dispatched in the X, Y and Z dimensions,
+    workgroups that will be dispatched in the X, Y and Z dimensions,
     respectively. The builtin vector variable gl_NumWorkGroups will be
     initialized with the contents of the <num_groups_x>, <num_groups_y> and
-    <num_groups_z> parameters. The maximum number of work groups that may be
+    <num_groups_z> parameters. The maximum number of workgroups that may be
     dispatched at one time may be determined by calling GetIntegeri_v with
     <pname> set to MAX_COMPUTE_WORK_GROUP_COUNT and <index> must be zero, one,
     or two, representing the X, Y, and Z dimensions, respectively. The
     values in the <num_groups_x>, <num_groups_y> and <num_groups_z> array must
-    be less than or equal to the maximum work group count for the corresponding
-    dimension, otherwise an INVALID_VALUE error is generated. If the work group
-    count in any dimension is zero, no work groups are dispatched.
+    be less than or equal to the maximum workgroup count for the corresponding
+    dimension, otherwise an INVALID_VALUE error is generated. If the workgroup
+    count in any dimension is zero, no workgroups are dispatched.
 
-        The work group size in each dimension are specified at compile time
+        The workgroup size in each dimension are specified at compile time
     using an input layout qualifier in one or more of the compute shaders
     attached to the program (see Section 4 of the OpenGL Shading Language
-    Specification). After the program has been linked, the work group size
+    Specification). After the program has been linked, the workgroup size
     of the program may be retrieved by calling GetProgramiv with <pname> set to
     COMPUTE_WORK_GROUP_SIZE. This will return an array of three integers
-    containing the work group size of the compute program as specified by
+    containing the workgroup size of the compute program as specified by
     its input layout qualifier(s). If <program> is the name of a program that
     has not been successfully linked, or is the name of a linked program object
     that contains no compute shaders, then an INVALID_OPERATION error is
     generated.
 
-        The maximum size of a work group may be determined by calling
+        The maximum size of a workgroup may be determined by calling
     GetIntegeri_v with <pname> set to MAX_COMPUTE_WORK_GROUP_SIZE
     and <index> set to 0, 1, or 2 to retrieve the maximum work size in the
     X, Y and Z dimension, respectively. Furthermore, the maximum number of
-    invocations in a single work group (i.e., the product of the three
+    invocations in a single workgroup (i.e., the product of the three
     dimensions) may be determined by calling GetIntegerv with <pname> set to
     MAX_COMPUTE_WORK_GROUP_INVOCATIONS.
 
@@ -479,11 +479,11 @@
     and its visible side effects are through actions on images, storage
     buffers, and atomic counters.
 
-    A compute shader operates on a group of work items called a work group.
-    A work group is a collection of shader invocations that execute the same
-    code, potentially in parallel. An invocation within a work group may share data with
-    other members of the same work group through shared variables and issue
-    memory and control barriers to synchronize with other members of the same work group."
+    A compute shader operates on a group of work items called a workgroup.
+    A workgroup is a collection of shader invocations that execute the same
+    code, potentially in parallel. An invocation within a workgroup may share data with
+    other members of the same workgroup through shared variables and issue
+    memory and control barriers to synchronize with other members of the same workgroup."
 
 Additions to Chapter 4 of the OpenGL Shading Language Specification, Version
 4.20 (Variables and Types)
@@ -503,7 +503,7 @@
     | Storage Qualifier | Meaning                                                   |
     +-------------------+-----------------------------------------------------------+
     | <shared>          | variable storage is shared across all work items in a     |
-    |                   | work group for compute shaders                      |
+    |                   | workgroup for compute shaders                             |
     +-------------------+-----------------------------------------------------------+
 
     Add the following paragraph to Section 4.3.4, "Input Variables"
@@ -526,16 +526,16 @@
     Add Section 4.3.7, "Shared", renumber subsequent sections
 
         The <shared> qualifier is used to declare variables that have storage
-    shared between all work items of a compute shader work
-    group. Variables declared as <shared> may only be used in compute shaders
+    shared between all work items of a compute shader workgroup.
+    Variables declared as <shared> may only be used in compute shaders
     (see Section 5.5, "Compute Shaders"). Shared variables are implicitly
     coherent. That is, writes to shared variables from one shader invocation
-    will eventually be seen by other invocations within the same work group.
+    will eventually be seen by other invocations within the same workgroup.
 
         Variables declared as <shared> may not have initializers and their
     contents are undefined at the beginning of shader execution. Any data
     written to <shared> variables will be visible to other shaders executing
-    the same shader within the same work group. Order of execution
+    the same shader within the same workgroup. Order of execution
     with regards to reads and writes to the same <shared> variables by different
     invocations of a shader is not defined. In order to achieve ordering with
     respect to reads and writes to <shared> variables, memory barriers must be
@@ -550,7 +550,7 @@
 
     There are no layout location qualifiers for compute shader inputs.
 
-    Layout qualifier identifiers for compute shader inputs are the work group
+    Layout qualifier identifiers for compute shader inputs are the workgroup
     size qualifiers:
 
         layout-qualifier-id
@@ -583,12 +583,12 @@
     maximum size supported by the implementation for that dimension, a
     compile-time error results. Also, if such a layout qualifier is declared more
     than once in the same shader, all those declarations must indicate the same
-    work group size; otherwise a compile-time error results. If multiple compute
-    shaders attached to a single program object declare the work group size,
+    workgroup size; otherwise a compile-time error results. If multiple compute
+    shaders attached to a single program object declare the workgroup size,
     the declarations must be identical; otherwise a link-time error results.
     Furthermore, if a program object contains any compute shaders, at
-    least one must contain an input layout qualifier specifying the work
-    group sizes of the program, or a link-time error will occur.
+    least one must contain an input layout qualifier specifying the
+    workgroup sizes of the program, or a link-time error will occur.
 
 Additions to Chapter 7 of the OpenGL Shading Language Specification, Version
 4.20 (Built-in Variables)
@@ -598,11 +598,11 @@
 
         In the compute language, the built-in variables are declared as follows:
 
-        // work group dimensions
+        // workgroup dimensions
         in    uvec3 gl_NumWorkGroups;
         const uvec3 gl_WorkGroupSize;
 
-        // work group and invocation IDs
+        // workgroup and invocation IDs
         in    uvec3 gl_WorkGroupID;
         in    uvec3 gl_LocalInvocationID;
 
@@ -614,37 +614,37 @@
 
         The built-in variable <gl_NumWorkGroups> is a compute-shader input
     variable containing the total number of global work items in each
-    dimension of the work group that will execute the compute shader.
+    dimension of the workgroup that will execute the compute shader.
     Its content is equal to the values specified in the <num_groups_x>,
     <num_groups_y>, and <num_groups_z> parameters passed to the
     DispatchCompute API entry point.
 
         The built-in constant <gl_WorkGroupSize> is a compute-shader constant
-    containing the work group size of the shader. The size of the work
-    group in the X, Y, and Z dimensions is stored in the x, y, and z components.
+    containing the workgroup size of the shader. The size of the workgroup
+    in the X, Y, and Z dimensions is stored in the x, y, and z components.
     The values stored in <gl_WorkGroupSize> match those specified in the
     required <local_size_x>, <local_size_y>, and <local_size_z> layout
     qualifiers for the current shader. This value is constant so that
     it can be used to size arrays of memory that can be shared within
-    the work group.
+    the workgroup.
 
         The built-in variable <gl_WorkGroupID> is a compute-shader input
-    variable containing the 3-dimensional index of the global work group
+    variable containing the 3-dimensional index of the global workgroup
     that the current invocation is executing in. The possible values range
     across the parameters passed into DispatchCompute, i.e., from (0, 0, 0) to
     (gl_NumWorkGroups.x - 1, gl_NumWorkGroups.y - 1, gl_NumWorkGroups.z - 1).
 
         The built-in variable <gl_LocalInvocationID> is a compute-shader input
-    variable containing the 3-dimensional index of the work group
-    within the global work group that the current invocation is executing in.
-    The possible values for this variable range across the work group
+    variable containing the 3-dimensional index of the workgroup
+    within the global workgroup that the current invocation is executing in.
+    The possible values for this variable range across the workgroup
     size, i.e. (0,0,0) to (gl_WorkGroupSize.x - 1, gl_WorkGroupSize.y - 1,
     gl_WorkGroupSize.z - 1).
 
         The built-in variable <gl_GlobalInvocationID> is a compute shader input
     variable containing the global index of the current work item.  This
     value uniquely identifies this invocation from all other invocations
-    across all work groups initiated by the current
+    across all workgroups initiated by the current
     DispatchCompute call.  This is computed as:
 
         gl_GlobalInvocationID =
@@ -653,8 +653,9 @@
         The built-in variable <gl_LocalInvocationIndex> is a compute shader
     input variable that contains the 1-dimensional representation of the
     gl_LocalInvocationID. This is useful for uniquely identifying a
-    unique region of shared memory within the work group for this
+    unique region of shared memory within the workgroup for this
     invocation to use. This is computed as:
+
         gl_LocalInvocationIndex =
             gl_LocalInvocationID.z * gl_WorkGroupSize.x * gl_WorkGroupSize.y +
             gl_LocalInvocationID.y * gl_WorkGroupSize.x +
@@ -686,7 +687,7 @@
         The shader invocation control function is only available in tessellation
     control shaders and compute shaders. It is used to control the relative
     execution order of multiple shader invocations used to process a patch
-    (in the case of tessellation control shaders) or a work group (in the
+    (in the case of tessellation control shaders) or a workgroup (in the
     case of compute shaders), which are otherwise executed with an undefined
     order.
 
@@ -695,7 +696,7 @@
     +----------------+--------------------------------------------------------------------------+
     | barrier        | For any given static instance of barrier() appearing in a tessellation   |
     |                | control shader or compute shader, all invocations for a single patch     |
-    |                | or work group, respectively, must enter it before any will continue      |
+    |                | or workgroup, respectively, must enter it before any will continue       |
     |                | beyond it.                                                               |
     +----------------+--------------------------------------------------------------------------+
 
@@ -749,7 +750,7 @@
     |                                   | Only available in compute shaders.                                                     |
     +-----------------------------------+----------------------------------------------------------------------------------------+
     | void groupMemoryBarrier()         | Control the ordering of all memory transactions issued within a single shader          |
-    |                                   | invocation, as viewed by other invocations in the same work group.                     |
+    |                                   | invocation, as viewed by other invocations in the same workgroup.                      |
     |                                   | Only available in compute shaders.                                                     |
     +-----------------------------------+----------------------------------------------------------------------------------------+
 
@@ -788,7 +789,7 @@
     stores, selected other shader invocations will never see the results of
     the second store before seeing those of the first.  When using the
     function groupMemoryBarrier(), this ordering guarantee applies only to
-    other shader invocations in the same compute shader work group; all other
+    other shader invocations in the same compute shader workgroup; all other
     memory barrier functions provide the guarantee to all other shader
     invocations.  No memory barrier is required to guarantee the order of
     memory stores as observed by the invocation performing the stores; an
@@ -910,7 +911,7 @@
     +----------------------------------------------------+-----------+-------------------------+---------------+-----------------------------------------------------------------------+---------+
     | Get Value                                          | Type      | Get Command             | Initial Value | Description                                                           | Sec.    |
     +----------------------------------------------------+-----------+-------------------------+---------------+-----------------------------------------------------------------------+---------+
-    | COMPUTE_WORK_GROUP_SIZE                            | 3 x Z+    | GetProgramiv            | { 0, ... }    | Work group size of a linked compute program                           | 5.5     |
+    | COMPUTE_WORK_GROUP_SIZE                            | 3 x Z+    | GetProgramiv            | { 0, ... }    | Workgroup size of a linked compute program                            | 5.5     |
     | UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER         | B         | GetActiveUniformBlockiv | FALSE         | True if uniform block is referenced by the compute stage              | 2.17.7  |
     | ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER | B         | GetActiveAtomicCounter- | FALSE         | AACB has a counter used by compute shaders                            | 2.17.7  |
     |                                                    |           |   Bufferiv              | FALSE         |                                                                       |         |
@@ -930,10 +931,10 @@
     +-----------------------------------------+-----------+---------------+---------------------+-----------------------------------------------------------------------+---------+
     | Get Value                               | Type      | Get Command   | Minimum Value       | Description                                                           | Sec.    |
     +-----------------------------------------+-----------+---------------+---------------------+-----------------------------------------------------------------------+---------+
-    | MAX_COMPUTE_WORK_GROUP_COUNT            | 3 x Z+    | GetIntegeri_v | 65535               | Maximum number of work groups that may be dispatched by a single      | 5.5     |
+    | MAX_COMPUTE_WORK_GROUP_COUNT            | 3 x Z+    | GetIntegeri_v | 65535               | Maximum number of workgroups that may be dispatched by a single       | 5.5     |
     |                                         |           |               |                     | dispatch command (per dimension)                                      |         |
-    | MAX_COMPUTE_WORK_GROUP_SIZE             | 3 x Z+    | GetIntegeri_v | 1024 (x, y), 64 (z) | Maximum local size of a compute work group (per dimension)            | 5.5     |
-    | MAX_COMPUTE_WORK_GROUP_INVOCATIONS      | Z+        | GetIntegerv   | 1024                | Maximum total compute shader invocations in a single work group       | 5.5     |
+    | MAX_COMPUTE_WORK_GROUP_SIZE             | 3 x Z+    | GetIntegeri_v | 1024 (x, y), 64 (z) | Maximum local size of a compute workgroup (per dimension)             | 5.5     |
+    | MAX_COMPUTE_WORK_GROUP_INVOCATIONS      | Z+        | GetIntegerv   | 1024                | Maximum total compute shader invocations in a single workgroup        | 5.5     |
     | MAX_COMPUTE_UNIFORM_BLOCKS              | Z+        | GetIntegerv   | 12                  | Maximum number of uniform blocks per compute program                  | 2.11.7  |
     | MAX_COMPUTE_TEXTURE_IMAGE_UNITS         | Z+        | GetIntegerv   | 16                  | Maximum number of texture image units accessible by a compute shader  | 2.11.12 |
     | MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS      | Z+        | GetIntegerv   | 8                   | Number of atomic counter buffers accessed by a compute shader         | 2.11.17 |
@@ -959,7 +960,7 @@
        RESOLVED:  Support only in compute shaders.  While some hardware may be
        able to support shared variables in shader stages other than compute,
        it is difficult to clearly define what the semantics are as far as
-       sharing. For example, what is the equivalent for a work group for
+       sharing. For example, what is the equivalent for a workgroup for
        vertex shaders?
 
     2) Can we expose atomics on <shared> variables?
@@ -974,18 +975,18 @@
        want to use such variables in cases where atomic access (and the
        related overhead) is not required.
 
-    3) Should the local size and dimensions of the work group be specified at
+    3) Should the local size and dimensions of the workgroup be specified at
        compile time? What are the default local dimensions?
 
-       RESOLVED: Dimension is always 3 and a work group size declaration is
+       RESOLVED: Dimension is always 3 and a workgroup size declaration is
        compulsory at compile time. There is no default. The value used is
-       queriable.  To use a 1- or 2-dimensional work group, the extra
+       queriable.  To use a 1- or 2-dimensional workgroup, the extra
        dimension(s) can be set to 1.
 
     4) Do we need the local_work_size parameter in dispatch if the local size
        may be specified at compile time in the shader?
 
-       RESOLVED: The specification of the work group size is now mandatory in
+       RESOLVED: The specification of the workgroup size is now mandatory in
        the shader source at compile time and the local_work_size may no longer
        be specified at dispatch time.
 
@@ -1167,18 +1168,18 @@
 
         void groupMemoryBarrier();
 
-      that only order transactions as viewed by other threads in the same work
-      group, which might not require synchronization with other shader cores.
-      Since shared memory is only accessible to threads within a single work
-      group, memoryBarrierShared() also only requires synchronization with
-      other threads in the same work group.
+      that only order transactions as viewed by other threads in the same
+      workgroup, which might not require synchronization with other shader cores.
+      Since shared memory is only accessible to threads within a single
+      workgroup, memoryBarrierShared() also only requires synchronization with
+      other threads in the same workgroup.
 
 Revision History
 
     Rev.    Date    Author    Changes
     ----  --------  --------- -----------------------------------------
-    28    12/07/18  Jon Leech Use 'work group' consistently throughout (Bug
-                              11723).
+    28    12/10/18  Jon Leech Use 'workgroup' consistently throughout (Bug
+                              11723, internal API issue 87).
     27    07/24/14  Jon Leech Change value of GLSL limit
                               gl_MaxComputeUniformComponents to 512 for
                               consistency with the API (Bug 12370).
diff --git a/extensions/ARB/ARB_compute_variable_group_size.txt b/extensions/ARB/ARB_compute_variable_group_size.txt
index 889ceb1..bd03ee5 100644
--- a/extensions/ARB/ARB_compute_variable_group_size.txt
+++ b/extensions/ARB/ARB_compute_variable_group_size.txt
@@ -28,7 +28,7 @@
 
 Version
 
-    Last Modified Date:         December 7, 2018
+    Last Modified Date:         December 10, 2018
     Revision:                   9
 
 Number
@@ -50,12 +50,12 @@
 Overview
 
     This extension allows applications to write generic compute shaders that
-    operate on work groups with arbitrary dimensions.  Instead of specifying a
-    fixed work group size in the compute shader, an application can use a
+    operate on workgroups with arbitrary dimensions.  Instead of specifying a
+    fixed workgroup size in the compute shader, an application can use a
     compute shader using the /local_size_variable/ layout qualifer to indicate
-    a variable work group size.  When using such compute shaders, the new
-    command DispatchComputeGroupSizeARB should be used to specify both a work
-    group size and work group count.
+    a variable workgroup size.  When using such compute shaders, the new
+    command DispatchComputeGroupSizeARB should be used to specify both a
+    workgroup size and workgroup count.
 
     In this extension, compute shaders with fixed group sizes must be
     dispatched by DispatchCompute and DispatchComputeIndirect.  Compute
@@ -95,7 +95,7 @@
 
     (modify second paragraph, p. 585)
 
-    ... One or more work groups is launched by calling
+    ... One or more workgroups is launched by calling
 
       void DispatchCompute(uint num_groups_x, uint num_groups_y,
                            uint num_groups_z)
@@ -108,30 +108,30 @@
 
     (modify second paragraph, p. 586)
 
-    For DispatchCompute, the work group size in each dimension must be
+    For DispatchCompute, the workgroup size in each dimension must be
     specified at compile time in the active program for the compute shader
-    stage.  The work group size is specified using an input layout qualifer
+    stage.  The workgroup size is specified using an input layout qualifer
     ...
 
     (insert after second paragraph, p. 586)
 
-    For DispatchComputeGroupSizeARB, the work group size must be specified as
+    For DispatchComputeGroupSizeARB, the workgroup size must be specified as
     variable in the active program for the compute shader stage.  The group
     size used to execute the compute shader is taken from the <group_size_x>,
     <group_size_y>, and <group_size_z> parameters.  For the purposes of the
-    COMPUTE_WORK_GROUP_SIZE query, a program without a work group size
+    COMPUTE_WORK_GROUP_SIZE query, a program without a workgroup size
     specified at compile time will be considered to have a size of zero in
     each dimension.
 
     (modify the third paragraph, p. 586)
 
-    The maximum size of a work group may be determined by calling
+    The maximum size of a workgroup may be determined by calling
     GetIntegeri_v with <index> set to 0, 1, or 2 to retrieve the maximum work
     size in the X, Y and Z dimension, respectively.  <target> should be set to
     MAX_COMPUTE_FIXED_GROUP_SIZE_ARB for compute shaders with fixed group
     sizes or MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB for compute shaders with
     variable local group sizes.  Furthermore, the maximum number of
-    invocations in a single work group (i.e., the product of the three
+    invocations in a single workgroup (i.e., the product of the three
     dimensions) may be determined by calling GetIntegerv with <pname> set to
     MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB for compute shaders with fixed
     group sizes or MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB for compute
@@ -141,11 +141,11 @@
      shared between DispatchCompute and DispatchComputeGroupSizeARB, p. 586)
 
     An INVALID_OPERATION error is generated by DispatchCompute if the active
-    program for the compute shader stage has a variable work group
+    program for the compute shader stage has a variable workgroup
     size.
 
     An INVALID_OPERATION error is generated by DispatchComputeGroupSizeARB if
-    the active program for the compute shader stage has a fixed work group
+    the active program for the compute shader stage has a fixed workgroup
     size.
 
     (insert at the end of the first error block, shared between
@@ -153,13 +153,13 @@
 
     An INVALID_VALUE error is generated by DispatchComputeGroupSizeARB if any
     of <group_size_x>, <group_size_y>, or <group_size_z> is less than or equal
-    to zero or greater than the maximum work group size for compute
+    to zero or greater than the maximum workgroup size for compute
     shaders with variable group size (MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB) in
     the corresponding dimension.
 
     An INVALID_VALUE error is generated by DispatchComputeGroupSizeARB if the
     product of <group_size_x>, <group_size_y>, and <group_size_z> exceeds the
-    implementation-dependent maximum work group invocation count for
+    implementation-dependent maximum workgroup invocation count for
     compute shaders with variable group size
     (MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB).
 
@@ -167,7 +167,7 @@
      p. 587)
 
     An INVALID_OPERATION error is generated if the active program for the
-    compute shader stage has a variable work group size.
+    compute shader stage has a variable workgroup size.
 
 
 Modifications to the OpenGL Shading Language Specification, Version 4.30
@@ -245,19 +245,19 @@
     (insert after third paragraph, p. 113)
 
     The built-in variable /gl_LocalGroupSizeARB/ is a compute-shader input
-    variable containing the work group size for the current compute-
-    shader work group.  For compute shaders with a fixed local group size (using
+    variable containing the workgroup size for the current compute-
+    shader workgroup.  For compute shaders with a fixed local group size (using
     *local_size_x*, *local_size_y*, or *local_size_z* layout qualifiers), its
     value will be the same as the constant /gl_WorkGroupSize/.  For compute
     shaders with a variable local group size (using *local_size_variable*),
-    the value of /gl_LocalGroupSizeARB/ will be the work
-    group size specified in the OpenGL API command dispatching the current
+    the value of /gl_LocalGroupSizeARB/ will be the workgroup
+    size specified in the OpenGL API command dispatching the current
     compute shader work.
 
     (modify next-to-last paragraph, p. 113)
 
     The built-in variable gl_LocalInvocationID ...  The possible values for
-    this varaible range across the work group size, i.e., (0,0,0) to
+    this varaible range across the workgroup size, i.e., (0,0,0) to
     (gl_LocalGroupSizeARB.x - 1, gl_LocalGroupSizeARB.y - 1,
     gl_LocalGroupSizeARB.z - 1).
 
@@ -290,7 +290,7 @@
 
 Dependencies on NV_compute_program5
 
-    If NV_compute_program5 is supported, variable work group sizes are
+    If NV_compute_program5 is supported, variable workgroup sizes are
     supported for assembly programs.  Make the following edits to the
     NV_compute_program5 specification:
 
@@ -299,19 +299,19 @@
 
     If a compute attribute binding matches "invocation.groupsize", the "x",
     "y", and "z" components of the invocation attribute variable are filled
-    the "x", "y", and "z" dimensions, respectively, of the work group,
+    the "x", "y", and "z" dimensions, respectively, of the workgroup,
     as specified by the GROUP_SIZE declaration for programs with fixed-size
-    work groups or through the OpenGL API for programs with variable-size work
-    groups.  The "w" component of the attribute is undefined.
+    workgroups or through the OpenGL API for programs with variable-size
+    workgroups.  The "w" component of the attribute is undefined.
 
     (add to section 2.X.6 of the NV_gpu_program4/5 spec, Program Options)
 
     + Compute Shader Variable Group Size (ARB_compute_variable_group_size)
 
     If a program specifies the "ARB_compute_variable_group_size" option, it
-    supports variable-size work groups.  Compute programs with a variable work
-    group size must be dispatched with DispatchComputeGroupSizeARB.  Compute
-    programs with a fixed work group size must be dispatched with
+    supports variable-size workgroups.  Compute programs with a variable
+    workgroup size must be dispatched with DispatchComputeGroupSizeARB.  Compute
+    programs with a fixed workgroup size must be dispatched with
     DispatchCompute or DispatchComputeIndirect.
 
     (modify Section 2.X.7.Y, Compute Program Declarations)
@@ -319,7 +319,7 @@
     - Shader Thread Group Size (GROUP_SIZE)
 
     The GROUP_SIZE statement declares the number of shader threads in a one-,
-    two-, or three-dimensional work group.  The statement must have one
+    two-, or three-dimensional workgroup.  The statement must have one
     to three unsigned integer arguments.  Each argument must be less than or
     equal to the value of the implementation-dependent limit
     MAX_COMPUTE_LOCAL_WORK_SIZE for its corresponding dimension (X, Y, or Z).
@@ -333,21 +333,21 @@
 
     An INVALID_OPERATION error is generated by DispatchCompute or
     DispatchComputeIndirect if the active program for the compute shader stage
-    has a variable work group size.
+    has a variable workgroup size.
 
     An INVALID_OPERATION error is generated by DispatchComputeGroupSizeARB if
-    the active program for the compute shader stage has a fixed work group
+    the active program for the compute shader stage has a fixed workgroup
     size.
 
     An INVALID_VALUE error is generated by DispatchComputeGroupSizeARB if any
     of <group_size_x>, <group_size_y>, or <group_size_z> is less than or equal
-    to zero or greater than the maximum work group size for compute
+    to zero or greater than the maximum workgroup size for compute
     shaders with variable group size (MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB) in
     the corresponding dimension.
 
     An INVALID_VALUE error is generated by DispatchComputeGroupSizeARB if the
     product of <group_size_x>, <group_size_y>, and <group_size_z> exceeds the
-    implementation-dependent maximum work group invocation count for
+    implementation-dependent maximum workgroup invocation count for
     compute shaders with variable group size
     (MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB).
 
@@ -379,29 +379,29 @@
 
 Issues
 
-    (1) If a compute shader declares a work group size, can it be dispatched
-        using OpenGL APIs accepting an explicit work group size as part of the
+    (1) If a compute shader declares a workgroup size, can it be dispatched
+        using OpenGL APIs accepting an explicit workgroup size as part of the
         command?  If so, what happens?
 
       RESOLVED:  No.  Attempting to do so will generate an INVALID_OPERATION
       error.
 
-      Since the fixed work group size may affect the compilation of the shader
+      Since the fixed workgroup size may affect the compilation of the shader
       and the value of certain built-in constants, having the OpenGL API
-      override the work group size baked into the compute shader seems
-      suspect.  We could conceivably allow an explicit work group size in the
-      OpenGL API and require that it match the work group size baked into the
+      override the workgroup size baked into the compute shader seems
+      suspect.  We could conceivably allow an explicit workgroup size in the
+      OpenGL API and require that it match the workgroup size baked into the
       compute shader, but doing so seems to be of limited value.
 
-    (2) If a compute shader doesn't declare a work group size, can it be
-        dispatched using OpenGL APIs that do not accept an explicit work group
+    (2) If a compute shader doesn't declare a workgroup size, can it be
+        dispatched using OpenGL APIs that do not accept an explicit workgroup
         size as part of the command?  If so, what happens?
 
       RESOLVED:  No.  Attempting to do so will generate an INVALID_OPERATION
       error.
 
       We could theoretically treat this case as allowing OpenGL
-      implementations to pick a work group size that "works well" on a
+      implementations to pick a workgroup size that "works well" on a
       particular piece of hardware.  However, that wouldn't resolve the
       question of what the "num_groups" arguments to DispatchCompute would
       mean if the group size were implementation-dependent.  One could
@@ -415,18 +415,18 @@
 
       RESOLVED:  We will provide a new built-in variable exposing the group
       size specified in the API.  The name choice is potentially tricky, since
-      we now have two different "work group size" variables -- a previously
-      existing constant for the fixed work group size and now a second input
-      for the variable work group size specified in the API.  We choose the
+      we now have two different "workgroup size" variables -- a previously
+      existing constant for the fixed workgroup size and now a second input
+      for the variable workgroup size specified in the API.  We choose the
       name "gl_LocalGroupSizeARB" here, which seems to fit reasonably well with
       existing inputs such as "gl_LocalInvocationID".
 
       If we had provided this functionality in the original compute shader
       extension, maybe we could have only had "gl_LocalGroupSizeARB"?
       However, the constant "gl_WorkGroupSize" would still be useful for
-      sizing built-in arrays for shaders with a fixed work group size.  For
+      sizing built-in arrays for shaders with a fixed workgroup size.  For
       example, a shader might want to declare a shared variable with one
-      instance per work group invocation, such as:
+      instance per workgroup invocation, such as:
 
         shared float shared_values[gl_WorkGroupSize.x * gl_WorkGroupSize.y *
                                    gl_WorkGroupSize.z];
@@ -435,15 +435,15 @@
       "gl_LocalGroupSizeARB".
 
     (4) Do we need to modify the behavior of existing GLSL built-ins for
-        compute shaders without an explicit work group size?
+        compute shaders without an explicit workgroup size?
 
       RESOLVED:  No, not really.
 
       The constant gl_WorkGroupSize seems like it would be affected by
-      omitting an explicit work group size.  However, it is already an error
-      to use gl_WorkGroupSize in a shader before a work group size layout
+      omitting an explicit workgroup size.  However, it is already an error
+      to use gl_WorkGroupSize in a shader before a workgroup size layout
       qualifier is declared.  That would make its use illegal in shaders where
-      work group size layout qualifiers are not declared at all.
+      workgroup size layout qualifiers are not declared at all.
 
       We do need to make minor modifications to the language describing other
       built-in inputs such as gl_LocalInvocationIndex, that are today defined
@@ -451,25 +451,25 @@
       definitions to use the input gl_LocalGroupSizeARB instead.
 
     (5) Should we provide a function (e.g.,
-        DispatchComputeIndirectGroupSizeARB) that takes both a work group
-        count and a work group size from indirect dispatch buffers?  If so,
-        what do we do if the work group size is not positive or exceeds
+        DispatchComputeIndirectGroupSizeARB) that takes both a workgroup
+        count and a workgroup size from indirect dispatch buffers?  If so,
+        what do we do if the workgroup size is not positive or exceeds
         implementation-dependent limits?
 
       RESOLVED:  No, let's leave this out of this extension.
 
     (6) Is it necessary for compute shaders to include a "#extension"
         directive to enable this extension in order to link successfully
-        without a fixed work group size?
+        without a fixed workgroup size?
 
       RESOLVED:  Yes, compute shaders will have to use the
-      "local_size_variable" layout qualifier to declare a variable work group
+      "local_size_variable" layout qualifier to declare a variable workgroup
       size, and an "#extension" directive is required to be able to use that
       layout qualifier.
 
       In unextended OpenGL 4.3, we get a link error if no shaders in the
-      program exercise an existing language feature (declaring the fixed work
-      group size).  We could have simply removed this error, but the general
+      program exercise an existing language feature (declaring the fixed
+      workgroup size).  We could have simply removed this error, but the general
       rule for "#extension" is that a user should be able to determine if a
       shader were legal or not simply by examining the source code.
 
@@ -497,8 +497,9 @@
 
 Revision History
 
-    Revision 9, December 7, 2018 (Jon Leech)
-      - Use 'work group' consistently throughout (Bug 11723).
+    Revision 9, December 10, 2018 (Jon Leech)
+      - Use 'workgroup' consistently throughout (Bug 11723, internal API
+        issue 87).
 
     Revision 8, May 30, 2013 (pbrown)
       - Fix a typo in the MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB description;
diff --git a/extensions/ARB/ARB_gl_spirv.txt b/extensions/ARB/ARB_gl_spirv.txt
index e5e0569..3583aa1 100644
--- a/extensions/ARB/ARB_gl_spirv.txt
+++ b/extensions/ARB/ARB_gl_spirv.txt
@@ -29,7 +29,7 @@
 
 Version
 
-    Last Modified Date: December 7, 2018
+    Last Modified Date: December 10, 2018
     Revision: 41
 
 Number
@@ -1319,7 +1319,7 @@
       "This leaves gl_WorkGroupSize.y as a non-specialization constant, with
       gl_WorkGroupSize being a partially specialized vector.  Its x and z
       components can be later specialized using the ids 18 and 19.  These ids
-      are declared independently from declaring the work group size:
+      are declared independently from declaring the workgroup size:
 
         layout(local_size_x = 32, local_size_y = 32) in;   // size is (32,32,1)
         layout(local_size_x_id = 18) in;                   // constant_id for x
@@ -2077,8 +2077,9 @@
 
     Rev.    Date         Author         Changes
     ----  -----------    ------------   ---------------------------------
-    41    07-Dec-2018    Jon Leech      Use 'work group' consistently
-                                        throughout (Bug 11723).
+    41    10-Dec-2018    Jon Leech      Use 'workgroup' consistently
+                                        throughout (Bug 11723, internal API
+                                        issue 87).
     40    29-May-2018    dgkoch         note post decrement for atomicCounterDecrement
                                         mapping
     39    25-Apr-2018    JohnK          add mappings of barriers and atomics
diff --git a/extensions/ARB/ARB_shader_group_vote.txt b/extensions/ARB/ARB_shader_group_vote.txt
index 88dbc91..156bf77 100644
--- a/extensions/ARB/ARB_shader_group_vote.txt
+++ b/extensions/ARB/ARB_shader_group_vote.txt
@@ -26,7 +26,7 @@
 
 Version
 
-    Last Modified Date:         December 7, 2018
+    Last Modified Date:         December 10, 2018
     Revision:                   7
 
 Number
@@ -55,12 +55,12 @@
     implementation-dependent, and this extension provides no guarantee over
     how individual shader invocations are assigned to such sets.  In
     particular, the set of shader invocations has no necessary relationship
-    with the compute shader work group -- a pair of shader invocations
-    in a single compute shader work group may end up in different sets used by
+    with the compute shader workgroup -- a pair of shader invocations
+    in a single compute shader workgroup may end up in different sets used by
     these built-ins.
 
     Compute shaders operate on an explicitly specified group of threads (a
-    work group), but many implementations of OpenGL 4.3 will even group
+    workgroup), but many implementations of OpenGL 4.3 will even group
     non-compute shader invocations and execute them in a SIMD fashion.  When
     executing code like
 
@@ -211,45 +211,45 @@
 Issues
 
     (1) Should we provide built-ins exposing a fixed implementation-dependent
-        SIMD work group size and/or the "location" of a single invocation
-        within a fixed-size SIMD work group?
+        SIMD workgroup size and/or the "location" of a single invocation
+        within a fixed-size SIMD workgroup?
 
       RESOLVED:  Not in this extension.
 
     (2) Should we provide mechanisms for sharing arbitrary data values across
-        SIMD work groups?
+        SIMD workgroups?
 
       RESOLVED:  Not in this extension.
 
       For compute shaders, shared memory may already be used to share values
-      across invocations in a single work group.
+      across invocations in a single workgroup.
 
     (3) Is this capability supported for all shader types or just compute
         shaders?
 
       RESOLVED:  All shader types.
 
-    (4) For compute shaders, is there any relationship between the work
-        group and the SIMD invocation group across which conditions are
+    (4) For compute shaders, is there any relationship between the
+        workgroup and the SIMD invocation group across which conditions are
         evaluated?
 
       RESOLVED:  No.
 
-    (5) Is there any necessary relationship between SIMD work groups in this
-        extension and the work groups for compute shaders?
+    (5) Is there any necessary relationship between SIMD workgroups in this
+        extension and the workgroups for compute shaders?
 
-      RESOLVED:  No.  It is expected that the SIMD work groups in this
-      extension are relatively small compared to a maximum-sized compute work
-      group.  On current NVIDIA GPUs, the SIMD work group size will be 32;
-      however, maximum work group size (MAX_COMPUTE_WORK_GROUP_INVOCATIONS)
+      RESOLVED:  No.  It is expected that the SIMD workgroups in this
+      extension are relatively small compared to a maximum-sized compute
+      workgroup.  On current NVIDIA GPUs, the SIMD workgroup size will be 32;
+      however, maximum workgroup size (MAX_COMPUTE_WORK_GROUP_INVOCATIONS)
       for OpenGL 4.3 compute shaders is 1024.
 
-      Perhaps there might be some small value in guaranteeing that a SIMD work
-      group doesn't span compute work groups.  However, it's not clear
+      Perhaps there might be some small value in guaranteeing that a SIMD
+      workgroup doesn't span compute workgroups.  However, it's not clear
       that there is any specific value in doing so, and having such a
-      restriction could limit parallelism for very small compute work groups
-      (where one might be able to fit multiple work groups in a single SIMD
-      work group).
+      restriction could limit parallelism for very small compute workgroups
+      (where one might be able to fit multiple workgroups in a single SIMD
+      workgroup).
 
     (6) How do the built-in functions work when called in conditionally
         executed code?
@@ -385,8 +385,9 @@
 
 Revision History
 
-    Revision 7, December 7, 2018 (Jon Leech)
-      - Use 'work group' consistently throughout (Bug 11723).
+    Revision 7, December 10, 2018 (Jon Leech)
+      - Use 'workgroup' consistently throughout (Bug 11723, internal API
+        issue 87).
 
     Revision 6, May 30, 2013
       - Mark issue (13) as resolved.
diff --git a/extensions/EXT/EXT_shader_group_vote.txt b/extensions/EXT/EXT_shader_group_vote.txt
index 1ab9730..d6bbdef 100644
--- a/extensions/EXT/EXT_shader_group_vote.txt
+++ b/extensions/EXT/EXT_shader_group_vote.txt
@@ -21,7 +21,7 @@
 
 Version
 
-    Last Modified Date:         December 7, 2018
+    Last Modified Date:         December 10, 2018
     Revision:                   3
 
 Number
@@ -45,12 +45,12 @@
     implementation-dependent, and this extension provides no guarantee over
     how individual shader invocations are assigned to such sets.  In
     particular, the set of shader invocations has no necessary relationship
-    with the compute shader work group -- a pair of shader invocations
-    in a single compute shader work group may end up in different sets used by
+    with the compute shader workgroup -- a pair of shader invocations
+    in a single compute shader workgroup may end up in different sets used by
     these built-ins.
 
     Compute shaders operate on an explicitly specified group of threads (a
-    work group), but many implementations of OpenGL ES 3.0 will even group
+    workgroup), but many implementations of OpenGL ES 3.0 will even group
     non-compute shader invocations and execute them in a SIMD fashion.  When
     executing code like
 
@@ -194,8 +194,9 @@
 
 Revision History
 
-    Revision 3, December 7, 2018 (Jon Leech)
-      - Use 'work group' consistently throughout (Bug 11723).
+    Revision 3, December 10, 2018 (Jon Leech)
+      - Use 'workgroup' consistently throughout (Bug 11723, internal API
+        issue 87).
     Revision 2, October 21, 2015
       - Promoted to EXT
     Revision 1, October 23, 2014
diff --git a/extensions/EXT/EXT_tessellation_shader.txt b/extensions/EXT/EXT_tessellation_shader.txt
index cdfb153..fb24876 100644
--- a/extensions/EXT/EXT_tessellation_shader.txt
+++ b/extensions/EXT/EXT_tessellation_shader.txt
@@ -42,7 +42,7 @@
 
 Version
 
-    Last Modified Date: December 7, 2018
+    Last Modified Date: December 10, 2018
     Revision: 25
 
 Number
@@ -2407,7 +2407,7 @@
     The shader invocation control function is only available in tessellation
     control and compute shaders. It is used to control the relative
     execution order of multiple shader invocations used to process a patch
-    (in the case of tessellation control shaders) or a work group (in
+    (in the case of tessellation control shaders) or a workgroup (in
     the case of compute shaders), which are otherwise executed with an
     undefined order.
 
@@ -2698,8 +2698,8 @@
 
     Rev.    Date    Author    Changes
     ----  --------  --------- -------------------------------------------------
-     25   12/07/18  Jon Leech Use 'work group' consistently throughout (Bug
-                              11723).
+     25   12/10/18  Jon Leech Use 'workgroup' consistently throughout (Bug
+                              11723, internal API issue 87).
 
      24   02/03/17  Jon Leech Add issue 17 noting missing GLSL built-in constants
                               (public bug 1427).
diff --git a/extensions/OES/OES_tessellation_shader.txt b/extensions/OES/OES_tessellation_shader.txt
index 47cb78d..12f70f4 100644
--- a/extensions/OES/OES_tessellation_shader.txt
+++ b/extensions/OES/OES_tessellation_shader.txt
@@ -43,7 +43,7 @@
 
 Version
 
-    Last Modified Date: December 7, 2018
+    Last Modified Date: December 10, 2018
     Revision: 7
 
 Number
@@ -2408,7 +2408,7 @@
     The shader invocation control function is only available in tessellation
     control and compute shaders. It is used to control the relative
     execution order of multiple shader invocations used to process a patch
-    (in the case of tessellation control shaders) or a work group (in
+    (in the case of tessellation control shaders) or a workgroup (in
     the case of compute shaders), which are otherwise executed with an
     undefined order.
 
@@ -2686,8 +2686,9 @@
 
     Rev.    Date      Author     Changes
     ----  ----------  --------- -------------------------------------------------
-     7    12/07/2018  Jon Leech Use 'work group' consistently throughout (Bug
-                                11723).
+     7    12/10/2018  Jon Leech Use 'workgroup' consistently throughout (Bug
+                                11723, internal API issue 87).
+
      6    05/31/2016  Jon Leech Note that primitive ID counters are reset to zero
                                 after each instance drawn (Bug 14024).
 
