News: .NET framework source code available soon...

  • Thread starter Jon Skeet [C# MVP]
  • Start date
J

Jon Skeet [C# MVP]

I'm sure the net will be buzzing with this news fairly soon, but just
in case anyone hasn't seen it yet:

Microsoft are going to make the source code for the .NET framework
(parts of it, including the BCL, ASP.NET and LINQ) available both for
viewing and debugging into.

I won't go into all the details here, as they're covered on Scott
Guthrie's blog:

http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-
code-for-the-net-framework-libraries.aspx


Any comments?
 
P

Peter Duniho

Jon said:
I'm sure the net will be buzzing with this news fairly soon, but just
in case anyone hasn't seen it yet:

Microsoft are going to make the source code for the .NET framework
(parts of it, including the BCL, ASP.NET and LINQ) available both for
viewing and debugging into.

[...]
Any comments?

You mean other than it seems that Microsoft is taking some of the best
ideas from the open-source movement?

First they release a free development environment that has very few
really important features missing, and now they are offering the actual
source code for .NET?

As if that weren't great enough, an even cooler part is that the source
will be copied on-demand according to the framework version you're
actually using.

The one major downside I see is the potential for finding .NET
applications where the author took the original .NET code and used that
to create their own custom version of some .NET class, negating one of
the primary benefits of using a framework: using the same well-tested,
broadly-deployed component that everyone else is using.

But I'm guessing that the people who are likely to do that would
probably find other ways to write bad code anyway. :)

I guess the one thing missing from this announcement is how this all
relates to a project like Mono. It would be pretty awesome if Microsoft
would allow the source code to be used for cross-platform
implementations of .NET, and could dramatically decrease the lag of
non-Windows .NET implementations behind the Windows releases.

Pete
 
J

John Duval

I'm sure the net will be buzzing with this news fairly soon, but just
in case anyone hasn't seen it yet:

Microsoft are going to make the source code for the .NET framework
(parts of it, including the BCL, ASP.NET and LINQ) available both for
viewing and debugging into.

I won't go into all the details here, as they're covered on Scott
Guthrie's blog:

http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-
code-for-the-net-framework-libraries.aspx

Any comments?

That's great news... it looks like quite a bit of the framework source
is going to be released. Did you see any mention of parts that they
are *not* planning to release? Scott's article made it sound like
they would be releasing more and more over time.
 
M

Marc Gravell

Well, that (esp. comment) will make debugging easier... I've grown
weary of trying to infer intent of some obscure corner via reflector!

Intersting times ;-p

Marc
 
J

Jon Skeet [C# MVP]

That's great news... it looks like quite a bit of the framework source
is going to be released. Did you see any mention of parts that they
are *not* planning to release? Scott's article made it sound like
they would be releasing more and more over time.

I suspect it's mostly just a matter of time at the moment. I'm sure
there will be *some* bits they won't release but hopefully they'll be
few and far between.
 
J

Jordan S.

Will I no longer need Lutz Roeder's Reflector? I was going to be learning
that, but now I'm wondering what the value may be of his Reflector if we can
now get right into the BCL source itself.

Thoughts ?
 
J

Jon Skeet [C# MVP]

Jordan S. said:
Will I no longer need Lutz Roeder's Reflector? I was going to be learning
that, but now I'm wondering what the value may be of his Reflector if we can
now get right into the BCL source itself.

Thoughts ?

Well, there are some other reasons to use Reflector. It does some funky
analysis of use (which I suspect won't be available in VS2008) and I
find it handy for analyzing the IL my own assemblies - a nicer
interface than ildasm, basically.

However, it'll certainly get a lot *less* use now...
 
M

Marc Gravell

Well, there are some other reasons to use Reflector.

Agreed; it will still be to first tool I turn to when I need to use
Reflection.Emit (which is thankfully rare) - i.e. write something
indicative in C#, and investigate the IL via Reflector. Simply, it is
just a lot friendlier than ILDASM ;-p

Plus of course trying to figure out why some non-MS 3rd-party code
isn't working as expected...

Marc
 
G

Guest

I hope Microsoft doesn't bundle the licence agreement for access to the
source code with the licence agreement for any other products like Visual
Studio 2008 or others. If they do, they can sue customers who have viewed the
source code for having done so and taken ideas from it. I wouldn't want to
view the source code for such a price. And for that reason, I wouldn't want
to be in a situation where if I had agreed to the licence agreement for, say,
VS2008, I would, by default, be also agreeing to the licence agreement for
the source code.

I think I see a future where I'll be doing all my .NET development with
Visual Studio 2005 and .NET Framework 2.0 if Microsoft should follow such a
path.

I actually loved .NET. Java is so slow doing everything. I haven't bothered
to learn Ruby or Python. I can't stand Linux for being so programmer
unfriendly. And I had left C++ behind for a long time.

I thought Microsoft was a company for software developers. I have been using
their technologies for over 13 years. Now, I think my programming days are
almost over. Unless I learn Ruby or Python, which are not that mainstream.
Nevertheless, I hope I can implement my ideas using them since I love coding
and it's all I want to do.

JJ

Peter Duniho said:
Jon said:
I'm sure the net will be buzzing with this news fairly soon, but just
in case anyone hasn't seen it yet:

Microsoft are going to make the source code for the .NET framework
(parts of it, including the BCL, ASP.NET and LINQ) available both for
viewing and debugging into.

[...]
Any comments?

You mean other than it seems that Microsoft is taking some of the best
ideas from the open-source movement?

First they release a free development environment that has very few
really important features missing, and now they are offering the actual
source code for .NET?

As if that weren't great enough, an even cooler part is that the source
will be copied on-demand according to the framework version you're
actually using.

The one major downside I see is the potential for finding .NET
applications where the author took the original .NET code and used that
to create their own custom version of some .NET class, negating one of
the primary benefits of using a framework: using the same well-tested,
broadly-deployed component that everyone else is using.

But I'm guessing that the people who are likely to do that would
probably find other ways to write bad code anyway. :)

I guess the one thing missing from this announcement is how this all
relates to a project like Mono. It would be pretty awesome if Microsoft
would allow the source code to be used for cross-platform
implementations of .NET, and could dramatically decrease the lag of
non-Windows .NET implementations behind the Windows releases.

Pete
 
J

Jon Harrop

JJ said:
I can't stand Linux for being so programmer unfriendly.

Really? I find Linux has much better libraries (e.g. Managed DirectX is
awful, no complex numbers in .NET), better documentation, faster and more
stable development environments (emacs vs Visual Studio Team Edition) and
better performance. Until F# came along, even the languages themselves were
vastly better under Linux.

Database and web programming and the only things that I find easier under
Windows.
 
G

Guest

When you use or develop for Linux, most things have to done using command
line tools, which I avoid if I can.

And is this the only point you thought you could comment on from my posting?

JJ
 
J

Jon Harrop

JJ said:
When you use or develop for Linux, most things have to done using command
line tools, which I avoid if I can.

I agree completely. However, I'm using F#, LINQ and the C FFI and these
contain several tools that only work from the command line. Moreover, DOS
sucks compared to bash. :)
And is this the only point you thought you could comment on from my
posting?

You make your position sound bad but mine is arguably worse. Some of our
products will only work if we break their license agreement. That's hardly
going to endear me to the platform...
 
S

Scott Gifford

[...]
The one major downside I see is the potential for finding .NET
applications where the author took the original .NET code and used
that to create their own custom version of some .NET class, negating
one of the primary benefits of using a framework: using the same
well-tested, broadly-deployed component that everyone else is using.

It looks like the license won't allow this (although that's not to say
it won't happen).

[...]
I guess the one thing missing from this announcement is how this all
relates to a project like Mono. It would be pretty awesome if
Microsoft would allow the source code to be used for cross-platform
implementations of .NET, and could dramatically decrease the lag of
non-Windows .NET implementations behind the Windows releases.

It looks like the license doesn't allow this, either.

It's a "view only" license, at least according to the information
here:

http://www.whurley.com/blog/2007/10/opennet-microso.html

----Scott.
 
S

Scott Gifford

JJ said:
I hope Microsoft doesn't bundle the licence agreement for access to
the source code with the licence agreement for any other products
like Visual Studio 2008 or others. If they do, they can sue
customers who have viewed the source code for having done so and
taken ideas from it.

According to the information here:

http://www.whurley.com/blog/2007/10/opennet-microso.html

there will be a separate, explicit license agreement step to access
the .NET source code, so you shouldn't have to worry about that.

[...]
I can't stand Linux for being so programmer unfriendly.

As far as GUIs go, Eclipse is getting better, but a long time ago I
learned to stop worrying and love the command-line. :)

----Scott.
 
M

Mads Bondo Dydensborg

Peter said:
I guess the one thing missing from this announcement is how this all
relates to a project like Mono. It would be pretty awesome if Microsoft
would allow the source code to be used for cross-platform
implementations of .NET, and could dramatically decrease the lag of
non-Windows .NET implementations behind the Windows releases.

The current consensus is, that if you look at this code provided by MS, you
will no longer be able to contribute to Mono.

The problem is, that by looking at the code (and that is all you can,
really), you place yourself at risk for legal actions from MS against you,
if you happen to produce code that "looks" like their code.

This is a real risk, and should not be ignored. Please note, that MS license
does _not_ allow you to use their code, but actually place you in risk of
legal actions.

This probably wont be a problem to most, but as I have contributed 5-6 minor
patches to Mono and my company are producing more and more open source
software, I probably will not look at the MS code at all. Would be stupid
of me, really.

Regards,

Mads

--
Med venlig hilsen/Regards

Systemudvikler/Systemsdeveloper cand.scient.dat, Ph.d., Mads Bondo
Dydensborg
Dansk BiblioteksCenter A/S, Tempovej 7-11, 2750 Ballerup, Tlf. +45 44 86 77
34
 
P

Peter Duniho

Mads said:
The current consensus is, that if you look at this code provided by MS, you
will no longer be able to contribute to Mono.

But what does Microsoft say? A lot of people, especially those who are
more inclined to work with open-source and especially with Linux, have a
tendency to view Microsoft as a monolithic, power-hungry, lawyer-driven
company. And as with all great myths, there's probably at least some
grains of truth behind that view.

But without any evidence that suggests Microsoft's own position is that
looking at .NET code causes a person to be legally unqualified to work
on Mono, it's just rumor-mongering and not necessarily by people who
normally view Microsoft in a positive light anyway.

(Note: at this point it's been well-explained that the Microsoft license
would not permit the legal use of their source code as a foundation for
Mono or similar projects. So at this point, my original question has
been answered and I believe I understand that answer. I'm just
following the subsequent questions that now apply in that context).

So, no...you can't just port the .NET source code over to other
platforms. But where's the basis for the claim that you can't work on
Mono and also step through .NET code when you're debugging something else?
The problem is, that by looking at the code (and that is all you can,
really), you place yourself at risk for legal actions from MS against you,
if you happen to produce code that "looks" like their code.

You are already at risk for legal action, if you happen to produce code
that "looks" like their code. Especially if you work on Mono. Even
without source code, it is not difficult to reproduce in separate source
code the same algorithms used in a given piece of software, if that's
your intent and you use the compiled software you're trying to emulate a
as a reference.

Working on Mono, you are intentionally trying to reproduce the behavior
of the .NET Framework, and even without inspecting the compiled .NET
Framework code it would not be surprising if you should happen to on
occasion implement things in the same way they are implemented in .NET.
But how are you to prove to Microsoft in those cases that you didn't
actually use their compiled code as a reference?

They don't have to show you their source code for them to file legal
action on the basis of a copyright violation.

It seems to me that what puts you at risk for legal action (such as that
risk may be) is the fact that you work on Mono. This is true even
without the .NET source code.

Microsoft didn't need access to the Stacker source code for them to be
sued over DoubleSpace. All they needed was an implementation that
looked sufficiently like Stacker's implementation.
This is a real risk, and should not be ignored. Please note, that MS license
does _not_ allow you to use their code, but actually place you in risk of
legal actions.

Well, that's true of any published source code that carries an attached
license. Even regular "open source" stuff generally includes various
license requirements that can form the basis of a lawsuit of someone
believes you misused the source code.

So, for example, either you cannot look at any source code covered by
the GPL, or you must provide all of the disclosures and other
requirements made by the GPL, even if you did in fact not actually
intentionally reuse the source code you looked at. If you want to
follow the legal liability philosophy you're stating, that is.

Granted, in your specific case dealing with an open-source project your
own work may naturally already comply with the GPL, even if you don't
have a need to. But the more general "problem" still exists; it's
certainly not unique to Microsoft's publication of source code here.

As far as the question of actually being sued goes...

Not having any legal expertise, I wouldn't even try to make a claim as
to the reality of the situation. However, I suspect that fears of legal
action are highly over-inflated for a given individual, assuming no
actual misuse of the code happened (that is, assuming you didn't
actually copy the code or some non-obvious technique, that sort of thing).

Granted, there's a lot of gray area, but I think an individual worried
about being sued by Microsoft has, in most cases, a perception of their
value to Microsoft that is probably too high. :)
This probably wont be a problem to most, but as I have contributed 5-6 minor
patches to Mono and my company are producing more and more open source
software, I probably will not look at the MS code at all. Would be stupid
of me, really.

