O'Reilly    
 Published on O'Reilly (http://www.oreilly.com/)
 http://www.oreillynet.com/pub/a/oreilly/letters/2002/curl_0502.html
 See this if you're having trouble printing code examples


Date: May 2002
Subject: Curl
From: Jeremy Kirouac

I'd like to hear your thoughts on Curl technologies.


[ O'Reilly editor Andy Oram responds. ]

Curl has been in development for seven years, and the Web is a very different place now from when Curl was conceived. For a long time I thought Curl solved only the old problems, not new ones. Now I think it could also be a solution to new problems, by exposing Web services to easy querying and automation and letting end users communicate directly. My recent contacts at Curl (Joseph Golden, senior director of business development and strategic relationships, and James Joly, product strategist in the Corporate Strategy group) tell me they're part of the new SOAP/P2P/Web Services world.

Exchanging performance for standards

Let me explain the old problems first. Back in 1995, M.I.T. researchers saw the direction the Web was going and realized that the code used to develop Web pages was an unholy mess. HTML was poorly structured. A hodgepodge of many technologies going under the term Dynamic HTML tried to add interactivity and make use of the client's computing power, but they suffered from poor standardization and uneven feature coverage. Communication with the server had to be effected through the rigid and limited CGI standard. Stunning effects could be achieved only through proprietary add-ons, notably Flash and audio/video streamers.

So in a DARPA-funded project, the researchers created something elegant, efficient, and comprehensive that brought together text, images, animation, and interactivity. This technology, which they called Curl, they spun off in 1998 into a start-up with auspicious backing from Berners-Lee himself. The current product is called Surge. It consists of an runtime environment and an IDE to facilitate the use of the Curl language; version 2.0 was released this year.

On this level, Curl was positioned as an alternative to Java, Macromedia Flash, and other popular tools for creating Web pages. The Curl evangelists had some compelling arguments for their product: they said it was easy to program, reduced both server load and bandwidth by putting processing on the client, and offered a security model at least as powerful as Java's. Like Java, Curl offers a sandbox, but builds in delegation. Instead of asking the end user (who knows nothing about the various Internet sites) whether he or she wants to download code from some cooperating site, the administrator makes the decision.

Curl's claim to have overcome the browser and platform incompatibilities that plague so many other Web tools is impressive; if it's true, Curl should be very appealing to sites that want dynamic content.

But all these arguments may fall on deaf ears. People may say, "I can find plenty of programmers to use other popular tools and technologies. You've solved a problem that existed six years ago, but we've found workarounds since then." In the next section, I'll tell you how the Curl evangelists answered this objection.

People are also very attached to standards (although Macromedia has overcome that preference). Curl recognizes this and provides a lot of open source tools for writing and deploying programs. But the engine or virtual machine remains proprietary; unlike Java, nobody is supposed to develop a Curl engine except Curl. (I don't know what the legal subtleties are, though.)

Proprietary products have advantages, to be sure: there's quick response to new feature requests, a single point for responsibility, and (they claim) more consistent behavior across platforms. All that aside, though, I think it will be very hard to persuade programmers and Web designers to adopt this proprietary solution.

In this "old problems" section, I see a deeper issue. Society has moved ahead six years. People are no longer so interested in stunning effects. They want simple, solid information sources. The Web designers who struggled with DHTML and other protocols have gotten used to them and are settling to maintaining legacy sites with thousands of pages. In other words, I think designers are struggling with new problem sets.

Deep entry

Luckily, Curl has another strategy. Instead of getting in at halftime, they're moving with the Web players to a new field.


For more on Web Services, see O'Reilly's Web Services Essentials and O'Reilly Network's Web Services DevCenter.


First, they offer a SOAP interface. So you use them as part of a bigger solution and interoperate with everybody else. Second, they're useful on the back end. You don't have to run Curl programs over the Web. Curl includes a general-purpose language and can manipulate data locally or open a socket to another system. It can also store data on the client like other programming languages. So a Curl program can be used offline and hook up with a server later.

One might argue that Curl faces the problem typical of all companies trying to enter the Web game at halftime by offering a plug-in: They may be able to promise that the user will have access to scads of enticing programs after downloading the plug-in, but many users won't bother to take that first step. And sites will be reluctant to write Curl programs without the assurance of omnipresence. But with version 2.0 targeted at enterprise applications, the user no longer has to be the one to deal with the plug-in. Curl becomes omnipresent within that environment.

The most interesting scenario I discussed with the evangelists is one of facilitating the use of Web Services. Here's one way it might work.

Suppose that several Web sites, which we'll call A1, A2, and A3, offer interesting information like stock quotes or headlines. A user with a browser, which we'll call site B, wants to query and interact with all these sites. To make it easier, a programmer puts a Curl program at site C. This program does lots of sophisticated parsing and formatting and uses lots of nifty communications and user-interface features from the language.

The browser at B starts interaction at site C, downloading the Curl program. Now B can connect directly with A1, A2, and A3 through the program. The server at C is totally out of the picture by now and does not present a bottleneck. There's a quasi-P2P relationship between the A sites and B, but the interaction has been facilitated in invaluable ways by the program from C.

That's one way that Curl might prosper in a Web Services world and meet programmers on the ground they care about in 2002. I wish them well.

Andy

Got a compliment, complaint, or suggestion? Let us know!

Return to: letters.oreilly.com

Copyright © 2007 O'Reilly Media, Inc.