Painting by Numbers with Paint.NET

It’s a new year, time for focusing on those New Year’s resolutions. One of my resolutions was to spend more time outdoors, but it’s the rainy season so I’m stuck indoors for now. In that case, I decided to put my cool new presents to good use. I took to the Web to research photo manipulation software to go with my new digital camera.

Since I’m not the best photographer, my pictures need some touching up to be good enough to send to the grandparents. I quickly discovered that I needed something more sophisticated than Microsoft Paint. As I was deciding whether to go the commercial route with Paint Shop Pro from Jasc Software or Adobe Photoshop, or the open-source route with GIMP, I came across Paint.NET, which defies easy categorization.

In the case of Paint.NET, there seems to be more going on. My attention was quickly diverted from the features of the product to how it came into being and its open-source nature.

The Concept Behind Paint.NET

Paint.NET is positioned as a free replacement for Microsoft’s Paint software and also as a possible replacement for expensive commercial photo manipulation software. It started as a project of a student of Washington State University named Rich Brewster. Brewster is now a Microsoft employee and serves as Microsoft’s project mentor for Paint.NET development.

Whether or not the program got Rich his job after college, the increasingly common practice of writing an open-source project as a strategic career move is a win-win all around. The developer gets a better job, the employer gets to see the job candidate’s talent level before committing to hire the candidate, and the consumer gets a good software product.

It is hard to see exactly where Paint.NET fits in the marketplace. It is not a good replacement for expensive commercial image manipulation applications because for professional graphics manipulators, cost is not the determining factor for which software they use. They probably spend much more for ink cartridges than they do for a package like Adobe Photoshop. For the hobbyists, there are other low-cost alternatives or open-source projects that have more of a history behind them.

Beyond the Lens

A good photograph leaves the viewer speculating about the world beyond what the lens can see. Paint.NET left me speculating about what is behind the program. For example, it was developed at a university but with help from Microsoft, so it is written to run only on Microsoft operating systems. It is purportedly open source, but a closer look reveals that not all of the source code is open.

Installing the software requires Microsoft’s .NET 1.1 environment, which is conveniently loaded by the Paint.NET install process if it does not already exist. Rather than install it, I decided to first examine the source code and licenses included in the source.

Borrowing from the Source

In the true tradition of open-source programming, Paint.NET borrows code from others rather than trying to reinvent the wheel. The source code includes code from ZipLib, which is derived from Classpath, a compression library owned and licensed by the FSF under a modified GPL. Since other parts of the program involve Microsoft “redistributables” with the EULA having prohibitions against combining it with GPL code, this is somewhat surprising.

Nonetheless, it seems that someone has done their homework, because Classpath is licensed under a modified GPL that loosens the downstream constraints imposed by the GPL for combining the library with executable code. The modified GPL allows for independent modules to be licensed under license terms other than those imposed by the unmodified GPL.

Open-Source Illusion

Paint.NET includes code for Skybound’s VisualStyles. This apparently involves some serious hacking to get user interface features to work right, so interface designers might want to learn from Paint.NET how it is done. Skybound’s Web site does not allow for open disclosure of its source code. It could be that WSU negotiated a license beyond what is available to the public, but a license to release Skybound’s hacks nonconfidentially would remove any trade secret restrictions Skybound placed on its code.

Looking closely, I noted that the Paint.NET source code does not actually include Skybound’s source code. Instead, it just includes a DLL file. For those who are not familiar with the Windows operating system, or Linux users pretending to forget, a DLL (Dynamic Linked Library) file is a Windows-compiled object file that is not human-readable. As far as I know, DLLs can only be used on computer systems running the Windows operating system. In other words, Paint.NET is not as open as one would expect.

Paint.NET also includes the Windows Image Acquisition (WIA) Library v2.0, which Microsoft licenses under a EULA that allows for redistribution but not combination with GPL-ed code. Of course, the source for WIA is not included with Paint.NET.

Life Finds a Way

In some ways, software is like the dinosaurs in Jurassic Park — they are engineered with limits so that they cannot reproduce, but life always finds a way to propagate or it must extinguish. Microsoft can try to use Paint.NET to bring more image manipulators back to the Windows platform, but unintended events might occur. Users might just ignore Paint.NET, preferring GIMP or Photoshop. Others might take Paint.NET and migrate to an open platform where the agenda is simply to make a good paint program, not a good paint program that draws users to Windows for image manipulation tasks. Of course, they still have to deal with the fact that not all of the code for Paint.NET is included in source form.

At least the Paint.NET license does not provide constraints on use of the source that is provided beyond the licenses from code borrowed from other projects, and the need to tie into the .NET framework. Anyone can bypass the latter requirement using open-source .NET replacements such as Mono.

Picture Perfect

At this point, Paint.NET is no masterpiece. It might not even meet a compelling need as a program, since those accustomed to commercial, paid software already have mature solutions and open source fanatics will stick with GIMP.

But art is in the eye of the beholder and while it may not be picture perfect, Paint.NET could grow into an interesting experiment. If it garners significant market share, it would help Microsoft achieve image manipulation mindshare and tie its users to Microsoft’s operating systems. Even as an almost open-source program, with Microsoft’s backing it could become a serious player in the image manipulation arena.

It could also open the door to more software that looks like open source, but is really just a photo image.

Phil Albert, a LinuxInsider columnist, is a patent attorney and partner with the San Francisco office of the intellectual property law firm Townsend and Townsend and Crew LLP.

1 Comment

  • > As far as I know, DLLs can only be used on computer systems running the Windows operating system.

    Technically true, but not 100% true. Any Linux system with WINE installed can use native dlls for Windows. In fact, once in a while it is the only way to get some things to work properly. The only time this fails completely is when the dll or application uses some ‘feature’ of the XP API or the like which is ‘undocumented’. Microsoft’s way to making sure only they can code applications that take full advantage of the OS under the real Windows XP and that everyone else will hopefully be unable to emulate it.

    For example, I am still trying, after several years, to find usable documentation on the feature built into all ‘containers’, which includes anything you can glue a button, image, or other object to, which allows you to move around those things in a ‘design mode’. A few people have figured it out, but licensing someone else’s $200 replacement for MS’ form designer isn’t any more useful that using the one that comes with Visual Studio from MS themselves, especially if neither one can be directly adapted to what I am trying to do. How to make controls that respond to it is well documented, but how to actually turn the mode on or off is miraculously not documented anyplace and the only mention of it, even on MS’ site, is a reference to an out of print book from a third party that supposedly gave code for a dll that could extend VB to do it. Gee.. Could you provide the $@#$ code? Nope, MS doesn’t want anyone to find it out for free. If it exists at all, you have to drudge through the rainforests of the computer world looking for the fabled city of, "Oh, that’s how it works!", if you want to find it. Frankly, as a programmer and to some extend developer, this ‘theory’ of customer relations doesn’t make me too happy. That they are pulling something similar in Paint.NET however is not a suprise.

    Oh.. And on a side note… When is someone going to fix these bloody forums so they don’t blank lines between paragraphs? Its going well beyond annoying….

Leave a Comment

Please sign in to post or reply to a comment. New users create a free account.

LinuxInsider Channels