Post a Comment
Make sure you read the fine print on the license.
This is not OSS. It's a "read-only" license.
One of the more prominent theories circulating around goes something like this:
* MS gives read-only access to .NET source code.
* Developers review it. (Maybe mono developers?)
* Lawsuit time. Evidence shows that you looked at our code. MS kills mono or [insert_app_here].
RE: Microsoft Reference License
They will have no technical advantage over vanilla .NET, but they will get broadly advertised, and will be widely adopted by the 50% of the Internet composed of the MySpace generation.
I'm trying to think of a concrete example of what you're describing that has already happened in the *real world* today...
Considering the amount of open-source code already out there, I would expect this is to be a common problem (where 50% of the internet uses rip-off versions and thinks it is the real thing)...
Edited 2007-10-03 21:32
Which side of their reputation are you talking about?
The side that is known for keeping interoperability information under lock and key so they can continue to monopolies their position as the world's no1 desktop?
The side that is known to invite partners to develop for their platform only to release a competing product and bundle it for free with their OS?
The side that bullies OEMs into offering systems with only their OS preinstalled?
The side that is known for trying to take over the internet with an inferior product, then providing operating systems without the security mechanisms needed to securely connect to said internet there by leaving the door open for scrip kiddies to run riot causing millions of dollars in downtime and damages?
How about the side that bankrolls other companies to threatens the only thing it can't buy, steal from or muscle out of the IT industry, i.e. Linux, and when that fails, starts threatening with bogus IP violation charges it is unwilling (read unable) to provide any evidence for?
If MS is damaging it's reputation, surely that's a good thing?
How does this differ from any OSS project? Forks happen all the time. That's the risk of releasing source code.
So what if you look at the code? In most parts of the world the only problem is copyright, and it's not an issue unless you copy and paste the code. Or, to make absolutely sure, you use "clean room" development, where one developer looks at the original code, tells another what it does and the second developer writes new code from scratch, with the same functionality.
Software patents or reverse engineering are an issue only in some countries.
Yes, but all Microsoft have to do is make the allegations. They don't have to back them up, or prove them conclusively. Microsoft can claim that such and such app is breaking the licence, and it's up to the app writers to prove otherwise, not Microsoft. MS fires off some cease and desists to the ISP, and before you know it, Microsoft have spun an allegation into an anti-open source, anti non MS-vendor bit of PR.
There's only so many ways you can make a simple function return an answer. Making other programmers have to tip toe around Microsoft's specific implementation will slow down development and increase administration. Just look at the audit that had to be done on ReactOS because of Microsoft allegations.
At least spread correct information please. The audit wasn't done because of MS allegations, but because of allegations of people from inside the project and from related projects. MS never ever approached ReactOS about it.
Yes they do. If you bring charges of copyright infringement you have to back them up. Of course you do.
I don't see what ISP's have to do with this. If you meant hosting companies, they usually check around. They don't boot their paying customers for allegations alone.
Microsoft's track record means they are going to have to prove they don't have those kinds of nefarious goals.
However, I think some good could actually come out of this. If there are any perceptible people in charge over there, they may start to notice better bug reports, maybe even receive a few high quality patches, and some of the other benefits that come from open source, and begin to really understand the advantages.
Again, they are going to have to demonstrate that they are not evil though. There's just too much history.
was immediately skeptical about this being some sort of submarine type license, but looks okay..
From the FL
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, the Licensor grants you a non-transferable, non-exclusive, worldwide, royalty-free copyright license to reproduce the software for reference use.
"Reference use" means use of the software within your company as a reference, in read only form, for the sole purposes of debugging your products, maintaining your products, or enhancing the interoperability of your products with the software, and specifically excludes the right to distribute the software outside of your company.
Looks like a "submarine type of license" to me.
I support the idea behind the viewable source, but I strongly suspect it will be released under some kind of "read only" license, i.e. no compiling possible, etc.
Don't forget that Microsoft already released parts of the Windows NT and CE to some business partners before.
But IF they would release .NET under some kind of open source license, it could make quite a boom in the Java vs .NET case. But Microsoft is not that smart 
I think you are a bit behind the times, because Java is already free software under the GPL v2
. The source code has been released in the OpenJDK (http://openjdk.java.net) project with some minor binary stubs for those things that cannot be opened up.
The IcedTea project (http://icedtea.classpath.org) attempts to create replacements for these binary stubs with unencumbered free replacements and stubs. It will take some time before it's complete.
.Net is just a fad that will eventually die out on free software platforms, as there is no reason to come anywhere near it unless you really only strive for Windows compatibility.
.Net is not any better than Java except in that it is tied to a single platform (Windows) and can therefore make certain optimizations that are otherwise not available.
It is a lot easier to design something for a single platform/API/processor than it is to try to do what Java does.
.Net has a bit better performance as a result, but it lacks the ability to move stuff between systems - yes, even with Mono which will never be as complete as Microsoft's .Net implementation is. So your comment is quite a bit off the ball.
#1) Java class library source has been around for at LEAST 10 years, if not since it was first released
#2) The .NET VM is not going to be open, only the API. SUN is just making the move now to open their JVM.
#3) Java needs to watch out more on technical issues, like how .net is language agnostic, C# is java with a bunch of things fixed, and .NET GUI apps don't suck. MS doesnt need to open their JVM, all they need to do is port it to other platforms (or just get Novell to do it), and that is the final nail in the Java coffin.
The reason .net gui dont suck,
1. unlike Sun, Microsoft have a complete system with nice librairies. Microsoft need to keep its gui "modern" against competition (aqua, gtk, qt)
2. Sun is too political. SWT offer a far better alternative (wx in mono/.net/aqua/python), but because it is IBM's solution, Sun decide not to support it. Yet they fraud their developpers and supporter telling them that people really like swing and that it's fast.
> Yet they fraud their developpers and supporter telling them that people really like swing and that it's fast.
Actually sanctus, Swing is quite fast when done correctly. The greatest problem are Swing developers that don't correctly deal with the event dispatch thread that blocks repainting. With Sun JDK 1.6 update 5 (currently in early release testing) the *entirety* of Swing is rendered in hardware with DirectX on Windows. Pretty hard to get faster than that (unless you continue to block the Event Dispatch Thread).
If we forget the consumer desktop for a moment and consider the corporate/enterprise/government world, Java applications are very widely deployed. I have seen some .NET projects in the enterprises I deal with, and this restricted opening of the .NET libraries is definitely a help for them, but Java is still the "800 lb" gorilla in this space and will probably be for some time.
Edited 2007-10-04 20:30
When SWT came out, swing was slow (even if done correctly) and looked not only foreign, but unappealing. People were complaining about swing for years and Sun just didn't care a bit. Then IBM creates an amazing alternative that was faster than swing and the interface look native on every platform out of the box. IBM had listened.
It was too late, like Sun often do, before they start improving their product, they wait until customers were frustrated enough and create an alternative. Swing isn't alone, the whole jvm get nearly stagnant until .net was unveil.
They invest just more money where competition and development effort weren't needed.
Sun could have work with IBM to make the whole jvm more appealing for developers, business apps as well as end user in one shot. But they didn't want IBM to receive any credit. They politically played, against java and their customers.
Still today, swing feel foreign even with the nice themes, especially on Linux where it still look crap. Plus, it keeps burden the developer with extra work.
That is true, but as a consultant, I work for different clients, big enterprise and government. Java is still being use to develop server application, but when it comes to user interface, .net is becoming the standard. I worked for a government entity with more than 20000 employees that switch officially to .net. The look and feel wasn't the only issue, but it played big time. What people see is the GUI, if the GUI suck, they entire application/framework get tagged. Sadly, a very large amount of people dislike swing. That's good for consumer desktop and corporate.
I just hope the open source of the jvm will be more "open" and stop this over political attitude.
Edited 2007-10-05 14:39
[blockquote]
"Reference use" means use of the software within your company as a reference, in read only form, for the sole purposes of debugging your products, maintaining your products, or enhancing the interoperability of your products with the software, and specifically excludes the right to distribute the software outside of your company.
[/blockquote]
So this is nice debugging tool for .net software houses(one of which I work for), but short of some innovative reverse engineering tactics using a third party to review code, useless for mono or dot.GNU
OTOH, since this is "reference" code, some sort of parser could probably be written to extract useful information while shucking any "creative expression".
Meh, I wil continue to stay away from C# for anything nonWindows
Edited 2007-10-03 20:24
The thing is, with tools like Reflector, you don't really need the source most of the time.
Where this will be incredibly useful is for debugging, now we will actually be able to step through framework classes, which is quite useful, and one of the few things I miss about my Java development days.
This is not open source. At all. It just gives you the right download and distribute copies of the source provided you do not modify it or incorporate it into a product.
Basically, it's useful so that you can look at how the libraries work to make your own interoperable software (eg Mono).
It is not a submarine patent threat, as the license gives patent rights to anyone using the source, so long as the don't copy/modify the source. That is, Mono could use it to test compatibility or check how a function works, but they can't copy the code into Mono. So long as it's clear that they write the code cleanly, it's in theory safe.
Granted, IANAL...
Miguel de Icaza coments about it:
http://tirania.org/blog/archive/2007/Oct-03.html
Miguel de Icaza coments about it:
http://tirania.org/blog/archive/2007/Oct-03.html
Hmmm...
Something interesting I noticed in Miguel's blog is that Microsoft is changing the name of MS-PL (which is not the license being used for the .NET Framework sources) from "Microsoft Permissive License" to "Microsoft Open License" (I assume to appease the claim by OSI that "Microsoft Permissive License" is a misleading name).
I have to agree with the conspiracy theories. While I think this will benefit .Net developers I can't help but think that Microsoft will eventually use this to say open source "stole" from Microsoft. However, the reality is nothing can be done about this. Microsoft has every right to open it's source code and unfortunately ever right to claim somebody stole from it.
I just hope that if that day comes most people are smart enough to at least smell a rat.
Microsoft has every right to open it's source code and unfortunately ever right to claim somebody stole from it.
Actually, they don't really have "ever [sic] right to claim somebody stole from it" unless they have some amount of legitimate proof... Otherwise it's known as libel/slander/defamation.
They may, however, exercise their legal rights if they happen to find that someone has violated their copyrights and license agreements.
I do think this is going to be a positive outcome for .NET developers everywhere - but hopefully it won't turn into some slander-fest...
"Actually, they don't really have "ever [sic] right to claim somebody stole from it" unless they have some amount of legitimate proof... Otherwise it's known as libel/slander/defamation."
You did hear Microsoft claiming Linux violates 235 of their patents, right? It's quite clear they have no problem with libellous statements.
Considering that absolutely no one believes it, it is a statement without any power whatsoever, and even MS knows it.
If it scares a few PHB's off from deploying Linux then it will have shown that it has power. PHB's are absolutely no one and can therefore believe it.
It's probably true... Microsoft does have a lot of patents, and Linux implements a large amount of functionality. It's just that Microsoft doesn't have to show anyone information about this except those from whom it is accepting licensing fees. They don't want to sue customers and they don't want to sue end-users, so you won't see much of this except when they do a deal. The rest will be done quietly in confidential letters to big enterprise customers (the kind who might have a chance of getting Linux "for free" due to their ability to have a large in-house IT staff instead of paying RHAT for support). It is these people for whom the cost of linux must be made non-zero for Microsoft to compete there.
Think of it from Steve Ballmer's perspective (hard as that may be)... His company gets sued all the time for IP violations. Some are legitimate (the DEC case and the Apple case come to mind), but others are complete junk (cf. Eolas, Alcatel-Lucent). The industry (players like Sun, Novell, RedHat, and IBM) can't have it both ways: either IP laws apply to everyone or they apply to no one. Open Source does not magically exempt industry players from their obligation under patent law. This was never about individual developers or the independent OSS market... this has always been about big name vendors selling linux to big name customers.
You are right, but then again you, I and MS knows that they don't have to be believed by the majority. All they need is to plant the seeds of doubt in the mind of one pointy heired manager for them to gain a customer.
Seeming as how they are trying their best to scare of customers as it is (you know, all that WGA and DRM crap), they gotta do something! Right? ;-)
I never worked with .Net, so please be patient if I say something inappropriate, but ... isn't this announcement about something you have been used to do for years in Java ?
"offering the source code (with source file comments included) for [...] System.Collections" : how many times did you look into java.util.Collection ? maybe a thousand times? How do you manage to understand how your library works if you can't look into it?
How do you manage to understand how your library works if you can't look into it?
There's this concept that apparently has gone out of style where interfaces and implementations used to be properly documented so that people understood how they worked.
For many years, programmers used to somehow write software this way, without seeing the source code of the OS/APIs they used...
I agree with you. Generally I like to think of libraries as a "black box". And most Windows and .NET programmers do program that way.
But sometimes you'll run into a problem that isn't explained by the documentation. "Why the hell am I getting this exception??" Documentation never covers everything.
(Nor would you want it to, as it would unnecessarily bloat the documentation as well as tie it to the particular implementation details of the API, details that may change in future versions of the library.)
And even with the source available, one should not write code that depends on the exact source code since the underlying source can change. But programmers can use their own judgement regarding such matters. 
Not sure how much active development you do on .net Molly (you have mentioned your retirement before), but there is a very popular tool called Reflector, which is basically just a wrapper around the reflection apis, that disassembles any dll into very readable code. So, even though we havn't had access to the libraries, we have had the next best thing for a very long time now.
You covered two very common scenarios, now that we have the source the debugger can actually step through the API. Another one is if you want to extend a control that ships with the framework, you need to know how it works and what to override (extremely common, check out codeproject, codeplex, or any other .net open source site and youll see what I mean.).
(After reading Miguel deIcazas blog, he brings up another scenario I hadn't thought of, if you use the compact framework, and need some functionality that is in the standard edition, you can just copy the source)
As a side note, I would really like to see MS participate more in cross platform .net. As long as you still need a recompile, they would maintain the application advantage that windows has, while adding significant value to ISVs that are going to be porting anyways.
Actually, stuff like System.Collections, System.IO, etc has had the source available for awhile now through Rotor.
http://www.microsoft.com/downloads/details.aspx?FamilyId=8C09FD61-3...
But this new offering provides the code to a lot of the stuff on top of that lower-level stuff, as well as easily stepping through the .NET code in VS2008. I'm particularly interested in WinForms, WPF, and LINQ.
(I *was* hoping that this would include System.Drawing (it doesn't appear to), but now that I think of it the System.Drawing code is likely just a bunch of wrapper functions that do little more than call the corresponding GDI+ function, so the source would be of little value there.)
As side note, Microsoft has released code for the purposes of helping developers code and debug before, such as ATL and MFC (and of course, their CRT code).
Edited 2007-10-03 21:26
How do you manage to understand how your library works if you can't look into it?
The same way people created thousands of applications for Windows (Win32, DirectX, etc) without having the source code for those.. The same way you can use Adobe Photoshop, without having the source code for it - you understand the interface, you don't really need to see/know the implementation details.
What you need is good API documentation and that's it.
Overcomplicated, Overbloated, Overhyped, Overrated.
I'm sure there are many that love it, but given there's little to no portability (wasn't that half the point) I see no use for this framework.
(I used to dig it at one point, then found qt). Not saying qt is perfect, but at least it works on other platforms. (Yes I'm aware of mono).
Ok, you're right that's portability; but not provided by microsoft is what i meant to say I guess.
Portability in my opinion is of officially supported and released msil interpreters that would support the "write once - run anywhere" paradigm.
So technically, you're right
But you're wrong in assuming that small changes are required for true portability, imho.
Yes and no. You are very correct as in, if the system has a runtime then the code will run. The only problem with that setup is that only one company, more or less like Java up until recently, has the code and experience to develop and release this runtime (I know that IBM licensed the right to release their own Java runtime, but please bare with me;-). If MS refuses to develop a runtime for competing systems, so that those systems need to provide a reversed engineered implementation of that systems, then it ain't really a 'compile once, run anywhere' solution.
Sun develops give very serious support to as many platforms as they can. Furthermore, these platforms are being given a further bonus by Sun considering opening the source under the GPLV3, thereby attempting to negate any patent infringement issues. Non of these steps have been taken by MS, at least at this time.
The fact remains that, no matter how much verbal help MS gives to Mono developers; If they don't pitch in with the code, Mono will never be on par.
"The fact remains that, no matter how much verbal help MS gives to Mono developers; If they don't pitch in with the code, Mono will never be on par."
I think you will see more actual code coming from MS, especially since Novell and MS are working together on Moonlight. To get maximum value from that partnership, I think MS would be smart to help with Mono
This came out of the blue and I had no inkling of this. I guess it makes sense though because of Reflector. With Reflector (by Lutz Roeder of Microsoft), you can take any function in a .NET assembly and see a pseudo-C# representation of that function (it reconstructs the C# from disassembling the IL). This decompilation ends up being uncannily like the original thing, so it's about as good as viewing the source without comments. Microsoft isn't really giving anything away that people couldn't take before, but they're bringing the benefits of seeing good .NET code to the average dev who may not use Reflector.
I've long thought that Microsoft should release the KMDF and NT Kernel sources under a non-buildable license like the MS-RL. The only reason I say non-buildable is that we don't want multiple slightly different versions of Windows to get out there (not to mention that Microsoft doesn't want to lose control of their OS). Maybe if this release doesn't lead to problems, they will be able to do this.
As Code of Java is already available, MS had to do the same thing to compete. Unfortunately they tend to be "open" only on things where they aren't holding a de facto monpoly. For that reason we won't soon see source of directx/3d, win32, network/auth/mail protocols, office formats nor many other API libraries, as those are mantaining their Windows lock-in.
But well, this will be helpful to Mono. Coders won't have to reverse engineer those libs, they will have help from someone looking at code and feeding them with information on API implementation details and quirks (a clean-room procedure).
But source isn't everything. It can help, but still much effort is required to reimplement such a huge framework.





