Greg Papadopoulos's Weblog Greg Matter

Thursday Feb 24, 2005

Last week I met with 450 of the most important people in the world, people who have the most profound effect on our long-term future -- our world's educators -- at Sun's annual Worldwide education and research conference. I feel a really deep bond with this group, not only having come from that world myself, but also being at a company that grew directly from a university (the "U" in SUN stands for University). To address these folks --- more than half this year from outside the United States --- is always a privilege and an honor.

This year, I spoke on two topics. I want to elaborate a bit on the first one, which was roughly about the fundamental shift for the model of software development from shrink-wrapped and packaged software (the Microsoft and SAP models --- sell bits) to software as a network service (the Google and Salesforce.com models --- sell cycles). As an industry, and as researchers, we have barely begun to wake-up to the manifold implications of this shift. I'm not one given to hyperbole, but Computing As We Know It is changing, irreversibly I suspect.

At the core of the shrink-wrap and packaged software model is taking a software idea and expressing it as a program that it is certified to run on widely deployed stacks of operating systems (and now, increasingly,middleware) on instruction set architectures. You then try to sell as many copies of those bits as you can. Note that I carefully said "certified to run on.” The dirty secret of the whole software and systems industry is that the historically rich margins are largely supported by the extraordinary switching costs of moving an application from one platform to another. And it's NOT about openness or portability of source code, it's about proving (through insane amounts of testing) that a *binary* does what you think it does.

[Major Flamage...The fact that we feel compelled to regression test binaries against the entire stack of middleware, OS, and firmware versions is a massive breakage of abstraction. We write in high-level languages with reasonably clean interface (API) abstractions, but collapse the entire layered cake when we go to binaries. Put it on the list of great failures of computer science.

Yes, virtual machines, the JVM's and CLR's of the world, would seem to ease this condition somewhat, but again, we distribute the apps as byte code binaries, and while we should trust Write Once Run Anywhere, middleware providers are relentlessly clever in embracing and extending core platforms to keep those switching costs healthy. ...End Flamage]

Here's the critical issue: when you deliver your software as a network service, these switching costs are totally hidden from the user of the service. I mean, do you really know which OS your phone's mobile base station is running? (Okay, *some* of us do know...) So, the whole concept of stable OS/Processor stacks that have defined the computing industry for the past three decades is about to be seriously whacked.

Take Google. The best understanding is that it is a homegrown BSD derivative on not-leading-edge velcro-mounted x86 motherboards. The only binary standard that the developers at Google care about is the one that they cook up for their own use.

