MS Releases .NET Source, Sort Of
cam_macleod writes "A friend at Microsoft (he's a nice guy, really!) pointed me to their release of the Common Language Infrastructure (CLI) source, which builds successfully on Windows, FreeBSD, and MacOS X 10.2 -- he says Linux too, but their website strangely doesn't mention it!"
Remember "many eyes".
.NET it all your fault.
If there are any security problems with
(I'm blind, don't blame me!)
This is not new. Microsoft released this long ago in an effort to show that .NET really *is* cross platform. Here are the changes (as listed on the website):
Support for Mac OS X 10.2.
Additional code clean-up and bug fixes.
Debugger improvements.
Class reference documentation (separate archive) and additional samples.
Build system improvements and additional test cases and tool improvements.
I'm not that familiar with the .NET infrastructure, but does this mean that I can take a .NET application that works on my Windows box and uses the Win32 GUI and have it work on my Linux Box?
Just wondering if this thing actually "works" or if its just part of the whole picture.
Read the license here
This is nowhere near Open Source / Free software. The license specifically states that you cannot use the code for any commercial purpose whatsoever--even writing your own software to use for your own purposes in running a business. Furthermore, the license states:
You may use any information in intangible form that you remember after accessing the Software. However, this right does not grant you a license to any of Microsoft's copyrights or patents for anything you might create using such information.
In other words, they're trying to use software patents to keep people from writing their own implementations of C# / CLI libraries and software.
Which all boils down to: Microsoft wants a programming language for which you have to pay them royalties just to use, with the exception of academic use. They realize that their monopoly on operating environments is crumbling so they want to "own" and control the "next C++ or Java". My opinion: boycott this crap.
the only "funny" part of the license is "you may not distribute modifications of the Software under terms that purport to require the Software or derivative works to be sublicensed to others", a very straight, and extremely amusing ("purport"??) attack on the GPL. M$ maynot be a lot of good things, but they certainly ARE FOCUSSED! ;)
also, can someone please explain to me the impliations of
Can someone please enlighten me?
LinuxGhoul
Sigura Non Grata
It is interesting to note that many of the files have a comment with a date of June, 1999.
confdefs.h is in the working directory. I do have an strtok_r.h but only because it came with PHP. Any ideas?
Alternatively, is there a binary release? I don't see one on MSDN.
What I'm listening to now on Pandora...
it's not so much an attack on the GPL, it's just saying tht you can't relicense derivatives under something like the GPL. In much the same way as you can't relicense derivatives of GPL work under any other license.
Something about that experience felt really... dirty.
And for the unofficial 'benchmarks' on my G4/800 (because printing out "Hello World!" is a valid benchmark
What is the Microsoft Shared Source CLI?" The Microsoft® Shared Source CLI is a working implementation of the ECMA-334 and ECMA-335 standards (known to us mortals as the Common Language Infrastructure and the C# programming language). The source code in this distribution builds on FreeBSD, Mac OS X, and Microsoft® Windows. (There are instructions on how to do this, as well as hardware requirements, below.) Besides the CLI and the C# compiler, this distribution contains a JScript compiler written entirely in C#, as well as a wide variety of tools, utilities, managed classes, and samples. It is intended to be an appealing new platform alternative for people who want to learn, to teach, to tinker, or to experiment more formally with computer languages and computer language infrastructure.
This copy of the Shared Source CLI is being distributed as source code under a Shared Source license. It is important for you to read through the brief license that is included with your copy of this distribution now, because once you examine the code or use it in any way, you will be bound by the terms of this license. For more information about the Shared Source program at Microsoft, take a look at the Microsoft Shared Source Initiative Web page at www.microsoft.com/licensing/sharedsource or search www.microsoft.com for "Shared Source".
This is the third release of the Shared Source CLI, and it is for non-commercial, experimental use only. Microsoft will be updating this distribution periodically. The distribution is completely unsupported, although the development team will be checking in on the microsoft.public.shared_source.cli newsgroup.
By default, the build scripts in this distribution produce an optimized debug build of the tools and runtime. This is because we believe that most of you are programmers, and that you will want to be spelunking around in the debugger but you still want reasonable execution performance. If you want maximum source debugging support you should choose a checked build which will turn off optimizations and allow better source-level debugging. If you want to get more performance, you can build a free build, which will execute code considerably faster. For instructions, see the detailed build instructions in building_sscli.html.
Colloquially, we refer to this project as Rotor. Why? Well, you'll find the following definitions for the word:
An altocumulus cloud found in the lee of large mountain barriers, that circulates around its horizontal axis. An important part of a cryptographic encoding or decoding device. A quantity having magnitude, direction, and position. The rotating part of a dynamo, turbine, distributor, compressor, centrifuge, blower, or motor. A device that propels a ship forward in a cross-wind, exploiting the Magnus effect. The rotating airfoil assembly on rotary-wing aircraft. It's obvious! Rotor is all of these and more...
Getting Started OK, having taken care of that, Rotor has been built and tested on Windows, FreeBSD, and Mac OS X. If you want to build and run the source code, you'll need some additional software depending upon your OS. The Rotor build process uses Perl in several ways, both to run the test harness and as a way to autogenerate some utility code. On Windows you will need Microsoft Visual Studio® .NET as well as Perl. (The Rotor development team currently uses ActivePerl 5.6.1.630, from ActiveState, but perl.org is always a good bet as well.) On FreeBSD, the only thing that you will need in addition to a FreeBSD developer distribution is Perl. (We are currently using 5.005_03). There are several samples that uses the Tk 8.4.0 widget set; if you choose to build this, Tk is available from www.scriptics.com.
As far as hardware goes, we really recommend having 512M of memory in your computer. While we've heard of success in building on machines with less, it can be mighty slow (and the swap thrashing can be horrific) Truth be told, using the Windows compilers, 256M seems to work pretty well, but gcc seems to use more resources and you'll see more performance degradation on FreeBSD and Mac OS X because of this. As far as disk space goes, 100 megabytes should be sufficient if all you will be doing is viewing the source, but if you are doing active development (especially running the test suites) you will need at least a gigabyte of free disk space.
Please note that the Rotor distribution was only tested on operating systems using English locales. There are known problems with attempting to build and execute Rotor on other locales. If you avoid using locale-specific characters in the path to the source code, you may be able to use Rotor on operating systems using other locales.
Summary of System Requirements
Windows We've tested the distribution on Windows XP and Windows 2000. We recommend Windows XP. Microsoft Visual Studio .NET installed. You must, at a minimum, install the Microsoft Visual C++ .NET product.
Perl installed and in the path.
Tk installed if you want to run all the samples.
256 MB of memory (suggested minimum).
100 MB of free disk space to expand the archive.
One gigabyte of free disk space to build the distribution.
FreeBSD We have tested the distribution on FreeBSD 4.5, 4.6, and 4.7. We recommend FreeBSD 4.7. Developer distribution (which will include the gcc compiler and other build tools) Tk package installed if you want to run all the samples. 512 MB of memory. If you do choose to use less memory then make sure your swap space is at least four times your memory size. 100 MB of free disk space to expand the archive. One gigabyte of free disk space to build the distribution.
Mac OS X Mac OS X 10.2. Apple Developer Tools. Tk package installed if you want to run all the samples. 256 MB of memory: 512 MB recommended. Ensure the BSD subsystem is installed. (This is the default installation.) Stuffit(TM) Expander 7.0 will unpack the archive. Otherwise use gnutar and not the default tar. One gigabyte of free disk space to build the distribution.
For more information you might want to peruse the documentation index for more links into the documentation set. We recommend that you also have either Visual Studio NET or the .NET Frameworks SDK as secondary documentation to the ECMA specifications.
Building and Running Code We've included a detailed document about building Rotor, but if you are impatient, here are very brief instructions to get you up and running quickly.
On FreeBSD: Once you have extracted the contents of the tarball (tar xvfz will work), you should source the contents of either env.sh or of env.csh in the root of the distribution, depending upon which shell you are using. For example, in csh you might type the following command: source env.csh Once this script has run, type ./buildall in the same instance of the shell, which will initiate the build process.
On Mac OS X: Once you have extracted the contents of the tarball (StuffIt 7.0 or gnutar), in a console window you should source the contents of either env.sh or of env.csh in the root of the distribution, depending upon which shell you are using. For example, in csh you might type the following command: source env.csh Once this script has run, type ./buildall in the same instance of the shell, which will initiate the build process.
On Windows: Once you have extracted the contents of the tarball using your favorite archiving utility, open a command window and run the env.bat script from the sscli (root) directory of the distribution. You need to run the script from this directory because it uses the current directory to set up subsequent environment variables. After this, in the same window, type buildall, which will initiate the build process. In order to be useful on both systems based on UNIX systems and Windows, text files in the archive are linefeed terminated. If you are running Windows, you'll want to view these files in an editor that handles this case automatically (many do, including WordPad and the Visual Studio editor), or else use a utility program to remove the convert the linefeeds to Windows-style carriage-return/linefeed termination.
Once the build has successfully finished, you should be able to compile and execute the simple "hello world" test program by changing to the samples\hello directory (samples/hello on UNIX systems based platforms), and then typing:
csc hello.cs clix hello.exe This will churn for a while (loading takes less time on the free build), and then print out "Hello World!" The program clix is a program loader for managed executables. The first line uses the C# compiler to produce hello.exe from hello.cs, a tiny program that prints "Hello World!" to the system console.
Assuming that hello.exe works, you are now able to compile C# sources using csc (the C# compiler), and JScript sources using the jsc compiler. Remember to always run Rotor programs in a shell that has been set up using the env scripts as described above. Also remember that managed executables need to be launched using clix in order to run under Rotor. For example, the JScript compiler must be run in this way.
You are almost certain to find that the map of the source code to very useful in navigating around the distribution. The document on building rotor will also be very helpful if you are modifying code; its scenario-based descriptions can be time-saving.
MICROSOFT SHARED SOURCE CLI, C#, AND JSCRIPT LICENSE
This License governs use of the accompanying Software, and your use of
the Software constitutes acceptance of this license.
You may use this Software for any non-commercial purpose, subject to
the restrictions in this license. Some purposes which can be
non-commercial are teaching, academic research, and personal
experimentation. You may also distribute this Software with books or
other teaching materials, or publish the Software on websites, that
are intended to teach the use of the Software.
You may not use or distribute this Software or any derivative works in
any form for commercial purposes. Examples of commercial purposes
would be running business operations, licensing, leasing, or selling
the Software, or distributing the Software for use with commercial
products.
You may modify this Software and distribute the modified Software for
non-commercial purposes, however, you may not grant rights to the
Software or derivative works that are broader than those provided by
this License. For example, you may not distribute modifications of
the Software under terms that would permit commercial use, or under
terms that purport to require the Software or derivative works to be
sublicensed to others.
You may use any information in intangible form that you remember after
accessing the Software. However, this right does not grant you a
license to any of Microsoft's copyrights or patents for anything you
might create using such information.
In return, we simply require that you agree:
1. Not to remove any copyright or other notices from the Software.
2. That if you distribute the Software in source or object form,
you will include a verbatim copy of this license.
3. That if you distribute derivative works of the Software in
source code form you do so only under a license that
includes all of the provisions of this License, and if you
distribute derivative works of the Software solely in object
form you do so only under a license that complies with this
License.
4. That if you have modified the Software or created derivative
works, and distribute such modifications or derivative
works, you will cause the modified files to carry prominent
notices so that recipients know that they are not receiving
the original Software. Such notices must state: (i) that
you have changed the Software; and (ii) the date of any
changes.
5. THAT THE SOFTWARE COMES "AS IS", WITH NO WARRANTIES. THIS
MEANS NO EXPRESS, IMPLIED OR STATUTORY WARRANTY, INCLUDING
WITHOUT LIMITATION, WARRANTIES OF MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE OR ANY WARRANTY OF TITLE OR
NON-INFRINGEMENT. ALSO, YOU MUST PASS THIS DISCLAIMER ON
WHENEVER YOU DISTRIBUTE THE SOFTWARE OR DERIVATIVE WORKS.
6. THAT MICROSOFT WILL NOT BE LIABLE FOR ANY DAMAGES RELATED TO
THE SOFTWARE OR THIS LICENSE, INCLUDING DIRECT, INDIRECT,
SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES, TO THE MAXIMUM
EXTENT THE LAW PERMITS, NO MATTER WHAT LEGAL THEORY IT IS
BASED ON. ALSO, YOU MUST PASS THIS LIMITATION OF LIABILITY
ON WHENEVER YOU DISTRIBUTE THE SOFTWARE OR DERIVATIVE
WORKS.
7. That if you sue anyone over patents that you think may apply
to the Software or anyone's use of the Software, your
license to the Software ends automatically.
8. That your rights under the License end automatically if you
breach it in any way.
9. Microsoft reserves all rights not expressly granted to you in
this license.
2 - This clause is intended to prevent you from patenting "Bubble Sort implemented in C#" or something along those lines (which the US Patent Office might just accept!!) and then demanding royalties from anyone who might have used your technique.
It basically means that you can't assert IP rights over their stuff.
Most corporate-type source licences have a similar clause (Darwin, Plan9, Mozilla, etc)
The "you may not use this for commercial purposes" thing prevents me from running it on a bunch of (Linux) servers at work. I guess I'll stick with python for my portable sysadmin-ish apps.
FYI, the FreeBSD port was done by some folks at Corel.
----- rL
Personally, I wasn't clear on that. Did they mean that I can't use it at work for in-house systems at all, or did they only that I can not use it in commercial software development efforts where the actual product is a piece of software to be purchase/licensed/rented by paying customers?
The way it's written, both uses seems prohibited, but something tells me that's not exactly what they had in mind.
Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
I hope mono is able to port it eventually.
--Me
Well, I think it means
read a function and work out what it does, and remember it.
(second later) re-write the function.
repeat until all functions are completed.
thank God the internet isn't a human right.
.... Didn't I compile this on FreeBSD last summer?
(2001)...
Well, I don't think the GPL requires that derivative works are sublicensed to others. It allows derivative works to be sublicensed to others, and requires that if you do so, the license must be the GPL, and the source code (or at least an option to get it) must be included.
Actually, I don't know of any license that requires sublicensing, so the above clause doesn't make any sense to me.
However, you haven't quoted the complete clause:
Since all free software licenses grant broader rights and allow commercial use, this is effectively an anti-software-freedom clause (not just anti-GPL). However, it's quite understandable that Microsoft doesn't want their software to become free simply by someone downloading and re-licensing it, so I don't think the clause is unreasonable.
Sig (appended to the end of comments I post, 54 chars)
Heh,
I remember when the new ads came, and we were promised no flash ads. I find it funny that with this story not only do we get a flash ad but its for m$.net!
This issue is so dead it stinks. Software is not speech. It enjoys no first amendment protection at all.
You're so full of shit I can barely keep a level head discussing this. Software is most definitely speech, in one of its truest forms, no less.
The First Amendment gives and protects the rights of Americans to express ideas in a public forum through a variety of media. It gives us the power to speak ill of and contradict the interests of various establishments. It helps entities pursade others -- either individuals or groups -- to a particular point of view. It allows us to freely express knowledge and information. It allows us to freely entertain and seek entertainment freely. Now, you tell me how software does not fit into the category of free speech.
When it comes to speech, the language is irrelevant. It does not matter if you're speaking the Old English, Nihon'go, or C++.
Software is, in all senses, a collection of ideas and/or methods for doing any number of the things I mentioned previously. You're expressing them using a more formalized language than spoken languages, true. But nonetheless, you're trying to convey thoughts, information, entertain, etc.
If we conceed that software is not speech, a vast majority of what we take for granted today could easily be surpressed (anything open-source) or even made illegal to use (DeCSS, Adobe eBook readers, etc). Hopefully the courts will not see it as you do.
Why bother.
C# is an open standard. The CLI is an open standard.
I am not sure you are using the word "standard" properly.
C# & CLI STANDARDS
What do you call a "standard?"
If a penguin dies in the woods, and nobody is around to hear it, what sound does it make?
That if you distribute derivative works of the Software in source code form you do so only under a license that includes all of the provisions of this License, and if you distribute derivative works of the Software solely in object form you do so only under a license that complies with this License.
Thanks Microsoft, for freeing us from the evil GPL. I can just smell the innovation as thousands of programmers download your Shared Source, develop new and interesting products with it .. and then can't release it because of your license. Well, at least you granted them the right to remember the information.
Statement 1 means that you can learn whatever you want from reading their code, and do what you want with it... however, they want to be clear that they are NOT granting you any sort of copyright license or patent license in the process.
Statement 2 is also quite common.. it basically means that if you start a patent lawsuit against anythign related to this code, they revoke your license to use it.
The first part is not an attack on the gpl; their original work is not gpl, and they want others to NOT be bound by the terms of the gpl. So if you create a derivitave work and want to distribute it, that's fine, but you cannot compel others to distribute work based on your stuff (which is based on microsoft's stuff) by any terms other than those set out in this license, or more restrictive.
Their point is very valid; they do not want the code licensed under terms any broader than the ones they set out, and that goes for works based on their code as well.
IT does require sublicensing; the only way you can distribute modified works based on GPL code is under the terms of the GPL. (or with permission from the copyright holders, of course)
For starters, the original term that says "Any derivitive works must include the terms of this license", and one of those terms being "absolutely no commercial use" makes it gpl incompatable anyway.
The license is quite clear that it covers both situations.
You cannot use it in running your business, you cannot make commercial products out of it, you cannot use it to make commercial products, etcetera.
It's definatley exactly what they had in mind. This is meant to be reference code, not "microsoft wrote it for me"
I can't get it to compile on linux, who says it works in linux? doesn't even pass configure.
/bin/sh './configure' failed for pal/unix/
configure: error: Don't know how to suspend and resume threads on this platform
configure: error:
sed: can't read confdefs.h: No such file or directory
Something that is actually "used" in the field for a while, not just something that has a cetificat saying that it is a standard.
Standards can be broke into 2 separate meanings
1. it has a certificat that tells your it a standard
2. We use it all the time so its a standard in our company
or something like that...
Section 3 of the shared source license:
* That if you distribute derivative works of the Software in source code form you do so only under a license that includes all of the provisions of this License, and if you distribute derivative works of the Software solely in object form you do so only under a license that complies with this License.
Basically this means that the shared source license is "viral", like the GPL and exactly what Microsoft have been criticising for the past year or so.
were you expecting to see a sig here? perhaps you'd rather see the inside of an ambulance!