First Look: The Curl Development Environment
Going into this review, I was not at all sure what to expect. I had no prior knowledge of Curl, although some preliminary research revealed it to be an object-oriented hybrid markup language with similarities to HTML, CSS, and JavaScript.
The Cambridge, MA-based company behind the Curl language, Curl Inc., describes it as an alternative to AJAX. It allows the programmer to define the structure, style, and function of Web applications in one language instead of several.
Curl is popular in Asia, having been adopted by companies such as Nissan Diesel Motor Co. and the Bank of Tokyo-Mitsubishi. Curl Inc. itself is a wholly owned subsidiary of Sumisho Computer Systems.
The latest news about Curl is that some of the code has been released to the open source community under the Apache 2.0 license. The Apache 2.0 license differs from the more common General Public License (GPL) used for open source projects by favoring versatility over freedom. Source code licensed under Apache 2.0 may be used for both open source and proprietary closed source projects. In contrast, a project containing GPL code must remain open source under the GPL indefinitely.
Curl Inc. established three open source projects:
- Curl Web Services Development Kit;
- Curl Data Kit supporting client-side SQLite databases; and
- Curl Development Utilities, which includes unit testing and project development tools.
I went to the Curl site and quickly located the Curl integrated development environment (IDE). The IDE is currently available for Windows and Linux, with a Mac OS X version in the works. As a Linux user, I was looking forward to trying Curl on Ubuntu 7.10, but Curl Inc. only offers the Curl IDE in the .rpm package format used by Red Hat, CentOS, SuSE, Fedora and similar Linux distros instead of the .deb packages used by Ubuntu. A representative from Curl, Inc. later informed me that the company does not support the use of the Curl IDE Linux package on Ubuntu. System requirements to run the Curl IDE are described here.
While it is possible to make .rpm packages install on Ubuntu with community-designed conversion tools such as Alien, I was hesitant to employ such a workaround because I wanted a clean install (without additional tools/kludges) to see how well the program performed.
The source code for the Curl IDE was not publicly available at the time of this review, so I couldn't custom-compile it for my system. Therefore, my only recourse was to download and test the Windows version. I booted into Windows XP and acquired the Windows version a few minutes later. Curl is free for personal use, but the personal edition has some enterprise features disabled. Commercial use can be costly, at $12,000 per server on the high end.
After installing, I was greeted with a development environment that reminded me of programming IDEs that I have used in the past, such as Visual Basic and Eclipse. Each Curl project is made of several modules containing code or graphical user interface (GUI) elements, with the entire list of modules conveniently available at all times in the IDE.
The GUI editor in particular is quite nice, with many UI control elements such as buttons, menu boxes, etc. available from a toolbar list, with attributes for each element available on another panel. These tools quickly allow a programmer to make a complicated GUI for a project, although doing it entirely from the source code interface is also an option for more advanced users. A project may be tested by clicking a "run" button on the main toolbar, just like in Visual Basic.
Although my knowledge of the Curl programming language was very limited at the beginning, I was able to make and successfully run a "Hello World" program after consulting an online tutorial. The code syntax is somewhat similar to CSS, with the document structure reminding me of LaTeX, although there are differences. The language gets its name from the use of the "{ }" curly brackets that are used to enclose each command in a Curl application.
Curl applications are designed to run within a Web browser just like regular HTML. Unlike traditional Web applications built with PHP, ASP, or Perl, part of the Curl application programming interface is executed client-side while the rest is executed on the server. Because of this, each visitor to a Curl-enhanced Web site needs to have the Curl runtime environment installed. Without the runtime environment, the Curl application simply will not work. This can alienate some users, since not everyone has software installation rights on the computers they use.
Curl has quite a bit going for it. The IDE is very elegant, and the language itself is fairly easy to understand after a quick study. However, the Achilles' heel for Curl is the runtime environment. If the runtime environment could be reworked to be completely server-side instead of having to be installed on a per-user basis, Curl would be universally accessible and would probably see increased deployment. On the other hand, Curl's main appeal is to the fat-client business application market, made up of those who need rich Internet applications enabled on the client side. Such companies would likely take the necessary steps to deploy Curl on their infrastructure, making the runtime dependency a non-issue. The runtime download is about 8 MB, according to a Curl Inc. representative.
It would be nice to see greater Linux support for distros that do not use .rpm packages natively. Aside from that limitation and the need to install the runtime individually, Curl has potential that could help expand its use into new markets.