Fog Creek Software
Discussion Board

More API wars (sorry)

Sorry, this is a bit of a rant, but I found Joel's recent article incoherent and condescending (the sidebars).

Joel's pro-Microsoft stance has sometimes been off-putting to me, but my views towards Microsoft have changed in the last few years. Today, with .net and the future plans, Microsoft is taking the awkward steps necessary to move development - on the windows platform - forward. This takes guts and long term vision. It puts the relationship they have with developers in jeopardy, but the victims of any FUD generated these are developers for the Microsoft platform rather than some tiny adversary.  In the long term, you can say it is motivated by upgrade revenues, but so what? 

This makes things uncomfortable for people who have invested a huge amount in VB6 and MFC stuff, but is the problem that these people do not want to put in the effort to learn something new? .Net is better. Joel says that. Why not learn it - Joel's "business value" argument seems to me to be shortsighted. He hints that things you write using deprecated technologies will not work on windows in the future - but I don't believe it, and I don't think he does either.  Binaries will always be backwards compatible on Windows. If you like, you can use use VB6 and MFC forever, and the programs will run... 

So is MFC/VB6 the pinnacle of software development? Sure, in the past, it has delivered "business value", but I for one think it sucks.  Microsoft thinks so too.  Does Joel?  I know he has an investment in it, and he can continue to ship software using it...

As crazy as it sounds - and I cringe as I write this - maybe it is time to start thinking about Microsoft as a company that provides technological leadership.  Our field is stagnating. Sun is flailing with Java - maybe IBM would do better, but they aren't in a position to do so.  A free operating system is great, but that 30 year old thing? We should be able to do better. It is all kind of sad.

Sorry, losing my focus.  But Joel should stop whining because he can't figure out to do with his crappy VB6 app.   

Flame Bait
Wednesday, June 23, 2004

"A free operating system is great, but that 30 year old thing?"

My. God.

TJ Haeser
Wednesday, June 23, 2004

So what the fuck are you saying?

Wednesday, June 23, 2004

So Joel just can't win.  When he doesn't post anything, people have a shit fit because he's disappeared. When he does post something, now he's "whining because he can't figure out what to do with his crappy VB6 app."

Maybe you SHOULD start your own software company and when your revenues have reached the point where you can provide a living for several employees in NYC then think about telling Joel what he SHOULD do.

Wednesday, June 23, 2004

"but the victims of any FUD generated these are developers"

I agree, questioning the decisions made by Microsoft in any way is clearly a bad thing for all concerned, Joel should be more careful in the future IMO.

"In the long term, you can say it is motivated by upgrade revenues, but so what?  "

so nothing.  except that the point is that just because Microsoft wants us to do this to increase their revenues doesn't mean that we want to do it.  Pragmatically speaking whats in it for me?  (sure .net is nice, but theres a bunch of other nice technologies out there as well)

"but is the problem that these people do not want to put in the effort to learn something new?"

yep :)  unless you can convince me that the best use of my time is doing so.  I have no lack of new things I want to learn, also no lack of new things I need to learn, and also no lack of new things that I will learn.
Which list should I put .net on, and how high should the priority be?  Im not interested in "this is the way of the future" type arguments, Im interested in "this is the best thing for you to do right now because..." type arguments.

"Joel's "business value" argument seems to me to be shortsighted."

<g> most business value type arguments _are_ short sighted...but that doesn't make them wrong.
I cannot (and will not) stop and learn every new tech that comes along just because it sounds cool...or even because it is provably better than what Im already using...that way lies madness. 
I will wait, and watch...for every new project I will make a decision what to use for it, balancing my knowledge in the tech, the probable gains, the ease of distribution, the impact on users etc etc etc.  If, and only if, that entire case is made will I switch.
and I tend to decide not to switch because changing tech is a Big Deal and never to be done at all lightly.
The decision to move an old project across to a new tech is an even bigger decision, and even less likely to happen without an incredibly good reason.

" but I for one think it sucks.  Microsoft thinks so too."

heh, but they didn't x years ago, it was delivered as being the greatest thing since computers began.

Seriously, if I go enthusiastic and believe every software company that told me to move to their newest tech I would never have time to actually develop new stuff..Id still be too busy moving my very first project across to the very latest tech.

Thats how software companies persuade users to upgrade (I do it myself) "that old product isn't as good because of xxxx, but the new version fixes all that _and_ deliveres yyyy and zzzz"
nothing wrong with it, but to not recognise thats what they do is to be dangerously naive and a Less Good Developer (I _mean_ that)

"maybe it is time to start thinking about Microsoft as a company that provides technological leadership."

yep, sure.  I have no doubt that they are.  but how does that help me decide what to use to finish my current project in?  to start my next project in?  to maintain old projects in? 

Bottom line is that I will change to .net and XAML, but not until you can prove _not_ that its better than VB6 but that its so much better as to justify the huge cost of me and all my employees retraining themselves, working with more than one IDE (because it will be a fair while until we can move all the older projects across) and so on.
Seriously, the decision to shift is so entirely not trivial that the phrase " is better than vb6" means very little on its own.  I can see good things about it, but not enough to move before I am ready.
It will happen, but it wont happen until I know its the right time to do it :)

"But Joel should stop whining because he can't figure out to do with his crappy VB6 app.  "

