How a Windows Developer Thinks
Wednesday, November 4, 1998 by Dave Winer.
I'm glad that the Microsoft memo leaked, because it showed, openly, how disciplined, thoughtful and creative you have to be to exist in the software business for a long time.
The open source advocates are misled if they think that they "get" something that other software developers don't. That's a very dangerous place to be. If your ideas catch on, you can be sure of two things. First, it's probably been done before, someone else knows even more about it; and second, the smart people who don't understand what you're doing will study it, and eventually will figure it out.
We saw this in the Mac, in Java and in the web. All were good ideas. And in all three cases, the proponents mistakenly thought they had a purity of vision and a style of programming that couldn't be emulated. Oh how wrong they were. You gotta keep it moving, you have to do more than drink the Kool Aid, you have to be creative about who you will work with, and you have to go where the market takes you.
Luckily, we're seeing some of that happen in the open source world. That's good!
Open source is a major way to gather developer momentum. All the specs in the world can't equal a piece of running code that I can copy and bake into my program. Start with something simple, test it out, prove that it works (or that it doesn't) and then proceed. This is the programmer's way to build ever more complex machines.
When an idea catches on, very soon, people want to tweak its functionality, get features that are only useful to them and perhaps a small number of people. Quark has its XTensions, for example, and around that idea a thriving market emerged. And Adobe Photoshop supports plug-ins.
The list is finite but large. There are lots of developer platforms floating in the software world. To focus all the attention on Microsoft is to miss the point. Finding the right mixture of room for developer play and off-the-shelf utility has always been the challenge, not just for operating systems, for every kind of software.
If you support a plug-in architecture, you have to supply source code to show the developers how to do it. Everywhere you see plug-ins you'll find an open source tradition. Plug-ins can't get going without sample source.
It's even more common than that. Where ever there is an application scripting tradition, such as on the Mac and Windows, there is also a tradition of free source code to show you how to script an application.
Few of the Unix advocates come from the Mac or Windows scripting worlds, they probably don't know that the tradition even exists, but it does, and much of the learning has already happened, and the people are spreading out.
Yesterday I downloaded a copy of WinZip 7.0, and guess what, it has a scripting interface. No sample source code. Ooops! (I'll figure it out.)
On the other hand, many customers don't want to fuss with source code.
The first time I went looking for Apache for Windows, all I could find was the C source code and instructions on how to build it. I was upset. Even though I'm a developer, and could probably figure it out, who has the time? I just wanted a web server. It's like going to a restaurant to order a great meal, and having the waiter take you to the kitchen to show you how to cook it for yourself. Sheez, that's not why I came here. I want you to serve me. I'll pay the bill, with pleasure, for services rendered.
Of course after a little searching, I found the binary for Apache, installed it and a half-hour later I was running a web server. (An aside, Microsoft's IIS takes a skilled system engineer half a day to set up, and even then it might not work, so Apache has an advantage they could be pushing more, and Microsoft still has work to do. A gentle hint to both competitors.)
As the stars of the open source world, Apache, Linux and Perl, move out into the commercial world, as they are clearly going to do, they will have to behave more like commercial software. Sure, some people *love* the idea of being able to see and tweak the source, and some people already have overflowing lives, and just want the functionality, and would happy to pay for it.
Which brings me to the point of this piece. Windows pretty much defines the market for customers who want things to work out of the box. If Linux wants this market, then it must do a better job of working out of the box. And if Windows wants to stay strong, it also must do a better job of working out of the box.
As a Windows developer it would be great for my business if Microsoft released the source for Windows. It means that the bugs would probably get fixed faster. We would probably find new ways of integrating functionality faster. And it would also mean that Windows emulators on other platforms would finally work really well. I'm not saying Microsoft should do it, I can see lots of problems, but I want to be clear that it might make their developer story stronger if they did.
On the other hand, because the Windows market is so large, and because historically it has depended so much on Microsoft engineering, there are huge opportunities to make it work better. To be sure that this opportunity is realized in the market, a change in attitude at Microsoft would have to come, but the timing looks good because of competition from the open source world and because of the legal situation in Washington.
My call: it's worth an investment. I've now been using Windows as my primary platform for a year. It no longer seems weird to me. We have a lot of stuff working and have lots more ideas.
At the same time, Microsoft is under more pressure and receiving more scrutiny than ever before. I believe this is good for Windows developers. How could the current legal situation *not* make Microsoft more aware of how their actions impact smaller developers working on the Windows platform?
So that explains my position. I have a strong interest in the vibrancy of the Windows market. And I also have a strong interest in having access to that market without having to go thru the platform vendor.
I am not a gorilla. I have a very small company and a very small customer base, compared to the bases for Windows or for Linux. Lots of room for growth if I play the game smart.
I don't play the Embrace and Extend strategy, it's not appropriate for a player of my size. My strategy is different. I make friends. My success or failure, in business, is determined by the extent that I can cement friendships in the form of software that works with other software.
An example. On the Mac we have a great development relationship with the developers of BBEdit, the leading tool for editing HTML text on the Mac OS. Frontier and BBEdit act as a team, giving web developers the best text editing tool coupled with the best web content framework, providing a result that neither product could deliver on its own. This isn't news, we did this a long time ago, and reaped the benefits. In an upcoming release of BBEdit we hope to do it again.
Another example, again on the Mac, is the relationship between Frontier and the leading web server, WebSTAR. We worked closely with the development team, and found lots of ways we could deliver the power of both environments thru an HTTP interface. These features became standards, and are supported by all web servers and content environments on the Mac.
We can do it again, with a broader view now that we're also on Windows. Websites are LANs. Thru HTTP and XML we can build incredible bridges that cross environments. We have our hooks into the Microsoft developer world, probably more than any of the Unix-centered tools and environments can, because this is our focus. Over time we will have more hooks, and we hope to even play a role in defining new system-level hooks.
So here's my offer to the Linux, Apache and Perl worlds. We need a standard runtime environment for dynamic websites that we can target from our Mac and Windows content management system. That involves all three of the lions of the Linux world. Apache does the serving, Perl does the computation and Linux makes it all work.
If I can participate in building a bridge between Mac/Windows and Unix, I can be safe from Microsoft, because I can deliver a benefit that some customers will want: Choice.
No doubt there are huge numbers of people who want all-Microsoft solutions, that's why this strategy is no threat to Microsoft, at least not at this time.
As a Windows developer, attempting to speak for other Windows developers, what we want is to bridge out from our base. It's in our interest to see Linux gain traction because it creates a two-party system, and focuses on customer choice. This is where us little guys fit in, in providing choices to the customers who value choice.
To the Unix folks, please stop focusing all your attention on Microsoft and look to possible friendships with people who work inside Windows, but who don't work for Microsoft. We can help each other because our interests are aligned.
I believe that to some extent, even the most loyal all-Microsoft shop wants protection against vendor lock-in. I alluded to this in my last piece. This is the germ of power in the Internet, the idea that choice is precious. You can't cement the power of the Internet with polarizing speeches and white papers about Cathedrals and Bazaars, it can only happen by erasing the lines, opening the doors, building and delivering compatibility, making it easier and then even easier, and letting the customers choose.
PS: Perl is not the only powerful scripting language that came from Unix. I know about Python and Tcl and respect them enormously.
PPS: Many people don't know what Kool Aid is. It's a cheap soft drink that members of the People's Temple drank, with poison, to kill themselves. The first time I heard this expression was from people I knew at General Magic. It goes like this: I Drank the Kool Aid. Kind of like Going Down With The Ship. Hopefully you get the idea.
PPPS: A bunch of people asked me to outline my proposal more specifically, so I did.