MiniGLUT is a subset of GLUT (or more precisely a subset of FreeGLUT) implemented in a single C source file, without any non-essential dependencies, not even the C library. You can use MiniGLUT by simply dropping two files: miniglut.h and miniglut.c into your project source tree, or by building MiniGLUT as a static library and linking with it.

The purpose of the GLUT library is to provide a simple and cross-platform way to create windows with an OpenGL context attached to it, and to deliver events to the application, without having to deal with the complexities of each and every window system, and without having to write platform-specific code for each one. GLUT is most suitable for programs which don't need to use any specialized features of any given window system, or to integrate event delivery into a larger I/O multiplexing scheme. In practice the vast majority of small to medium-sized OpenGL programs, fall under this category. MiniGLUT takes this a step further, and caters to the majority of GLUT programs, which just need to create a single window, and to receive and process window system events.

MiniGLUT does not necessarilly intend to replace a full GLUT library, like FreeGLUT, for hacking small to medium OpenGL programs. The original purpose of MiniGLUT is to replace a full GLUT library when it's time for release, in order to minimize runtime dependencies of the resulting binary. However the ease of dropping miniglut into your code can make it appealing as a GLUT-replacement from start to finish, for systems where installing a separate GLUT library might be a hassle (windows).

A second reason to use MiniGLUT is to ease porting of UNIX OpenGL programs to Windows, especially when using the microsoft compiler, where setting up and linking with a proper 3rd-party library is an ordeal in itself. Even more so if you decide to statically link, at which point you need to deal with the whole "MSVC runtime" chaos. Even if you decide to link MiniGLUT as a static library, instead of dropping it in your code, it still won't present any MSVC runtime compatibility issues, since it doesn't call any C library functions whatsoever.

The libc-independence comes at the cost of reduced portability due to the use of inline assembly. If linking with the C library is not an issue for your project, you can simply define MINIGLUT_USE_LIBC, which makes miniglut work on everything with a C compiler, but requires linking with libc.

MiniGLUT is in a very simple project, and is considered in a finished state. Some ad-hoc features might be added on a whim as long as they don't increase the code size too much, and don't add external dependencies, but no on-going development is necessary.