Miguel de Icaza Debates Avalon with an Avalon Designer 419
Karma Sucks writes "In an interesting debate with a Microsoft employee, Miguel points out some crucial flaws in Microsoft's Avalon strategy. Perhaps the most shocking revelation is the absolutely horrendous inheritence hierarchy exposed by the Avalon API. Miguel himself is clearly not amused, saying 'We do not want to waste our time with dead-end APIs as we are vastly under-resourced, so we must choose carefully.'"
Don't look a gift horse in the mouth (Score:3, Insightful)
Well well well. Isn't it easy to complain about an API when we aren't the ones responsible for creating it? Considering he is the one copying the
MFC (Score:1, Insightful)
Ad Nauseum (Score:1, Insightful)
- Icaza insults Microsoft policies.
- Nerds rally behind Icaza, he's just so smart to stand up to Microsoft and point out things we already knew.
- Other, more cynical nerds point out flaws in what Icaza said, possibly contradictions to previous comments or connections with MS.
- Mods find this comment flamebait, mod it down.
- No one cares.
?????
- Profit!
Mod this insightful, you insensitive clod.
Re:Joe Beda talks the talk.... (Score:5, Insightful)
I think desktop apps flipping around in 3D and all the new ways you could work with apps would be cool.
But DirectX isn't right for the task, it's too low level. Too much DX code only works on ATi or nVidia, too many vendor specific extensions and shitty drivers. It's great for tweaking the crap out of Doom 3 so it goes as fast as it can, but it would suck if some pixel shader operation that only works on Geforces blowed up my coding session
Avalon is higher level, not trying to implement the latest hardware tweaks and gizmos, just base functionality you can count on across the board.
There's no redundancy, the way I see it. Two different tools for two different tasks.
Re:Don't look a gift horse in the mouth (Score:2, Insightful)
That said, I hate
Re:Don't look a gift horse in the mouth (Score:1, Insightful)
that's like, wacky
Re:As far as I understand... (Score:3, Insightful)
You apparently do not understand.
"Mr. Icaza is now working for Microsoft"
Try Novell in the Ximian devision. That parent company also owns the SuSE Linux distro and tools now btw.
"and he spends his energy on porting Microsoft ideas and projects to the Linux platform"
Ya just like the blackdown project, or OpenOffice.org is doing for Sun's ideas and projects. You wrote the above as if it was a bad thing. Honestly do you want to be locked out of the potential of write one run everywhere apps? Do you feel you speak for all Linux and OSX users?
"So why he criticizes Microsoft plans in the public?"
He calls them like he sees em and even MS workers are at least paying attention to a good critic. If they did more of that, they would have less brain farts along the way. The same goes for others who can't take the heat of an honest review of their work so they just blast back.
Re:5% most interesing nugget of info (Score:3, Insightful)
Re:Hmmm... (Score:2, Insightful)
netsh firewall set portopening TCP 445 SUBNET
OR
netsh firewall set portopening TCP 445 ALL
OR
accept the XP SP2 default and live with a machine ye can't remotely admin on yer win2k network.
XP secutiry.
Ignoring standards (Score:5, Insightful)
Interestingly enough, we never "ignored" standards. We spent a huge amount of time understanding and evaluating the existing standards. SVG and CSS both were passed on because they weren't adaquate to meet our needs. WinFX is a platform for the next decade or longer - we can't start with a base that doesn't meet our needs.
What a load of shit. That mentality is where the "embrace and extend" came from. It might not meet Microsoft's needs, but CSS and SVG are the bloody standards that people are using! What do they know about the coming decade that we don't?
What Chris said pretty much flies in the face of the entire paragraph that Miguel wrote! Look:
I understand why someone would invent their own version of SVG or their own version of CSS: those standards can be difficult to implement, and growing your own version is a lot simpler than having to adapt an existing model to a new model.
I would have probably done the same if I had been in their position: its easy. But I would think that Microsoft has a higher responsibility towards the developer base that must create tools that interop with third party components: creating a new standard for graphics just because its `easy' is not really a good answer.
Implementing SVG might have problems and limitations, but the advantages outweight these problems: there are plenty of tools today to produce and consume it and it fits better with the rest of the industry. A benefit that Avalon users will not have and will just partition the industry again for a fairly poor reason.
Standards are there for a reason. If Microsoft doesn't like them they can see figure 1 [falstad.com]. I have a feeling that Microsoft may not dislike the standards themselves, they just don't like the fact that they're not their standards.
Re:Ease of use and elegence with GUI toolkits (Score:5, Insightful)
More-so, the "most difficult" layout manager is actually the simpler. GridBag. Even if I assign the constraints and add widgets in haphazard order, so long as i set the x and y right, they go in the right place. It is almost like html in how it works, except html requires ordering of the statements.
So please, tell me.. why is swing difficult? It's overwhelming because people don't do graphical stuff from the getgo, just like tk and what not. The difference is, swing just makes sense. Now it's not to say others DON'T make sense. perl/tk makes a lot of sense too, but the oop in perl is weak, so it's easier to make tpyos and screw things up once in a blue moon... especially sans strict.
Re:look at those URLs... (Score:1, Insightful)
Both URLs are equally opaque as to their content.
Re:Joe Beda talks the talk.... (Score:4, Insightful)
What makes iD special is game play and the game engine.
If Carmack moved to DX9 or it's successors, players and developers would move with him.
Re:Ignoring standards (Score:5, Insightful)
Well, if one were to use Microsoft's implementations of SVG & CSS, I totally agree.
Re:Ignoring standards (Score:3, Insightful)
They know that they have a monpoly and a disinterested userbase and thus they know that they can push anything down our throats that they want and most people won't care.
We (anyone who's not part of Microsoft) have no such knowledge nor power.
Re:MFC (Score:3, Insightful)
Re:Ignoring standards (Score:5, Insightful)
Which seems to me to miss the point of having standards. The value in standards isn't in whatever the standard specifies, it's the fact that everyone else is implementing the same standard.
Hum, Notice no one has said anything about Apple.. (Score:2, Insightful)
after years of programing I have come to the following:
1. Object-C rules. NeXT was the best.
2. Aqua is better thought out then any of this crap!
Just my 2 cents.
Oh, yes I am an Apple Fan Boy and proud of it!
Re:Hmmm... (Score:5, Insightful)
On windows, many of the key userland APIs are directly tied into the lowest levels of the operating system. This is great for Microsoft, who can just tell the FTC that "no, we can't remove Internet Explorer/Media Player/Instant Messenger from Windows". This isn't so great for its users, since a hole in one of those applications often yields control of the system in unpredictable ways.
The microkernel versus monolithic kernel is a pretty old debate. The main problem with microkernels, as far as I understand, is that they are much more difficult to develop. Yes, the complexity is encapsulated, but the message passing stuff can get very hairy. My opinion: if both approaches work well, who cares?
Re:Architecture Philosophy (Score:5, Insightful)
As in FSF Gnu Hurd?
In the limit of taking your sweet time getting the architecture right, you risk something else coming along and getting enough of it right to scratch the feature itch before you do; from that point your market irrelevance is proportional to the difference in delivery dates.
No one is in a hurry to get on the wrong track, but assuming your competitors aren't totally stupid there is an equally unpleasant consequence for being the last one out of the station.
English Please (Score:4, Insightful)
I'm not trying to be Xeno Phobic but write in the language that people can best understand your arguments. Miguel's blog is a bunch of off the cuff un-supported arguments.
Un-supported only in the sense that there are no examples and/or references. He may be right but doesn't do a very good job expressing his thoughts.
It would be nice to see a better articulation of why it is that he's so concerned with Avalon, in the section about the developer needing to know a lot of the internals to implement code, he's very short on details of why this is. If your going to go to the trouble of jotting good thougts down in a blog - make them worthwhile.
Re:Hmmm... (Score:2, Insightful)
Re:About inheritance and the API (Score:5, Insightful)
The average programmer doesn't care the the hierarchy is 10 or 11 levels deep (well at least until the next avalon release comes out). But Microsoft should care, and Ximian also cares. Very deep inheritance hierarchies are tough to maintain. Inheritance is a pretty intimate binding of two classes and changes higher up in the hierarchy sometimes have disasterous changes down the line. From a talk [fnal.gov] that I heard Stroustrup [att.com] give, he doesn't care for them much either. (I didn't attend this one, but I imagine it is the same based on the slides.)
In this day and age, the commonly accepted wisdom is that you break functionality into interfaces and you write shallow helper classes to degalate to for common implementations of those interfaces. (C# is quite possibly the best language there is for supporting this architecture.) This way you don't force the user to use implementations they don't want when they want to program to a particular interface in your system.
If you look at the code for eclipse [eclipse.org], you'll see a good example of this design in action.
Re:So? (Score:3, Insightful)
Re: Ctrl+Alt+Delete makes my M$ Secure?? (Score:3, Insightful)
Think about stealing passwords. One of the easiest ways is popping up a real looking login box and then complaining that the user entered the wrong password and dumping out to the real one for the next password entry request. No user is going to be suspicious. Everyone assumes they slipped on the first try, but in a public lab situation this can be pretty effective. Can also get your ass tossed out of school these days.
Re:Ignoring standards (Score:3, Insightful)
What a load of shit. That mentality is where the "embrace and extend" came from. It might not meet Microsoft's needs, but CSS and SVG are the bloody standards that people are using! What do they know about the coming decade that we don't?
Would you care to explain to the crowd what you think CSS and SVG are "standards" for?
From what I've seen, they're standards used on web pages.
Avalon is not a HTML-based UI. You don't write web pages for the UI for Longhorn. So which bit of CSS and SVG do you think would be sufficient without modification to be used for generic client-side API use?
HTML, by the way, was never meant to have an IMG tag. By your logic, it still wouldn't have one today. Similarly, we'd only ever use 7-bit ASCII and not Unicode.
Re:Two observations (Score:5, Insightful)
Huh? How did the company do the wrong things without the humans that work for the company?
Everybody who works for MS has to shoulder the blame/credit for everything MS does. They all help whether directly or indirectly. You don't get a pass just because you are nice guy, your salary is what it is because your company is an asshole and the people who run your company are immoral bastards.
object model (Score:2, Insightful)
Re:Hmmm... (Score:5, Insightful)
I have to take exception to that. The GUI subsystem most certainly is integrated into the kernel - not only does it run in kernel mode but its location there basically makes objects like menus, windows, images ... even metafiles (!) kernel level objects which can be created in one process and then passed to another and used there. Applications rely on this ability.
Don't forget crap like the registry running in kernel mode as well.
I mean, how on earth do you define integrated into the kernel if not by applications expecting it to be there?
Comment removed (Score:2, Insightful)
Re:As far as I understand... (Score:3, Insightful)
If you are going to "reshape this industry", you could at least try to do so into a less hideous new shape. (l)Unix has been dead for more than fifteen years[1], but better things have been around for almost as long.
It's funny that everyone keeps heralding how Unix and its variants are a dead end, but more and more operating systems are reinventing the wheels of Unix to provide the security and flexibility that Unix provided 10 years ago.
If you like C but are tired of doing memory allocation, why don't you use the language that the creators of C spent twenty years designing[2] to overcome C limitations: Limbo
It is simply a matter of popularity, you can design a language that does everything, but if it does not win mind share, then you have a very good dead language. I cannot comment on Limbo, as I have never used it, but the progression from C to C# is night and day. C is just old and it feels old, every time you have to touch memory allocations, or make sure everything is cleaned up. As for Java, it has become very bloated and the promise of write once run anywhere has somewhat fallen apart. As for
[1] "Not only is UNIX dead, it's starting to smell really bad." -- Rob Pike circa 1991
"Those who don't understand UNIX are doomed to reinvent it, poorly." --Henry Spencer
Re:Hmmm... (Score:3, Insightful)
The Windows shell is basically equivalent to Gnome or KDE. If you remove KDE, many KDE applications break; when you remove a library, the things that depend on it break. Internet Explorer is as much integrated into the OS as KDE or Gnome are integrated into a Linux distro. Isn't Konqueror (espescially the shared libs that implement it) integrated into KDE?