I think your concerns are overblown. But I'm not qualified to give
legal advice, so I won't try to argue the point. :) If you feel that
working on Mono and also in other situations using the .NET source code
are mutually exclusive, it's certainly true that that's the safest bet
if your highest priority is to avoid legal trouble at all costs.

Pete
 
C

Chris Nahr

You are already at risk for legal action, if you happen to produce code
that "looks" like their code.

No, you are not.
They don't have to show you their source code for them to file legal
action on the basis of a copyright violation.

Copyright does not cover duplication of function or even accidental
recreation of the same exact program text, only intentional copying.
Hence "copy"right.

What you are thinking of are software _patents_ which is entirely
different. Patents must be explicitly filed for specific pieces of
functionality, they are not valid outside America and I think Japan,
and they are subject to interpretation by a judge regarding whether
the patented functionality is patentable at all.
Microsoft didn't need access to the Stacker source code for them to be
sued over DoubleSpace. All they needed was an implementation that
looked sufficiently like Stacker's implementation.

No, what they needed was an implementation that duplicated Stacker's
_patented_ functionality. See here:

http://www.newscientist.com/article/mg14219300.700.html
Well, that's true of any published source code that carries an attached
license. Even regular "open source" stuff generally includes various
license requirements that can form the basis of a lawsuit of someone
believes you misused the source code.