interesting take on it, and it kind of destroys any "im just a guy" credibility that you may have had.

Joel is a business man, making business decisions.  If you dont understand his situation and his point then its obvious as hell to every other business man in the room that You Dont Understand The Issues.

Its ok if you like, so do I.  That does not mean that everyone else in the world should move to it immediately :)

Wednesday, June 23, 2004

Am I the only guy who thinks putting certain word in capitals is just a LITTLE obnoxious? Joel should implement a slashdot style Lameness filter to gut these posts out.

Matthew Lock
Wednesday, June 23, 2004

Microsoft has really made some serious mistakes with .NET.  .NET is a great platform, I'm not saying otherwise.  But lets look at the mistakes:

1. Marketting.
For a time, everything was .NET.  There was Passport.NET and Windows.NET and Office.NET and so on.  Passport caused the most confusion.  .NET had to dig itself out of a deep hole to get noticed.

2. VB.Fred
The "Common Language Runtime" is supposed to handle all kinds of different languages -- Yet, all the languages look the same!  There isn't much difference between C# and VB.Net.  C# is very VB-like in spirit even if it's C++ in syntax.

There is probably as much VB code for Windows as C++ code (perhaps even more).  C++ is a .NET language but classic VB is not?!?  Why the difference?

Microsoft should have released a VB6 compatible language for the CLR.  It should be able to compile VB6 code without modification.  It needn't be a first-class citizen of the .Net world but it should allow interopt with C# and be based on the framework.  This would be the end of VB but would give a clear migration path to .NET and C#.

3. WinForms
Microsoft has an opportunity to essentially rewrite the Windows API but they don't get very far.  WinForms just reeks of Win32 and prevents that clean break everyone is hoping for.

4. Avalon, XAML, WinFS, etc.
.NET is barely out the door but now there's a whole new alphabet soup of technologies coming out?!?  Fire and Motion, indeed.  Microsoft is going down the Java road (oh J2EE, struts, Swing, SWT, Jakarta, etc, etc, etc...) and it's just confusing to users and developers.  It also brings the next point:

5. Longhorn
So we have .Net and we have WinForms but wait...  forget all that...  because we have all this shit-cool stuff coming out in 2007! 

Microsoft has a great opportunity with XP -- it's going be around for a long time.  They could really sell the fact that XP isn't going anywhere.  Presently, the uptake on XP has been pretty slow compared with previous versions of Windows.  Microsoft should be saying "upgrade to XP, you'll be good to go for 3-4 years" rather than "XP isn't a good enough reason to upgrade, but in 3-4 years well have something great!".

As Joel has said, Windows is really the Win32 API.  If .NET really is the future of Windows API then they should be pushing that, not Longhorn.  It's a subtle but important difference.

Almost Anonymous
Wednesday, June 23, 2004

"Microsoft has a great opportunity with XP"

Yeah, ---but.  It seems like Microsoft are dragging their heels on releasing servicice pack 2 becuause it REALLY changes a lot of thing security wise. --Which is good.

I think the service pack might send ripples through the user community because it will make them realize their old ( pre sp2 XP) was very insecure.  Microsoft needs to figure out their approach to feeding the community the upgrade.

So to speak to the API wars and the great opportunity, my point is this service pack is going to create a line in the sand for ISV's writing for XP. 

one day at a time
Wednesday, June 23, 2004

AA, do you want backwards compatibility (with VB6++) or a clean break (from Win32)?

I seem to recall MS originally planned to make VB.NET compat with VB6, but realized at some point it couldn't be done.

Wednesday, June 23, 2004

"but realized at some point it couldn't be done"

They make managed C++ but they can't do VB?  I don't believe that.  In fact, what Microsoft is doing with C++ is what they should have done with VB. 

Yes I want backwards compatibility and I want a clean break?  It's not a contradiction.  Win32 ain't going anywhere.  Why should the new API expose Win32-concepts?!?

Almost Anonymous
Wednesday, June 23, 2004

You're right, a VB6 layer could have been done, anything can be thunked with enough work, though I think it would be no where near as easy as incorporating C++, which is just a language.  I've ported VB6 web server code to VB.NET, and even that is no picnic.

In both cases (VB.NET and WinForms) they seem to have minimized their work, as software companies tend to do:  skip the VB6 compatibility layer, and just wrap WinForms around Win32.  Otherwise we might still be waiting for .NET.

Wednesday, June 23, 2004

Why would ANYONE port to VB.NET if they could have kept a 'true' VB6 that worked with .NET?

And if you're going to go to VB.NET, why not just go to C#?  C# and VB.NET are more similar than VB6 and VB.NET, and you gain the 'panache' of using a language with 'C' in the name (even if it IS mostly Java, sigh.)

I think that's the real reason they tried to drop support for VB6.  I'm not sure it's going to work.

Wednesday, June 23, 2004

The real problem is that VB6 is still used in Office under the guise of VBA.

That is the real problem. If MS change to .NET and break older stuff then nobody will buy the upgrade ever. If they keep VBA in its present form then there will be no upgrade path for the amateur developers that started off writing macros and ended up full time VB6 business developers.

Stephen Jones
Thursday, June 24, 2004

*  Recent Topics

*  Fog Creek Home