Documentation work
diff --git a/README.md b/README.md
index 572dafa..44e85fe 100644
--- a/README.md
+++ b/README.md
@@ -10,16 +10,18 @@
 application development.  It provides a simple, platform-independent API for
 creating windows, contexts and surfaces, reading input, handling events, etc.
 
-The current stable release is version 3.2.  See the
-[downloads](http://www.glfw.org/download.html) page for details and files, or
-fetch the `latest` branch, which always points to the latest stable release.
-Each release starting with 3.0 also has a corresponding [annotated
-tag](https://github.com/glfw/glfw/releases) with source and binary archives.
+GLFW is licensed under the [zlib/libpng
+license](https://opensource.org/licenses/Zlib).
 
 This is version 3.2.1, which adds support for statically linking the Vulkan
 loader and fixes for a number of bugs that together affect all supported
 platforms.
 
+See the [downloads](http://www.glfw.org/download.html) page for details and
+files, or fetch the `latest` branch, which always points to the latest stable
+release.  Each release starting with 3.0 also has a corresponding [annotated
+tag](https://github.com/glfw/glfw/releases) with source and binary archives.
+
 If you are new to GLFW, you may find the
 [tutorial](http://www.glfw.org/docs/latest/quick.html) for GLFW
 3 useful.  If you have used GLFW 2 in the past, there is a
@@ -133,15 +135,15 @@
 well as news, documentation and other information about the project.
 
 If you have questions related to the use of GLFW, we have a
-[support forum](http://discourse.glfw.org/), and the IRC
-channel `#glfw` on [Freenode](http://freenode.net/).
+[forum](http://discourse.glfw.org/), and the `#glfw` IRC channel on
+[Freenode](http://freenode.net/).
 
 If you have a bug to report, a patch to submit or a feature you'd like to
 request, please file it in the
 [issue tracker](https://github.com/glfw/glfw/issues) on GitHub.
 
 Finally, if you're interested in helping out with the development of GLFW or
-porting it to your favorite platform, join us on GitHub or IRC.
+porting it to your favorite platform, join us on the forum, GitHub or IRC.
 
 
 ## Acknowledgements
diff --git a/docs/build.dox b/docs/build.dox
index cfeb47c..ff9ed86 100644
--- a/docs/build.dox
+++ b/docs/build.dox
@@ -103,7 +103,8 @@
 not be used in new code.
 
 @note GLFW does not provide any of the API headers mentioned above.  They must
-be provided by your development environment or your OpenGL or OpenGL ES SDK.
+be provided by your development environment or your OpenGL, OpenGL ES or Vulkan
+SDK.
 
 @note None of these macros may be defined during the compilation of GLFW itself.
 If your build includes GLFW and you define any these in your build files, make
@@ -184,21 +185,35 @@
 target_link_libraries(myapp glfw)
 @endcode
 
-Note that it does not include GLU, as GLFW does not use it.  If your application
-needs GLU, you can find it by requiring the OpenGL package.
+Note that the dependencies do not include OpenGL or GLU, as GLFW loads any
+OpenGL, OpenGL ES or Vulkan libraries it needs at runtime and does not use GLU.
+If your application calls OpenGL directly, instead of using a modern
+[extension loader library](@ref context_glext_auto) you can find it by requiring
+the OpenGL package.
 
 @code{.cmake}
 find_package(OpenGL REQUIRED)
 @endcode
 
-If GLU is found, the `OPENGL_GLU_FOUND` variable is true and the
-`OPENGL_INCLUDE_DIR` and `OPENGL_glu_LIBRARY` cache variables can be used.
+If OpenGL is found, the `OPENGL_FOUND` variable is true and the
+`OPENGL_INCLUDE_DIR` and `OPENGL_gl_LIBRARY` cache variables can be used.
 
 @code{.cmake}
 target_include_directories(myapp ${OPENGL_INCLUDE_DIR})
+target_link_libraries(myapp ${OPENGL_gl_LIBRARY})
+@endcode
+
+The OpenGL CMake package also looks for GLU.  If GLU is found, the
+`OPENGL_GLU_FOUND` variable is true and the `OPENGL_INCLUDE_DIR` and
+`OPENGL_glu_LIBRARY` cache variables can be used.
+
+@code{.cmake}
 target_link_libraries(myapp ${OPENGL_glu_LIBRARY})
 @endcode
 
+@note GLU has been deprecated and should not be used in new code, but some
+legacy code requires it.
+
 
 @subsection build_link_cmake_package With CMake and installed GLFW binaries
 
@@ -213,30 +228,35 @@
 find_package(glfw3 3.2 REQUIRED)
 @endcode
 
-Once GLFW has been located, link against it with the `glfw` target.  This adds
-all link-time dependencies of GLFW as it is currently configured, the include
-directory for the GLFW header and, when applicable, the
-[GLFW_DLL](@ref build_macros) macro.
-
-@code{.cmake}
-target_link_libraries(myapp glfw)
-@endcode
-
-Note that it does not include GLU, as GLFW does not use it.  If your application
-needs GLU, you can find it by requiring the OpenGL package.
+Note that the dependencies do not include OpenGL or GLU, as GLFW loads any
+OpenGL, OpenGL ES or Vulkan libraries it needs at runtime and does not use GLU.
+If your application calls OpenGL directly, instead of using a modern
+[extension loader library](@ref context_glext_auto) you can find it by requiring
+the OpenGL package.
 
 @code{.cmake}
 find_package(OpenGL REQUIRED)
 @endcode
 
-If GLU is found, the `OPENGL_GLU_FOUND` variable is true and the
-`OPENGL_INCLUDE_DIR` and `OPENGL_glu_LIBRARY` cache variables can be used.
+If OpenGL is found, the `OPENGL_FOUND` variable is true and the
+`OPENGL_INCLUDE_DIR` and `OPENGL_gl_LIBRARY` cache variables can be used.
 
 @code{.cmake}
 target_include_directories(myapp ${OPENGL_INCLUDE_DIR})
+target_link_libraries(myapp ${OPENGL_gl_LIBRARY})
+@endcode
+
+The OpenGL CMake package also looks for GLU.  If GLU is found, the
+`OPENGL_GLU_FOUND` variable is true and the `OPENGL_INCLUDE_DIR` and
+`OPENGL_glu_LIBRARY` cache variables can be used.
+
+@code{.cmake}
 target_link_libraries(myapp ${OPENGL_glu_LIBRARY})
 @endcode
 
+@note GLU has been deprecated and should not be used in new code, but some
+legacy code requires it.
+
 
 @subsection build_link_pkgconfig With makefiles and pkg-config on Unix
 
@@ -268,8 +288,9 @@
 env PKG_CONFIG_PATH=path/to/glfw/src cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3`
 @endcode
 
-The dependencies do not include GLU, as GLFW does not use it.  On OS X, GLU is
-built into the OpenGL framework, so if you need GLU you don't need to do
+The dependencies do not include OpenGL or GLU, as GLFW loads any OpenGL, OpenGL
+ES or Vulkan libraries it needs at runtime and does not use GLU.  On OS X, GLU
+is built into the OpenGL framework, so if you need GLU you don't need to do
 anything extra.  If you need GLU and are using Linux or BSD, you should add the
 `glu` pkg-config package.
 
@@ -277,6 +298,9 @@
 cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --libs glfw3 glu`
 @endcode
 
+@note GLU has been deprecated and should not be used in new code, but some
+legacy code requires it.
+
 If you are using the static version of the GLFW library, make sure you don't
 link statically against GLU.
 
diff --git a/docs/window.dox b/docs/window.dox
index 0f2a684..40a1b97 100644
--- a/docs/window.dox
+++ b/docs/window.dox
@@ -80,7 +80,8 @@
 and monitor with @ref glfwSetWindowMonitor.  If you just need change its
 resolution you can also call @ref glfwSetWindowSize.  In all cases, the new
 video mode will be selected the same way as the video mode chosen by @ref
-glfwCreateWindow.
+glfwCreateWindow.  If the window has an OpenGL or OpenGL ES context, it will be
+unaffected.
 
 By default, the original video mode of the monitor will be restored and the
 window iconified if it loses input focus, to allow the user to switch back to
diff --git a/include/GLFW/glfw3.h b/include/GLFW/glfw3.h
index 733e1ed..95caa95 100644
--- a/include/GLFW/glfw3.h
+++ b/include/GLFW/glfw3.h
@@ -1743,6 +1743,10 @@
  *  screen windows, including the creation of so called _windowed full screen_
  *  or _borderless full screen_ windows, see @ref window_windowed_full_screen.
  *
+ *  Once you have created the window, you can switch it between windowed and
+ *  full screen mode with @ref glfwSetWindowMonitor.  If the window has an
+ *  OpenGL or OpenGL ES context, it will be unaffected.
+ *
  *  By default, newly created windows use the placement recommended by the
  *  window system.  To create the window at a specific position, make it
  *  initially invisible using the [GLFW_VISIBLE](@ref window_hints_wnd) window
@@ -2394,8 +2398,8 @@
  *  in full screen on.
  *
  *  @param[in] window The window to query.
- *  @return The monitor, or `NULL` if the window is in windowed mode or an error
- *  occurred.
+ *  @return The monitor, or `NULL` if the window is in windowed mode or an
+ *  [error](@ref error_handling) occurred.
  *
  *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
  *
@@ -3359,7 +3363,7 @@
  *  @param[in] cbfun The new callback, or `NULL` to remove the currently set
  *  callback.
  *  @return The previously set callback, or `NULL` if no callback was set or an
- *  error occurred.
+ *  [error](@ref error_handling) occurred.
  *
  *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
  *
@@ -3538,8 +3542,10 @@
  *
  *  @param[in] joy The [joystick](@ref joysticks) to query.
  *  @param[out] count Where to store the number of axis values in the returned
- *  array.  This is set to zero if an error occurred.
- *  @return An array of axis values, or `NULL` if the joystick is not present.
+ *  array.  This is set to zero if the joystick is not present or an error
+ *  occurred.
+ *  @return An array of axis values, or `NULL` if the joystick is not present or
+ *  an [error](@ref error_handling) occurred.
  *
  *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
  *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
@@ -3570,8 +3576,10 @@
  *
  *  @param[in] joy The [joystick](@ref joysticks) to query.
  *  @param[out] count Where to store the number of button states in the returned
- *  array.  This is set to zero if an error occurred.
- *  @return An array of button states, or `NULL` if the joystick is not present.
+ *  array.  This is set to zero if the joystick is not present or an error
+ *  occurred.
+ *  @return An array of button states, or `NULL` if the joystick is not present
+ *  or an [error](@ref error_handling) occurred.
  *
  *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
  *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
@@ -3604,7 +3612,7 @@
  *
  *  @param[in] joy The [joystick](@ref joysticks) to query.
  *  @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick
- *  is not present.
+ *  is not present or an [error](@ref error_handling) occurred.
  *
  *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
  *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.