Unlike patents, however, such licenses only apply to people who
actually acquired & used the software, and agreed to the license.

Any license that tried to prevent the user from duplicating the
software's functionality, patent-style, would be null and void. The
power of licenses, like copyright, is restricted to the actual product
as it is. They cannot regulate independent recreations.
So, for example, either you cannot look at any source code covered by
the GPL, or you must provide all of the disclosures and other
requirements made by the GPL, even if you did in fact not actually
intentionally reuse the source code you looked at. If you want to
follow the legal liability philosophy you're stating, that is.

That is correct. If you merely create _similar_ source code with an
identical purpose you're fine, though. The license only covers the
actual source code, not the function expressed by it. That's the
realm of patents.
Not having any legal expertise, I wouldn't even try to make a claim as
to the reality of the situation. However, I suspect that fears of legal
action are highly over-inflated for a given individual, assuming no
actual misuse of the code happened (that is, assuming you didn't
actually copy the code or some non-obvious technique, that sort of thing).

For independent individuals that is probably correct. However, Mono
is a fairly high-profile project that needs a public website for
coordination. Microsoft would damn well shut it down if they thought
they're copying the .NET source code wholesale. Why else bother
having any read-only clause in the license in the first place?
 
C

Chris Nahr

Microsoft are going to make the source code for the .NET framework
(parts of it, including the BCL, ASP.NET and LINQ) available both for
viewing and debugging into.

