WinLibs design philosophy

Winlibs aims to become a development ecosystem for Microsoft Windows developers, that addesses a number of issues by adhering to a set of design decisions.

Target Windows

The goal of winlibs.com is to provide a collection of tools and libraries targetting native Microsoft Windows to be used on Microsoft Windows.

It is possible to use MinGW-w64 on other platforms (like Linux for example) to build Windows software - a practice known as cross-compilation.
However this is not easy for a novice user, especially if this user is more at home in a Microsoft Windows environment and maybe not even familiar with a command line environment.
That is why the focus of winlibs.com is entirely Windows. No knowledge of other operating systems should be required. And if an IDE is used no knowledge of command line should be required either.

Improve software portability

While focussing on Windows, most of the tools and libraries used come from the Linux and Unix-like world.
Since the same tools are shared (for example the GNU Compiler Collection) it is easier to write software that also runs on other operating systems (like Linux or macOS).
And on the other hand, if code exists on other platforms it may be easier to port them to Windows.

Selected tools

Compiler

In the past there have been several open source solutions to build software for Windows:

The compiler tools provided by winlibs.com are based on MinGW-w64 primarily in combination with the GNU Compiler Collection, but other build software has been added like LLVM/Clang and various assemblers.

Shell

As a lot of open source software was originally not intended for Windows, a Linux/Unix like shell is often needed to be able to build this software (for example when Autotools are used):

MSYS2 comes with a package manager that also allows installation of its own builds of MinGW-w64 and GNU Compiler Collection, however these will not be used as they do not always follow the same principles as winlibs.com.

Threading model

MinGW-w64 can be built with 2 different multithreading models:

To maximize compatibility and portability the posix threading model was chosen. Applications can still use Win32 API or pthreads API.

No mixing

Certain things should not be mixed together, as they often lead to problems:

Coexistence

The winlibs.com ecosystem does not have a Windows installer, so it doesn't need administrator rights to be installed and it does not modify the system (for example by writing to the Windows registry or changing the PATH environment variable).
Simply extracting the standalone package is enough to get started.
You can even put it on a removable drive (like a USB-stick).

Multiple winlibs.com toolchains can exist on the same system in different folders (for example 32-bit and 64-bit or even different release versions).

Since the system is not modified other installed build environments won't break (like for example MSVC).

This makes it easy to try out. To remove, simply delete the folder.

Don't reinvent the wheel

We live in a reality of open source and knowledge sharing.
A lot of the time it is not necessary to reinvent things. Sometimes the thing you need is already available. Why reinvent it if it has already been made? Chances are the existing solution is already more mature and has already solved issues you haven't even encountered or thought of.
This is why winlibs.com plans to offer a large collection of libraries for Windows, many of which were ported from other platforms like Linux.
But also the tools provided by winlibs.com, like the MinGW-w64 and the GNU Compiler Collection, use the same libraries.

Eat your own dogfood

The phrase "eat your own dogfood" refers to using your own product.
Everything in the winlibs.com ecosystem is built with components from the same ecosystem.
For example: each release of the personal build of MinGW-w64 and the GNU Compiler Collection is build with itself.

Support winlibs.com

If you like this project and would like to support it please consider donating.