It's my prediction that all manufacturers that are in anyway tied to copyrighted material will flock to DRM architectures.
In five years music will become a service instead of a product.
The downside is that it will be nearly impossible for the average consumer to steal music.
The upside is that it will be braindead simple to listen to what you want to anywhere and anytime and it will cost peanuts (pay per play).
In ten years, the teenagers won't even know what a WMA or MP3 file is. They will only know that the little gizmo they got for Christmas allows them to play any song they want anytime they want to hear it and their parents will get a subscription fee debited from some entertainment bank account.
I see movies following a similar path.
Personally I don't care. When I have a car stereo that can understand me when I tell it to play "My Sharona" or "Paradise by the Dashboard Lights" and the song starts immediately, I'll be a very happy consumer. The pricing may start out rocky at first, but it will modulate itself over a few years until the market is set. Then the services will make money on their catalogs and increase revenue on new material. It will be a good thing.
Then there are added potentials. That poetry you've been writing for years can get published and if anyone uses it for commercial purposes, you will automatically get paid. Royalties for the masses for your artistic endeavors. This too is a good thing.
This is not true anymore. Outlook XP and 2003 both block all executable file types with a message the reads, "One or more attachments have been blocked because they might cause harm to your system."
Of course you can turn this off, but group policies can prevent users from turning it off, thus forcing people to use.zip files to transmit their viruses.
I think there's a pretty large assumption made by the anti-.NET folks that have never actually looked at how.NET functions.
One of the things that seems abundantly clear is the misconception that if an API changes, this will break a lot of legacy.NET code. This is inherently not true. One of fundamental.NET design requirements was to specifically combat the complaint of broken API's.
When 2.0 comes out, you could have three versions of the.NET environment coexisting on the same server (adding to 1.0 and 1.1). Not only that, but you will also be able to mix code as your systems grow. If you have code written for the 1.1 framework and need to add more code, you can write the new code in any of the available versions and have it work seemlessly. It's impossible to break compatibility in.NET.
Of course the big assumption from MS-haters is that they will somehow make a patch to 1.0 or 1.1 that breaks some API. MS doesn't need to do this because they're not rewriting the same API structure over and over like they did with MFC. When they need to change an API, that gets rolled into the next release of.NET. Of course there have been patches to the current versions, but those have been very minor and I haven't heard of anyone being affected by those changes.
A note here: All.NET assemblies (packages in Java) are signed with their associated.NET runtime. An assembly signed with 1.1 wouldn't run in 2.0 and vice versa. But as long as you have both runtimes, they will work perfectly fine _and_ be able to talk to each other.
As for C# being an open process, it is. You'd be shocked at the level of responses you will get from the C# development team when asking about features. And they listen. The fact that it's only a handful of people at Microsoft shouldn't scare you. If you went to the PDC, they're going to be running around with C# Development Team t-shirts and have openly asked people to track them down with questions about the direction of C#.
Let's replace every single Windows desktop and Outlook program with Linux and pick your favorite open source e-mail program. How long would it take for the script kiddies to start attacking those installations successfully? About half a heart beat.
Linux is absolutely just as vulnerable as Windows. The open source/linux community has deluded itself into thinking that just because it has about 0% of the desktop market that you're more secure than Windows.
I'll bet if there were 500 million RedHat desktops there'd be quite a few worms spreading via e-mail clients on linux boxes. All it would take is some dumbass corporate user to save a script to/temp, su to root, and execute it. Bang, you have the same exact problems that Windows has.
And this garbage about lofting morality onto corporations always drives me mad. I'd like to see someone find one single corporation that doesn't do at least one thing questionably immoral.
My take on Ballmer's words are about ownership. The biggest flaw I see in open source software is that no one owns it. It's not an asset. If it's not an asset, eventually, corporations won't care about it and they'll stop supporting it. Only assets figure into the world of capitalism and that's the reality we live in.
The other flaw is boredom and then the intervention of life. What happens when all the nice friendly open source developers get tired of writing code for free? I'll tell you it will happen. Get a couple of kids, a mortgage, and a wife staring down your back and those hours spent fixing bugs at midnight for people that don't pay is going to end pretty darn fast.
Your wife is going to be kicking your ass out of bed at 6am to get to your nice secure job that uses commercial software and when you get home you'll be chasing kids until 8pm, helping to clean up afterwards, and then you'll be passing out cold until it all starts back up the next day.
This whole open source thing is temporary and directly analogous to the.COM bubble.
In order to move software to a well-architected foundation, you need something that works and costs too much to maintain, or, you need large pockets of start-up or reasearch and development cash.
In the first case, you can relatively easily take headcount, hardware, and software expenses for segments of system development and show that over time, the complexity of any given system begins to turn nearly straight up. (Imagine a line graph with a line that goes from left to right for 2 years, then begins to incline slowly for 2 more years, then goes straight upwards from then on). So the justification for re-architecture is that you can move the complexity back down to a managable level, flatlining enhancement and maintenance costs for a few years, as opposed to continuing forever on the hugely expensive track you're currently on.
The latter scenario is much more difficult to implement since no CEO I know likes to risk money on planned development unless there are buyers willing to wait. You may also find (unlikely) investors that feel so strongly about the foundation of the software that they're willing to risk the initial cash-flows.
The best bet is to make every attempt to refactor things and build things with refactoring in mind as you make progress. Try to use a layered architecture....try to abstract as much as you can...leverage any and all talent on your team to accomplish things in a "ready to refactor" manner.
There's no hard answer. It depends on where the cash is coming from, who the customers are, what state any current products are in, etc etc. It also depends what type of team you have. If you have a bunch of hackers, guess what...you're going to be writing quick and dirty code. If you have a team that understands structured development and you have strong development leadership, then you're far more likely to get buy-in for more formal development practices.
It's always a battle and it sometimes comes from above, but there are many coders that would shoot you if you tried to get them to write anything down on paper first.
Personally, I prefer a formal environment that _I'm_ in charge of. This way, I get to set the rules for when things can be hacked or not.
I looked into this a month or so ago. My take is that it's just a toy from MS Research. Nowhere in any of this did I get the impression there was any serious effort to market this as anything but an academic toy.
I don't think anyone with half a brain expects F# to replace C# or Java or VB.NET.
It's for programming competitions. Not for writing enterprise business applications.
The common theory of preferred language is two-fold.
VB is by far the most common developer language that MS offers.
C++ is the most popular _internal_ language (within Microsoft).
It's only natural for VB developers to migrate to VB.NET and it's only natural that C++ developers migrate to C#.
This is the consensus I've heard in talking to MS personnel.
MS invited a _lot_ of compiler guru's into the design of the CLR (common language runtime) and although they dropped a few things (multiple inheritence) and they kept some things that some compilers don't like (Eiffel/Overloads), they tried to keep everyone has happy as possible.
You're right, marketing will play a part in how.NET is sold, but I highly doubt it will at all effect how it is maintained.
Why? Because those same engineers and compiler guru's are working on versions 3 and 4 at the moment and scare the _crap_ out of the marketing folks.
When the engineers complete their assignments, the marketing people will fumble with it for a year or more...
Marketing Guy asks, "What does 'multiple inheritence' mean and why did you add it? It sounds nice. Does it make.NET easier? Faster? What can we work with here?"
Engineer shrugs and goes back to designing V5 of the.NET CLR.
If I have a Cobol shop, a Perl shop, a Smalltalk shop, I can either port my existing code to the.NET implementations of these languages somewhat painlessly OR I can scrap all my existing code, rearchitecture everything, hire new programmers, and rewrite the whole thing in Java.
I will not argue that once you're in the Java world, at least on the server side, you're probably better off staying there. However, if you're not in the Java world at all and you run Windows servers,.NET is a better choice.
Even if you have Server side Java, I'd still consider tying those objects to.NET clients.
I challenge any Java developer to download or get a copy of the 60-day Visual Studio.NET trial and write at least one simple program in each of the traditional formats (console, windows, website, mobile), and see for yourself how much this IDE changes how you do things.
The old MS development tools were hacked together over years and things like unit testing and deployment were horrifyingly complex. Unit testing probably drops 90% using Visual Studio.NET and deployment probably 95%. These two numbers alone make it worth _anyone's_ while to at least look at the product.
For the most part, MS doesn't care about the Mono project, but if they do, it's a win by letting it procede.
Even if Linux has a weaker implementation of.NET, some developers in the the Linux world may still find that the Mono c# compiler is better than using Tomcat and Java. They might stop innovating for the Java world.
Then, MS can combat Java directly by saying, here's a Linux implementation of.NET and so the main purpose of Java, which is cross-platform, "seems" to go away.
Any effort that sneakily moves the focus _away_ from Java is a good thing for MS. When they have to compete with Mono/Linux, they win easily, because their implementation will _always_ be boatloads better.
Personally, I think.NET is a better implemenation of the Java concept. I can use multiple langauges (VB.NET is much nicer for string handling crap, C# is better for syntax, Perl.NET for regexp) and it all works together whereas in Java, there is no reuse at all. You have to _rewrite_ everything. Heck, there's even a COBOL.Net (http://www.netcobol.com/IBuySpy/).
So in the end, Mono is an excellent diversion for Java developers to stop innovating. And besides, using Java on the client side has never been very interesting or usable..NET does clients _and_ servers both very well.
MS doesn't care because they've built a better platform than Java and they throw $5 billion a year at R and D. No one comes close to that number.
First you complain that Windows isn't secure. Now you're complaining that they're going to make it too secure.
What the hell?
You people are nuts. I don't get these complaints or arguments at all. It's like the advent of the lock and key. I wonder if the general population rioted because people would actually put a lock on their doors and keep the key to themselves?!!! Oh the horror!
I can't wait to hear the complaints when Windows is the most secure operating system on the planet.
You guys will have even more time on your hands then.
It's my prediction that all manufacturers that are in anyway tied to copyrighted material will flock to DRM architectures.
In five years music will become a service instead of a product.
The downside is that it will be nearly impossible for the average consumer to steal music.
The upside is that it will be braindead simple to listen to what you want to anywhere and anytime and it will cost peanuts (pay per play).
In ten years, the teenagers won't even know what a WMA or MP3 file is. They will only know that the little gizmo they got for Christmas allows them to play any song they want anytime they want to hear it and their parents will get a subscription fee debited from some entertainment bank account.
I see movies following a similar path.
Personally I don't care. When I have a car stereo that can understand me when I tell it to play "My Sharona" or "Paradise by the Dashboard Lights" and the song starts immediately, I'll be a very happy consumer. The pricing may start out rocky at first, but it will modulate itself over a few years until the market is set. Then the services will make money on their catalogs and increase revenue on new material. It will be a good thing.
Then there are added potentials. That poetry you've been writing for years can get published and if anyone uses it for commercial purposes, you will automatically get paid. Royalties for the masses for your artistic endeavors. This too is a good thing.
My two cents again.
In Outlook 2003, all script and images are blocked in the preview pane. Images can be downloaded upon request, but scripts are simlpy blocked.
This is not true anymore. Outlook XP and 2003 both block all executable file types with a message the reads, "One or more attachments have been blocked because they might cause harm to your system."
.zip files to transmit their viruses.
Of course you can turn this off, but group policies can prevent users from turning it off, thus forcing people to use
I think there's a pretty large assumption made by the anti-.NET folks that have never actually looked at how .NET functions.
.NET code. This is inherently not true. One of fundamental .NET design requirements was to specifically combat the complaint of broken API's.
.NET environment coexisting on the same server (adding to 1.0 and 1.1). Not only that, but you will also be able to mix code as your systems grow. If you have code written for the 1.1 framework and need to add more code, you can write the new code in any of the available versions and have it work seemlessly. It's impossible to break compatibility in .NET.
.NET. Of course there have been patches to the current versions, but those have been very minor and I haven't heard of anyone being affected by those changes.
.NET assemblies (packages in Java) are signed with their associated .NET runtime. An assembly signed with 1.1 wouldn't run in 2.0 and vice versa. But as long as you have both runtimes, they will work perfectly fine _and_ be able to talk to each other.
One of the things that seems abundantly clear is the misconception that if an API changes, this will break a lot of legacy
When 2.0 comes out, you could have three versions of the
Of course the big assumption from MS-haters is that they will somehow make a patch to 1.0 or 1.1 that breaks some API. MS doesn't need to do this because they're not rewriting the same API structure over and over like they did with MFC. When they need to change an API, that gets rolled into the next release of
A note here: All
As for C# being an open process, it is. You'd be shocked at the level of responses you will get from the C# development team when asking about features. And they listen. The fact that it's only a handful of people at Microsoft shouldn't scare you. If you went to the PDC, they're going to be running around with C# Development Team t-shirts and have openly asked people to track them down with questions about the direction of C#.
Try that with the JCP.
I have a single test I'd like to have take place.
/temp, su to root, and execute it. Bang, you have the same exact problems that Windows has.
.COM bubble.
Let's replace every single Windows desktop and Outlook program with Linux and pick your favorite open source e-mail program. How long would it take for the script kiddies to start attacking those installations successfully? About half a heart beat.
Linux is absolutely just as vulnerable as Windows. The open source/linux community has deluded itself into thinking that just because it has about 0% of the desktop market that you're more secure than Windows.
I'll bet if there were 500 million RedHat desktops there'd be quite a few worms spreading via e-mail clients on linux boxes. All it would take is some dumbass corporate user to save a script to
And this garbage about lofting morality onto corporations always drives me mad. I'd like to see someone find one single corporation that doesn't do at least one thing questionably immoral.
My take on Ballmer's words are about ownership. The biggest flaw I see in open source software is that no one owns it. It's not an asset. If it's not an asset, eventually, corporations won't care about it and they'll stop supporting it. Only assets figure into the world of capitalism and that's the reality we live in.
The other flaw is boredom and then the intervention of life. What happens when all the nice friendly open source developers get tired of writing code for free? I'll tell you it will happen. Get a couple of kids, a mortgage, and a wife staring down your back and those hours spent fixing bugs at midnight for people that don't pay is going to end pretty darn fast.
Your wife is going to be kicking your ass out of bed at 6am to get to your nice secure job that uses commercial software and when you get home you'll be chasing kids until 8pm, helping to clean up afterwards, and then you'll be passing out cold until it all starts back up the next day.
This whole open source thing is temporary and directly analogous to the
Nothing in life is free. Nothing.
In order to move software to a well-architected foundation, you need something that works and costs too much to maintain, or, you need large pockets of start-up or reasearch and development cash.
In the first case, you can relatively easily take headcount, hardware, and software expenses for segments of system development and show that over time, the complexity of any given system begins to turn nearly straight up. (Imagine a line graph with a line that goes from left to right for 2 years, then begins to incline slowly for 2 more years, then goes straight upwards from then on). So the justification for re-architecture is that you can move the complexity back down to a managable level, flatlining enhancement and maintenance costs for a few years, as opposed to continuing forever on the hugely expensive track you're currently on.
The latter scenario is much more difficult to implement since no CEO I know likes to risk money on planned development unless there are buyers willing to wait. You may also find (unlikely) investors that feel so strongly about the foundation of the software that they're willing to risk the initial cash-flows.
The best bet is to make every attempt to refactor things and build things with refactoring in mind as you make progress. Try to use a layered architecture....try to abstract as much as you can...leverage any and all talent on your team to accomplish things in a "ready to refactor" manner.
There's no hard answer. It depends on where the cash is coming from, who the customers are, what state any current products are in, etc etc. It also depends what type of team you have. If you have a bunch of hackers, guess what...you're going to be writing quick and dirty code. If you have a team that understands structured development and you have strong development leadership, then you're far more likely to get buy-in for more formal development practices.
It's always a battle and it sometimes comes from above, but there are many coders that would shoot you if you tried to get them to write anything down on paper first.
Personally, I prefer a formal environment that _I'm_ in charge of. This way, I get to set the rules for when things can be hacked or not.
I looked into this a month or so ago. My take is that it's just a toy from MS Research. Nowhere in any of this did I get the impression there was any serious effort to market this as anything but an academic toy.
I don't think anyone with half a brain expects F# to replace C# or Java or VB.NET.
It's for programming competitions. Not for writing enterprise business applications.
I'd disagree with this...
.NET is sold, but I highly doubt it will at all effect how it is maintained.
.NET easier? Faster? What can we work with here?"
.NET CLR.
The common theory of preferred language is two-fold.
VB is by far the most common developer language that MS offers.
C++ is the most popular _internal_ language (within Microsoft).
It's only natural for VB developers to migrate to VB.NET and it's only natural that C++ developers migrate to C#.
This is the consensus I've heard in talking to MS personnel.
MS invited a _lot_ of compiler guru's into the design of the CLR (common language runtime) and although they dropped a few things (multiple inheritence) and they kept some things that some compilers don't like (Eiffel/Overloads), they tried to keep everyone has happy as possible.
You're right, marketing will play a part in how
Why? Because those same engineers and compiler guru's are working on versions 3 and 4 at the moment and scare the _crap_ out of the marketing folks.
When the engineers complete their assignments, the marketing people will fumble with it for a year or more...
Marketing Guy asks, "What does 'multiple inheritence' mean and why did you add it? It sounds nice. Does it make
Engineer shrugs and goes back to designing V5 of the
If I have a Cobol shop, a Perl shop, a Smalltalk shop, I can either port my existing code to the .NET implementations of these languages somewhat painlessly OR I can scrap all my existing code, rearchitecture everything, hire new programmers, and rewrite the whole thing in Java.
.NET is a better choice.
.NET clients.
.NET trial and write at least one simple program in each of the traditional formats (console, windows, website, mobile), and see for yourself how much this IDE changes how you do things.
.NET and deployment probably 95%. These two numbers alone make it worth _anyone's_ while to at least look at the product.
I will not argue that once you're in the Java world, at least on the server side, you're probably better off staying there. However, if you're not in the Java world at all and you run Windows servers,
Even if you have Server side Java, I'd still consider tying those objects to
I challenge any Java developer to download or get a copy of the 60-day Visual Studio
The old MS development tools were hacked together over years and things like unit testing and deployment were horrifyingly complex. Unit testing probably drops 90% using Visual Studio
For the most part, MS doesn't care about the Mono project, but if they do, it's a win by letting it procede.
.NET, some developers in the the Linux world may still find that the Mono c# compiler is better than using Tomcat and Java. They might stop innovating for the Java world.
.NET and so the main purpose of Java, which is cross-platform, "seems" to go away.
.NET is a better implemenation of the Java concept. I can use multiple langauges (VB.NET is much nicer for string handling crap, C# is better for syntax, Perl.NET for regexp) and it all works together whereas in Java, there is no reuse at all. You have to _rewrite_ everything. Heck, there's even a COBOL.Net (http://www.netcobol.com/IBuySpy/).
.NET does clients _and_ servers both very well.
.NET!
Even if Linux has a weaker implementation of
Then, MS can combat Java directly by saying, here's a Linux implementation of
Any effort that sneakily moves the focus _away_ from Java is a good thing for MS. When they have to compete with Mono/Linux, they win easily, because their implementation will _always_ be boatloads better.
Personally, I think
So in the end, Mono is an excellent diversion for Java developers to stop innovating. And besides, using Java on the client side has never been very interesting or usable.
MS doesn't care because they've built a better platform than Java and they throw $5 billion a year at R and D. No one comes close to that number.
Go Miguel and go
David C
First you complain that Windows isn't secure. Now you're complaining that they're going to make it too secure.
What the hell?
You people are nuts. I don't get these complaints or arguments at all. It's like the advent of the lock and key. I wonder if the general population rioted because people would actually put a lock on their doors and keep the key to themselves?!!! Oh the horror!
I can't wait to hear the complaints when Windows is the most secure operating system on the planet.
You guys will have even more time on your hands then.