Build applications, not infrastructure

First, some definitions. An application is what the user does: send email, chat with friends, share files, drive to work. Infrastructure is what the application uses to get its job done: HTTP, SMTP, SSL, Windows, Linux, the Internet, roads. This post talks primarily about the context of software, because that's what I do, but I think that this applies in all areas of life.

Infrastructure almost never precedes the applications that use it. P2P in its present popular form did not exist until Napster and Gnutella were created to share files. Blogs preceded RSS. The web didn't exist until Tim Berners-Lee needed a better way to share scientific information with his colleagues. Even the Internet itself didn't exist until the military needed a nuke-proof way to share information. (It would have been created anyway, but that's another post.) Power companies were originally light companies.

The same piece of software can be both an application and infrastructure. Apache is an excellent example of this. Apache is really Linux's "killer app." It runs on Windows and BSD, but the main point is that it doesn't require Windows, and many machines are built for the sole purpose of running Apache. Apache is an application when I am setting up a web server, but it's infrastructure for you when you're looking at my blog.

Guerrilla.net is an example of a failed infrastructure project. It never got off the ground because there weren't any applications that required it, thus giving people an incentive to work on the project and deploy it. Censorship-proofness isn't an application. Distributing copies of DeCSS is an application, but that's still possible and quite easy by simply sharing links to mirrors in private forums. Other examples include just about every alternative OS ever made, such as the GNU HURD and TUNES. Linux succeeded because of Apache and the GNU applications.

Technoptimists like myself tend to get caught up building infrastructure, and it almost always turns out to be a waste of time. The most successful projects are ones with an existing application and whose additional infrastructure requirements are very simple. For example, Jabber's initial application was chat. Chat programs already existed, but people were becoming frustrated with the attempts by the various chat vendors (AOL, Yahoo, MSN) to corner the chat market by limiting interoperability. Jabber's protocol (its infrastructure) started out very simple and has stayed relatively simple. Now that Jabber is deployed, other applications are being deployed on top of it. Of course, with the chat vendors making noise about interoperability, it's time for a new killer app for Jabber, because Jabber will die very quickly if it's no longer needed for chat.

Share this

The GNU project itself. Just

The GNU project itself. Just because HURD is still vapourware doesn't mean the rest of it isn't a success.

And don't pick on TUNES: its always been more of an exploration of *where* operating systems can go than an actual project to build one.

Robert Cailliau and

Robert Cailliau and Jean-François Groff were co-inventors with Tim Berners-Lee. :)

I think its a matter of

I think its a matter of interactive non-dualism.

In other words, the applications and the infrastructure must both be good.

Linux worked because for its target audience, it was both the app (let's play with this code) and the infrastructure...

Disagreed. Infrastructure is

Disagreed. Infrastructure is the reason apps get built. And infrastructure competes. It has to show actual pragmatic utility to its consumers, the app writers. Bad infrastructure, like freenet, sits in a backwater if it goes anywhere at all. Good infrastructure takes off.

Disclaimer: I'm writing some infrastructure myself. Pseudonymous, mutual perfect anonymity over live connections (so eg: can be used for mutually anonymized web browsing and e-commerce with anonymous digital cash). It will put the "wild wild" back in WWW :twisted:

I don't expect any shortage of apps. XXX sites should love it.

Can you give me an example

Can you give me an example of a good infrastructure project that has gotten off the ground without a preexisting application to push it forward?

Sean Lynch: depends what you

Sean Lynch: depends what you mean "preexisting". Most new infrastructure is released with one of more companion/demo apps. Eg: the web was released with the "WorldWideWeb" browser.

Have you any of you looked

Have you any of you looked at what historians and philosophers say on this subject?

In think one of the more interesting things about the diffusion of technology is how often markets for technology are created out of thin air - where no one had imagined such a need existed. A primary example of this are basic electric-powered devices in the home - such as irons. Anyway, what has definately been put to pasture is the old saw that neccessity is the mother of invention.

Disclaimer: I used to be a historian of technology; my particular field was the technology associated with sugar-making in the 18th and 19th centuries (from the standpoint of what we would call chemical engineering, agricultural innovation and plant genetics it was a very hot field at the time).

:beatnik:

The GNU project itself. Just

The GNU project itself. Just because HURD is still vapourware doesn't mean the rest of it isn't a success.

And don't pick on TUNES: its always been more of an exploration of where operating systems can go than an actual project to build one.

The GNU project only went as far as it did because of the dedication of Richard Stallman. However, keep in mind that the GNU project was started to create an entire operating system, including the kernel, which never happened. Components of GNU such as the compiler and EMACS were popular very quickly, but GNU didn't really take off until Linux did, which required Apache.

If you build applications, the infrastructure will follow. My primary problem is people building infrastructure assuming the applications will follow. I just think it's harder to complete an infrastructure project without a good app to encourage assistance and deployment. Is this really the point people are disagreeing with?

And don't pick on TUNES: its

And don't pick on TUNES: its always been more of an exploration of where operating systems can go than an actual project to build one.

I remember the days when TUNES talked about its features in the present tense. It's a very interesting idea, and the only reason I picked on it over other alternative OS projects (it no longer bills itself as such) is that I have visited its web site recently; I find it immensely interesting and useful. TUNES used to be a much more ambitious project than it is now, therefore as an infrastructure project it did not reach its goals.

Quote of the Day The same

Quote of the Day
The same piece of software can be both an application and infrastructure. Apache is an excellent example of this. Apache...

I would have thought it

I would have thought it self-evident that one or more applications should precede infrastructure in the requirements phase, but that development of the infrastructure must necessary occur first during implementation (with the transition occurring somewhere during design) but apparently not. If you focus too much on infrastructure you might end up with something that's useless; if you focus too much on applications you'll often get something that doesn't work (not reliably or not for long, anyway). If you want something that's both useful and robust, and especially if you want it to last through the kinds of change that inevitably occur, you need to learn how to look at a problem from both perspectives.

I agree that you need to

I agree that you need to balance the infrastructure (what's the possible use of the near future) and applications (what's gets done now). As much as how important an infrastructure is (since without it, there won't be a place to run the business) what SELLS is the applications.

Look at the video games industry. As much as a game maker can boast the high technologies that they use in their consoles, what get gamers to buy that console is the great games, not the consoles. In the 90s saw to that. Nintendo got the market share because of its great games. And where are its competitors right now (NEC, SEGA, Atari)?

So, yes, infrastructure provides the means for things to happen. But it's the applications that actually do the selling.

P.S. Where would Windows be without all the applications and PC games?