Novell is now a part of Micro Focus

Developer's Toolbox

Novell Cool Solutions: Feature
By Bill Bodine, Richard Smith

Digg This - Slashdot This

Posted: 15 Feb 2005

Active State Komodo

Linux has recently taken a significant step forward in its support of today's business needs. SLES 8 has long been a successful product both in terms of the numbers of end-user licenses and ISV support. Now with the release of SUSE Linux Enterprise Server 9 (SLES 9), Novell has delivered an even more secure, reliable platform for open source computing in the enterprise. SLES 9 has been out long enough that many have experienced the benefits that it has to offer, such as the new 2.6 Linux Kernel (Kernel 2.6.x scalability enhancements, Kernel 2.6 device enhancements, Non-Uniform Memory Access, Hyperthreading, Flexible I/O scheduler and Class-based Kernel Resource Management), the improved systems-management tools (Novell ZENworks Linux Management Support, new YAST modules and improved YAST tools) and enhanced developer tools (support for managed languages like C#, VB.NET and .NET development tools like MonoDevelop).

Key to the success of Linux has been the powerful applications delivered by Independent Software Vendors (ISV). One of these that I will discuss briefly here is the Komodo product from ActiveState ( Komodo is an award-winning Integrated Development Environment (IDE) for "dynamic" languages like XSLT, Perl, PHP, Python and Tcl. It is used to edit, build and debug applications built using these various languages. Since I have spent considerable time using XSLT, I was curious to see how Komodo would perform editing functions and most specifically source-level debugging on an XSLT stylesheet.

I downloaded an evaluation version of Komodo 3.0 from the ActiveState web site. This gave me a 21-day evaluation of the product. I chose to use the Novell Linux Desktop 9 (NLD) as my development environment, since it is "powered" by SUSE Linux, hence it has all the benefits of the 2.6 kernel and other SLES 9 features with the added benefit of being included with OpenOffice 1.1, Mozilla Firefox and other important desktop features, the perfect development platform. There is some efficient documentation at: I followed these instructions just as the site recommends and the application installed and ran beautifully. Since my primary interest was to use the source-level debugging features of XSLT, I started my testing there.

When you run Komodo, there is a menu item (Help|Tutorial), that really has some pretty simple and easily followed tutorials. The XSLT tutorial takes an XML file that represents an email message and uses an XSLT stylesheet to transform the document to HTML. For those familiar with XSLT, they will find the actual stylesheet to be pretty simple, the part that I found most interesting was the tools ability to set break points within the stylesheets and then to be able to watch the window that captures the current contextual node in the source document as I single stepped through the stylesheet. I have used the xsl:message command often enough that I could probably become a big fan of XSLT source level debugging.

I finished my testing of the Komodo product out by running through the Perl tutorials that are also included in the tool's help menu as well as some other Perl examples available from other locations. As was to be expected, the Perl testing also functioned exactly as I would have expected.

Komodo is a nice tool, installs easily and does a great job of simplifying the task of development using these "dynamic" languages

The Official GNOME 2 Developer's Guide, a quick book review

The Official GNOME 2 Developer's Guide
By Matthias Warkus
Published by No Starch Press, Inc.

If you are considering creating applications for GNOME 2 then this is a must have book. This quick review will highlight the contents of the book and a future full review will go into more detail regarding how the book can best be used.

While not a book for beginning C programmers, this book does serve as a good introduction to developing applications for a GUI environment. It does also assume a very solid understanding of Unix/Linux, how processes work and how to manage a Unix/Linux system effectively. Also assumed is that you are at least a GNOME user and understand the basics of how the GNOME interface functions.

The book begins by laying a background for GNOME development by detailing Glib which is the foundation library for building GNOME and GTK+ applications. The author takes the reader through everything from the memory management, C strings and debugging functions in the library to detailed examples of using the data structure functions.

Because GNOME can be programmed in C as opposed to C++, which many of the current GUI environments require, the second chapter of the book goes into GObject. GObject provides object-oriented programming features to GNOME and this chapter helps non OO developers understand how OO development within the GNOME world works. The author does point out that this chapter is not absolutely required to understand and use the rest of the book, but after going through it, it does help make sense of many of the development features of GNOME.

Next comes a very long chapter on GTK+, the GUI toolkit used to build user interfaces for GNOME applications. This chapter goes into great detail on the use of GTK+ widgets (the pieces that make up the user interface, buttons and dialogs for example), containers for managing and organizing individual widgets and how to manage events for program control. This chapter contains lots of code examples showing how to use the capabilities GTK+.

Next we learn about the GNOME Libraries, the components that allow developers access to functionality below the user interface. The book covers these libraries from non-GUI (command-line) applications to file access.

Now for developers from other platforms the next chapter will feel comfortable. The book goes into the use of Glade, a very powerful tool for building user interfaces graphically. Windows and Mac developers have many tools of this nature and these tools make building an application's interface as easy as drag and drop in many cases. While Glade isn't quite that easy, it does mask a lot of the complexity required to build an interface. The following chapter looks at some additional tools that help manage the make process, building help systems and localizing applications to name a few.

The chapter on GConf which follows takes you through the process of using the GConf library to allow users to have a customizable and dynamic user interface. Through a system of databased keys and values, GConf is a powerful way for developers to allow users to manage their own UI in a safe and controlled way.

The GnomeVFS is covered next and provides good examples of using this abstracted, virtual file system to be able to access data from nearly any source within your application, using the same programmatic interface as you use to access your native file system.

The final chapter deals with how to go forward with your GNOME project and where to find additional resources to help you. I believe you'll find this chapter to be as important as any in the book for providing assistance in the future.

If you are considering using GNOME as the foundation for building your application, this book will prove to be a great resource for you, not only with understanding many of the aspects of GNOME development, but also how GNOME works and how to best take advantage of what GNOME provides for a developer.

Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions.

© Copyright Micro Focus or one of its affiliates