That's pretty cool, especially that we can debug into the source code
right from within Visual Studio. I guess that means Microsoft finally
gave up the fight against Reflector. :)
I won't go into all the details here, as they're covered on Scott
Guthrie's blog:

http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-
code-for-the-net-framework-libraries.aspx

Please turn off word wrap for URLs if possible. Viral marketing tip:
Forte Agent never wraps URLs! Here's the clickable URL:

http://weblogs.asp.net/scottgu/arch...rce-code-for-the-net-framework-libraries.aspx
 
F

Frans Bouma [C# MVP]

Peter said:
Jon said:
I'm sure the net will be buzzing with this news fairly soon, but
just in case anyone hasn't seen it yet:

Microsoft are going to make the source code for the .NET framework
(parts of it, including the BCL, ASP.NET and LINQ) available both
for viewing and debugging into.

[...]
Any comments?

You mean other than it seems that Microsoft is taking some of the
best ideas from the open-source movement?

First they release a free development environment that has very few
really important features missing, and now they are offering the
actual source code for .NET?

As if that weren't great enough, an even cooler part is that the
source will be copied on-demand according to the framework version
you're actually using.

The one major downside I see is the potential for finding .NET
applications where the author took the original .NET code and used
that to create their own custom version of some .NET class, negating
one of the primary benefits of using a framework: using the same
well-tested, broadly-deployed component that everyone else is using.

But I'm guessing that the people who are likely to do that would
probably find other ways to write bad code anyway. :)

You can't touch the code, that's not allowed by the 'Reference
license' this code is released under. So it's pretty much 'look, and
forget what you saw'-code.
I guess the one thing missing from this announcement is how this all
relates to a project like Mono. It would be pretty awesome if
Microsoft would allow the source code to be used for cross-platform
implementations of .NET, and could dramatically decrease the lag of
non-Windows .NET implementations behind the Windows releases.

MS doesn't even allow you to fix bugs in the framework as you aren't
allowed to rebuild it.

Mono requires that developers who submit patches / changes have never
looked at MS sourcecode. So if you have looked at rotor, you aren't
allowed to submit patches, precisely because it would make Mono
vulnerable for lawsuits.

Now, why would they do that and why should that be different for a
..NET developer writing code for a project? Isn't that the same thing?
Please realize that.

FB

--
------------------------------------------------------------------------
Lead developer of LLBLGen Pro, the productive O/R mapper for .NET
LLBLGen Pro website: http://www.llblgen.com
My .NET blog: http://weblogs.asp.net/fbouma
Microsoft MVP (C#)
------------------------------------------------------------------------
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top