Project of the Month, September 2005

MinGW - Minimalist GNU for Windows

Description of project

MinGW (Minimalist GNU for Windows) provides open source tools that target the Windows platform using the Microsoft C Runtime Library (MSVCRT.DLL). MinGW headers and import libraries are licensed in the public domain to give other open source projects the ability to distribute a set of headers for the Windows operating system and C runtimes without licensing issues. The project offers MSYS as a minimal POSIX system for the ability to execute the configure utility to create the make file in typical GNU application fashion.

Trove info

  • Development Status: 6 - Mature
  • Intended Audience: Developers, education, information technology
  • License: OSI-approved open source, public domain
  • Operating System: MinGW/MSYS (Microsoft Windows), all 32-bit Microsoft Windows (95/98/NT/2000/XP)
  • Programming Language: Ada, C, C++, Fortran, Java, Pascal
  • Topic: Build tools, code generators, compilers, debuggers, interpreters
  • Translations: English
  • User Interface: Win32 (Microsoft Windows)

Why and how did you get started?

Colin Peters began by supplying a set of header files and an import library for the MSVCRT.DLL (Microsoft Visual C Runtime) library. These were to be used by the Cygwin compiler set with special specs files that introduced -mno-cygwin. Jan-Jaap van der Heijden wanted to build applications with a native build environment without the use of the Cygwin library, so Jan-Jaap went to work on binutils, GCC, and make to produce the first compiler, assembler, and linker tools producing native code without the use of Cygwin.

For the Windows API, Cygwin was using a limited set of headers and libraries provided by the Free Software Foundation. We found that set too restrictive in licensing terms so Anders Norlander provided a more comprehensive set of Windows headers and import libraries and gave it a simple license. Later the license was converted to public domain with permission from Anders.

Mumit Khan pulled all of the pieces together and began maintenance on the MinGW suite. At first he used the Cygwin lists for MinGW community communication. Eventually MinGW had enough members that Dale Handerson established a list on one of the "freely available for allowing advertising" list management sites. A year later, Mumit wanted someplace to control the development pieces; he found SourceForge, and that is where we are today.

What is the software's intended audience?

MinGW targets developers of Windows programs and porters of existing software as well as the newbie programmer/analyst just wanting to learn a language without the expense of a commercial compiler.

How many people do you believe are using your software?

We don't know. Download and page view trends have been increasing.

What are a couple of notable examples of how people are using your software?

One notable example is in the Windows build of Osiris, as is explained in the Syngress Publications book "Host Integrity Monitoring Using Osiris and Samhain" by Brian Wotring. Another example is the Dr. Dobb's articles by Al Stevens, the creator of the Quincy IDE.

What gave you an indication that your project was becoming successful?

The increase in list and forum postings, and the increase in support requests and bug reports. We see more hits from the search engines for people supplying ports of libraries and applications that are complimentary to MinGW.

What has been your biggest surprise?

One was a support request from the ACE/TAO team when its Windows build process broke after an upgrade of MSYS. Another was a support request from a Windows R&D analyst.

What has been your biggest challenge?

Time, of course -- wanting to do more and more with less and less time.

Why do you think your project has been so well received?

I think the project is well-received due to the community participation in the project. We provide a service to developers who wish to have a common build method between *nix and Windows platforms.

Where do you see your project going?

I see the project becoming a de facto standard by all open source projects for Windows builds.

What's on your project wish list?

I'd like to free up some of my time so that I can spend more time with it. From an application view, our installer needs some work, and I would entertain offers from anyone with spare time to take over its development and create a better product. We are also developing a mingwPORT product that gives a common interface to building source with the MinGW compiler set and user-created patches applied at the time of source download. I'd like to see the compilers, assembler, and linker better support GCC's DWARF exception handling, Microsoft's Structured Exception Handling, an IDL compiler, resource editors, and the like.

What are you most proud of?

I'm most proud of the MSYS environment toolset. It has aided many open source projects in porting *nix software and providing a common build process for it.

If you could change something about the project, what would it be?

More active developers.

How do you coordinate the project?

Coordination of the project is based on the applications each active developer supports. The mingw-runtime and the w32api packages tend to be supported by the community, with updates to CVS via patches supplied by the community. No particular developer is assigned to review those patches; rather, it is based on who gets to it first.

Do you work on the project full-time, or do you have another job?

I supply 24x7x52 support for applications in production.

If you work on the project part-time, how much time would you say you spend, per week, on it?

I try to spend 1 to 2 hours of the weekday and as much I can manage on the weekend (typically on one hour or less).

What is your development environment like?

My development is done on a Windows laptop running XP Pro or XP Home. MinGW supplies compilers so I use the ones we supply.

Milestones:

Since MinGW provides packages that others release, our milestones are keeping up with their changes. We typically do not support the first of a major release (the x.0 release) from GCC, as we've found that it has too many issues for our lone developer/porter to properly handle.

For w32api, most of those changes are dependent on others uses of APIs that are newly introduced by Microsoft or APIs that have yet to be used by one the members and patches for the new API to be submitted. Those changes are typically released when I think it is time for a release.

For the mingw-runtime, most of those changes are come from the addition of extensions to the vendor-supplied runtime in support for the C99 specifications. Extentions are also provided to emulate some POSIX functions that are not provided by the vendor runtime as well; the POSIX extentions are being kept to a minimum and are highly scrutinized before being added.

For the future, I've start a mingwPORT sub-project that needs some maturing. I hope to see the number of mingwPORT packages grow in the future, and to have others to join in the process of supplying mingwPORT packages. I've setup a tracker for submission of the mingwPORT packages, along with a mail list and a forum to discuss them.

How can others contribute?

Signing up is easy -- just ask. Send an email to mingw-dvlpr-admin@lists.sf.net with your recent past history and how you plan to help. The tasks are varied, with an immediate need for a package installation developer/maintainer. Another need is www.mingw.org site maintenance; the site is getting old and needs work. Work with compilers and linkers (GCC and binutils) needs a few more developers for the Windows support. And we need help with release management and keeping the distributed packages up to date.


More projects of the month


Project Name: MinGW - Minimalist GNU for Windows

Project leaders:

Name: Earnie BoydEarnie Boyd
Age: 52
Occupation or experience: 3 years; developing, designing and analyzing packages, code, and implementations within the business world
Education: Associate Of Science in the field of Computer Science
Location: Ohio, USA

Name: Luke DunstanLuke Dunstan
Age: 24
Occupation or experience: Full-time programmer for 3 years, working with Windows, MFC, Windows CE, and some legacy embedded systems
Education: B.Sc. (Computer Science)
Location: Perth, Western Australia


Key developers

There are many, not all of whom I know, but without Mumit Khan MinGW would not have had its start on SourceForge. Danny Smith actively participates in GCC and binutils windows support.

Quote about SourceForge.net?

The range of free services SourceForge provides is unparalleled. It has been a great catalyst to open source development in general.

Why did you place the project on SourceForge.net?

SourceForge was just becoming popular when MinGW moved to it. Prior to that, we kept the various pieces in notes on personal computers. We were using a "free with advertising" list service and were tired of the advertising and popups.

How has SourceForge.net helped you?

SourceForge helps by providing the Web server, download server, mailing lists, request trackers, and other services for organising and coordinating development and to help provide user support. It has also helped me find other open source software that I am interested in.

The number one benefit of using SourceForge.net is:

Having access to high performance servers with services that most projects would not have the resources to maintain themselves.