Last week's announcement of the changes in Longhorn were interesting: the backporting of Avalon and the removal of WinFS from the mix.
It was clear that the only way to get Avalon adopted was by backporting it in some capacity to older operating systems. By June 2004 XP had 51% of the market while 40% of the market was still held by Windows 95, 98, ME, 2000 and NT. This is after three years of XP having being available to the public.
If Longhorn was going to ship in 2006, developers could not target Avalon as their UI for at least another three years, Microsoft's recommendation was just as disheartening. Of course this is assuming that Longhorn would have the same adoption rate as Windows XP.
Incidentally, this was the reason why we decided to redo our Windows.Forms implementation: if Avalon was not going to be common platform for development until 2009 people would continue to target the Windows.Forms API. The announcement from last week closes the gap.
As I have discussed earlier, Avalon is the latest edition of developer lock-in to the Microsoft platforms and the decision making process is driven by this more than technically. If the need arises, it can be implemented in open source as an interop measure, but it is an effort that will take time.
Avalon has a few problems, the following is from my impressions from the latest code that has been made available to the public:
Security: Although Avalon and .NET address the high-tech problem of secure sandbox execution, it fails to provide a low-tech solution for impersonation, and other forms of tricking a user into providing personal information (credit card numbers, Social Security).
These scams are a serious problem today in the Web but we at least have the url bar. But rich clients make this harder for and end-user to distinguish. Of course some simple solutions exist, but nothing comprehensive enough to guarantee that novice users will not be tricked.
The issue at stake here is that the feature (in this case a large API, feature-full and hard to reproduce) is driving the project, with security being cooked as an after-thought. As I said: the high-tech solution has been dealt with (the sandboxed execution environment) but not the low-tech problems. And the low-tech problems are resposible for most of the viruses affecting the Windows world today.
As we have seen, education of the user base is not really a solution and leaving security as an after-thought has proved very dangerous so far.
Complexity: The Avalon API has a very large surface area. To get an idea, the Button class is number 11 on the inheritance chain with ButtonBase, ContentControl, Control, FrameworkElement, UIElement, RetainedVisual, Visual, DependencyObject, UIContextObject and Object as its base classes.
The implementation details transpire everywhere, and approach that I believe is a bad idea: there is little or no encapsulation of things.
Avalon is clearly not fully cooked, at least it was not a few months ago when simple things like keyboard manipulation were not fleshed out. My feeling is that large changes are still required.
Ignoring Standards: 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.
Canvas model: Avalon's canvas model suffers from the same problem every other retained system suffers: they are hard to scale in the general case. We know this because Gnome has such system and its the basis for a couple of widgets and controls in applications like Evolution, Gnumeric.
The model is fantastic until you have to scale it; And when you have to scale it, you have to fall back to the traditional programming model where you have to roll your own repaint and handle all the low-level details yourself.
In general, I think its a great idea, but it is a limitation on which the rest of the system is built on.
Lack of a GUI designer: Avalon today lacks a GUI designer, an effort that so far people have not noticed, because developers have been told that XAML is the new way of doing things and declarative programming is hip.
Declarative programming is a cute idea (not new: its just the XML version of the old Windows resource files; or Gnome's glade files or MacOS X NIB files). The reality is that XAML is a serialization format that could be manipulated by tools, but the tools so far have been missing.
My prediction is that Avalon v1 will be a throw-away: it is not really the foundation on which you will build applications: V2 will likely not be backwards compatible, they will have to re-architect bits of it: which means that people will end up with two frameworks running side-by-side: Avalon V1 and Avalon V2.
The above problem is compounded with the fact that the CLR has not really sorted out a good model for sharing components across versions of the framework: the GAC solution today is a bit of a hack to keep things separate and allow for multiple installations, but falls short.
This is like cooking, you can not rush a good steak, or a cake or an omelette by cranking the heat. Some things just take time.
In a way the .NET Framework was like this: it was slowly cooked and it reached a great point (it could still be improved) but some of the new code is just not ready.
In Gnome for example we ship immature APIs but we do not make them part of the developer platform: they have to simmer and marinate for a while before they make it into the official SDK.
When I read Dave Winer's comment on Avalon and the Death March, I realized that the Avalon folks now must do two products instead of one: they need to build an Avalon for Longhorn, and another Avalon that will run on XP. It seems that they just added a pile of work to a team that was not ready to release their software.
I watched Allchin's interview over at Channel9, and he looks nervous: he is addressing two audiences at once the winners and the losers: the external developers who get Avalon on XP, and the internal developers that have just been dumped a new set of tasks and challenges. He is walking a fine line.
I do not think I could have solved a problem of this magnitude, am sure the complexity is huge and the Microsoft folks are doing their best, but maybe a change in the way that features are interlocked and how those are delivered to users must be rethought.
When it comes to operating system releases, I believe that Apple has found the sweet spot: a combination of best practices from the industry and best practices from the open source world. In addition to this, the versioning setup that Apple ships for the Frameworks seems to be pretty good on the surface. Update: I fixed some embarassing typos.
Posted on 01 Sep 2004
Microsoft comparing, apples to oranges when measuring itself against Linux.
Best quote, from a footnote in the advertisement: "Results may vary outside the United States"
Plenty of Mono activity in the past two weeks in the development branch (1.1.xx: we are using the same numbering scheme as the Linux kernel).
The new managed implementation of Windows.Forms is moving along (internally it uses Win32 messages and codes to help applications that hook up to Wndproc or use CreateParams), the hack-a-thon in Provo, Utah seems to have been a success.
Documentation of Gtk# is continuing at a rapid pace, and we will soon update the online version of the documentation.
Progress is underway on a few major components: Code Access Security (CAS) and the security related infrastructure for .NET 1.x and 2.x by Sebastien. Atsushi has been busy working on our XQuery implementation: a fairly large task but progress is advancing rapidly.
On the JIT side of things, the most important development are the s390 port morphing into s390x (to support the 64 bit machines of this kind) as well as the record-time port of Mono to the AMD64 platform. The AMD64 port was done by Zoltan and is the second 64-bit port of Mono (his SPARC v9 port being the first).
During my vacation plenty of micro optimizations were done to the JIT and Paolo has fixed the exception bug that made throwing exceptions several orders of magnitude slower than it should have (exposed by IronPython). Also Paolo is working on a new trampoline setup that will help the dynamic nature of IronPython as well as enabling some clever recompilation strategies. Also Massi continues work on our SSAPRE implementation, an effort that is on hold while he goes on a two week vacation.
Paolo has also checked in a few plans on changes that we want to make to our register allocator, you can find this on the Mono CVS repository in the mono module.
Martin continues to improve our generics compiler: just when he thought he was done, we received the C5 generics class libraries (which seems to be the largest body of generics code out there) and he is now fixing the bugs exposed by this.
The team in Bangalore continues work on the Basic compiler for Mono, and it is now possible to run simple ASP.NET applications with it. A Basic compiler is more important for ASP.NET 1.x as it does not support "pre-compiled" sites, so a compiler is required on the deployment machine. With ASP.NET 2.x we could eliminate this problem by having people pre-compile their sites and just deploy binaries on the target site.
Chris Toshok from the Evolution team (thanks JP!) will be assisting us with the debugger core in the next few months.
Venezuela: Various readers raised an issue with my post about the Venezuelan election and said that if I do not document myself better I should not post to my blog about Chavez. That seems relatively fair, but it misses two points: Greg Palast is a man I respect for his investigative journalism.
But my readers missed a larger point: In fact I do not know enough to advocate a `yes' or `no' vote on the Chavez election (which I did not advocate), but that was not the point of my post. The point of my post was the fishyness of foreign intervention through ChoicePoint in the Venezuelan election. ChoicePoint was the same company involved in removing black-voters from the Florida elections in 2000 (documented also in the great book `The Best Democracy Money Can Buy').
One of my readers in the US claims that the oil production facilities in Venezuela are in the government power, Greg Palast disagrees.
I found out about the results of Chavez election while on vacation. And Greg Palast has a great follow up article.
Right now, the oil majors - like PhillipsConoco - keep 84% of the proceeds of the sale of Venezuela oil; the nation gets only 16%.
Chavez wanted to double his Treasury's take to 30%. [...]
But to feed and house the darker folk in those bread and brick lines, Chavez would need funds, and the 16% slice of the oil pie wouldn't do it. So the President of Venezuela demanded 30%, leaving Big Oil only 70%. Suddenly, Bill Clinton's ally in Caracas became Mr. Cheney's -- and therefore, Mr. Bush's -- enemy.
So began the Bush-Cheney campaign to "Floridate" the will of the Venezuela electorate. It didn't matter that Chavez had twice won election. Winning most of the votes, said a White House spokesman, did not make Chavez' government "legitimate." Hmmm. Secret contracts were awarded by our Homeland Security spooks to steal official Venezuela voter lists. Cash passed discreetly from the US taxpayer, via the so-called 'Endowment for Democracy,' to the Chavez-haters running today's "recall" election.
In Mexico at least, it is illegal to receiving funds from an external country to influence the political process. The SI people might be right or wrong, but the whole thing leaves a bad taste in the mouth.
That being said, in Mexico there is an ongoing debate over the monies that funded Vicente's Fox election: a clever setup to bring funds from abroad into his political campaign is under scrutiny.
Posted on 25 Aug 2004
Palast describes a document which landed on his desk:
[Dept of] Justice offered up to $67 million, of our taxpayer money, to ChoicePoint in a no-bid deal, for computer profiles with private information on every citizen of half a dozen nations. The choice of which nation's citizens to spy on caught my eye. While the September 11th highjackers came from Saudi Arabia, Egypt, Lebanon and the Arab Emirates, ChoicePoint's menu offered records on Venezuelans, Brazilians, Nicaraguans, Mexicans and Argentines. How odd. Had the CIA uncovered a Latin plot to sneak suicide tango dancers across the border with exploding enchiladas?
What do these nations have in common besides a lack of involvement in the September 11th attacks? Coincidentally, each is in the throes of major electoral contests in which the leading candidates -- presidents Lula Ignacio da Silva of Brazil, Nestor Kirschner of Argentina, Mexico City mayor Andres Lopez Obrador and Venezuela's Chavez -- have the nerve to challenge the globalization demands of George W. Bush.
The last time ChoicePoint sold voter files to our government it was to help Governor Jeb Bush locate and purge felons on Florida voter rolls. Turns out ChoicePoint's felons were merely Democrats guilty only of V.W.B., Voting While Black. That little 'error' cost Al Gore the White House.
An interesting document, worth a read.
In Mexico every effort and dirty trick is being thrown at Andres Manuel L�pez Obrador with overwhelming support from the Media. Currently Mexico City's governor and the man with the popular backup.
This past week to protest the dirty war waged by the federal government against L�pez Obrador a 42-kilometer (26 miles) human wall was constructed running from the South to the North of the Mexico City.
Mexico's federal policies on economy have been a disaster as well. The government is a blind follower of all the recommendations (mandates) from the International Money Fund and World Bank (polices well known to be a recipe for social disaster). Also the government managed to extend our foreign debt, just when you thought that the platform of Vicente Fox on an "Enterprise Government" would be able to keep the budget on track. Seems like running the economy is not the forte of the right-wing economic policies anywhere in the world.
Government's reply to the human chain run from funny to hillarious: `we need production chains, not human chains' stated Sonora's governor (in lieu of the president, which is known for his lack of verbal articulation power and being a master of sticking his foot on his mouth). Humor wise, you can not beat Vicente Fox's own justification for keeping the disastrous economic policies (notice that he criticized his predecesor for keeping these policies, policies that today he defends, follow the link for all the humor ;-)
Posted on 14 Aug 2004
I will be in Madrid from the 11th to the 13th, then will spend a week in Cadiz.
The next step is Paris, roughly from the 17-20 (depending on weather) to the 22nd.
Great Daily Show last night with Bill Clinton. Clinton had great insight into
Posted on 10 Aug 2004
Nat has been fairly active this morning replying to e-mail even if he should be enjoying himself outside on this gorgeous day in Boston.
Happy birthday dude!
Duncan sent me this excellent post from Tim Bray on Patents and Linux.
Posted on 06 Aug 2004
Edd's book on Mono today is #8 on the Internet section in Amazon.
Posted on 05 Aug 2004
The new Real Player and Helix Player are out, with OGG support. Loving it.
On Thursday I will be on the Dot Net Rocks show with Rory and Carl.
I ran into Rory the other day at the airport. He later came to OSCON to hang out.
Seems hard to believe:
The Department of Justice has called for these five public documents, two of which are texts of federal statutes, to be removed from depository libraries and destroyed, making their content available only to those with access to a law office or law library.
The topics addressed in the named documents include information on how citizens can retrieve items that may have been confiscated by the government during an investigation. The documents to be removed and destroyed include: Civil and Criminal Forfeiture Procedure; Select Criminal Forfeiture Forms; Select Federal Asset Forfeiture Statutes; Asset forfeiture and money laundering resource directory; and Civil Asset Forfeiture Reform Act of 2000 (CAFRA).
They are sweet. Love you guys.
Last week two of my airplanes in a day were broken, so they had to send me through some other airline or some other plane. While waiting for my next plane, I purchased a book of articles from Molly Ivins. I was laughing for the rest of the trip. It makes Clinton even more likable. Larry Flint also has a quite interesting book.
This is a public service announcement: do not watch "The Village".
Must see two-minute video: Will Ferrell as the president. Too many great bits.
On that same subject, I enjoyed my first Gore Vidal book quite an excellent writer.
My quest to learn to play four instruments at once is progressing nicely. I have learned to play 2 notes in four different things. At some point, I expect some kind of magic economic phenomenon to turn me into a virtuoso.
Met loads of people, partly because I have developed a skill for missing every session and hanging out in the public areas. Loved the conference, always good to discuss things live.
Dan Sugalski was a man of his word, and brought a couple of pies for the contest. I do not like Parrot, but the man and his team stood by their word. Guido was a gentlemen and refused to throw the pie. So no pics.
I noticed that Open Source proponents using MacOS X have developed highly tuned excuses, similar to those that smokers have about why cigarettes are good for you.
Posted on 03 Aug 2004
At this conference I also managed to miss Robert Love's presetntation. This entry is here to mend the offense, and as a public promise to Robert that there will be some intensive picture taking action at his next presentation.
The big announcement yesterday was from Jim Hugunin: IronPython, an implementation of Python for Mono and the .NET Framework was released to the public under the CPL license. It has been a long wait, but it was worth it: Python is a language of choice for many developers because of its ease of use and rapid prototyping cycle, and C# is a fantastic language for component-based and large scale programming, now both languages have come together.
His presentation touched on the challenges of getting a dynamic language like Python to run efficiently on the CLR, and also presented a couple of benchmarks with interesting results: while IronPython on the CLR seemed faster on average with the various tests, with Mono it ranges from 5% to 50% slower (and in a degenerate cases with exceptions, we are 65 times slower). But that being said, it is not terribly slower than Python 2.3, and we are going to look into these issues.
IronPython works out of the box on Linux, and I was able to run Edd's sample out of the box.
Echoing Edd's sentiment: there is a sense of freshness in being able to issue Gtk# commands from the Python command line.
Jim also announced that he is joining the CLR team at Microsoft to improve the VM for scripting languages. Congratulations to Jim on his new job!
Robert is famous for doing the most interesting presentations and for two years in a row I have missed his presentation. Yesterday, I was on a meeting while his presentation was running.
The Mono Developer's Handbook from Edd is out! I got my copy from Edd as they sold out the books that Powell had brought to the show. I was told on the elevator from some O'Reilly folks that today they are bringing a bunch more to the show.
Slides from my Mono presentation are here. These slides were done before IronPython was announced.
I have met another five people who were told two nights ago that they had over-sold the hotel, and they could either take 100 dollars or the free room that they would put them on. The hotel claims its standard practice, but I have never met so many people in a conference that were left room-less. Am staying so far, that I can manage to take a nap from my hotel to the conference and ponder all kinds of deep topics on my trip.
In Dallas I ran into Rory in the airport. All I can say on the McDonalds bit is that I was very hungry, and it wont happen again.
Posted on 29 Jul 2004
Going to Austin on Monday, then hoping to OSCON in Portland.
Posted on 25 Jul 2004
I posted a list of areas that we are working on for the Mono 1.2 release. Mono 1.0 has been fairly stable, we will likely issue a bug fix release with a few bug fixes in the next couple of weeks.
Massimiliano has checked a of the Arrays Bounds Check Eliminations to CVS. See his results. This will help with computationally intensive tests. He is now working on a framework to implement Partial Redundancy Elimination for Mono (SSAPRE) as well as prototyping a new relocation feature to improve Ahead-of-Time compiled binaries memory footprint.
In the meantime Ben and Duncan have been doing some optimizations to the code: many small tree optimizations, peephole optimizations and implementing a few tricks to reduce the size of generated code: each one giving a percent here, a percent there. Ben also has started the work to add precise garbage collection to Mono: now we track precisely everywhere where we keep handles to managed memory. The immediate side effect with Boehm's GC is a 3% performance improvement in the MCS bootstrap. For smaller programs, the visible effect is much larger.
On the subject of JITs, Neale's support for s390 keeps on improving, we will likely back port these changes to the 1-0 branch.
We can finally travel again outside the United States. Maria and myself are planning on spending a couple of weeks in Europe visiting some friends in France and Spain (Paris and Madrid will be in the plan). Will be glad to meet folks during our trip.
I will also attend Brainshare Europe in Barcelona in September.
Posted on 21 Jul 2004