Cross-Platform Microsoft
willdavid sends us to the ZDNet blogs for a provocative opinion piece by John Carroll. He points to Microsoft's evident cross-platform strategy with Silverlight, and wonders whether the company couldn't make money — and win friends — by extending its excellent development ecosystem cross-platorm. "Microsoft, apparently, is helping the folks at Mono to port Silverlight to Linux. This is good news, as the primary fear I've heard from developers is that Silverlight will be locked to Microsoft platforms and products. Microsoft has already committed to supporting Silverlight cross-browser on Windows, and has a version that runs on Mac OS X (which is even available from the Apple web site). The last step is Linux, and Microsoft is working with Novell and Mono to make this happen."
How exactly is Microsoft going to be supporting these cross-platform apps? Maybe they're thinking about doing what they did with IE on Macintosh, produce a version for other platforms, then stop distributing or providing updates to it once they decide it's no longer convenient.
Business applications are kind of strange beasts in the software world because of the long usage life they're expected to see. That's one of the reasons companies often want some big name company behind a product because they're afraid somewhere down the road the company might fold and they'd be left without support for a vital application. The problem is most of these companies haven't yet realized that open source applications provide much better guarantee because even if the original developers quit working on the application, it's always possible for someone else to take up the reins. In a proprietary system, even with a big developer behind it, there is nothing insuring that development continues on any given application.
Of course, in this case it sounds like maybe Microsoft is doing the right thing and actually helping the Mono guys make their product compatible with Microsoft's, but I'll still be wary of anything Microsoft is distributing directly.
Curiosity was framed, Ignorance killed the cat.
Most of the mono team works for Novell so are getting paid. I also assume cooperation between MS and Mono is part of the larger Novell/MS IP sharing agreements, but that is just an assumption.
"reality has a well-known liberal bias" - Steven Colbert
John Carroll the author of the FUD piece, who literally spent years doing trolling the ZDNet talkback forums back in the day in support of Microsoft, so much so that, lo and behold, he was then given a column of his own to write Microsoft FUD articles, and was eventually, in 2005 awarded with a job at Microsoft, something he's been hoping for for years (only took him something like 7 years). The guy is the biggest shill for Microsoft I have ever seen. He was praising VB and ASP as being superior to Java (no lie, look it up in the archives at ZDNet) back when the whole .Net circus was still a wet fart in BillG's pants. It is HIS JOB to paint Microsoft in a favourable light and as being better than anything else.
Does anyone really expect Microsoft to continue development of Silverlight for Mac and/or Linux after Silverlight has killed Flash? After Microsoft killed Internet Explorer for Mac and Windows Media Player for Mac (not that they even remotely considered maknig any of that available on Linux)? You trust them? You trust some guy who has been praising Microsoft exclusively to the detriment of all else for almost a decade?
You have to be joking, right?
Everyones a skeptic, I know, but there are a few good signs. For one, the dev work isn't being done at Microsoft, its being spearheaded by the MONO crew. The Microsoft folks are kind of technical advisors, in direct contact with the Linux developers, giving advice and recommendations on implementation, etc. That I think is the biggest sign this will be a success. This isn't an internal project that we know of based on a memo or press release, this is an active project which has screenshots and source that can be downloaded and played with ...
Unless Microsoft plans on going whole hog on cross platform compatibility, this is only an attempt to get the web dev community which has historically been LAMP/JAVA based
Huh? I made my living as a web developer using MS as a platform. So did everyone at my former employer (who is being bought out). I don't think you know the true market, because we never had any problem finding clients.
``extending its excellent development ecosystem cross-platorm.''
Excellent development ecosystem? Don't make me laugh. I've been hearing about the asserted superiority of Microsoft's development tools and the wonderful enterprise features of their products for years, and always thought to myself "well, probably." However, I recently started working in a Microsoft shop and I can tell you first hand that the Microsoft "development ecosystem" is not excellent. It's not terrible, but it's not great, either. Certainly not worlds better than some already available environments (cross-platform or otherwise).
Without going into specifics, I can say that I spend more time struggling with Visual Studio than doing anything else. Most of the features I want are actually there, but it's not always obvious where to find them or how to use them. Some features are missing, or are nominally there, but fail to work in the situations where I need them. Then there is a load of baggage that just gets in the way. Erorr messages that it gives me are almost always uninformative, wrong, or both (my favorite so far is "'1' is null or not an object"). At first, I thought it was just me being inexperienced, but even colleagues with years of experience run into these same issues. And it's not like I'm very demanding; usually, I'm just trying to find out what the value of something is or how the program got to a certain point.
And that's just Visual Studio. We use a number of other Microsoft products in our workflow, and there are issues with most of them. For the most part, these are usability issues. They don't actually prevent you from getting work done, but they do slow you down. Stability issues come a distant second. One issue that hasn't affected me but is affecting the company as a whole is that a lot of time goes into making sure things work with the current _and_ previous versions of Microsoft products. Sometimes, this is as simple as just not using some new feature, but sometimes it takes up a lot of time.
Note that I have purposefully highlighted the bad parts and omitted the good ones. My point is not to give an objective impression of the Microsoft platform for development purposes, but to show that it falls short of excellence. I would never choose it myself, but I wouldn't say it's actually bad. Just not excellent.
Please correct me if I got my facts wrong.
I mean, when you hit compile, it generates and spews out a command line to a little text window. Which is fine, but it doesn't bother to actually parse that data and present it in a meaningful way. You end up scrolling through dozens of warnings (if you're not compiling with the equivilent of -ferror) to find relevant errors.
Huh? You're looking at the Output window, which shows the build output. Visual Studio does parse that into a list of errors and warnings, accessable from, the "Error List" window. You can turn off warnings in this window to just show the errors. Double clicking on the errors will take you to the correct source file and line that generated the error.
Oh, and then there's deployment. I worked for a while with some folks that had a C++ application that talked with the Microsoft SQL database and IIS. Their "push" procedure involved remote desktop to the server, clicking buttons to take down the server, pointing it at the maintenance site, creating a new directory in the file explorer, naming it correctly and copying the existing database files to it, copying over the newly compiled bits, testing it in situ and finally pointing the server back to the live site. This took them between 3 and 6 hours, every Friday night. I asked them why they can't just write a shell script (or dos shell script, whatever the hell windows has) and they said that it would take too long to develop that. Idiots.
Yes, they're idiots. We do all of this automatically through NAnt. I'm pretty sure you can do this all through the command line if you're masochistic (quite frankly, the Windows command line sucks hairy balls). But theres seriously no excuse not to have deployment automated, especially if its taking several hours.
But thats not what I'm here to rant at you about. I'm here to rant about Visual Studio. Why, if the OS is called Windows, am I only allowed to have one of them in my development environment? I never got the MDI thing, but I routinely, on Mac OS, have 20 source files open and visible. Why does Visual Studio insist on cramming them into one single pane?
Theres a setting in Visual Studio that lets you switch to a windowed environment. Tools->Options->Environment->General->Window Layout->Multiple Documents. It still constrains those source code windows to the area of the parent window (Visual Studio's window), but you can pane them and everything. If what you want is to be able to drag the source code windows outside of the main Visual Studio window, then you can't do that. I would agree that it would be much nicer if you could. I prefer the tab layout, personally.
Gargh, its frustrating. Why can't the compiler take normal command line switches with meaningful names?
I use MSBuild to compile our app, and it takes command line switches. I'm not sure what kind of switches you are looking for, however. You don't get things like specific optimization switches, since those are in the project settings, but I typically build one of a set of pre-defined modes (Release, Debug, etc).
Since we're talking about the "development ecosystem", why does the command.com shell so completely fail at being useful?
cmd sucks. Big time. It would be nice if they could actually start pushing powershell, but thats unlikely to happen anytime soon. They should have put it in Vista, at the very least. Hopefully their next server product has it.
The debugger is even worse, hiding and showing things based on what it *thinks* I want to see. The only benefit it has over gdb on the command line is mixed assembly/source view, but at least with gdb I can quickly disassemble whatever I need to, not just where the PC is.
Off the top of my head, I can't think of any examples of the debugger hiding and showing me things. It pretty much shows me what I ask it to.
Can someone please desc
I mean, when you hit compile, it generates and spews out a command line to a little text window. Which is fine, but it doesn't bother to actually parse that data and present it in a meaningful way. You end up scrolling through dozens of warnings (if you're not compiling with the equivilent of -ferror) to find relevant errors.
/? is too hard for your. If you want to script something, there's the newer Powershell coming down the line. Until then, Nant is a wonderful scripting tool.
*Sigh* Here we go. Its call the "Error List" window. By default its there, so I would go and reopen it the next time you compile. Code properly, and the warnings go away. If you can't figure out good coding practices, then clicking on the Warnings button on the Error List window will filter out all the warnings.
Oh, and then there's deployment. I worked for a while with some folks that had a C++ application that talked with the Microsoft SQL database and IIS. Their "push" procedure involved remote desktop to the server, clicking buttons to take down the server, pointing it at the maintenance site, creating a new directory in the file explorer, naming it correctly and copying the existing database files to it, copying over the newly compiled bits, testing it in situ and finally pointing the server back to the live site.
Sounds like that's the process they wanted. My deployment is a simple nant script. All it does is copy files and create and sign a manifest file. I use Sql Compare to update the database along with some custom scripts. That's it. I can do an upgrade in 15 minutes. ClickOnce is a great way to deploy an application.
This took them between 3 and 6 hours, every Friday night. I asked them why they can't just write a shell script (or dos shell script, whatever the hell windows has) and they said that it would take too long to develop that. Idiots.
How is that the fault of any MS product?
But thats not what I'm here to rant at you about. I'm here to rant about Visual Studio. Why, if the OS is called Windows, am I only allowed to have one of them in my development environment? I never got the MDI thing, but I routinely, on Mac OS, have 20 source files open and visible. Why does Visual Studio insist on cramming them into one single pane? Gargh, its frustrating. Why can't the compiler take normal command line switches with meaningful names? Since we're talking about the "development ecosystem", why does the command.com shell so completely fail at being useful?
I guess you don't know how to redock the windows or use the split pane features. I also guess csc
The debugger is even worse, hiding and showing things based on what it *thinks* I want to see. The only benefit it has over gdb on the command line is mixed assembly/source view, but at least with gdb I can quickly disassemble whatever I need to, not just where the PC is.
Ya, its a pain how it makes the point the exception occurred at highlite in yellow, with a big box pointing to the line explaining what the exception is, and what some common causes are. That's AWFUL. How dare it do exactly what you tell it to (no, it doesn't change its behavior randomly, there are settings that YOU control which dicate how much to show or hide).
Can someone please describe what is so great about visual studio? I've heard other people say it, but I really don't see it. (Please compare and contrast to Eclipse and/or Xcode.)
Maybe if you took the time to learn the tool you'd have an easier time.
Are you serious? .NET. I like Mono. I use linux for most of my computing because it meets my needs better. But I hold nothing against Microsoft, and if they can beat flash, then god bless them for it. I'd love to be able to build that type of interactive web content in visual studio (gotta admit, it's fast. Particularly when dealing with multiple data sources whether they be on linux or windows). The time I'd save at work would be incredible.
Flash: It has a monopoly right now. It is a piece of shit. It barely supports linux. And beyond that, I have to use terrible development tools in a windows environment to do anything with it.
Silverlight: Gives me hope. I like
Office on the Mac, while currently behind Windows Office, has often in the past been ahead. There is a fair amount of independence between the Windows Office people and the Mac Office people, and so they tend to leapfrog each other.
They didn't cut and paste from Linux, they took it from BSD, and in the open. The BSD license "Regents of the University of California" attribution was in their copyright for a long time, though they did rewrite it (I think) for Vista.
Don't blame me, I voted for Baltar.
Among other things, it was developed from scratch for a more application-targeted usage, whereas Flash is basically an animated movie player that was modified with spit and duct-tape to kind of be an application delivery platform.
Silverlight uses a subset of the XAML and WPF frameworks, which are light years beyond doing layouts in Flash. And here's the biggie for app developers: Silverlight doesnt force you to work in the death-trap that is Javascript. You can use a real, compiled, IDE-supported language to do your development, and not be stuck in the 1980's with javascript.
Look into it a little more. The media-delivery stuff is just what's sexy right now, due to YouTube's success. But its really a tiny piece of it. Just think of it as a mini app-dev platform for web delivery.