I suspect that just about every software startup shaking the trees on Sand Hill road (for the VCs aren't still hiding under their desks) fancy themselves as the next Google. Does this mean that every new startup will bake their own computing farm?

Left to their own devices, perhaps. But something much more likely will happen, and this is the "Aha". New startups would better served focusing on their idea and relying upon the emergence standardized farms --- computing utilities --- to provide an on-demand substrate. This is the seed idea behind the Sun Grid $1/cpu-hr and $1/gig-mo offerings. These, however, are raw cycles with simple O/S-process and network filesystem abstractions. On top of which new deployment containers, on top of which new network applications will be constructed.

Aha! A *new* stack (and ecosystem around it) will emerge. I think it will loosely follow a diagram similar to this one:


The base layer is what I'll call the "Utility" comprising raw cpu-hours and gigabyte-months. These are the commodities of computational energy and remembering stuff.

The next layer are deployment "Containers". Today, we think of most grids as OS-specific process containers, but I'm betting this will rapidly evolve into more robust abstractions such as J2EE and Jini. Similarly, storage containers will comprise things like relational databases and fixed content stores.

The next layer is likely to have its own internal structure, but I'll lump it all together as "Application Services". It's the thousands of services that will be created around things like search, email, CRM, gaming, ERP, and on and on.

Finally, I'll bet that this will give rise to whole new "Application Networks" that aggregate and stitch together the network applications to create the whole fabric of completely re-factored enterprise IT, or perhaps new styles of businesses entirely. Somebody is going to make a lot of money on this layer.

It's a much longer discussion about how this new stack will change the balance of power in the computing industry. Just suffice to say what's important will change and a whole bunch of stuff will follow.

Which brings me back to my good friends in academia. I'm looking to you help navigate this world, and to really understand what will be important, and to understand where innovation can and should take place. To start, we are going to make available a million cpu-hrs and hundred terabyte-months.

Gratis.

And honestly, just a few years ago, I thought computing was getting boring. And now I can't wait to witness the industry morph over this decade.

Wednesday Feb 09, 2005

Let me just say that I am very much enjoying the discussion and debate around what we are trying to accomplish with OpenSolaris and CDDL. But one thing that I hope we can avoid is rhetoric that wraps itself in the flag of "The Community". I think we should watch out for such sweeping generalizations for many reasons.

First, and foremost, while we all are members of the greater community of developers, I think it's fair to say that we are all also independent and free-thinking individuals who choose open source development --- and development licenses --- for a whole bunch of independent and free-thinking reasons. To "speak for The Community", seems to me,not only more than a little hubristic, it is fundamentally disenfranchising.

Invoking "The Community" (and speaking for it) has a Cathedral-like resonance. Let's remember that we are all at the Bazaar --- shout like crazy, but don't try to speak for us all.

A footnote on CDDL and GPL code co-mingling. The issue of license compatibility with co-mingled GPL and CDDL code is an issue with GPL license, not with CDDL. Indeed, CDDL will let you intermix modules with anything you want (including proprietary ones). GPL won't let you intermix with anything else. This is not an argument with GPL; I completely understand the intent, and it certainly is a powerful effect. Perhaps there is some room for innovation here the FSF develops GPL3. I'd love to engage in that discussion.

Monday Feb 07, 2005

There aren't many things in our industry that are more transformative than open source software, so I think it's a great topic to launch my first "official" blog. And what a better time than now since we announced releasing Solaris in open source form under the new OpenSolaris community www.opensolaris.org. (Thanks go to my good friend and colleague, Jonathan Schwartz, for his relentless teasing about my reticence to blog --- more on this later.)

Open software is fundamentally about developer freedom. We want developers to freely use any of the OpenSolaris code that we developed for their purposes without any fear of IP infringement of Sun: either patent or copyright.

We chose a license -- CDDL , an improvement of MPL -- that clearly and explicitly gives that freedom.

In fact, the license is MORE liberal in its IP license than even GPL , because it gives a clear patent license and doesn't demand the same viral propagation. Yes, I know that's a view divergent from many who believe GPL *is* open source, but I happen to believe choice and freedom go hand in hand.

Complimentary to developer freedom, are developer rights. A code developer (individuals or corporations) do have rights to the code they developed. It is, after all, the fruit of their labor. By choosing to place that code under an open source license, a developer surrenders some of those rights to the community in the hopes of a beneficial exchange. NO open source license surrenders ALL rights. The way you do that is to place code in the public domain.

Just to level-set. I'm a huge supporter of the free software movement, including the FSF. I knew Richard Stallman at MIT in the early '80s when he was ramping up the GNU project, and vividly recall the relentless yet methodical way he was going after the entire stack: start with the tools (gemacs, gcc,...), build out the supporting libraries and utilities, and then go for the kernel. As I recall, Richard went for the kernel slowly because he was pretty concerned about AT&T and I think wanted to be squeaky clean IP-wise, which as a result reflected a lot of care taken in the GNU project so far. Well, Torvalds and friends just went for it, and built out the kernel. Linux was most definitely built on the back of Stallman's hard labor. It's GNU Linux, IMHO.

At the center of Stallman's genius is the GPL. When compared to BSD, which was essentially a simple copyright grant, GPL was more explicit about IP grants (with a clever sort of mutually assured destruction if you were to sue), and, of course, the duty to re-publish any changes or improvements that got made to the code.

It's all about community building. But it's not a "free beer" license. If you don't play by the rules, then you neither are afforded the IP protection nor are you entitled to copy the code.

A pretty tough provision is the viral aspect that takes away the developer's freedom for independently developed code incorporating GPL code by requiring that code to be GPL'd.(Future rant: a lot of GPL users kick these chalk lines pretty hard by having loadable modules that aren't GPL...)

And just to be clear. You CAN'T take code under GPL that you haven't written and place it under another license. And you DON'T get a patent grant for any of the ideas expressed in that code that you choose to re-code under a different license. Even so, by putting something under GPL, you still have a lot to say about what can and can't be done with it.

So why other licenses like MPL, Apache, and now CDDL? Only because GPL is often considered TOO restrictive in its terms. A key difference with MPL is that it removes the viral requirement, and permits code of different licenses to be co-mingled (obviously assuming that other licenses permit the co-mingling as well).

This co-mingling turns out to be really key for situations when you don't control all of the modules in your system, or when you want to work off of an open base, but do some of your extensions. And, yes, that does go against some of everything-should-be-free philosophy implied by the GPL, but it helps strike a balance between a whole set of competing interests.

To be perfectly clear, we are releasing a huge amount of Solaris code under CDDL. That means you can take any or all of the modules, and if you respect the basic license terms of (1) propagating it, and (2) making public any improvements or bug fixes, you can do with it as you please. Embed it any product. Build your own custom distributions. Intermix with any other code you wish (assuming that code lets you do it). You can do any of that and you get a grant to any patents we might have covering our code. That's an explicit part of the license.

What have we done? We have given away enormous intellectual property rights (the code and about 1600 patents that might read upon it) to any developer who wishes to use our code. The only thing we ask in exchange --- as is the only thing that Stallman and Torvalds and every other open source developer have asked in exchange --- is that you honor the license. Period.

Have at it!