C# 3.0 adds categories

•31Jan07 • Comments Off on C# 3.0 adds categories

As a language geek, I found this discussion of the new extension methods in C# 3.0 fascinating. I haven’t been paying as much attention to C# 3.0 as I probably should because I’ve been too infatuated with Ruby of late. I’d love to see someone from the C# team respond.

Some Reflection on the Market for Components

•30Jan07 • 2 Comments

Once upon a time, there was a HUGE market for ActiveX components that would work with Visual Basic. After Microsoft introduced .NET and especially .NET 2.0, a lot of the energy moved from the ActiveX component world into the .NET library world (although it should be noted that this doesn’t necessarily imply that all the money has moved as well).

This morning I was browsing through the newest edition of MSDN Magazine (dated Feb 2007) and noticed that the vast majority of the ads were for .NET 2.0 stuff. So I asked myself: “I wonder how much take-up there has been for WPF components?” I remember going to PDC events a few years back where Microsoft brought Infragistics and others on stage and talked about how wonderful the new WPF market was going to be.

I guess I must have had too much free time, because I decided to do my own very unscientific survey. I counted the number of ads that featured a particular technology. Ads that mentioned more than one technology got counted multiple times, and I didn’t count the ads that were placed by Microsoft itself – just those from paying ad customers. There were 51 ads in total. I also checked for mentions of a few other terms that were near and dear to my heart: PDF, Java, and Flex. Here are the results:

Chart of Ads per Technology in MSDN 02-2007

There were a couple of things that jumped out at me:

  • As I mentioned at the beginning of the article, it appears that components for WinForms and .NET 2.0 in general have most of the energy in the Microsoft component space.

  • PDF was mentioned quite a bit in various ads, and XPS not at all. Again, not too surprising, but its nice (for Adobe) that developer take-up of XPS is still low.

  • Java is still doing quite well, even in the heart of Microsoft-country.

  • WPF & .NET 3.0 take-up amongst developers selling to developers is quite low. Of the 3 ads found, two were actually for training and not for software you could buy. Developers seem more exciting about products around ASP.NET AJAX, which I find interesting since both technologies went final around the same time.

  • Its also interesting that trainers seem to see a richer market for WPF than for ASP.NET AJAX. Maybe that is a reflection of pent up demand for WPF, or maybe its a reflection of the increased complexity of WPF development.

Not the most earth-shattering piece of analysis work ever, but hopefully something people will find interesting.

[Update 02-12-2007] I mentioned Infragistics and its announcements of WPF components at PDC events of yore, so I thought it would only be fair to point out the news on Mike Swanson’s blog that Infragistics has posted a beta of its NetAdvantage for WPF 2007 Volume 1 set of controls, and that DevComponents has its Office 2007 UI controls for WPF in private beta. Congratulations to both companies. I look forward to seeing them both shipped as final products sometime soon – maybe the market for WPF components will materialize then.

I also wonder what the licensing story is for all of these Office UI lookalike controls – do these companies have a license from Microsoft to duplicate the stuff in the Office UI guidelines? Do companies that ship applications using these control libraries get a license as part of the purchase price? Given how scary the Office UI license is for a typical ISV legal department, it would be nice if these sorts of libraries could make those sorts of issues go away.

A New Door Opens For PDF

•28Jan07 • 7 Comments

Just in case you haven’t heard the news, Adobe just announced that the entire PDF 1.7 specification would be submitted to ISO via AIIM. The intent is to take PDF from its current status as a de facto standard and make it into a formally recognized international standard, controlled by a vendor-neutral standards body.

Eighteen years ago, Apple and Microsoft announced a joint effort to create a proprietary replacement for PostScript known as TrueImage and a proprietary replacement for PostScript Type 1 fonts known as TrueType. Only TrueType survived to this day, incorporated into the OpenType font standard format along with the PostScript font format (in CFF guise). When Bill Gates announced the joint effort at Seybold, John Warnock gave an impassioned speech where he announced the opening of the PostScript Type 1 font format specification and said:

This standard is so important in the printing and publishing industry that I’m not going to let it fail.

That statement applies equally well to PDF today, and the stakes are even higher. In fact, virtually every government and company around the world has a stake in the future of the PDF standard. I believe that the history will view this announcement as an historic one for Adobe and even for the software industry as a whole. There are several reasons why I believe this is so:

  • It shows how important the creation of vendor-neutral open standards is to the future of the tech industry. PDF has been an open standard for many, many years: anyone can implement the specification without any restriction. The specification itself was defined by Adobe, although we took input from many customers and partners over the years. Furthermore, there are a number of ISO standards that are based on the PDF specification: PDF/X, PDF/A, and so on. The openness of PDF has been sufficient to make PDF the de facto standard for document exchange, and, not incidentally, has helped make the Acrobat product family a significant source of revenue for Adobe.

    But recently an increasing number of customers have told us that they want document formats that are formally defined, freely available, and controlled by a vendor-neutral standards body. Sun and IBM deserve a lot of credit for being the first large companies to recognize this emerging trend and in response submitting ODF to OASIS (and then ISO). PDF following in ODF’s footsteps is important because the PDF format is one of the building blocks of the web.

    I hope this announcement marks a tipping point in the definition of openness for document formats, such that any future document formats that wish to get widespread industry adoption will need to be equally open.

  • It helps expose, by contrast, the weaknesses of Microsoft’s own standards efforts. Like Adobe, Sun, and IBM, Microsoft has also recognized the trend towards formal standards and as a result is shepherding OOXML thru ISO via ECMA. Unfortunately, Microsoft is trying to have its cake and eat it too, using a committee charter that is rigged: the committee is required to rubber-stamp the format as defined by Microsoft’s implementation for the sake of “compatibility”. Because the standard is really defined only by Microsoft, the OOXML standard fails the vendor-neutrality test in a fundamental way. It remains to be seen whether or not Microsoft will attempt to pull the same trick with XPS.

  • It makes Microsoft’s XPS format even more irrelevant and unnecessary. Why would anyone bother with a competing format this isn’t vendor-neutral, does less, and isn’t nearly as ubiquitous?

