Surveying the Open Source Landscape, Page 5
Source code control is always an integral part of any development effort. The Concurrent Versioning System, or CVS, available at http://www.cvshome.org/, is the open-source standard for source code control. Virtually all open-source software projects make their code available via CVS repository.
CVS runs on numerous platforms, including Redhat Linux, Win32, Mac OS/X, and some versions of VMS. There is a cross-platform Java version available, as well.
CVS is usually used as a command-line tool, but various open-source GUI interfaces exist for several platforms. Also, CVS can interface directly with Ant (see below for details).
Who among us hasn't struggled with "make" files? The amount of time spent figuring out whether a command didn't execute because of a pesky leading space must have cost companies millions. In response to this problem, James D. Davidson, original author of Apache Tomcat, created a cross-platform build tool called Ant ("Another Neat Tool") to overcome the problems with "make", "jam", and their cousins. The first release of Ant, version 1.1, came out in July of 2000, and has been a standby for Java developers ever since.
Ant automates the build and deployment process for Java developers, allowing tasks such as directory cleanup and creation, code check-out, compilation, file copying, JARring and WARring files, and even running Junit test cases. The complete functionality of Ant is too extensive to discuss here, but visiting http://ant.apache.org/ will provide more information. If the functionality provided in Ant is not sufficient, Ant allows developers to create their own custom tasks.
Eclipse is a cross-platform, Java-based development environment. Although the creators of Eclipse originally developed this environment with Java in mind, Eclipse provides a plug-in interface that allows the IDE to be used for other languages, as well. Currently, the official Eclipse Tools Project has plug-ins for C/C++, COBOL, and, of course, Java, but a host of community-based plug-ins exist for other languages and development tools, as well as for JSP, servlet, and Struts development.
Currently, Eclipse is available on various Linux flavors, Win32, and Solaris, but, provided that a Java Virtual Machine exists for your platform, you may still be able to use this IDE.
More information can be found at http://www.eclipse.org
PERL, sometimes called "the duct tape of the Internet", is perhaps the granddaddy of all open-source programming languages. Larry Wall developed it back in 1987. Now, according to http://www.perl.org, PERL has over a million users, and is a widely-used tool for Common Gateway Interface (CGI) scripting, which allows web servers to extend their processing capabilities beyond simply serving up web pages.
PERL is an interpreted language, and thus can run on any operating system that has a PERL interpreter. It includes many useful features, including extremely powerful regular-expression and string manipulation functions, database connectivity, and the ability to link to C/C++ native libraries. Developers can write PERL programs either procedurally, or using the object-oriented paradigm.
Python is a cross-platform, object-oriented, extensible scripting language used widely for Internet development. It supports features such as regular expressions, advanced string processing features, Internet protocols (HTTP, SMTP, POP, and so forth), unit testing, logging, Python language parsing, and operating system calls in the standard language libraries. The language itself is extensible in either C or C++.
Python's author, Guido van Rossum, originally wrote Python in response to complaints he had about an interpreted language he used back in 1989. Subsequently, he began development of the Python programming language to address these complaints. The first official release of Python came out in 1991, and has gained popularity as a CGI language in recent years.
Find more information at http://www.python.net/
PHP is a powerful, object-oriented scripting language primarily used for generating dynamic web pages. The language combines syntactic features from C, Java, and Perl, and has extensive string processing, Internet protocol, and databases. PHP is also easily extendable, with thousands of modules available in the PHP community.
PHP was originally developed as a Perl extension by Rasmus Lerdorf to fulfill his own personal web site needs. After some additional development, Lerdorf realized the potential for the language, and, along with others, began the development of PHP as it exists today. According to http://www.php.net/, PHP powers millions of Internet sites, accounting for up to 20% of all sites on the Web.
Unit testing has always been a necessary evil for software developers. Now, Junit, a unit-testing tool for Java developers, can take some of the drudgery out of this important task.
JUnit is basically a Java framework for creating assertions (test cases), sharing test data, running test suites automatically, and verifying the results. By extending JUnit classes, developers can test their business logic by simply running the Junit test suite, just like any other Java program. Since developers code the expected outcome into each test case, there is no human intervention required to determine which test cases passed, and which failed.
For more information about JUnit, visit http://www.junit.org/.
No matter how carefully development is done, bugs always creep into the system. Bugzilla is an open-source defect tracking system based on Perl that incorporates many of the features of expensive commercial products. Some features include inter-bug dependency graphing, advanced reporting capabilities, a stable RDBMS back-end, support for email, XML, console, and HTTP APIs, and integration with various version management systems, including CVS.
Bugzilla still has some challenges ahead. Most notably, future enhancements include adding more flexibility to the bug-reporting portion of the application, as well as addressing performance problems in a few areas. Still, Bugzilla is a robust, widely used defect tracking system that is fast becoming an industry standard. For more information about Bugzilla, visit http://www.bugzilla.org/.
While JUnit is used to test business logic, Cactus, part of the Apache Jakarta project, is used to test server-side Java code, such as servlets, JSPs, EJBs, etc. This framework actually extends the capabilities of JUnit, so that appropriate HTTP requests are sent to the server, where the processing occurs, and is then sent back to Cactus as server-side output. Developers must extend the Cactus classes, as well as writing JUnit test suites, to perform their tests.
For more information about Cactus, visit http://jakarta.apache.org/cactus.