The Artima Developer Community
Sponsored Link

Prescriptions, Proscriptions, and Prognostications
Why do Open Source?
by Matthew Wilson
April 26, 2008
A few days ago I was in the office of one of my clients, talking to the dev guys about Pantheios (what else?!), and they were asking why I do open-source. The resulting discussion was quite illuminating, not least to me, so I thought it might be useful to discuss it here and see why other people do it.


Recently, I was talking with the development team at one of my clients about introducing some open source libraries into their product suite, as we work on refactoring it and getting it modernised and the code base under control. As we talked about the various open source libraries available, including several of my own, the guys asked me why I do open source. I told them a little story of humbling experience of failure:

"Long ago (in the mid/late 1990s), I created a powerful set of Windows Custom Controls. In this panoply of fearsome weaponry resided an extended List Box, with multi-columns, floating editable cells, individually coloured cells, rich clipboard functionality, context menus, check-box selection, and sophisticated automatic sorting functionality. Quick on its heels (over the course of a year) came extended Combo Box, List View, Progress Bar, Status Bar, Size Grip, Edit Bar, Edit Cell, Button Box, Hex View, Image Button, Hyperlink, and Context Help controls, all of which were dripping with cool (and easy-to-use) features. To this day, they contain functionality that is not available in Windows itself.

The initial implementations of the first couple were written in MFC (!), as that was my main tool for writing C++ at the time. (I learnt C/C++ on various UNIX flavours at Uni, and then used Borland Turbo C++ in my post-graduates research for three years, but then went to VC++ 1.5 in my first job. The vestiges of each of these experiences are still in my practice: I always define the nul-terminator as '\0'; I always save my files about every 5 seconds with a flash of the keyboard that is visible neither to the naked eye nor to my consciousness; I use m_ as the prefix to my member variables)

Use of MFC was quickly dispensed with, as the limitations of being coupled to such a wretched pile of crap became evident to me. In fact, it's fair to say that my deep understanding (and abject loathing) of coupling was formed in those days, and it informs my practice still. Those of you who grok shims may give pause to thank the evil that is MFC: being stymied by its coupling, and wanting to generalise the manipulation of windows between MFC, the "new" ATL, and my own window fa├žade types led to the first attribute shim, get_HWND(), which now resides in the STLSoft libraries.

Anyway, back to the custom controls. I can remember thinking at the time that I would be able to sell these, along with the SDK, to clients who wanted sophisticated and easy-to-use windowing components all over the globe, and then be able to retire and ride my bike forever more. It didn't quite work out like that. I was smart enough (but only after I'd spent all the effort) to realise the daunting challenge it would be to control installation and version, handle environmental issues and bug reports, and manage the trade-offs between protecting intellectual property and hindering users. And then there's the hassles of the financial side and the daunting nature of the warranties. Long story short is that the controls were never commercialised. They see action in various bespoke projects for clients from time to time, as well as in several of my internal / free tools. But all that effort has never seen a direct payoff. The payoff in learning was immense, however, and I'm very glad for it. "

(I've been occasionally asked by clients whether I can make them available, and I still may do so, though as each year goes by there seems less and less point, given the increasing use of .NET in the Windows GUI space. And then there's the issue that useful GUIs are disappearing in favour of browsers and other doodads for which you have to use a blasted mouse, since efficiency in the user interaction seems to have as little regard in modern thinking as efficiency in software. Anyhoo ... back on theme)

So, fast forward a decade or so, and now I'm a huge fan and user and creator of open source: I have several libraries of major/moderate/minor significance, and this year will see another handful. I spend a lot of time working on them, ostensibly for free, and it's the designs inside these libraries that generally hold my interest rather more than those in my commercial activities. What gives?

I'd suggest the following reasons, in no particular order of importance, are why I do it. Some of these may apply to others (and some may not apply to anyone without my particular psychological pathologies):

So, I'm a firm open source fan who sees a viable commercial side to it. Most of my coding work is open source, most of my paid work is consultancy, and each washes the hands of the other. And the best part is that my (open source) users and my (commercial) clients benefit from both aspects.

What's your take on open source? Why do you do it? What benefits do you glean?

Talk Back!

Have an opinion? Readers have already posted 4 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Matthew Wilson adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Matthew Wilson is a software development consultant and creator of the FastFormat, Pantheios and STLSoft libraries. He is author of the books Imperfect C++ (Addison-Wesley, October 2004) and Extended STL, volume 1 (Addison-Wesley, 2007), and is currently working on his third, Breaking Up The Monolith: Advanced C++ Design Without Compromise. He has published over 60 articles on C++ and other topics, and has served as columnist and contributing editor for C/C++ Users Journal. Matthew believes that code should be discoverable and largely self-documenting, and lives up to that by being a hopeless documentor. He can be contacted via or

This weblog entry is Copyright © 2008 Matthew Wilson. All rights reserved.

Sponsored Links


Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use