Microsoft Releases WTL To SourceForge
prostoalex writes "Microsoft's WTL (Windows Template Library) toolkit source code has been released to SourceForge.net [also part of OSDN, like Slashdot.] InternetNews explains that the toolkit allows a Windows developer to create quick GUIs in C++. According to the project page, WTL extends ATL (Active Template Library) and provides a set of classes for controls, dialogs, frame windows, GDI objects, and more. WTL is licensed under CPL, which is the license Microsoft chose for the SourceForge release of the WiX installer."
Interesting though, it's incompatible simply because it requires that the software licensor GIVE more rights than the GPL does.
The specific area of conflict is patent licenses... the GPL says nothing about them, the CPL grants them.
WTL has been a bit of an embarrassment for Microsoft.
It started life as an MSDN sample app, but (to the surprise of everyone), people started actually using it. It fits nicely between the niches of MFC and ATL, supports a nice big chunk of what you need to do to get a desktop app running, and does it in a very clean, STL-friendly way. I read in an interview that some folks at MS thought it was a major mistake to release it; fortunately for them (at the time) it was pretty obscure.
There's some history of WTL at WikiWiki.
I remember way back then there were a couple of calls for Microsoft to "give it away" (in terms of control, not price--it's always been gratis), but I suppose the time hasn't been politically right within Microsoft until the recent popularity of their installer program release.
The ironic thing is that the CPL is almost identical to the GPL in its features (the CPL has some patent clauses which the FSF are thinking of incorporating into the next version of the GPL), including copyleft which Microsoft has been so vocal in opposing in the past.
were you expecting to see a sig here? perhaps you'd rather see the inside of an ambulance!
Baffling!
Microsoft has actually released open-source software.
The CPL was developed by IBM and is OSI approved.
OSI approved
more info
John Hancock
WTL, which is basically a one-person project at microsoft, doesn't really get enough attention of developers.
It's a great lightweight wrapper around Win32 API, does not depend on any external DLLs (like MFC etc).
The only problem with WTL, up to including this release, is that there is absolutely no documentation - there
are a few projects documenting WTL3.0 or older exist, but they are not maintained anymore. Hopefully once this
project is on sourceforge, people will be fixing bugs *and* writing documentation. I'm very looking forward
to this.
The WTL proves that there are some *very* good people at MS: They basically took MFC and redesigned it around templates and the STL; no MFC runtime dlls and even VC6 produces tiny exes that run wickedly fast. They even wrote a VC6/7 addin so you can use the project wizard to create a boilerplate project as a starting point. And to top it off, the two developers were (are?) very active on the ATL mailing list and responded to questions/complaints/bug reports. Way to go guys!
... has the same interface. Go figure.
That all said, Microsoft did practically everything they could to squash this project; it was originally installed as an "oh, by the way" in their SDK package (and not enabled by default...you had to go hunting for it) and then they removed it entirely. Official communcations always seemed to revolve around the message that "We acknowledge that it exists, we would prefer you not use it, and no we're not going to tell you why." I guess they had some fear that everyone was going to dump the millions of lines of existing MFC code for much better written code that
Trust me from one who has used this library in apps that reached production: this is a true gem amist all the cubic zirconia that MS puts out.
-1: Lying about the GPL
Put in other words, that means
Now, as to the CPL "granting" patent licenses, what does that mean? The CPL says:
The patent license shall not apply to any other combinations which include the Contribution.
To me, that sounds like you've only got a patent license until you modify the code... and then your new "combination" is infringing again. (But I haven't read the rest of the CPL quite carefully enough to know if there's other wrinkles... such as a special definition of "combination", prehaps)
But from that quick glance, the CPL is less "Free".
OSI CPL
GPL compatiable
Common Public License Version 1.0
This is a free software license but it is incompatible with the GPL.
The Common Public License is incompatible with the GPL because it has various specific requirements that are not in the GPL.
For example, it requires certain patent licenses be given that the GPL does not require. (We don't think those patent license requirements are inherently a bad idea, but nonetheless they are incompatible with the GNU GPL.)
they will almost certainly NOT accept source from other people; (although they may take suggestions, i'm sure).
It doesn't work like this. To get a project hosted at sourceforge, you have to choose a license from a variety of FOSS models (GPL is one, there are many others).
There is nothing stopping someone taking this code and forking it, if the (presumably Microsoft-based) project admins won't take their patches.
Really. MFC works okay if you want stay on the path, but get off the beaten track a bit - say to implement something in OLE like an OLE message filter - and it becomes a nightmare. Half the methods are not virtual compelling you to cut and paste whole classes to change a few lines. I've literally copied huge chunks of MFC to change a function that I could not override.
And MS in their wisdom have tried to merge MFC & ATL into atlmfc with duplicate classes galore. Now they're trashing ATL by deprecating some of the tried and trusted conventions such as object maps in favour of meta info that ties ATL tightly to VC++7.x. Still, ATL is fast and produces very tight code compared to MFC.
WTL works much like ATL, and neither is particularly hard to learn assuming you've seen any STL, MFC, wxWindows etc. in your life.
Interestingly, no one has pointed out that WTL depends on ATL. The CPL'd WTL depends on the proprietary ATL. So its use is rather limited. It would be great to see MS open up MFC, ATL and WTL since it would make porting apps to Wine a lot easier. Perhaps that's why it is unlikely to ever happen.
Woah. Hold your horses there pal. Quotith gnu.org:
So the FSF simply states that the CPL has extra clauses that aren't necessarily bad. The FSF is *not* shy about saying something is bad when they think it is. Fact is there are a lot of non-GPL compatible licenses out there. This is not like saying the CPL is OSI approved, but not FSF approved.
I know some of the people that worked on developing the IPL (the predecessor to the CPL). They worked very hard to make a license that would be acceptable to the community. The GPL is vague on patents. Unfortunately in the corporate world, you need to be more specific.
I applaud Microsoft for using the CPL. Keep in mind, the LGPL cannot be used with C++ code without a special clause (see libstdc++ in GCC for more info on this).
int func(int a);
func((b += 3, b));
Yes, it does. Unlike Sun, Microsoft chose an existing OSDN-approved license.
It's the same license, for example, that Eclipse uses.
Why can't you read yourself?
Some relevant parts:
When the Program is made available in source code form:
a) it must be made available under this Agreement; and
b) a copy of this Agreement must be included with each copy of the Program.
Contributors may not remove or alter any copyright notices contained within the Program.
Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
The license expressly grants any patent licenses as well. It also allows for closed source binary-only distribution.
Did they really claim this? I'm too lazy to dig up old articles, but I thought the objection was to the GPL in particular. And for projects like this, they are specifically avoiding the GPL, which is consistent with their earlier claims.
I'd rather be lucky than good.
they may not denounce open source in general, but they sure don't like the GPL.
bill gates has made comparisons of GPL software to viruses, cancer, and pac-man.
I've written a few WTL programs, and am rather fond of this lightweight wrapper over ATL. WTL allowed me to create small, tight programs without the overhead (and poor design) of MFC (which was created before templates were added to Visual C++).
WTL has always been something of a dirty little secret: it wasn't installed by default by Visual Studio, and the README files suggested that it was an internal project unsupported by management. Yet those of us who disliked MFC found WTL to be quite useful, despite Microsoft's "official" attitude.
As for Microsoft releasing this as Open Source -- MS management never valued WTL in the first place, so "giving it away" is merely a public relations move.
All about me
Microsoft denounces Linux, which is a competing operating system. They don't necessarily denounce open source software in general (at least, not that I've heard of.) That would be sort of foolish...I mean, you have to denounce a rival's products, that's obvious. But to denounce the way he makes them when other world class software vendors are considering them would be shooting yourself in the foot.
c net
From http://news.com.com/2100-1001-270684.html?legacy=
Earlier in the year, that feature led Microsoft Chief Executive Steve Ballmer to call open-source software a "cancer" and Windows leader Jim Allchin to call it "an intellectual-property destroyer."
WTL "source" has always been "open", in a sense that WTL is a C++ template library with all the code in the header files, which were the source bits you would get if you download WTL71.exe directly from microsoft.com.
The changes to WTL 7.5 hosted on sourceforge is inclusion of the source code for the WTL appwizard and some samples (which were available elsewhere before).
Wrong.
:)
WTL wont work with Visual C++ Compiler Toolkit because WTL requires the Active Template Library which is (unless something has changed) only available with full versions of Visual C++.
Therefore, the WTL is only useable with visual C++.
Now if they open sourced the Active Template Library as well...
2) Hmmm... now I'm confused. Did you miss the slashback? Or did I miss the slashbackback that took it back? Perhaps we shan't know till they actually release it.As for the topic at hand, WTL was essentially free for windows development anyway and I'd be amazed if it is used for anything else. Also, I suspect MS feels it is or will soon be an ancient relic from the times before
it's pure win32. It's the same thing WTL has always been. A cool, lightweight version of MFC with no dependencies.
You can't win Darth. If you mod me down, I shall become more powerful than you could possibly imagine
WTL code has been avialible out on web sights and in Windows documentation for at least 3 years now ( I know because I used it in one of my apps) and the liscense for it was pretty much open source ( ie freely distributable / downloadedable ) all that time. Actually they tried to squash the thing for a while. It has been mostly user supported all that time because it is code that "accidentally" escaped from thier labs. Also, WTL is a alternative to using MFC's which is the technology they were pushing at the time. I think what they are doing is tring to get some free publicity in the OSS world by publishing something as OSS that already was. Either that or someone in microsoft who likes WTL wants to see it kept alive and sees this as the best way.
âoeTolerance applies only to persons, but never to truth. Intolerance applies only to truth, but never to persons.