For myself, I’m proud that I got to play a small (and I do mean small) role in the process that led up to the announcement. My hat is off to the Adobe management team that made the decision and to the product teams that will have to execute on that decision.

Lastly, on an administrative note, I want to point out that Adobe isn’t announcing anything with respect to the submission of any other document formats to standards organizations, so I can’t speak towards such topics.

Java as a GUI Platform

•22Jan07 • 3 Comments

Lots of people have been talking about the iPhone’s lack of openness and what it means. In particular, they’ve been discussing the news that Apple is at least considering putting Flash on the iPhone, but has dismissed Java as being too bloated:

Markoff: “What about all those plugins that live within Safari now, like Flash or like Java or like JavaScript?”

Jobs: “Well, JavaScript’s built into the Phone. Sure.”

Markoff: “And what are you thinking about Flash and Java?”

Jobs: “Java’s not worth building in. Nobody uses Java anymore. It’s this big heavyweight ball and chain.”

Markoff: “Flash?”

Jobs: “Well, you might see that.”

Lots of people have written about this statement, speculating on what it means for Java on Mac OS X, and wondered whether this should be seen as a eulogy for desktop java in general. Scoble and Gruber think Jobs may be spinning, and I agree – given how big the embedded version of Mac OS X is likely to be, calling JavaME heavyweight seems ridiculous. And because he’s spinning, I personally don’t think this will have any diminishing effect on Apple’s support for Java on the Mac – not that they were doing all that much to begin with.

I think the more interesting question is the one about the future of Java as a platform for GUI-based applications, on the desktop and in mobile devices.

The first thing I’d point out is that Java ME is a very strong player in the mobile space, used for all kinds of games. These games all have exactly the right kind of UI for their platform – a game UI. Should these games have an iPhone-esque UI when they run on an iPhone? Heck no! In fact, I’ll go even further and say that any game that every does get written with an iPhone-esque UI will suck.

Java ME is also used by companies like Google to build mobile applications that run on a variety of cell phones like GMail and Google Maps. Anyone who thinks these applications have inherently bad user interfaces is smoking something – they may not be Mac-like but they are very usable, very performant, and they have that “Google” look and feel (for better or worse). And while writing Java ME applications is anything but “write once run anywhere”, being portable is a lot better than being locked in to one OS or device.

But all that goes double for Flash Lite: richer interactivity, better authoring tools, and better portability. I’ll spare you any further proselytizing on the subject, but I’ve used a bunch of phones and the ones with Flash built in are the most usable on the market (the iPhone may very well change all that but I’ll reserve judgement til I get to hold one in my own hands).

Going back to the desktop, the choice is even starker: Java on the desktop just sucks. I spent many years at PlaceWare building user interfaces in Java, and spent way too many hours working around limitations in the platform. When I got to design and build a Win32 client to replace the Java version it felt so liberating! Isn’t that sad? So I completely sympathize with Jens’ point of view: native OS interfaces are vastly superior when it comes to creating great user experiences.

Unfortunately, when you adopt native APIs, you also get something else: lock-in. It doesn’t really matter whether your native API is Cocoa or Carbon or Win32 or WPF – all of them severely limit the number of places your applications can run. None of them make it practical to make an application that runs on Windows and Mac and Linux and so forth. None of them has a real story for making your code portable between operating systems and devices.

Now Adobe cares a lot about applications that run on more than one operating system, probably a lot more than any other major software company. So we’ve invested a lot in building compelling cross-platform user interfaces, and the UI used in the recently released PhotoShop CS3 is the latest example of that. We’ve even released some of those technologies as open source. But building these types of cross-platform applications requires a huge investment, one that very few companies are willing to make.

So if you are looking to build a cross-platform application without making those kinds of investments, what are your choices? Basically, you can use HTML/CSS/JavaScript, and/or use the Flash/Flex environment. With Apollo, Adobe is trying to bring those two worlds closer together and bring those technologies to the desktop, and eventually Apollo applications will be able to crossover to the mobile side as well. I personally find this a lot more exciting than a world full of non-portable applications. And Flash/Apollo can make applications with UIs that are as compelling as those of OS X and Vista. (I could make the argument that recent developments in OS X and Vista are really just attempts to bring Flash-style user experiences to the native OS, but that’s a topic for another day.)

Now I know that someone will make the point that the Flash/Flex/Apollo world is also a form of lock-in, and to a certain extent I agree: Flash Player is still proprietary (although it is free as in beer), and we do want to make money selling Flex Builder, Flash Professional, and other tools for creating experiences for the platform (the shame! the horror!). But in the end I think developers should invest in a platform that works across multiple operating systems and devices over one that doesn’t. Java could have been such a platform, but it lost its way. How strange that Adobe has had to pick up the mantle.