There's a difference between not being interested in Linux and not being interested in standard C++. Of course, if you're writing a GUI app, you're not going to learn about it by reading the C++ standard even if you're programming for Linux.
"But they could very well (and supposedly have) patented algorithms necessary to the implementation of.Net itself, thus making Mono directly infringing."
How likely would it be that.NET would contain patented algorithms that are so general that they are absolutely unavoidable when implementing a.NET clone and yet specific enough that other languages, libraries, frameworks or plaforms don't violate them?
"I can hypothetically write patent-clear code in C, but even "hello world" in C# is built on shaky ground."
No. You can't patent on a code-specific basis. In theory, if there was no prior art, somebody could patent "An algorithm for greeting Earth", but they couldn't get one patent for every computer language that could implement it.
Of course there really aren't any platform-independent applications, but you can (as you suggest) isolate the platform-dependent parts to make it easier to port. On the other hand, the uniform interface you mention will always include assumptions about the platforms used, so it's really defined to satisfy the set of platforms you're targeting rather than to satisfy all platforms.
"Also, good portability engineering done up front is much less work (i.e. cheaper for your employer) than when the project is already deployed on windows only."
Well, work, time, and money can be dynamic in the business world. If you have a start-up, releasing a Windows-specific version faster could mean the difference between having the income to continue or going out of business. Sometimes paying more for future development in the future makes more sense then doing the whole job cheaper in the present.
Some features in C# such as generics can't be implemented as is to run on a standard JVM because the JVM doesn't have the capability to support it..NET's CLR was designed to support generics at the byte code level. In Java, generics are implemented by the Java compiler that just hides the object casting from the programmer. The result is that the JVM doesn't really know what the types are at run time.
"The Mono Trap is that you might get stuck on a platform encumbered by patents, so that even if you're coding on a 100% FOSS system, a court ruling granting an injunction against further release and development of Mono could yank the rug out from under you."
I don't think you really understand how patents are written. Any patent that MS may get isn't going to be written as.NET specific because that would limit the scope which lessens the value of the patent. Instead MS would patent technique X and if so motivated would sue anybody that implemented technique X regardless if it's implemented in Mono, Java, or plain C. Writing your application in C wouldn't provide you with any special immunity from the patent.
I know it's popular around here to assume that Windows developers are dumb, but the fact is that we do understand the multiplatform issues. Nobody expected that their applications written in J++ using MS extensions were going to work "out of the box" on other platforms with Java nor do we expect all.NET applications to run seamlessly under Mono. As hard as it might be to believe, historically most Windows developers didn't really give a S*** whether their applications worked on Linux or not.
"WINE is as to Windows as Mono is as to.NET This is basic logical reasoning."
Not really. The fundamental requirement of Mono is to implement.Net ISO standards. On the other hand, WINE was never intended to fully implement the Windows API and development is primarily driven by the desire to see the most popular applications run on it.
There are also applications that are specifically targeted to Mono which might not run on.NET as implemented by MS. Thus in general Mono isn't really a way to transition from Linux to Windows. On the other hand, does anyone create applications that specifically target the WINE "API"?
I agree. I don't know how this compares with Free Space Optical communications, but the latter can get screwed up just from the typical swaying the top of a building experiences. It requires a real-time alignment system to keep both sides pointing at each other. Sometimes it works and sometimes it doesn't.
Some on Slashdot are fond of describing MS as a "convicted monopolist" which is incorrect since the action taken against them was strictly civil. Wouldn't it be mind-bending if they could accurately describe Apple that way some day?
I'm glad to see Cerf tacitly admit that there's really two sides to the end-to-end argument (no pun intended). There may be reasons to trade off security for openness, but it's important to recognize there is a trade-off and that the end-to-end design isn't a perfect solution in the real world.
Re:a bunch of questions
on
C# In-Depth
·
· Score: 1
"They can take one company off the list of users. We are rewriting all the C# (and C++) code in Java so we can gain portability. Already, our operations staff is drooling over the prospect of being able to deploy virtual Linux servers that need far less memory instead of Windoze if they want to. "
It sounds like your company is a bit conflicted or confused. Why program an application in C# if you're "drooling" over having it run on Linux? Choose a platform and use the best tool for the job - if you think Java is the best choice for Linux use it, but don't choose Java for it's theoretical ability to run on a platform that you don't want to use.
Or perhaps this is just a case of wasting company money on a rewrite because you hate "Windoze".
A corporation is defined by more than just who the leaders are. Corporate culture can endure for decades and is very hard to change. Many years ago IBM was known for its hand-holding approach to customers and they're still doing it today.
As far as your analogy is concerned, if the world hates the US, the actions of Bush are an excellent reason to do so.
IBM is good at giving away things they wouldn't be able to sell. Even within the java community there are many who prefer netbeans to eclipse. Saying that eclipse is the "absolute defacto standard for java development".
As far as using Eclipse for C++ development - it compares favorably with C++ IDEs of the late eighties.
"It is only that IBM is a technically competent competitor that it *can* compete and win on a level playing field that they promote good standards."
Sure, that's why they were investigated by the DOJ for a decade.
The difference between IBM and MS is that IBM knew how to play the game with politicians before the investigation started. MS made the mistake of thinking they didn't need to grease any palms. They know better now.
"The idea that engine writers will completely throw out APIs and will go back to writing everything from scratch in C/C++ is almost as absurd as suggesting that they'll go back to writing everything in Assembly language."
I agree that it's unlikely that APIs will be thrown out, but if they were, using assembly might actually be a better idea than C/C++. Were there really state-of-the-art games written in C in the pre-API era?
Apple was able to make a business case because of the BSD license. If they had built OSX based on Linux they would have to provide the source and profit would become the proverbial question mark.
"Or, a little closer to the bone, MS's "IsNot()" patent. What if the agreement to be .NET compatible required "IsNot()"? "
What agreement?
There's a difference between not being interested in Linux and not being interested in standard C++. Of course, if you're writing a GUI app, you're not going to learn about it by reading the C++ standard even if you're programming for Linux.
"But they could very well (and supposedly have) patented algorithms necessary to the implementation of .Net itself, thus making Mono directly infringing."
How likely would it be that .NET would contain patented algorithms that are so general that they are absolutely unavoidable when implementing a .NET clone and yet specific enough that other languages, libraries, frameworks or plaforms don't violate them?
"I can hypothetically write patent-clear code in C, but even "hello world" in C# is built on shaky ground."
No. You can't patent on a code-specific basis. In theory, if there was no prior art, somebody could patent "An algorithm for greeting Earth", but they couldn't get one patent for every computer language that could implement it.
Of course there really aren't any platform-independent applications, but you can (as you suggest) isolate the platform-dependent parts to make it easier to port. On the other hand, the uniform interface you mention will always include assumptions about the platforms used, so it's really defined to satisfy the set of platforms you're targeting rather than to satisfy all platforms.
"Also, good portability engineering done up front is much less work (i.e. cheaper for your employer) than when the project is already deployed on windows only."
Well, work, time, and money can be dynamic in the business world. If you have a start-up, releasing a Windows-specific version faster could mean the difference between having the income to continue or going out of business. Sometimes paying more for future development in the future makes more sense then doing the whole job cheaper in the present.
Some features in C# such as generics can't be implemented as is to run on a standard JVM because the JVM doesn't have the capability to support it. .NET's CLR was designed to support generics at the byte code level. In Java, generics are implemented by the Java compiler that just hides the object casting from the programmer. The result is that the JVM doesn't really know what the types are at run time.
"The Mono Trap is that you might get stuck on a platform encumbered by patents, so that even if you're coding on a 100% FOSS system, a court ruling granting an injunction against further release and development of Mono could yank the rug out from under you."
I don't think you really understand how patents are written. Any patent that MS may get isn't going to be written as .NET specific because that would limit the scope which lessens the value of the patent. Instead MS would patent technique X and if so motivated would sue anybody that implemented technique X regardless if it's implemented in Mono, Java, or plain C. Writing your application in C wouldn't provide you with any special immunity from the patent.
I know it's popular around here to assume that Windows developers are dumb, but the fact is that we do understand the multiplatform issues. Nobody expected that their applications written in J++ using MS extensions were going to work "out of the box" on other platforms with Java nor do we expect all .NET applications to run seamlessly under Mono. As hard as it might be to believe, historically most Windows developers didn't really give a S*** whether their applications worked on Linux or not.
"WINE is as to Windows as Mono is as to .NET This is basic logical reasoning."
Not really. The fundamental requirement of Mono is to implement .Net ISO standards. On the other hand, WINE was never intended to fully implement the Windows API and development is primarily driven by the desire to see the most popular applications run on it.
There are also applications that are specifically targeted to Mono which might not run on .NET as implemented by MS. Thus in general Mono isn't really a way to transition from Linux to Windows. On the other hand, does anyone create applications that specifically target the WINE "API"?
I agree. I don't know how this compares with Free Space Optical communications, but the latter can get screwed up just from the typical swaying the top of a building experiences. It requires a real-time alignment system to keep both sides pointing at each other. Sometimes it works and sometimes it doesn't.
"It didn't offer anything revolutionary and was basically Debian/Ubuntu with a few extra features that no one cared about"
Isn't there a similiar relationship between Linux and UNIX?
MS was slammed by the EU over server software when it wasn't (and still isn't) the market leader.
Some on Slashdot are fond of describing MS as a "convicted monopolist" which is incorrect since the action taken against them was strictly civil. Wouldn't it be mind-bending if they could accurately describe Apple that way some day?
I'm glad to see Cerf tacitly admit that there's really two sides to the end-to-end argument (no pun intended). There may be reasons to trade off security for openness, but it's important to recognize there is a trade-off and that the end-to-end design isn't a perfect solution in the real world.
"They can take one company off the list of users. We are rewriting all the C# (and C++) code in Java so we can gain portability. Already, our operations staff is drooling over the prospect of being able to deploy virtual Linux servers that need far less memory instead of Windoze if they want to. "
It sounds like your company is a bit conflicted or confused. Why program an application in C# if you're "drooling" over having it run on Linux? Choose a platform and use the best tool for the job - if you think Java is the best choice for Linux use it, but don't choose Java for it's theoretical ability to run on a platform that you don't want to use.
Or perhaps this is just a case of wasting company money on a rewrite because you hate "Windoze".
A corporation is defined by more than just who the leaders are. Corporate culture can endure for decades and is very hard to change. Many years ago IBM was known for its hand-holding approach to customers and they're still doing it today.
As far as your analogy is concerned, if the world hates the US, the actions of Bush are an excellent reason to do so.
IBM is good at giving away things they wouldn't be able to sell. Even within the java community there are many who prefer netbeans to eclipse. Saying that eclipse is the "absolute defacto standard for java development".
As far as using Eclipse for C++ development - it compares favorably with C++ IDEs of the late eighties.
"It is only that IBM is a technically competent competitor that it *can* compete and win on a level playing field that they promote good standards."
Sure, that's why they were investigated by the DOJ for a decade.
The difference between IBM and MS is that IBM knew how to play the game with politicians before the investigation started. MS made the mistake of thinking they didn't need to grease any palms. They know better now.
Yes, IBM is primarily a hardware company, so unless they plan on implementing a document standard in hardware, who cares?
This is just an opportunity to attack MS. IBM philosophy has always been to make money for IBM - they don't give a rats ass about anybody else.
When the last argument given is "look it up", I suspect there's no counter-argument.
In what way is there an "infinite stream of ethernet frames ariving" on your computer with its finite lifetime?
If you have an explanation, why not give it?
"The idea that engine writers will completely throw out APIs and will go back to writing everything from scratch in C/C++ is almost as absurd as suggesting that they'll go back to writing everything in Assembly language."
I agree that it's unlikely that APIs will be thrown out, but if they were, using assembly might actually be a better idea than C/C++. Were there really state-of-the-art games written in C in the pre-API era?
Apple was able to make a business case because of the BSD license. If they had built OSX based on Linux they would have to provide the source and profit would become the proverbial question mark.
Is that like an evil wannabe? Are you talking about Google or Dr Horrible?
Because IE never locked its customers out of competitors' sites. Which is why all the legal wrangling over IE bundling was a big waste of time.
Don't forget that you're not Google's customer, you're Google's product.
The real customers are those who pay for online advertisements and they are likely to see increases in prices if there is less competition.
That's the basis for the investigation.
I don't know how nice iTunes is on a Mac or an iPod, but Amazon's Unbox video downloads are of much higher quality on Windows than iTunes's are.