Linux Magazine UK 007

Page 1


003welcomeed.qxd

01.03.2001

16:43 Uhr

Seite 3

COMMENT

General Contacts General Enquiries Fax Subscriptions E-mail Enquiries Letters

01625 855169 01625 855071 www.linux-magazine.co.uk subs@linux-magazine.co.uk edit@linux-magazine.co.uk letters@linux-magazine.co.uk

Editor

John Southern jsouthern@linux-magazine.co.uk

Staff Writers

Keir Thomas, Dave Cusick , Martyn Carroll

Contributors

Alison Davis, Andrew Halliwell, Colin Murphy, Richard Smedley

International Editors

Harald Milz hmilz@linux-magazin.de Hans-Georg Esser hgesser@linux-user.de Bernhard Kuhn bkuhn@linux-magazin.de

International Contributors

Klaus Bosau, Falko Bräutigam, Mirko Dölle, Friedrich Dominicus, Michael Engel,Nils Faerber, Thorsten Fischer, Björn Ganslandt, Georg Greve, Andreas Huchler, Patricia Jung, Heike Jurzik, Marco Kraus, Bernhard Kuhn, Jo Moskalewski, Gerd Müller, Christian Perle, Tim Schürmann, Robert Schwebel , Robert Strunz, Stefanie Teufel, Michael Tepperis von der Ohe

Design

vero-design Renate Ettenberger, Tym Leckey

Production

Hubertus Vogg, Stefanie Huber Bernadette Taylor

Operations Manager

Pam Shore

Advertising

01625 855169 Derek Coombes Advertisement Director dcoombes@linux-magazine.co.uk Neil Dolan Sales Manager ndolan@linux-magazine.co.uk Verlagsbüro Ohm-Schmidt Osmund@Ohm-Schmidt.de

Publishing Publishing Director

Robin Wilkinson rwilkinson@linux-magazine.co.uk Subscriptions and back issues 01625 850565 Annual Subscription Rate (12 issues) UK: £44.91. Europe (inc Eire) : £73.88 Rest the World: £85.52 Back issues (UK) £6.25

Distributors

COMAG, Tavistock Road, West Drayton, Middlesex England UB7 7QE

Print

R. Oldenbourg

Linux Magazine is published monthly by Linux New Media UK, Europa House, Adlington Park, Macclesfield, Cheshire, England, SK10 4NP. Company registered in England. Copyright and Trademarks (c) 2000 Linux New Media UK Ltd No material may be reproduced in any form whatsoever in whole or in part without the written permission of the publishers. It is assumed that all correspondence sent, for example, letters, e-mails, faxes, photographs, articles, drawings, are supplied for publication or license to third parties on a non-exclusive worldwide basis by Linux New Media unless otherwise stated in writing. ISSN 14715678

INTRO

Current issues

FUD With the demise of Napster’s appeal against the record industry, free software has taken a step backward this month. Not to be outdone, Microsoft is up to its old tricks with yet another example of FUD spreading (fear, uncertainty and doubt). Microsoft VP Jim Allchin stated that ”Linux is developed in a so-called open-source environment in which the software code generally isn’t owned by any one company”. ‘So-called’ – what is he talking about? Is that a bad thing Mr Allchin? Maybe Jim Allchin has just not understood what open source means. By keeping Linux open source we can ensure that anyone can change it for the better. Bad code will be written out and so we can only improve. Bugs can be fixed by anyone who finds them. As goals change, so can the projects. Not belonging to a proprietary culture means we are not governed by a single executive board’s decisions. If such monoliths decide to support only Chinese keyboards because that is the biggest market, we cannot change their choice. But with open source we have the right to follow whatever path takes our fancy. ‘Want to support braille keyboards? Then you have the right and the code to be able to do this. Now admittedly, a company can buy a Microsoft development kit and be licensed to use some of its code hooks. But past experience suggests that if they are too successful then Microsoft is likely to bring out a similar (though not necessarily comparable) product after it has finished developing and marketing. If not, then Microsoft seems to simply take the company over. This is not quite the same as open source, where no one can stop you developing and

bringing a product to market. Others are free to pursue similar products, with the buying public deciding which is the better just as much as you can choose to better another’s project. ”Open source is an intellectual-property destroyer,” Allchin said. ”I can’t imagine something that could be worse than this for the software business and the intellectual-property business.” Some businesses do quite well out of open source but more importantly, users do exceedingly well. ”I’m an American, I believe in the American Way,” Allchin said. ”I worry if the government encourages open source, and I don’t think we’ve done enough education of policymakers to understand the threat.” I am not sure I even want to comment on this statement, as I believe that Mr Allchin might find my comments offensive. His final comment though, shows that he has a glorious sense of humour: ”We can build a better product than Linux,” he said. ”There is always something enamoring about thinking you can get something for free.” I am always hopeful that Microsoft will produce a better product. I would definitely buy it. I want the best. It would then be something for Linux to aim to better. And yes I do also love the idea of getting something for free. A smile makes me happy. So I will remain with a penguin by my side. Code well!

John Southern Editor

Linux is a trademark of Linus Torvalds Linux New Media UK Ltd is a division of Linux New Media AG, Munich, Germany Disclaimer Whilst every care has been taken in the content of the magazine, the publishers cannot be held responsible for the accuracy of the information contained within it or any consequences arising from the use of it. The use of the CD provided with the magazine or any material providied on it is at your own risk. The CD is comprehensively checked for any viruses or errors before reproduction. Technical Support Readers can write in with technical queries which may be answered in the magazine in a future issue, however Linux Magazine is unable to directly provide technical help or support services either written or verbal.

We pride ourselves on the origins of our magazine which come from the very start of the Linux revolution. We have been involved with Linux market for six years now through our sister European-based titles Linux Magazine (aimed at professionals) and Linux User (for hobbyists), and through seminars, conferences and events. By purchasing this magazine you are joining an information network that enjoys the benefit of all the knowledge and technical expertise of all the major Linux professionals and enthusiasts. No other UK Linux magazine can offer that pedigree or such close links with the Linux Community. We're not simply reporting on the Linux and open source movement - we're part of it. 7 · 2001 LINUX MAGAZINE 3


006newsed.qxd

05.03.2001

9:09 Uhr

Seite 6

NEWS

TOP STORIES

Caldera eServer ready on Compaq

Ransom Love of Caldera

Caldera Systems has announced that its OpenLinux eServer 2.3.1 is to be preloaded on Compaq ProLiant ML330, DL320 and DL360 servers. The latest version of OpenLinux eServer provides advanced directory service and security features together with the ability to support new hardware as it becomes available. Ransom Love, president and chief executive officer of Caldera Systems said, ”Offering Caldera’s eServer on the ProLiant server platform increases our ability to provide the best Linux-based business solutions.” Rick Becker, director of business development, Compaq Industry Standard Server Group commented, ”Compaq ProLiant servers provide

French streaming reaches beta A French software company has announced the beta release of its MPEG 1 streaming player for Linux. The PopCorn player is MPEG 1 audio (MP3) and video software which can play data streamed directly from the network. It has been developed by eProcess, a French company which specialises in embedded multimedia solutions. Based on the industry standard RTSP (real time streaming protocol), PopCorn is compatible with existing media servers such as SGI/Kasenna MediaBase and features a graphical user interface with features including play/pause/stop, direct access to any movie instant, play-list management, volume and balance control PopCorn can be downloaded form the eProcess Web site. ■

Info http://opensource.eprocess.fr/popcorn ■

HP choose Ximian Hewlett-Packard has chosen to include Ximian GNOME as the default desktop for HP-UX workstations after the release of HP-UX-11i. The graphical user interface of Ximian GNOME is provided for Linux and other Unix systems. HP and Ximian are both members of the GNOME foundation, the industry’s forum for directing the GNOME project and promoting the adoption of GNOME on Linux and Unix desktops. Under the terms of the partnership, Ximian will port Ximian GNOME to HP-UX for PA-RISC and IA64 and Ximian GNOME will ship as the default desktop on HP-UX as of the next major release of HP-UX after 11i. From late 2001 it will also be used as a client environment for HP Linux workstations. Meanwhile HP will use Ximian GNOME, as an open standard to provide a common desktop for Linux and HP-UX. Ximian will provide on-going 6 LINUX MAGAZINE 7 · 2001

technical support to HP and Ximian GNOME for HP workstations will feature Ximian’s network services. Stephen Geary, HP’s Linux development lab manager said that HP was committed to open source and was excited about migrating HP-UX and Linux workstations towards a common desktop. ”Our customers are constantly seeking the most innovative options and want access to the latest and greatest open source applications.” Ximian sees partnering with HP to drive the adoption of open source software as a major step. Ximian chief technology officer Miguel de Icaza commented, ”Such a close working relationship with HP is the ultimate validation of our technology. The combination of continuous open source development with the rigorous and careful testing tradition of HP will deliver the reliable products that HP users demand.” ■

customers a great combination of availability, scalability, performance and manageability, making it easier to deploy industry-leading Linux solutions. Caldera’s eServer gives users a server platform with the power, stability and support to meet and exceed their business needs.” ■

Info The new servers are now available from Compaq’s Web site. http://www.compaq.com/directplus http://www.calderasystems.com/products/eserver ■

BRU Pro restores Linux reliability Linux back up solution provider Enhanced Software Technologies has announced its new BRU-pro backup software for Linux-centric network. Based on EST’s BRU software, BRU-Pro is tailored to the needs of small and medium sized enterprises, offering them improved scalability, ease of use and automation as well as cross-platform compatibility. Ted Cook, EST’s president said the BRU-pro solution provides businesses with a high level of automation and reliability. He added, ”We’ve been developing Linux data protection solutions for seven years now, and this product absolutely benefits from the accumulation of that experience.” An example of these benefits, he said, was the free, open source tape library device driver that EST maintains. ”This allows virtually any tape library to work with BRUPro, and consequently Linux, without the exorbitant additional fees that some competitors charge.” ■

Info www.estinc.com ■

Crewe FC score with Linux Consultants Its-Linux Ltd, have provided a Linux system to first division football club, Crewe Alexandra. Andy Roffe of Its-Linux and the South Cheshire Linux User Group said, ”Within a tight schedule, we were able to create and establish a system which integrates seamlessly with the club’s existing infrastructure. We were able to meet all the IT department’s targets for improved security, reliability and stable high performance in a low maintenance environment.”

Info http://www.its-linux.co.uk ■


006newsed.qxd

05.03.2001

9:09 Uhr

Seite 7

TOP STORIES

NEWS

K2 climbs to 40Tb Open systems storage provider BigStorage has announced its new second-generation network attached storage device, K2 NAS. The new device offers an alternative to the proprietary systems of first generation NAS, providing a Linux based solution for enterprise level open storage with redundancy features, including those for integrated network and storage processors. The K2 NAS can be plugged directly into the network and be up and features a Web-based graphical interface to help administrators configure and monitor the system from any client on the network. Platforms supported include Windows 98/2000, MacOS, Linux, and Unix. Designed to scale to the needs of expanding businesses, K2 provides such options as additional

storage units, back-up software, Gigabit Ethernet, and FibreChannel. The K2 is supported by BigStorage’s benchmark LiveResponse 24/7 customer support system. Sam Bogoch, chief executive of BigStorage described the K2 as ”the first of its kind”. He added, ”It scales from one to forty terabytes, and comes with dual redundant server processors, hardware RAID controllers, snapshot software for file system archiving, and journaling file systems all this powered by an open-source technology.”

Info http://www.bigstorage.com ■

SuSE Linux knowledge portal is launched SuSE Linux, announced the new SuSE Linux Knowledge Portal, offering extensive first-hand information about Linux. The new Internet service, can be accessed on the Web at http://portal.suse.co.uk http://portal.suse.de http://portal.suse.com. With a wide range of topics, from application descriptions to firewall implementation or installing high availability solutions, the Portal provides useful information to Linux desktop newcomers as well as experienced system administrators. ”Info channels” highlight reports on Linux and

Open Source from different news providers. Personal preferences, such as theme and news delivery, are determined and saved by the user and allow a unique viewing experience. The full text search engine finds any keyword in a vast array of articles. The editorial desk welcomes suggestions regarding subjects users would like to read about. Articles can also be submitted for publication. The SuSE Linux Knowledge Portal addresses company independent Linux issues and is a perfect complement to SuSE’s up-to-date Support Database and the unique Component Database. ■

Alpha Servers get more development support The Open Source Development Network, a community dedicated to promoting the development of open source solutions, has added Compaq’s AlphaServer platforms to open source development ASP SourceForge.net’s CompileFarm online application testing and building environment. The AlphaServer platform offers support for the Tru64 UNIX and Linux operating systems. Compaq is keen to encourage developers to use it for building and testing open source applications. Gary Campbell, chief technical officer for Enterprise Servers at Compaq, said his company supported the open source community with the software applications it provides on Compaq’s Alpha and ProLiant server technology. He added ``We are very pleased to be working with OSDN and SourceForge to provide the open source community even broader access to our AlphaServer Linux and Tru64 UNIX platforms for the development and testing of open source software applications.’’

The SourceForge.net’s CompileFarm provides developers with a way to build and test applications on multiple versions of the Linux, BSD and UNIX operating systems. SourceForge.net offers free Web based access to the CompileFarm for Open Source developers. The SourceForge.net CompileFarm also gives developers access to Intel Itanium processor prototype systems. Richard French, senior vice president and general manager of OSDN, said ``Now that developers have access to Compaq’s Alpha platform on the SourceForge.net CompileFarm, we expect to see more Open Source applications available for Linux on Alpha and Tru64 UNIX. OSDN’s goal is to make more Open Source software available on every major platform.’’ ■

Info http://www.osdm.com http://www.sourceforge.net/compilefarm/

NT file system fix for Linux released Mounting Windows NT/2000 partitions under Linux is at an early stage for support, with some data corruption problems remaining. However, these new utilities go some way towards fixing them. ■ http://sourceforge.net/projects/linuxntfs/

■ 7 · 2001 LINUX MAGAZINE 7


006newsed.qxd

05.03.2001

9:09 Uhr

Seite 8

NEWS

DEVELOPMENT

Oki printers support Linux Oki has announced its new Linux printer driver is to be available free to Oki customers over the Web. The Omni Linux driver is built on the Ghostscript framework, a postscript interpreter. The drivers, which are the result of Oki’s collaboration with IBM are the compatible with more than 2 dozen Oki printers. The following series of OKI printers that work in the Linux environment include: ML-184 Turbo, ML-320 Turbo, ML-321 Turbo, ML-4410, ML-520, ML-521, ML590, ML-591, ML-3410, ML-390 Turbo, ML-391 Turbo, ML-395B, ML-192, ML-193, ML-320, ML-321, ML-380, ML-393C, ML-395C, ML-390, ML-391 and ML-393. Carl Taylor, marketing manager for impact printers at Oki Data, said his company was interesting in supporting

the requirements of the growing Linux community. He added, ” Working with IBM on the development of the printer drivers helped us to more quickly achieve our goal of meeting the needs of Linux users.” Mark VanderWiele, senior technical staff member at IBM Linux Technology Center said, ”We are pleased with Oki Data’s quick support of open source printer driver development. By working with Oki Data, we are able to offer the open source community print support on the Linux platform.”

Info http://www.okidata.com/drivers ■

Level III training now available Vendor-neutral training materials and curriculum developer for open source software, Sair Linux and GNU Certification, has unveiled its curriculum for Level II certification in a program that will produce Sair Linux and GNU Certified Engineers (LCE) Sair Linux and GNU Certification, a Thomson Learning Company, announced the curriculum for the Level II course, known as AMPS, at the LinuxWorld Expo and Conference in New York City. AMPS’ coursework and testing structure will consist of a mandatory Core Concepts and Practices (CCP) course based on Knowledge Matrix topics. Topics will include desktop file recovery techniques, advance printer configuration and comparative performance tuning for kernel, network and

applications. In addition to the CCP course, candidates must complete three other courses, which they can select from a choice of seven. In this respect, AMPS differs from Sair Linux and GNU Certification’s Level I course, which was first offered in 1999 and required candidates to pass exams from four specific courses in order to become Sair Linux and GNU Certified Administrators (LCA). The seven elective courses include: AMANDA (Backup and disaster recovery training), APACHE (Web servers), MYSQL (Database systems), PHP/XML (Web implementation using the Pre Hypertext Processor and XML standard. PERL (Scripting). SAMBA (Resource sharing). SENDMAIL (Mail systems, including back-

end mail transfer agents and front-end user interfaces.) The AMPS course structure allows the LCE candidate to select a combination of applications that best match the requirements of their jobs, according to Tobin Maginnis, founder and president of Sair Linux and GNU Certification. ”Level I, in essence, is getting the basic software on the machine and using it properly. AMPS, or Level II, is more product driven and allows the LCE candidate to select applications that would be most helpful in pursuing other open source career opportunities while increasing salary compensation.”

Info www.linuxcertification.com ■

Consultation with SuSE SuSE Linux has announced the launch of its UK Consulting Services organisation, the latest addition to its worldwide network of professional services organisations. The UK organisation is to provide information technology consulting throughout the United Kingdom and Ireland, with the aim of solving business problems through the application of Linux and open-source technology SuSE’s consulting services are primarily focused around systems-level architecture, IT infrastructure, and clustering. The IT infrastructure focus is on core network services, such as high-performance Web serving, firewall implementations, corporate Internet/Email server infrastructure, high-performance database solutions, and heterogeneous system integration and migration, while clustering solutions cover such technologies as high-performance computer 8 LINUX MAGAZINE 7 · 2001

clustering and load-balanced throughput clustering. Michael Armstrong, professional services manager for SuSE Linux commented, ”Utilising the strengths of Open Source software to provide technical solutions to everyday business problems is the very basis of our Consulting Services philosophy. We provide open, stable, and scalable solutions, from single servers to large IT architectures. By leveraging the software development and consulting expertise of SuSE worldwide, our solutions are locally-focused, yet globally aware.” The Consulting Services organisation is currently targeting its offering at the financial sector including the banking and insurance players. The consultants provide Linux, open-source, and integrated solutions across a range of hardware platforms, including Intel, Alpha, PowerPC, and IBM’s S/390 mainframe. ■


006newsed.qxd

05.03.2001

9:09 Uhr

Seite 9

DEVELOPMENT

Web applications tested easier Ebusiness software developer Downright Software has launched its new LAMP-based (Linux, Apache, MySql, and Python) performance testing solution, StressMy.com. StressMy.com is an online solution. The membership-based site does not require downloading or installation. It offers Web developers the tools to test their application’s scalability and integrity by simulating the levels of traffic an application will have to handle in the course of day-to-day use. Stressmy.com can generate traffic to simulate hundreds of simultaneous virtual visitors in order for developers to test peak load performance, page download times and page response times. Membership of StressMy.com is available by purchasing one of the tiers of service or by registering for trial membership. The tiers of service are based on the amount of site traffic a member needs to generate, ranging from 2 to 250 concurrent visitors. David Cohen, chief technology office of Downright Software comments, ”By testing your Web application you gain valuable insight on how to improve your customers’ and potential customers’ experience while visiting your site. Broken links and slow page loading times can impact your e-business profitability dramatically. StressMy.com can detect and report these problems to you within minutes of running a test. And, because our product is Web-based and easy to use, our members are saving money on costly software, hardware, installation, and training.” ■

NEWS

SGI starts Linux distribution business SGI has launched its Internet Server Environment (ISE) distribution. Designed especially for service providers, ISE includes integrated installation scripts and a Web-based user interface. ISE was designed to run on the SGI 1100 1U server and has a UK list price of £72 for the shrink-wrapped product. ■

Info http://www.sgi.com ■

Linux gets Flash new player Macromedia has announced that its new Macromedia Flash Player 5 for the Linux and Solaris platforms is now available. Flash Player 5 offers developers advanced features which developers can use to deliver complex Web . The player is integrated with such server technologies such as Extensible Markup Language (XML), to enable structured data transfer, and Macromedia Generator, for delivering server-created, realtime visual content to Web sites. The player also supports HTML formatted text within Macromedia Flash content. By maintaining persistent connection between the lightweight client and server, users can share real-time XML information for business applications. Colin Moock, Web Evangelist, ICE said that as a Web design company that develops Macromedia Flash solutions, his company was pleased by Macromedia’s commitment to cross-platform compatibility. He added, ”Our customers demand the broadest possible audience for their Web content, and Macromedia Flash Player 5 for

both Linux and Solaris helps us ensure that broad reach.” Sal Cobar, director of marketing and business development, Sun Ray Appliances, Sun Microsystems said, ”Our customers have eagerly been anticipating the Macromedia Flash Player 5 which is a great fit with our Sun Ray appliances, especially in the education market. Macromedia Flash Player 5’s highimpact Web animation technology combined with the ease-of-use of Sun Ray systems can dramatically enhance the learning experience for students and teachers. We’re working closely with Macromedia to bring current and future versions of Macromedia Flash to Sun’s Solaris operating environment.” Flash Player 5 is available for download from the Macromedia Web site. ■

Info http://www.macromedia.com/shockwave/ download/alternates/ ■

Apache to script with Tcl The Apache Software Foundation has announced the launch of the Apache Tcl project, aimed at promoting the integration of the Apache Web server with the Tcl scripting language. Tcl (Tool Command Language) is an opensource, cross-platform scripting language. It has been used with such Web products as AOLserver, and StoryServer. Tcl is currently used in such applications as Web scripting, test automation, etwork/system management, EDA and CAD, and in many other fields. Apache believes that Tcl will make an excellent companion for its server in backend scripting tasks. David Welton, vice president of Apache Tcl and author of mod_dtcl, commented, ”Tcl is a great language for the Web - it’s small, light, easy to learn, and has been used, developed and tested for a number of years. It also has a large user base, and is a very active open source project in its own right.” ■

LiVid releases OMS DVD player for Linux LiVid have finally released their OMS DVD playing software version 1.0 for Linux despite various legal threats from the American film industry. ■

Info http://www.linuxvideo.org/ ■

Gimp User Group launched A new site dedicated to users of graphics application The Gimp has been launched. It currently has 241 Gimp creations in a gallery and 81 textures available for download. ■

Info http://gug.sunsite.dk/ ■ 7 · 2001 LINUX MAGAZINE 9


006newsed.qxd

05.03.2001

9:09 Uhr

Seite 10

NEWS

DEVELOPMENT

Mobile Linux from Transmeta due soon In case you wondered what Linus has been up to at his day job, Transmeta have hinted that their Linux distribution will be publicly available soon. Aimed at low resource portable devices, Mobile Linux’s ‘cram’ file system packs the kernel, libraries and X window system into 8MB. ■

Alios bootloader released under GPL

http://www.linuxdevices.com/articles/AT5214244852.html

A new boot loader has been designed to eliminate the BIOS and load the Linux kernel image from solid state memory. It was developed for systems based on the Elan SC400 x86 microcontroller from AMD, and allows the developer to build embedded devices with only the CPU and ROM or DRAM. ■

Info

Info

http://linuxdevices.com/news/NS7710631876.html

Trustix trusts Its-Linux Its-Linux Ltd, a UK Linux systems vendor, has been appointed by the Norwegian Linux specialist Trustix as a prime distributor of XSentry, the highly regarded firewall, XPloy, the remote server management tool, and TSL, the secure server operating system. XSentry is an enterprise class firewall, which utilises an integrated Linux operating system with key advantages claimed as ease of installation and rapid implementation of complex firewalling. XSentry features a highly flexible and user friendly GUI which includes remote management of multiple firewalls. XSentry also features IPSEC compliant Virtual Private Networks (VPN) enabling secure tunnelling. XSentry is available in two distinct editions. The four zone version is designed for large scale business and public institutions. The two zone version is designed specifically for the

■ smaller enterprise. The cross-platform GUI is equally at home on Linux or Windows. XPloy facilitates the secure and remote administration of multiple Linux servers from a single workstation. The key benefit of this product is that servers situated anywhere in the world may be managed with common user friendly GUI from a single point. Said Gorm Karlson, Sales Director, Trustix AS, ”With the increasing demand for network connectivity throughout the UK and Europe, Its-Linux Ltd is ideally positioned in terms of expertise and professionalism to bring the advanced Trustix products and their benefits to a broad band of enterprise IT buyers.” ■

Info http://www.its-linux.co.uk ■

New firewall by Mandrake MandrakeSoft have released a beta version of Mandrake Security, a GPL firewall and router configurable via a Web interface. It’s based on the latest version, 7.2, of their Linux distribution, and makes use of XML and php in its interface. ■

KDE 2.1 The KDE Project announced the release of KDE 2.1, a powerful and easy-to-use Internet-enabled desktop for Linux. KDE features Konqueror, a state-of-the-art Web browser, as an integrated component of its userfriendly desktop environment, as well as KDevelop, an advanced IDE, as a central component of KDE’s powerful development environment. This release marks a leap forward in Linux desktop stability, usability and maturity and is suitable for enterprise deployment. The KDE Project strongly encourages all users to upgrade to KDE 2.1. KDE and all its components are available for free under Open Source licenses from the KDE server and its mirrors and can also be obtained on CD-Rom. KDE 2.1 is available in 33 languages and ships with the core KDE libraries, the core desktop environment (including Konqueror), developer packages (including KDevelop), as well as the over 100 applications from the other standard base KDE packages (administration, games, graphics, multimedia, network, PIM and utilities). ■

Info Info http://www.linux-mandrake.com/en/ftp.php3

http://ftp.kde.org/stable/2.1/distribution/tar/generi c/src/

SuSE and IBM agree on support SuSE Linux, and IBM Global Services have signed a worldwide technical support agreement, covering a wide variety of platforms, including IBM eServers. According to the agreement, IBM Global Services will tap SuSE’s expertise to help address customers’ toughest Linux technical concerns, such as source code problems. ”This is a major step forward for SuSE Linux as a worldwide trusted partner for Open Source solutions,” comments SuSE’s CTO Dirk Hohndel. ”Together with IBM Global Services, we can 10 LINUX MAGAZINE 7 · 2001

offer superior services to support mission critical IT installations, even for the largest organisations.” IBM already delivers a full portfolio of technical services to help customers optimise and support Linux environments. For the toughest (Level 3) code issues, IBM will enlist SuSE’s aid to help deliver appropriate bugfixes and patches. IBM and SuSE will make this Level 3 support available to customers worldwide. ”By teaming together, we can help address technical issues SuSE distribution users may encounter, in

a wide range of computing environments, from Enterprise servers down to the PC level,” said Patricia Gibbs, vice president, Linux Services, IBM Global Services. Since the announcement of SuSE Linux Enterprise Server for zSeries (formerly S/390) in October, SuSE is the only company delivering a worldwide Linux distribution for IBM xSeries, pSeries and zSeries eServers. At this time, SuSE supports more IBM server platforms than any other commercially available Linux distribution. ■


006newsed.qxd

05.03.2001

9:09 Uhr

Seite 11

DEVELOPMENT

Mandrake supports PHP-Nuke As a further illustration of its commitment to the Open Source community, MandrakeSoft announces its support to ‘PHP-Nuke’, an Open Source development project resulting in the creation of a new killer Internet application specifically designed to allow open source users to create sophisticated Web based communities. The ‘PHP-Nuke’ project was initiated by Francisco Burzi in the Summer of 2000, a talented young computer technologist currently living in Venezuela. The latest version, ‘PHP-Nuke 4.4’, provides a highly flexible and customisable set of tools to help build on-line communities, enabling users to share news, submit comments and discuss articles and ideas via a Web based portal-like solution. Some of its main features include Web based administration and survey building functionality, customisable user boxes and an in-built moderation mechanism. Supporting 23 languages, PHP-Nuke has already been downloaded by more than 140,000 users in 6 months and is used by hundreds of Web sites worldwide. By joining the MandrakeSoft team, the ‘PHP-Nuke’ project will not only benefit from the financial support needed for its continuing improvement going forward, but will also receive full technical support including Web hosting and download mirrors and benefit from MandrakeSoft’s communications network to further raise its profile with users worldwide. According to Gael Duval, co-founder of MandrakeSoft: ”PHP-Nuke is a Slashdot-like killer application that basically allows anybody to establish community orientated news services on the Web with ease. It is also one of the fastest growing Open Source projects on the Internet, and is being adopted massively by Web masters. It is a great pleasure to have Francisco Burzi as part of our team and to give him a chance of working full-time on his projects” ”I’m very excited to join the MandrakeSoft team” said Francisco Burzi. ”When I first started developing the software for my own use, I never dreamed that the project would turn out to be so successful and I always like to hear from people out there who have made a success of launching virtual communities using PHPNuke. I am a strong supporter of free software and of the Open-Source movement and hope that PHP-Nuke will help free software developers around the world with their projects. With MandrakeSoft’s support and commitment to the Open Source philosophy, I hope that PHP-Nuke will become THE reference of choice for community portals”. ■

Info http://www.mandrakesoft.com/main/ community/actions http://www.phpnuke.org ■

NEWS

Windows finally makes a cluster While Microsoft have been attempting to recruit Australian Linux hackers, a desperately misinformed sales piece tells us that thanks to ‘industry-standard’ Win2k, we can now run supercomputing clusters on commodity hardware - One assumes that they have not checked out the souper-computer site. ■

Info http://www.it.fairfax.com.au/software/20010212/A21446-2001Feb12.html http://www.microsoft.com/WINDOWS2000/hpc/indstand.asp ■

Caldera Volution wins Caldera launch their Volution, its Linuxdiagnostic management product, claimed Best Network Server Application Award at LinuxWorld, New York. ”This award, which we are pleased to receive, recognises Caldera Volution as a solution to Linux adoption in enterprises,” said Drew Spencer, chief technology officer at Caldera Systems. ”Volution brings down the management barrier, allowing more businesses to remotely deploy Linux solutions.” Caldera Volution includes, among other benefits, the following key

features: a secure Web-based management console, an electronic software distribution to install and remove applications on remote Linux systems, hardware and software inventory, health monitoring of Linux systems, and a Linux printer configuration. It can be purchased for about £2000. International versions are available in Chinese (simplified and traditional), French, Italian, German, Spanish, Japanese, Korean and Portuguese. ■

Red Hat appoints Director of Academic Business Development Red Hat announced the appointment of Dr Malcolm Herbert as Director, Academic Business Development. ”Malcolm brings to Red Hat a strong understanding of the education sector and his appointment strengthens our commitment to academia,” said Colin Tenwick, VP and general manager, Red Hat Europe. ”Linux and open source solutions are extensively used to run core Internet services in other sectors and these technologies have a significant role in developing educational IT resources. Red Hat, as the top provider of open source solutions, will have a key part to play in the takeup of Open Source and it is great to have someone with Malcolm’s experience focusing on this sector.” Prior to Red Hat, Malcolm held a number of positions in the education sector. Most recently, he worked as Head of Technology Research and Development at Becta. He has over 10 years experience in Information Communications Technology (ICT), had previously worked in the higher education sector, for the

University of Wales, UK. He has been using Linux and Open Source applications for development, teaching and building IT solutions since 1994. ”As schools, community learning centres and other educational institutions acquire better connectivity with arrival of affordable broadband access, they are realising that they also have to develop Internet-based services locally, such as mail, cache and Web servers,” explains Malcolm. ”Open source provides the most effective and sustainable solutions, as Universities have already realised. Part of my role will be to make Linux solutions more accessible to the rest of the community and I’m looking forward to being a member of the Red Hat team in Europe.” Using Open Source solutions enables institutions to run IT services with a lower Total Cost of Ownership (TCO) because of the flexibility it allows, in terms of management, integration with existing equipment and choice of hardware and software vendor. ■ 7 · 2001 LINUX MAGAZINE 11


014orgaworkshops.qxd

01.03.2001

14:22 Uhr

COVER FEATURE

Seite 14

WORKSHOP: ORGANISER

Manage your schedule properly with StarOffice Schedule 5.2, KOrganizer and GNOME Calendar 1.2

WHEN THE DESKTOP RINGS TWICE TIM SCHÜRMANN

They are integrated into almost all office packages and even in the desktop environments KDE and GNOME: I’m talking about organisers, the small, almost invisible helpers that can be a real aid if you have a chock-full appointments calendar. This article shows you how to collect all your dates under one roof using one of the three main free schedulers under Linux, and even be reminded of them automatically.

The way an organiser works can be explained using an example from the life of Noah Deer. Noah Deer is the managing director of a well-known car manufacturer and would like to administer and organise his business and private appointments by computer. This is where the three freely available organiser programs KOrganizer (part of the KDE Desktop), StarOffice Schedule (part of the office package StarOffice 5.2.) and GNOME Calendar 1.2 (part of the GNOME Desktop environment) come into play. If you are using KOrganizer, you may be aware of the difference between the somewhat older version 1.1.1, which was developed for the old KDE 1.x, and the new KOrganizer 2.0, which is supplied as standard together with KDE 2.0. If at all possible you should use the slightly improved version 2.0. 14 LINUX MAGAZINE 7 · 2001

The fundamental structure of an organiser, also known as a scheduler or Personal Information Manager (PIM), is the same in each case: Each of the programs presented here differentiates between appointments and tasks. An appointment is always tied to a fixed time such as ‘Conference on Monday morning at 9 o’clock’. A task (called a ‘To-do-entry’ in the Gnome Calendar) is characterised by the fact that it is not time-dependent, such as ‘Ring Gary sometime about the garden party in July’. One further distinction is that the user can be reminded automatically of an appointment by the respective program.

Appointments In order to join in with the following Workshop, you should first start the application you are going to


014orgaworkshops.qxd

01.03.2001

14:23 Uhr

Seite 15

WORKSHOP: ORGANISER

COVER FEATURE

[left] Figure 1: Main window of GNOME Calendar [right] Figure 2: Main window of KOrganizer 1.1.1

[left] Figure 3: Main window of KOrganizer 2 [right] Figure 4: Main window of StarOffice Schedule

use. To do this under StarOffice double-click on the Appointment symbol on the desktop. The main focus of an organiser program is on the management of appointments. To do this, each program has a calendar view, which is usually displayed immediately after starting. A day, a week or a month can be displayed here. With the exception of the monthly view, the days are shown along the horizontal axis and the time along the vertical axis. In the table grid thus created, the corresponding appointments can then be entered. In addition, there is also usually a small calendar inserted in one of the top two corners of the main window, on which the currently displayed month appears in the form of a small overview.

It depends on your view Noah Deer has discovered that on 22 January 2001 at 10 o’clock he has an important meeting with the works council. In order to enter this appointment, he must first switch to the daily view. To do this under StarOffice, it is vital for the so-called Object bar (View/Symbol bar/Object bar) to be inserted. Now click on the symbol with the calendar sheet and the 1 in the foreground. KOrganizer uses a similar method. But be careful here, as under the old Version 1.1.1 a second click on the said control button toggles between the display of just one, all five working days and all seven days of the week. Under the successor version 2.0, and in StarOffice, each of these forms

of display has its own symbols. In the GNOME Calendar you can call up the various views via the register pages below the symbol bar. In order to display the appointments for 22 January 2001, you can either use the symbols with the arrows or click directly in the little Overview calendar on the corresponding entry (in the GNOME Calendar a double click is necessary to do this). This calendar usually has its own arrow buttons, with which the month can also be changed. But be careful here, since StarOffice and KOrganizer automatically adapt the date displayed in the large window to the newly selected month. Also, two dates are always marked differently in this little calendar. These are firstly the current date, which is specified by the internal clock of your computer, and the date, which is displayed in the main window. So if you do not complete this Workshop in January 2001, the first mentioned marking would obviously fall in a different month. In most organisers the appearance of these markings (such as their respective colours) can be altered in the program settings. 22 January 2001 should now be displayed clearly as the only date in the organiser you are using. Before we enter Noah Deer’s appointment, here’s another tip on navigation: If you no longer know where you are or want to save yourself lots of clicks, you can leap back in all the programs, with a single mouse click on the symbol Today in the symbol list, to the current date specified by your computer clock. 7 · 2001 LINUX MAGAZINE 15


014orgaworkshops.qxd

01.03.2001

14:23 Uhr

COVER FEATURE

Seite 16

WORKSHOP: ORGANISER

[left] Figure 5: Edit window of GNOME Calendar [right] Figure 6: Edit window of KOrganizer 1.1.1

[left] Figure 7: Edit window of KOrganizer 2 [right] Figure 8: Detailed view of StarOffice Schedule

New Appointment In order to insert Noah Deer’s appointment, move using the scrollbar to the 10:00 line. Double click there with the mouse on the corresponding empty line. If you are using the GNOME Calendar, you must first mark the corresponding appointment, by clicking on it once with the mouse. Then press the right mouse button and select New appointment from the menu that appears. Under StarOffice and KOrganizer 2.0 you should have the use of two cells for the 10:00 o’clock appointment. In this case, use the upper of the two lines, as the lower one is allocated to an appointment starting at 10:30. The organiser program you are using should now automatically switch into input mode, in which you must enter a description of newly made appointments. In our case this would be ‘Conference with works council in Room 514’. Complete the input by pressing the enter key. Under KOrganizer 2.0 and GNOME Calendar the procedure is somewhat different: Here an Edit window opens (more on this later), in which you must enter the above description. Then click on OK to complete the entry. The newly made appointment is now visibly highlighted and in some programs marked at the same time. Under KOrganizer 1.1.1 this marking is seen from the vertical black bar on the left.

Remember me Since the meeting with the Works council is very important, Noah Deer wants to be reminded of it by 16 LINUX MAGAZINE 7 · 2001

his organiser program. To do this, open the Properties window, which is reached under StarOffice via the symbol Details from the object list. This window henceforth remains visible at all times on the bottom edge of the screen and displays the data of the appointments marked in the calendar view. To make this view disappear again, all you need do is click again with the mouse on the symbol Details in the symbol list. Under KOrganizer and GNOME Calendar you should position the mouse cursor on the corresponding appointment and then press the right mouse button. From the context menu that appears, you should then select Edit or Edit entry. Although the structure of the properties windows differs somewhat in each of the programs, their contents are all roughly similar. To activate the automatic message when the time arrives for the appointment, select the point, under StarOffice, Reminder. There, the field Dialog should already have been activated. On the right side, mark the box Display dialog. In addition, you can play a sound file (loud, staccato sounds are excellent for extremely important appointments). Using the upper list, you can set how many minutes before the actual appointment the corresponding message should appear. So if you select 15 minutes for instance, the message window will automatically remind you at 9:45 about the 10:00 appointment. KOrganizer 1.1.1 does not yet have such comprehensive equipment in this respect. But it does have control buttons for playing audio files (the note) and even starting a corresponding program (the running person),


014orgaworkshops.qxd

01.03.2001

14:23 Uhr

Seite 17

WORKSHOP: ORGANISER

although these functions are only integrated in KOrganizer 2.0 onwards. As long as you activate the Reminder box, a message window will be displayed here. The input box and the list on the right next to this specify the precise length of time that the message window should appear before the actual appointment. In the GNOME Calendar, you activate the reminder function by marking at least one of the little boxes in the Alarm settings field. The GNOME Calendar, apart from displaying a message window, can play a sound file, start a program and even send an e-mail to any address. If you have switched on the automatic reminder function in your organiser in one of the ways just described, a small bell will be inserted in all programs in the calendar view as a reference to this function. Before going any further with Noah Deer’s example, a couple more brief comments on the detail view and the editing window. Here you can alter all settings relating to an appointment, which the respective organiser program provides. You can enter a more exhaustive description, or a simple comment. In StarOffice, this function can be found under Content, while with KOrganizer this text can simply be entered in the large, empty field in the lower half of the first register sheet. Furthermore, under StarOffice and KOrganizer the persons taking part in this appointment can be specified. In StarOffice this function can be found under Participants, and in Korganizer, to do this, select the register Details, then complete the field below the large list for any participant and finally click on add.

Again and again and again... Noah Deer has found out that his meeting with the works council will in future always take place at 10:00 o’clock on the first Monday of every month. So as not to have to enter the appointment again every month, the individual organisers offer a handy aid for this in their detail view or in the editing window. In KOrganizer, mark the point Recurring Appointment on the first register. Then switch to the third register Repeat entry, which has been opened by the preceding action. Under Repeat, mark the point monthly, as well as 1st Monday next to this on the right. You can also make other, more extensive settings on this register. So, for example, in the lower right area of the register you can specify which appointments are to be excluded from this rule. To close the window again, select Save and Close from the symbol bar, or in Version 2.0 OK. Since 22 January was not the first Monday in the month, KOrganizer has deleted the appointment and only entered it for the first time in the next month, February. StarOffice deletes this appointment for exactly the same reason. But there you must first select Repeat from the detail window

COVER FEATURE

on the left side, then mark the box monthly and set, in the right part of the corresponding lists, first Monday of every month. Unlike KOrganizer, any changes you make here come into effect immediately. Then replace the automatically deleted appointment ‘Meeting with Works Council in Room 514’ on 22 January. The procedure with GNOME Calendar is similar to that with KOrganizer, the only difference being that the corresponding register Repeat can be selected directly. Here, by the way, you have the option of defining Exceptions to this rule in the right lower area of the register card.

It may take a while Noah Deer has now been definitively informed that the meeting on 22 January will last until 11:45. In order to adapt the length of the appointment, you can alter the corresponding values in the Detail window of StarOffice or in the Editing window of KOrganizer and GNOME Calendar. The first two programs mentioned even offer (in addition to this option) another and somewhat easier way. To do this, move the mouse to the lower edge of the appointment, until the mouse cursor turns into a double arrow. Now hold down the mouse button and drag the end of the appointment to 11:45. The appointment should now lock-in to the specified time positions. Now release the mouse button, and the duration of the appointment will be adapted to the target time. Obviously, this method functions with the start time and on the upper edge. But there’s more of this: Position the mouse cursor on the centre of the appointment, where it turns into a cross. If you now hold down the mouse button you can move the complete appointment easily to any new time position on the calendar. If you are using StarOffice, you will certainly have noticed that you were only able to drag the appointment either to 11:30 or 12:00. This is because the time slot is preset to a 30 minute pattern. To alter this, click with the right mouse button on an empty space in the appointment slot and then select a different resolution from the menu under Time slot. The GNOME Calendar, incidentally, offers only fixed steps in units of 30 minutes when you adjust times by mouse. To become more familiar with the various views of the individual organiser programs, you should now do a bit of experimenting with them. To do this, create some additional appointments and watch how these are displayed in the individual views (day, week and month). In this connection the List display, which only GNOME Calendar does not provide, is interesting. This display, which is also reached via the associated symbol from the symbol bar, lists all appointments for the current month as an overview. 7 · 2001 LINUX MAGAZINE 17


014orgaworkshops.qxd

01.03.2001

14:23 Uhr

COVER FEATURE

Seite 18

WORKSHOP: ORGANISER

[left] Figure 9: Adding a task under GNOME Calendar [right] Figure 10: Adding a task under KOrganizer 1.1.1

[left] Figure 11: Adding a task under KOrganizer 2 [right] Figure 12: Adding a task under StarOffice Schedule

Tasks Noah Deer wants to celebrate with a garden party in October on the occasion of his service anniversary. His friend Gary is meant to help him with this. But he has to make the phone call about this in the next few days. Since a few work-related appointments have not yet been fixed and Gary can only be reached at certain times, Noah Deer does not yet know when he will be able to phone Gary. As a result, this call becomes an ideal candidate for a new task (also called a To-do entry under GNOME Calendar). Under StarOffice, click in the object bar on the symbol New task, in KOrganizer you should first switch with the corresponding symbol from the symbol list into the Task view. Once there, click on any free space with the right mouse button and then select New to-do from the menu. The GNOME Calendar provides a special control button for this purpose in the lower right corner of the day view, Add. Under StarOffice a new entry in the Task list will now appear on the right hand side under the calendar. If this is not blended in, click on the Tasks symbol in the object bar.

Info Corel Linux Homepage: http://linux.corel.com StarOffice Homepage: www.sun.com/staroffice Homepage of the KDE Desktop: http://www.kde.org KDE 2.0: Article and cover CD: Linux Magazine issue 4 (January 2001) Homepage of the GNOME Project: http://www.gnome.org ■ 18 LINUX MAGAZINE 7 · 2001

The entries created in this way look the same under both StarOffice and KOrganizer 1.1.1. In the new KOrganizer 2.0, and the GNOME Calendar, a corresponding window opens. Now enter a description in the text field: in our example this would be ‘Ring Gary about garden party’. As already seen with the appointments, here again in the same way a Detail or Editing window can be blended in, in which the progress of the task can be entered as a percentage. If the task has been done, you can simply tick off the small box before the description. KOrganizer 2.0 even offers the option in this connection of breaking down individual tasks into smaller sub-tasks. To do this, click on the task to be broken down with the right mouse button and then select New Task sub-group. The new sub-point is then entered exactly like a main point. Unfortunately the GNOME Calendar is left behind somewhat when it comes to management of tasks, as its setting options in this respect are substantially sparser in comparison with its competitors. After you have marked the appropriate candidates in the list, call up the associated Editing window using the control button Edit... on the lower edge of the screen. Our trip around the world of organisers ends with the tasks. To become more familiar with the individual programs, you should experiment with a few test entries and in particular try out the functions not mentioned in the article. Obviously there are still lots of other free organiser programs, and projects on the Internet, from which you will surely find your own personal favourite. ■


014orgaworkshops.qxd

01.03.2001

14:23 Uhr

Seite 19

WORKSHOP: ORGANISER

COVER FEATURE

Watching in the background For the dialog field to be displayed, the programs constantly check the time on their computer clock. Obviously this can no longer happen if you shut down the corresponding organiser application. So that you can be reminded nevertheless at the right time, the organisers start small programs in the background, which remain active after the actual application has been shut down and alert the user at the right moment. KOrganizer does this automatically, and this is shown by the small symbol on the right at the bottom of the KDE start list next to the clock.

Figure 13: This symbol shows you that the background program of Korganizer has been activated

StarOffice sadly is a special case, where you always have to start the entire office package and even then there is no guarantee that you will be reminded of your appointments. Normally this actually only happens if you have started the schedule module. StarOffice does, however, expressly ask, after the activation of the Reminder function, if you wish to be reminded of your appointments even when the schedule module has not been started. So that you only have to start StarOffice itself, you should always answer yes to this question.

Additional functions in StarOffice 5.2 StarOffice offers a host of additional functions, which the other programs described in this article do not. The most interesting ones will be mentioned here briefly. Firstly, StarOffice provides for separation into private and work time zones. In the calendar different colours in the background show these zones. A light blue background marks working hours, while dark blue stands for leisure time. So to extend the work time, mark the cells to be changed with the mouse. To do this, hold down the left mouse button and drag the grey marking to the desired size. Release the left mouse button and then immediately press the right one. In the menu that now appears, select the point Mark as work time from the entry Background. If you have a great many appointments, it is very easy to lose perspective. To avoid this, under StarOffice so-called Filters can be activated (View/Define appointment filter..., or in the case of tasks, View/Define task filter...). In this way, only the appointments are displayed which belong to the category specified in the filter. This can be used to blend in all private appointments. The assignment option for a category can be found in the Detail view of the respective appointment under the Details point. In addition to the simple reporting options in the form of a dialog or an acoustic signal, StarOffice also offers the option of sending an e-mail to any address you like. You reach this function by marking the corresponding appointment, blending in the detail view, there selecting from the left list Reminder and then clicking on E-mail under Dialog. But please bear in mind that the message, depending on the mail provider, may arrive with a considerable delay.

Installation and reference sources StarOffice: Firstly, make sure that you have installed the module StarOffice Schedule when installing StarOffice. This should be the case if you do a full installation. If you want to manage both appointments and tasks at the same time, double-click on the symbol marked Appointments on the desktop. If you just want to look at and edit your queue of tasks, a double click on Tasks is enough. If one of the two symbols is missing then blend in the explorer on the left edge of the screen and there open the group Explorer. Then click on the plus sign before Tasks and Appointments. A double click on the corresponding sub-entry then opens the desired window. KOrganizer: KOrganizer 1.1.1 is an integral part of the old KDE 1.x desktop and in many distributions it is included with the installation. If you find this is not the case, or if you are using a different desktop manager, such as GNOME, you should be able to install the corresponding packet later with the associated program from your distribution (with SuSE Linux with YaST. The packet is in the series kde and bears the name korganizer). Korganizer should be included with your distribution, but if not you can download it for free from http://apps.kde.com. KOrganizer 2.0 is also an integral part of the new KDE 2.0 desktop, which you will find either on our coverdisc from issue 4 (January 2001) or it can be downloaded from http://www.kde.org. GNOME Calendar: The calendar is an integral part of the GNOME desktop. Although it is possible in principle to start the GNOME Calendar under KDE or another desktop, this only works if you first install the main components of the GNOME desktop. In addition to this, you may only be able to use some functions to a limited extent, or not at all, under a different desktop. The GNOME Calendar should be included with your distribution, but if not you can obtain it on the Internet from http://www.gnome.org.

7 ¡ 2001 LINUX MAGAZINE 19


020schedulersed.qxd

02.03.2001

16:37 Uhr

COVER FEATURE

Seite 20

OVERVIEW OF SCHEDULE MANAGEMENT PROGRAMS

Schedulers for the desktop

ORDER OUT OF CHAOS ANDREAS HUCHLER

Your colleagues and family are giving you a very sour reception because once again you’ve simply forgotten an important date – perhaps your own mother’s birthday or an important business dinner – due to your lack of organisation. It’s high time to bring some order into your chaotic daily schedule. Alongside the conventional solution of going into a stationer’s shop once a year to buy an up-to-date appointments calendar made of paper, in this age of the microchip, there is of course, an electronic alternative. Once you have made the decision that your Linux PC will henceforth be in charge of any dates which occur, the question arises as to which desktop program is best suited to this purpose. Linux Magazine presents to you schedulers, calendars and organisers for the X11 desktop.

Mobile assistants Anyone who travels a lot may well want to acquire a Personal Digital Assistant (PDA) or even a keyboard handheld PC. These mobile dwarves really can perform miracles now, but this does not mean they are ready to replace the classic stand-alone computer, not by a long chalk. It is rather that they normally act as a sort of extended arm for home desktop applications, thus in our case, schedule management software under Linux.

PIMs or groupware? Schedulers do not usually come as isolated applications, but are normally an integral part of a collection of electronic help tools for more efficient organisation of the day-to-day running of the 20 LINUX MAGAZINE 7 · 2001

office. If such an office bundle consists of applications best suited to the better organisation of the private and professional life of an individual, these are often referred to as Personal Information Managers. Such PIMs usually consist of programs for managing appointments and tasks, an address database and (more rarely) an e-mail client program. If on the other hand the application has been designed so that entire organisations or other groups of people who frequently interact can coordinate better with each other, then the term groupware is usually used. In this article we are deliberately limiting ourselves to presenting a few PIMs which can bring order to your home Linux desktop.

Desktop, server or WWW? Historically, Linux has been regarded as a child of the Internet, designed right from the start for network compatibility. Unlike the worlds of Windows or Mac, many developers of Linux applications still assume even today that Linux will be used primarily in a network environment.


020schedulersed.qxd

02.03.2001

16:37 Uhr

Seite 21

OVERVIEW OF SCHEDULE MANAGEMENT PROGRAMS

COVER FEATURE

Accordingly, there is at present a relatively large range of network-based client-server solutions under Linux for every imaginable type of application. Desktop applications still need to mature somewhat. So don’t be surprised if at the moment under Linux it is easier to find a groupware solution which can be synchronised with any and every PDA, than a corresponding universal desktop solution. There are also schedulers, which after a corresponding registration – similar to some e-mail and fax providers – can sometimes even be used as a free service on the Web (e.g. in the case of Yahoo or Netscape). It is of course entirely up to you whether or not you wish to share your personal appointments and notes with the operators of such Web sites.

Standard formats In the Windows world, in recent years it is MS Outlook and the Lotus Organiser in particular which have established themselves as the de facto standards in the PIM domain. Since it is only recently that Linux has come into the picture as a desktop operating system, there is as yet no comparable standard here. The developers of the latest PIMs (KDE-PIM or gnome-pim), though, now appear to be adhering to the Open Source philosophy of using open file standards, too, wherever possible. The Internet Mail Consortium, a world-wide committee to which the leading IT companies such as AOL, HP, IBM, Nokia and even Microsoft belong, has published two standard specifications for personal data interchange (PDI) at http://www.imc.org/pdi/: vCard and vCalendar. In particular the latter specification is intended to ensure that - obviously, only if the developers of a PIM or groupware also comply 100% with the specification requirements the interchange of data between electronic calendars, schedulers and address bases from various manufacturers runs smoothly.

Synchronisation required? If you own a PalmPilot made by the company 3Com and would like to synchronise your Palm appointments with your PC schedule management program, then, at least for the time being, your choice of the right scheduler is extremely restricted under Linux. Apart from the two PIMs presented in the overview, StarOffice Schedule 5.2 and J-Pilot, there are certainly a few other feasible solutions (such as the scheduler CorelCentral 9 in Corel’s Wordperfect Office 2000, not presented here). The installation and configuration of the Palm synchronisation software is, however, not all that simple, but sometimes requires quite a bit of skill. But rescue is in sight: the PIM developers of KDE and GNOME are already hard at work on a corresponding Palm interface for KOrganizer and gnomecal.

Psion devotees, unfortunately, have been dealt a poorer hand at the moment under Linux, because they must either settle for the options and limitations of a range of command line tools (psiconv) or keep a look-out for the few groupware solutions under Linux, which also enable a corresponding Psion synchronisation (e.g. the Cyberscheduler from the firm Envicon).

[top] J-pilot handles synchronisation with the PalmPilot [above] Simple but powerful –the plan scheduler

Integrated and forward compatible If you see no need, at least for the moment, for PDA synchronisation and are chiefly looking for an electronic scheduler for your own private use, then the two up-and-coming PIMs from KDE and GNOME would seem to be ideal. KOrganizer 7 · 2001 LINUX MAGAZINE 21


020schedulersed.qxd

02.03.2001

16:37 Uhr

COVER FEATURE

Seite 22

OVERVIEW OF SCHEDULE MANAGEMENT PROGRAMS

certainly gives the impression of being somewhat more refined with respect to the wide range of functions. The GNOME Calendar – which is, incidentally, similar to Tagesplaner – because of its interesting command line options, is presumably aimed more at advanced Linux users, who might for example want to (partly) automate their applications with the aid of original shell scripts and thereby wish to come nearer to achieving their goal of saving even more time.

To finish off, one quick look into the near future: The US company Ximian (formerly known as Helixcode) (http://www.ximian.com), which has made its name in the Linux scene by their generous provision of complete binary packets of the current GNOME desktops, has been working for some time now on a highly promising combination of PIM and groupware named Evolution. It is not yet ready for the end-user, since it is very difficult to install. But there is reason to hope that Evolution may be integrated into the next major release of Ximian GNOME. ■

Schedulers in Overview Name GNOME Calendar 1.2.0 Ical 2.2 J-Pilot 0.98 KOrganizer 2.0 StarOffice Schedule 5.2 Tagesplaner 1.8.4 Manufacturer/Developer de Icaza, Mena and others Sanjay Ghemawat Judd Montgomery Braun, Schumacher and others Sun Microsystems, Inc. Thomas Driemeyer URL http://www.gnome.org www.research.digital.com/SRC/personal/ http://jpilot.linuxbox.com http://korganizer.kde.org http://www.sun.com/staroffice http://www.bitrot.de/plan.html Sanjay_Ghemawat/ical/home.html Licence/price GPL freely copiable GPL GPL Sun’s own licence / free of charge GPL-type licence GUI-Toolkit used GTK+1.2 / GNOME 1.2 Tcl / Tk GTK+ 1.2 qt 2.2.x / KDE 2.0.x staroffice internal motif (static link also possible) Appointments/Tasks Start/end of appointment * / * * / * * / * * / * * / * */* Address details - - - * * Number of pre-set categories of appointment - - 12 (+ others definable) 5 (+ others definable) Recurring appointments * (inc. exceptions) * (large choice of rep.) * * (inc. exceptions) * * (inc. exceptions) Priority levels of tasks - - Level 1-5 Level 1-5 Level 1-5 Access rights public/private/confidential - - public/private/confidential Archiving of old dates? - * (via script icalexpire) * (multiple back-ups) * (as vcs file) * (as XML file) (delete options) Reminder alarm Via user dialog / tone * / * * / * * / * - / * * / * * / * By e-mail * (any other application) - - * (any other application) * * (any shell script) Repeat reminder? - min/max 15 days before min/hh/dd min/hh/dd dd/ww/mm/yy * Details on participants? - - - * (Role/status) * (status) Calendar views Listing of all appointments - - - * * Day at a glance * * * * * * Week at a glance * * - * * * Month at a glance * * - * * * (small/large) Individual working week - * - * * Several working weeks - - - - * -

Year at a glance * * - * (2 different views) Appointments after list of tasks - - * * * PDA synchronisation PalmPilot in development - * in development * (no multi-user sync.) Psion 5 mx PRO / Revo - - - - - Import/export filter Import Import from Ical 2.2 possible - Lotus Organizer (*.txt) - - - - * s.b. - MS Outlook (*.csw) - - - - * s. b. - XML-iCalendar (*.xcs) - - - - * s.b. - iCalendar (*.ics) planned - - - * s.b. - vCalendar (*.vcs) * - - * - s.b. Own file format vCalendar (*.vcs) $HOME/.calendar Directory $HOME/.jpilot/ vCalendar (*.vcs) ../usr/store/schedule.cal $HOME/.dayplan Export - iCalendar (*.ics) planned - - - * - vCalendar (*.vcs) * - - * * - XML-iCalendar (*.xcs) - - - - * - Web-site (*.html) - * (via script ical2html) - * (Event/task list) - Print options Day at a glance - * - * via templates * Week at a glance - * - * via templates * (2 different views) Month at a glance - - (via date options) - * via templates * (also 2 years at a glance) Task list - - * * via templates Date range of choice - - - - - Special features Large number of settings with Unix classics among schedulers Program for synchronisation Integrated task management Integrated task management Very large number of settings Calendar colours, To-do lists with PalmPilots Address book Link to address management Current daemon (alarms) and alarms also addresses/memos ”Combine calendar” option Netscape-Calendar compatibility mode also command line calls command line options expandable via plugins Interaction with KDE file manager Konqueror Calculates German federal state public holidays Adaptable public holiday file Integral part of the packet gnome-pim Integral part of the packet kdepim in KDE 2.0.x Reads files out of databanks and from remote Netplan servers

22 LINUX MAGAZINE 7 · 2001


024palmpiloted.qxd

01.03.2001

16:55 Uhr

COVER FEATURE

Seite 24

PALM AND LINUX

Connecting Palm and Linux

CLOSE FRIENDS? MICHAEL TEPPERIS-VON DER OHE

Palm Pilots have made a lot of friends since they came onto the market, not least because of their ability to synchronise data with a home PC. This article provides an overview of what can be achieved with a Palm/ Linux PC combination.

The Discovery

Equipment Palm PDA Palm IIIx, PalmOS 3.3 Workstation computers Apple Powerbook G3 with Linux-PPC (serial and IrDA) Pentium II Desktop-PC with Debian Linux (serial [Standard or Cyclades Multiport] and IrDA dongle)

When I first got my hands on my own Palm, I felt a surge of enthusiasm: It was small and handy, truly uncomplicated to use, exchanging data was simple, and above all it offered the opportunity to enormously increase functionality and benefit by installing additional programs. Apart from the cradle, to make a connection to the PC, only Windows software came with the Palm. This software package essentially consists of the Palm Desktop and the Hotsynch Manager, which manages data exchange between Palm and the workstation computer in co-operation with socalled ‘conduits’. The Palm Desktop is an application for this which helps manage the tasks of Calendar, To-do lists, Memo, Addresses, Accounts and the installation of software under a common desktop. Apart from data exchange by these applications, which on the Palm correspond, to separate programs, the Hotsync Manager also runs data synchronisation for other applications, such as email with Outlook, using other conduits.

24 LINUX MAGAZINE 7 · 2001

Apart from Windows and the Mac, Palm does not support any other operating systems. In the domain of development tools, in the meantime, Palm is now basking in the sun; gcc (GNU-C-Compiler) is supported. So, as a friend of the penguin, I went on a hunt for suitable software to ensure co-operation between the Palm and my own computers (see Equipment box ).

Making contact To enable Palm to make contact with Linux, the most-frequently mentioned software package was pilot-link. This is a bundle of command line programs for a huge variety of tasks from the domain of data exchange and/or synchronisation between PC and Palm. The individual programs are often compared to the conduits supplied by Palm. Which is roughly correct, too. But anyone expecting an application a la Palm Desktop will not find the program they are looking for in this package. There is a whole range of easier-to-use applications for data synchronisation, sometimes


024palmpiloted.qxd

01.03.2001

16:55 Uhr

Seite 25

PALM AND LINUX

with GUIs. The main ones are jpilot, gnome-pilot, kpilot, pilot-manager or coldsync, but StarOffice is also suitable. Quite often these programs make use of the tools from the Pilot-Link package. They also offer the option, using plugins, of synchronisation with the use of additional applications, for example e-mail.

Application for infonauts There are solutions for all network and Internet services for the Palm. As it has a TCP/IP stack, these services can be made available via the Linux computer. Making Linux useful for the Usenet requirements (newsgroups) of the Palm user is really simple: Using the Palm programs yanoff or msgagent you fetch data from the nearest local news server. There is a range of Palm programs to display Web content. This can be done off-line via downloaded and converted Web pages, but online surfing is also possible. While net surfing with a Palm is not usually much fun, it is even more unlikely that you would surf using the Palm if your PC is connected. Converting Web pages for off-line use, though, is all the more interesting, as news sites such as Slashdot, LinuxUK, LWN, The Register & Co. seem the obvious choice for reading in peace on the train. In particular sitescooper and plucker are especially suitable for all Linux applications. These programs can be used to prepare Web pages for the Palm for off-line use. Logging in from Palm via Telnet onto a Linux workstation or even remote controlling an Xinterface via VNC is equally possible. IRC and FTP facilities are also an option.

Important and interesting tools The special significance of PDAs is their ability to make data mobile. The data you want to take with you, apart from diary, addresses and memos, includes documents, graphics and databases. Text files can be converted into Palm-doc format using makedoc. XnotesPlus offers the option of managing PostIt notes on the X-desktop and synchronising them with your Palm memos. Graphics can for example be converted, using imgvtopgm, into Palm format. Databases in the formats of Palm-DBMS Handbase, DB, or MobileDB can be converted using palm-db-tools, SQLpilot or MobileDB Lite from text files or data in an SQL-compatible database. The subject of backup and recovery is covered by PenguinBackup. This is a complete bootable Linux distribution on a floppy disk giving the ability to back up the data from a Palm onto disks, or to restore data or upload books or databases from disks onto the Palm. The system can be booted on

COVER FEATURE

Linux PDAs * Samsung has already announced a Linux PDA named Yopy (http://www. sem.samsung.com/eng/product/digital/pda/index.htm), at the last CeBIT, but this device is not yet ready for market launch. * Agenda (http://www.agendacomputing.com/) has announced a Linux PDA, the Agenda VR3, for this spring. Samples are available through the Agenda Developer Program. * Linux is ported onto the Helio PDA (http://www.myhelio.com/cgi-bin/ vtechhelio.storefront), a 75 MHz Philips R3912-based handheld computer from the firm VTech (http://www.vtech.com/) (http://vhl-tools.sourceforge .net/). * Handhelds.org (http://www.handhelds.org) supports Open Source Software for all PDAs but focuses on the Compaq iPaq H3600 with Linux. * The Korean firm Palm Palm Technology (http://www.palmpalm.co.kr) has developed the first mobile telephone to use Linux as operating system. This device also has multimedia functions, has the ability to transmit video conferences, and can play music files. Tynux is used as distribution, which the firm has developed especially for this purpose. * Acer (http://elife2.acer.com.tw/slimmate.htm) announced a new PDA at Computex in Taiwan. The equipment includes a grey scale display with a resolution of 240x160 pixels, 48 MB Ram, 2 or 4 MB flash Rom, an infrared port and a serial interface. The built-in lithium-ion battery, an expansion port and the metal housing make this an interesting competitor for the Palm Vx. Linux porting has been announced for the fourth quarter of this year.

any i386 compatible PC without affecting its hard drive contents. See http://PenguinBackup.sourceforge .net/.

Development for the Palm Palm Inc. now supports the development of Palm applications under Linux (http://www.palmos.com/ dev/tech/tools/gcc/), by putting the GNU Cross CCompiler from PRC-Tools (http://sourceforge.net/ projects/prc-tools/) and PilRC (http://www.ardiri .com/index.cfm?redir=palm&cat=pilrc), a resource compiler, in a range of commercial program development environments. The PalmOS Emulator (POSE), available from http://www.palm.com/devzone/pose/, is especially suited to debugging Palm programs: This is a graphical simulation of a Palm Pilot in which Palm programs can be executed.

Figure 1: POSE – the PalmOS Emulator is suitable for debugging

Summary There is now a truly vast range of Palm-oriented applications for Linux. But particular interest is currently being aroused among some Linux enthusiasts by another development altogether, and that is Linux on the Palm or on a PDA. The idea of this is to port Linux onto the Palm (http://www. uclinux.org/). Elsewhere, there are manufacturers developing PDAs with Linux installed right from the start as operating system (see box Linux PDAs). Whichever way you look at it, Linux & Palm are a terrific team and you could join up with them to become the Three Musketeers. One for all, all for one. Exciting times. ■

The author Michael Tepperis-von der Ohe is a data processing businessman, part-time student of IT and champion of free software, listens to jazz and classical music and goes on the burn with his mountain bike. He is always up for a good meal and is looking forward to his responsibilities as a father.

7 · 2001 LINUX MAGAZINE 25


026palmsynced.qxd

01.03.2001

17:02 Uhr

COVER FEATURE

Seite 26

PALM/LINUX SYNCHRONISATION

Linux & Palm in sync

CROSS TALK

MICHAEL TEPPERIS-VON DER OHE

One important design criterion of the Palm PDA is that it regularly has recourse to co-operation with a powerful computer. A regular synchronisation of the data from the mobile organiser with your home Linux PC ensures that no essential dates or data fall by the wayside. This article presents a few of these Palm synchronisation tools for Linux. The most commonly used software package for connection between the PalmPilot and Linux is Pilotlink. This consists of a whole bundle of individual programs and provides a corresponding Linux tool for every important task for the PalmPilot owner. Programs can be started from the command line with the specification of additional parameters. But there are also a few graphical X11 applications, enabling data synchronisation with the PalmPilot by utilising the Pilot-link console tools. More about this later in this article. For a while it went very quiet on the development front for the Pilot-link packet. But there is now some active work going on in terms of expansions and improvements. At present, work is proceeding on version 0.95 of the current CVSserver of Pilot-link (http://cvs.gnu-designs.com/cgibin/vcvs/viewcvs.cgi/pilot-link/?cvsroot=Open+Palm +Group).

Pilot-link I’m now going to describe the installation of the Pilot-link source tarball for Red Hat. But if you are a Linux newbie, in case of doubt you would do better to install a binary package created for your distribution, such as for example in Debian´s deb, or in one of the distribution-specific rpm formats. In fact, the current distributions usually include only 26 LINUX MAGAZINE 7 · 2001

the previous version 0.9.3, but this can be used without worry. Install these binary packages in the usual way: apt-get install pilot-link or with rpm -i pilot-link.0.9.3.rpm Please obtain the exact file name first from your distribution.

Installation from source First, you should unpack the tar archive with tar xvfz pilot-link.0.9.5.tar.gz After switching to the directory thus created, pilotlink.0.9.5, the usual three steps follow: ./configure make su (+root password) make install If you wish to install the software somewhere other than /usr/local/ then you must specify this to the configure script as an argument, for example: configure —prefix=/usr/pilot


026palmsynced.qxd

01.03.2001

17:02 Uhr

Seite 27

PALM/LINUX SYNCHRONISATION

Before you install the package with make install you should test the converted programs locally. pilotxfer (see below) is probably the best for this.

Conduits Most programs work like conduits – they transfer data between the Palm and the workstation computer. Palm Inc. has defined various types of conduits. The simplest type just copies data in either direction between Palm and workstation. The more intelligent variant compares individual datasets and merely copies the datasets, which are new or amended for the other side between Palm and workstation. Both variants can be found in the Pilotlink packet. After starting, the programs usually come up with a request to place the Palm in the cradle and to press the Hotsync button. The most important individual programs should now be displayed.

COVER FEATURE

and/or play back all the files on a PalmPilot. As the standard transfer rate, Pilot-xfer selects 9600 baud. By setting the environmental variable PILOTRATE this can be changed, e.g.: PILOTRATE=57600 (The maximum 57,600 baud). The port used can be defined with the environmental variable PILOTPORT: PILOTPORT=/dev/ttyS1 (Standard COM 2). There is in fact the command option for setting the device to be used, but a corresponding option for the transfer rate is apparently not yet available.

Install-memo With install-memo text files can be installed as memos. The command install-memo /dev/ttyS1 -c Personal MyText.txt creates a new memo in the category Personal with the content of the file MyText.txt

Install-user Physical connection Before exchanging data, you must decide how communication between Palm and Linux computer is to be effected. This contact can be made in one of three ways: serially, via USB or via IrDA. In most cases data exchange with a Linux computer is made via a serial port. To do this, either the cable of the cradle or a corresponding replacement cable is used. USB is becoming increasingly common. There are now cradles for the Palm with a USB plug instead of the 9-pin serial plug, or again, serial-toUSB-adapters (The Visor from Handspring now comes with USB). Unlike the previously mentioned types of connection, IrDA works without a cable. There are two software packages under Linux for this, with different ranges of tasks. While openobex is concerned only with the transfer of objects, meaning files in this case, the Linux-IrDA stack generally allows communication via IrDA. But now to present the individual command line tools in the Pilot-link packet.

Pilot-xfer Pilot-xfer can be used to download and install .prc and .pdb files onto the PalmPilot. It is also possible to list all files installed on the PalmPilot. There are also sync, backup and restore functions, to back up

With install-user you can define and read out the user name and the user-ID of your PalmPilot. install-user /dev/ttyS1 reads out the user name and the user-ID. install-user /dev/ttyS1 "Colin R. Miller" defines new user name (Colin R. Miller). install-user /dev/ttyS1 "Colin" 4711 defines new user name (Colin) and user ID (4711).

Memos The following command fetches all memos from the Palm and shows them in standard mailbox format: memos /dev/pilot

Pilot-addresses This command is responsible for the transfer of address data to and from the Palm. The command pilot-addresses /dev/ttyS0 -w storage.file fetches the address data from the Palm and writes them into a Linux file.

Table: Principle Parameters of the Command line tools Pilot-xfer Command Function pilot-xfer -p /dev/ttyS0 -i Conqueror.prc installation of a program/ a database file (PalmPilot connects to COM 1) pilot-xfer -p /dev/ttyC4 -f MemoDB download a database file (PalmPilot connects to Port 4 of a Cyclades multiport card) pilot-xfer -l listing of all database files, the port taken from the environmental variable (see above) or /dev/pilot is used pilot-xfer -b my_backup backup of PalmPilots in the directory my_backup, and if the directory does not exist, it is created pilot-xfer -r my_backup restore a backup from the directory my_backup pilot-xfer -v outputs the version number pilot-xfer -h lists available command options 7 · 2001 LINUX MAGAZINE 27


026palmsynced.qxd

01.03.2001

17:02 Uhr

COVER FEATURE

Seite 28

PALM/LINUX SYNCHRONISATION

Conversely, with pilot-addresses /dev/ttyS0 -r storage.file you can write address data from a Linux file to the Palm.

Proprietary formats Most (commercial) desktop applications, regardless of which operating system they are running on, use a proprietary format to store data. This is no different on the PalmPilot on regular workstations. For example, if instead of the standard mail program, you use one of the competing products on the Palm, you usually no longer have the option of looking at or even editing the data managed by the program with the original program. The same thing applies if you have transferred the data onto your home PC. If you use the original Palm desktop for diary data or memos, this data cannot be edited

with comparable desktop applications. This is a highly unsatisfactory situation. Sometimes you want, or indeed must, synchronise diary details with other diary details (work groups, etc.). Equally, you will of course wish to continue to use address data in text editing or even pass them on to other systems – to a mobile phone for instance. These are the reasons why I don’t normally use desktop applications, but am searching for solutions to allow me multiple use of data. My e-mail is on my Linux server, where an IMAP daemon does its duty. I can call up messages and read them at any time with a suitable e-mail client. The address data is in a database on my SQL server, to which the Palm also has access.

Graphical front ends Nevertheless, there is a range of desktop applications for Linux that attempt to offer the user what the Palm desktop applications offer. These programs usually offer processing of the following data: addresses, diary, memos, to-do lists and email. I will now present to you the best known graphical front ends for Pilot synchronisation under Linux.

J-Pilot J-Pilot (http://jpilot.linuxave.net/) is a desktop application which relies heavily on the Palm Desktop from Palm, Inc. Anyone coming from this Windows/ Mac tool will certainly soon feel at home under Linux with J-Pilot. J-Pilot offers the following features: diary, addresses, to-do list, memos, search, install programs, print, synch, backup and plug-ins. The good thing about J-Pilot is the standard range of functions can be expended using plug-ins. At present the following tasks are performed by plugins: managing mails, converting Web pages, timesynchronisation and accounts management.

Figure 1: jPilot at work

Useful plug-ins Time synchronisation is done using sntp with a timeserver. Converting Web pages is one especially interesting option for making data mobile. There are commercial providers such as AvantGo or Pendragon offering MAL services. This makes it possible to subscribe to the desired Web sites with news. If you have an account for such a service, during the HotSync a connection is made to the remote server and the individual data are combined into a file and copied onto the Palm. The content can be read with an appropriate Palm program. For Linux users, this service is available through the MAL plug-in. Finally, just a couple of details to round off. J-Pilot is based on the PilotLink suite, so as to create connections to the PalmPilot. The program was not, as the name seems to hint, written in Java and nor is it a pure

Figure 2: Pilot-Manager during synchronisation 28 LINUX MAGAZINE 7 · 2001


026palmsynced.qxd

01.03.2001

17:02 Uhr

Seite 29

PALM/LINUX SYNCHRONISATION

GNOME application, as the use of the GTK+ widget set might suggest.

Gnome-pilot Gnome-pilot goes well beyond the requirements of a desktop application for the Palm (http://www. gnome.org/gnome-pilot). It offers professional management options, such as the management of several PalmPilots. Gnome-Pilot consists of a daemon (gpilotd), which monitors one or more interfaces for Pilot connections. Also, thanks to its plug-in capability, gnome-pilot offers numerous expansion options. It handles the management of memos, the installation of programs and backup and the synchronisation of e-mails, but also (like JPilot) synchronisation with a MAL-server and synchronisation with the output management of the Palm (costs). The components GnomeCalendar and GnomeCard are also supported from the Gnome-pim package, which offer the management of diary and address data (see also the article on the overview of scheduler software in this issue). There is also a panel applet. This shows the status of synchronisation with the aid of colours. Finally, programs and documents can be installed via Drag & Drop.

PilotManager PilotManager is presumably the oldest desktop application for the management of Palm data on Unix computers (http://www.moshpit.org/ pilotmgr/). Fortunately it has been kept up to date. PilotManager regards itself as a Hotsync daemon, designed for expansions. The program was written in Perl and uses Tk extensions. Conduits are available for synchronisation with various diaries, memos, to-do lists, e-mail, address book, and also with a timeserver or a MAL server. There are also solutions for backup and installation. For example there are the unique options for synchronising address data with the BBDB address book from Emacs and support for XML.

KPilot KPilot (http://www.slac.com/pilone/kpilot_home/) is a KDE program. The latest version was released in April 1999. This would seem to suggest that Kpilot is no longer maintained. Nevertheless there are some users who are very satisfied with it. KPilot is comparable to J-Pilot. It can manage memos, addresses, file installations and e-mails. And Kpilot also has a plug-in port for expansions.

ColdSync With ColdSync (http://www.ooblick.com/software/ coldsync/) also, PalmOS devices can be synchronised with Unix workstations. ColdSync is not a graphical

COVER FEATURE

application, though. It is worth mentioning that you can synchronise with ColdSync without even having to be logged on. The whole thing is called up with coldsync -p /dev/ttyS0 ColdSync simply synchronises the Palm by default with a backup directory. If possible it performs a socalled ‘Fast Sync’ – i.e. it copies only the data from the workstation onto the Palm, which has changed on the workstation. Obviously, the same applies for the opposite direction. To install a new application on the Palm, the file merely has to be copied to ~/.palm/install/. ColdSync conduits offer the following features: Conversion of the Palm address book database into the format of kab, to the KDE address book and back. The conduit to-do text converts back and forth between the PDB format and simple text format. The procedure is the same with memos and a Kjots file. To-do lists and mails can also be synchronised.

StarOffice Those who love all-in-one packets and are also especially happy with programs of commercial origin will perhaps find the right desktop application for them in StarOffice (http://www.sun .com/staroffice), because this, too, offers the options of synchronising data with the Palm. The following Palm data communicates with the corresponding StarOffice data: To-do (Palm) with Tasks (StarOffice Schedule, see also article on Scheduler software in this issue), Diary (Palm) with Events (StarOffice Schedule) and Addresses (Palm) with Address Book (StarOffice).

jSyncManager The jSyncManager, written in Java, comes from the OS/2 world (http://warp.idirect.com/). According to its own description, though, this is also suitable for any other Java environment. Unfortunately I only discovered this program shortly before going to press for this issue and was therefore unable to test it in time. But if it keeps the promise it makes on the homepage, this is my hot favourite!

Other alternatives Of course, in addition to the programs presented here, there are some other interesting desktop applications for Palm synchronisation, but to discuss these in detail would take up far too much space for this article. These include JetSync (http://mega.ist.utl .pt/~frias/jetsync/), Pyrite (http://pyrite.linuxave.net/ pyrite/), formerly PalmPython, and the Linux Palm Desktop from Applixware (http://freshmeat.net/projects/linuxpalmdesktop/ homepage/), and there will certainly be more to come. ■ 7 · 2001 LINUX MAGAZINE 29


030outlookvm.qxd

05.03.2001

9:18 Uhr

COVER FEATURE

Seite 30

SYNCHRONISATION WITH OUTLOOK

Synchronising Psion and Palm with Microsoft Outlook

DESERTERS MIRKO DOLLE

Whether it’s just force of habit that compels you to use Microsoft Outlook, or that there aren’t any Linux tools for your PDA yet, or you simply don’t like any of the free schedulers; we will show you how you can synchronise your schedule between PDA and Outlook in the Windows emulator.

Functioning synchronisation between PDA and scheduler on your home PC is one of the most important things you need as the user of an electronic organiser. Since until now only Palm devices have been able to synchronise with Linux schedulers, your gaze rapidly sweeps across to the forbidden fruit of the Windows world. But hold on, you don’t need to throw the penguin overboard just yet. As a stand-in for other Windows programs, we have been looking at the widely used Outlook 2000 from the Microsoft Office 2000 package. When it comes to Windows emulators, we must unfortunately limit ourselves to the two commercial programs Win4Lin 2.0 and VMware 2.0.3 (Outlook would not work with the freely available Wine). 30 LINUX MAGAZINE 7 · 2001

Win4Lin 2.0 Let’s begin with the less well-known windows emulator, tested in issue 3 (December 2000), Win4Lin. This is an hermaphrodite, which, like Wine, converts some of the system commands of Windows to Linux by the use of special DLL files; on the other hand, though, it is almost a virtual computer like VMware, in which a complete Windows system runs. We used the improved Win4Lin 2.0, which you can obtain from http://www.netraverse.com/products/win4lin/downl oads/eval/index.php. After registering, you receive an evaluation key for 30 days’ test operation – the corresponding link is on the download site – sent to


030outlookvm.qxd

05.03.2001

9:18 Uhr

Seite 31

SYNCHRONISATION WITH OUTLOOK

you by mail within minutes. The test version has no restrictions apart from a time limit of 60 minutes per session. The installation of Win4Lin has not changed substantially since our round up of Windows emulators last December: After installation as root, as an unprivileged user you must first assign the serial port. To do this, call up winsetup and start the Personal Win4Lin session configuration: win. In the new window which appears with the heading Personal Merge Session Configuration, select Devices and - as shown in Figure 1 - assign COM 1 the value Serial attached COM 1. After storing the setting, go to Windows installation via Personal Windows Setup, and after accepting the Windows licence agreements and entering the CD key, the remainder runs fully automatically. Finally, start the Windows emulator and install Microsoft Outlook. Don’t be distracted by the error messages, which pop up about free hard disk space, as Win4Lin does not pass these on correctly to the Windows applications.

COVER FEATURE

Figure 1: The opening of the serial port is dealt with in Win4Lin via Personal Merge Session Configuration

Installing utilities Outlook itself does not have the option of communicating directly with PDAs. To do this you need special expansions, which enable the actual synchronisation and are supplied with the particular PDA. For this report we looked at the Psion Series 5, Psion Series 5mx-Pro, Psion Revo, Palm m100 and Palm Vx. The corresponding synchronisation software comes on CD with all these devices. Installation of the PDA software went badly. The Installshield, common to virtually all Windows programs, complained that there was insufficient space on our hard disk and interrupted setup.exe. But in most cases you can outwit the Installshield – to do this, first copy the entire content of the CD under Linux onto the hard disk :

Figure 2: With these settings /tmp/cd-inhalt is reported as drive D:

mkdir /tmp/cd-content cp -a /cdrom/* /tmp/cd-content chmod -R u+w /tmp/cd-content The example assumes that the CD is mounted under /cdrom and the content is to be copied to /tmp/cd-content. Please note that there must also be sufficient space on the partition on which /tmp is mounted. The third command ensures that the normally write-protected files can now be altered. In each directory on the CD in which there is a setup.exe file, there is the associated setup.ini (Watch out, as sometimes this is in capitals or mixed-case notation). There, among other things, is found the specification of the minimum storage space required by the installation program. You need only delete the value after FreeDiskSpace and enter zero, to tell the installation program it needs no space for the installation – unfortunately, this

Figure 3: Since Win4Lin can only transfer at a top speed of 19,200 baud, the HotSync Manager of the Palm must be adjusted accordingly 7 · 2001 LINUX MAGAZINE 31


030outlookvm.qxd

05.03.2001

9:18 Uhr

COVER FEATURE

[top] Figure 4: At 19,200 baud synchronisation under Outlook was no problem [above] Figure 5: If the automatic baud rate recognition fails, you must also set the data rate to 19200 in the PsiWin link server

Seite 32

SYNCHRONISATION WITH OUTLOOK

does not always work. After adapting all setup.ini you must now tell Win4Lin about this ”drive”. To do this, call up winsetup again and then Personal Win4Lin session configuration: win. In the window, which now appears, Personal Merge Session Configuration, this time go to Drives & Filesystem and use Add to put on another drive. Figure 2 shows you the necessary entries. Back under Windows you can now install the programs as usual. Unfortunately this trick with FreeDiskSpace=0 does not always work. Let’s just hope that in a later update Win4Lin finally solves this tiresome problem.

devices at a maximum of 19200 baud. Not that this a problem with the Palm, because of the very small data volumes, so all you need to do is set the HotSync Manager to the lowest transfer rate. To do this, click with the right mouse button on the HotSync symbol in the lower righthand corner of the screen of the Windows desktop and select Install.... Under Local enter, as can be seen in Figure 3, under Speed 19200 . The setting on the Palm need not be changed, in our tests the transfer always worked perfectly (Figure 4).

Connection to Psion-PDAs Connection to Palm PDAs Next install the HotSync-Manager from drive D:. Unfortunately Win4Lin can only respond to serial

Here again, we are assuming installation of the synchronisation software under Windows has been completed. In principle with the Psions, it is enough to enter the transfer rate on the PDA itself; the Windows software then finds the right setting by itself. To do this, change the Psion to System, either by closing the application just shown or using the control button on the right at the top to go to System. There you will find, in the main menu (top left control button) under Extras, Communication, the settings for link and baud rate. There you should

Psion and the penguin While there is a whole range of synchronisation programs for the Palm series, the story for Psions is not so happy. At present it is just about possible, with various programs such as plptools (ftp://ftp.to.com/pub/psion), which integrate the files from the Psion via NFS, to exchange data or to surf the Internet from the Psion using PPP via the PC (more on this in issue 5 of Linux Magazine, February 2001). The files from the Psion cannot be read directly – corresponding converters such as e.g. psiconv (http://huizzen.dds.nl/~frodol/psiconf) are still in development and are a long way from practical implementation as synchronisation tools. In the other direction, i.e. converting PC files to the Psion, apart from kab2psion there is still nothing at all, and this only allows address files to be converted from KDE into Agenda files. The developers claim this is because there is no documentation on the Psion file format. Let’s just hope that Psion changes its mind and energetically supplies the Linux community with information.

32 LINUX MAGAZINE 7 · 2001


030outlookvm.qxd

05.03.2001

9:18 Uhr

Seite 33

SYNCHRONISATION WITH OUTLOOK

enter Cable under Link and under Baud rate 19200. Then confirm with OK. If you click with the right mouse button on the link symbol in the start list of Windows and select Link, after a few seconds your PDA should be found. If that does not work, set the transfer rate of the Windows program as shown in Figure 5 to 19,200 baud and try it again. At such low data rates, by the way, it is not unusual for the data exchange, especially when installing new programs on the Psion, to take a very long time.

Synchronisation under VMware VMware does not so much act as a Windows emulator but as more of a virtual PC and functions with most operating systems. The latest version 2.0.3 (November 2000) can be obtained from http://www.vmware.com/download/download_linu x_pre.html, and we described the installation in detail in issue 3 of Linux Magazine, starting on page 74. Alternatively, you can find a short introduction on the VMware site. When first calling up with vmware & step one is to activate the serial port via which you will later connect your PDA. To do this, before you click on Power On, you should call up the settings window via the menu Settings/Configuration Editor. There you should select, under Serial Ports, the desired port and assign it to the Linux device. In Figure 6 you can see how the COM1 port under Windows is assigned to the first serial port /dev/ttyS0 under Linux. After a click on Install the installation is then complete and you can install Windows and Office 2000 under VMware.

COVER FEATURE

Installing Palm and Psion software

Info

The great advantage of VMware over Win4Lin is that emulation, at least for the installation programs, is perfect. Nor are there any problems with the transfer rate: We were able to run all the devices at maximum baud rate. Installation was thus completely uneventful, hence we will not go into it any further at this point. The drawback of VMware must, however, be mentioned: For the virtual PC, you must always install a separate (virtual) hard disk for it, so that the exchange of data between Windows and Linux is considerably harder. Plus, you are firmly tied to the hard disk volume specified at installation, while Win4Lin merely creates a subdirectory in your home directory and does not have or occupy any fixed volume of disk. ■

TreLOS Win4Lin: http://www.trelos.com VMWare: http://www.vmware.com/ ■

[top] Figure 6: The serial port at which the PDA will be connected later must be assigned to the corresponding Windows port in VMware [above] Figure 7: No speed limit for data transfer under VMware, here for example with Psion software

Optimising VMware To get to an acceptable operating speed, you should install the Windows tools for VMware. Although Windows under VMware runs by default at just 640x480 pixels in 16 colours, the speed during image construction is anything but fast. But VMware provides special drivers, which are included in the RPM packet of Version 2.0.3. To install these, start Windows and wait until the system has been completely loaded. Then, in the VMware menu, select Settings/VMware Tools Install.... If you like, you can look at the English documentation for installation of tools, otherwise just follow these instructions. Now the floppy disk drive A: has been swapped by VMware for an emulated drive, on which the Windows tools for VMware are located. Using the workstation, access drive A: and start the program VMware Tools with a double click. Follow the installation program – at the end of this Display Properties will automatically be opened from system control, and you can install a higher resolution and colour depth. 7 · 2001 LINUX MAGAZINE 33


034pda-overviewed.qxd

02.03.2001

14:11 Uhr

COVER FEATURE

Seite 34

PDAS AND HANDHELD PCS

Overview: Latest PDAs and Handheld PCs

MOBILE ASSISTANTS ANDREAS HUCHLER

Since, in the previous articles about electronic scheduling, the topic of PDA synchronisation kept cropping up, it’s probably high time to introduce you to some of the most common models in a little more detail. For the moment, we’ll restrict ourselves to the popular stylus PDAs from the company Palm and the Psion Handheld PCs. If you’re in the process of deciding which pocket organiser or PDA to add to your home Linux PC, you’ll find yourself overwhelmed by the massive choice of PDA variants and model designations. But on closer inspection, the models now on the market can be classed into groups according to their main characteristics.

Input and display The Palm Vx – a luxury-class stylus PDA

The new Palm m100 is affordable, even for personal use

The type of data input has a direct influence on the typical range of everyday use of a mobile organiser. With the Palm Pilot series, from the American market leader Palm, all data input is done completely by means of your more or less skilled handling of a plastic stylus or an ordinary ballpoint. Alongside the pressure-sensitive touchscreen display for menu selections and drawings, the user normally also has the use of a graffiti area for entering letters and numbers. If you’d like to make new entries (appointments, notes or addresses) in these devices, you should first learn the graffiti alphabet. Even though learning these strokes and curves (each stand for specific numbers and symbols) should not generally be too difficult, it is tiresome to enter longer texts, such as letters or essays, in such a PDA. Palm does in fact now also offer flip-down keyboards for the Palm Pilots. This accessory, though, is usually only available as an option, so costs extra. Also, you’re then moving rapidly with your stylus PDA into price regions where universally

34 LINUX MAGAZINE 7 · 2001

usable alternatives such as Psion Handhelds start to come within reach in terms of price. Psion Handhelds sit between stylus PDAs and (sub) notebooks. It is possible that using the ten-finger typing method at which you may be a virtuoso on your home PC will cause you to stumble a little, at least at first, due to the miniaturisation of the keyboard. After a certain familiarisation phase, though, you could soon be forging ahead at the same sort of typing speeds with keyboard handhelds as you do with the home PC. But beware! The keyboard quality is not equal in all models. So: Try before you buy! The same applies for the displays. Again, there are sometimes massive differences in quality from one model to another. Ideally, of course, it would be advisable to test the display quality of the organiser before buying, under varying intensities of light (strong light, normal daylight, twilight, and dark). In practice, though, you will probably have to settle for experimenting a bit with the contrast settings and the background lighting.

Steadfast data and multiplicity of applications Apart from the basic choice between stylus PDAs and keyboard handhelds, there is also a whole range of other factors which may affect your purchase decision. One very important question is how long you can run the mobile organiser with a fully charged battery, before it gives up the ghost. This means, in the worst case scenario, (with a


034pda-overviewed.qxd

02.03.2001

14:12 Uhr

Seite 35

PDAS AND HANDHELD PCS

purely Ram solution without long-term storage media), that it forgets all the data which you have painstakingly entered into it since the last synchronisation with your home PC. Psions from Series 5 have so-called compact flash cards, on which important data can be permanently stored, similarly to Zip diskettes. When buying a specific PDA you are also usually at the same time unintentionally deciding on the availability of software applications beyond the standard applications, which come with it. A look at http://netsurf.pda.tucows.com/ shows that, depending on the operating system puttering away inside the organiser, there is a greater or lesser amount of (sometimes freely available) applications software. Obviously the amount of Ram in the organiser is also decisive as to how many such applications from third party suppliers, apart from the operating system and standard applications, will fit in. Incidentally: there are now a few projects which have taken it upon themselves to port the Linux operating system onto such mini platforms, such as the ARM Linux Project at http://www.arm.uk.linux.org/.

Manufacturer Manufacturer-URL Price

COVER FEATURE

Data exchange and synchronisation In conclusion, I would like to address a somewhat delicate issue: The fact that proprietary applications run on proprietary PDA operating systems, which usually also store their schedule and address data in no-less-proprietary file formats. This does of course mean that data synchronisation (from the PDA application to the Linux application and back) has so far been possible under Linux, at least in the case of EPOC-based Psion handhelds, only by means of very baffling methods (see the corresponding Workshop on this subject in this issue). If you want to make sure from the start that your mobile organiser can exchange its data with Linux applications without making a great fuss, then it is advisable – at present in any case – to acquire one of the numerous Palm PDA variants. But as everywhere in the software field, the same applies here: All things come to those who wait, including a corresponding open source solution! ■

Recording longer documents while on the move would is best achieved with a keyboard handheld like the Psion 5mx PRO

Palm m100 Handheld

Palm Vx

PSION revo

PSION Series 5

PSION Series 5 mx PRO

Palm, Inc. http://www.palm.com/uk/ products/palmm100/ £150

Palm, Inc. http://www.palm.com/uk/products/ vseries.html £300

Psion PLC http://www.psion.com/revo/

Psion PLC http://www.series5mx.com/ welcome.html Discontinued model

Psion PLC http://www.series5mx.com/ welcome.html £450

Keyboard/Stylus Handheld PC

Keyboard/Stylus Handheld PC

EPOC 32 (Rom) Appointment calendar , Contacts, Wordprocessor, spreadsheet, database, calculator, Notes, alarm, world information, Games, Browser

EPOC 32 (Ram) Clock, alarm, calculator, and voice recorder, PIM: Note book, contacts, agenda and data Desktop: Wordprocessor, spellchecker, spreadsheet and drawing Communication: Fax, E-Mail and Web Browser IrDA-communication, PC Link software

Organiser-Type Stylus-PDA Software data Standard-Operating system Palm OS 3.5 Provided applications Addressbook, Calendar, Clock, functions, Memo, notes, Computers

Hardware-Data Processor Workspaces (Ram) Steady storage media Sceen size

Motorola EZ CPU, 16 MHz 2 Mb (+ 2 Mb Rom) 160 x 160 Pixels, 4 Greyscale

Power supply

2 Micro-Batteries (AAA)

Size (in cm) Weight (with Batteries) Link options

11,8 x 7,9 x 1,8 140 g Hotsync cable to the PC (serial)

Other provided accessories Hotsync-cable, Stylus CD-Rom with Software Short introduction Sleeve General data exchange possible over serial interface with Linux Synchronisation with Console Tools: pilot-link Linux-PIM/Groupware (see articles) X11: various Frontends (j-pilot) and others Applications (e.g. StarOffice 5,2) WWW: various Web-based Groupware Suites

Stylus-PDA

£240 (revo PLUS with 16 Mb about £300) Keyboard/Stylus Handheld PC

Palm OS 3.5 Appointment calendar, symbol table, Desktop and E-Mail connection, To Do list, memo, Currency converter, calculator, Security, games

EPOC 32 (Rom) E-Mail, SMS, Appointment calendar, Phone Manager, Contacts Wordprocessor, spreadsheet, database, calculator, Notes, alarm, world information, Games, Browser

Motorola Dragonball, 16 MHz 8 Mb 161 x 160 Pixels, 4 Greyscale

36 MHz ARM710T RISC-CPU 8 Mb (+ 8 Mb Rom) 480 x 160 Pixels (Touchscreen with 16 Greyscales) Lithium-Ion battery (internal)

18.432 MHz ARM710 Core 4 / 8 Mb (+ 6 Mb Rom) Compact Flash-Card (16 Mb) 640 x 240 Pixels (Touchscreen with 16 Greyscales) Lithium-Ion battery (internal) 2 x Alkaline batteries (AA) + Backup battery 11,5 x 7,7 x 1 15,7 x 7,9 x 1,7 17,2 x 8,9 x 2,4 115 g 215 g 354 g HotSync docking station (Cradle), serial External docking station with serial link Serial connection (RS232) Infrared interface with the PDA Infrared connection Infrared connection DB-25-Adapter Network adapters No longer available, discontinued model 2 Stylus provided Stylus CD-Rom with Software CD-Rom with Software Short introduction, manual Handbook Leather covering possible over serial interface possible over serial interface possible over serial interface

32 MHz ARM710T RISC-CPU 24 / 32 Mb Ram only Compact Flash-Card (16 Mb) 641 x 240 Pixels (Touchscreen with 16 Greyscales) 3 x Alkaline batteries (AA) + Backup battery 17,0 x 9,0 x 2,3 354 g Serial connection (RS232) Infrared connection Serial PC cable connection Stylus CD-Rom with Software Short introduction, manual

Console Tools: pilot-link (see articles) Unfortunately there is no synchronisation software under Linux, X11: various Frontends Psion uses their own data types that (j-pilot) and others is proprietary Applications (e.g. StarOffice 5,2) Solution 1: Psiwin over a Windows emulators (VMware/Win4Lin) WWW: various Web-based Solution 2: Psiconv: converts Groupware Suites individual Psion data types into the usual PC formats (e.g. HTML, ASCII), back conversion is not possible at the moment

Unfortunately there is no synchronisation software under Linux, Psion uses their own data types that is proprietary Solution 1: Psiwin over a Windows emulators (VMware/Win4Lin) Solution 2: Psiconv: converts individual Psion data types into the usual PC formats (e.g. HTML, ASCII), back conversion is not possible at the moment

Unfortunately there is no , synchronisation software under Linux Psion uses their own data types that is proprietary Solution 1: Psiwin over a Windows emulators (VMware/Win4Lin) Solution 2: Psiconv: converts individual Psion data types into the usual PC formats (e.g. HTML, ASCII), back conversion is not possible at the moment

possible over serial interface

7 · 2001 LINUX MAGAZINE 35


036DVDtested.qxd

01.03.2001

18:41 Uhr

ON TEST

Seite 36

DVD VIDEO UNDER LINUX

Xine-Player and ten DVD drives on Test

PRESENTING... MIRKO DOELLE

If you’d like to turn your home computer into a home cinema, apart from a fast processor and Linuxcompatible DVD drive, you’ll also need functioning software. We’ ve tested ten DVD drives for you and present the free DVD player, Xine.

36 LINUX MAGAZINE 7 · 2001

Users of SuSE Linux will have treasured their DVD drive for a while by now. When it comes to installation, instead of changing between six CDs, you now need only insert one DVD, and the considerably faster transfer rate compared with CD-Roms means a big reduction in the installation time. But nobody would dream of buying a DVD drive just to install or update their SuSE system. In the Windows world, too, DVD discs with data are still very rare. The main application is obviously in the video domain. Why buy an independent DVD player for a few hundred pounds when you already have a computer with a TV output under your desk? Here you need only add on a DVD-Rom drive, which replaces the CD-Rom because of its backward compatibility, and install a software DVD player.


036DVDtested.qxd

01.03.2001

18:41 Uhr

Seite 37

DVD VIDEO UNDER LINUX

No peeping This is where the problems start for Linux users: The data on a video DVD is encrypted with the Content Scrambling System in order to be able to bear the DVD logo. The encryption and decryption routines are kept under lock and key by the MPAA (Moving Picture Association of America) and licensed to developers of software and hardware players. This money making machine inevitably stalled when ingenious cryptographers cracked the algorithm and demonstrated that they could create functioning keys for a DVD within seconds. Which was not difficult. The main task was performed at the start of November 1999 in around three weeks by various groups. At the end of it, the DeCSS library had been

ON TEST

created, with which the data of a DVD encrypted with CSS could be decoded and stored on a hard disk. The complete history can be read on the Web pages of the Chaos Computer Club. The MPAA has been protesting very successfully so far against the publication of this DeCSS library, and operators of various Web sites were forbidden from offering the program for download or even making links to other sites from which DeCSS could be downloaded.

DVD players under Linux The fact that the legal situation has not yet been clarified completely has meant that so far there have been no DVD video players under Linux, so

[left] Figure 1: The control elements are very clearly arranged. With the arrow keys on the right side the desired audio track can be set. [below] Figure 2: With the sound switched off the picture was perfect. Under XFree86 3.3.6 the film can only be played in the window.

7 ¡ 2001 LINUX MAGAZINE 37


036DVDtested.qxd

01.03.2001

18:41 Uhr

ON TEST

Seite 38

DVD VIDEO UNDER LINUX

Table 1: DVD drive overview Manufacturer

Hitachi

LiteOn

NEC

Pioneer

Model

GD-7500

LTD-122

DV-5700A

DVD-105SZ

Internet:

http://www.hitachi-eu-bsd.com/

http://www.liteonit.com.tw/

http://www.necd.de/

http://www.pioneer.de/

Connection: ATAPI

ATAPI

ATAPI

ATAPI

ATAPI

DVD/CD speed:

12x/40x

12x/40x

12x/40x

16x/40x

CD-holder:

Tray

Tray

Tray

Slot

DVD Performance Test: Average access time: [ms]

30.16

26.38

21.66

21.94

Transfer rate - linear reading: [Mb/s]

11.19

11.40

11.19

14.86

Transfer rate - random reading: [Mb/s]

5.04

5.59

6.13

7.07

Transfer rate - internal: [Mb/s]

6.88

7.09

7.00

9.28

Transfer rate - external: [Mb/s]

15.53

15.74

15.04

19.95

High street price: (approx.)

75

72

75

105

only individual files stored on the hard drive can be looked at. With Xine, though, a new project has come into existence, which as well as files in MPEG1- and MPEG-2 format, also legally plays direct video-CDs and rare unencrypted DVDs. The player has a control panel, which is separate from the display window (Figure 1), familiar from most Windows players. The control elements are arranged clearly, but are limited to basic functions such as Fast Forward, Rewind, Playback, Pause, Eject DVD and automatic reading in of video CDs and DVDs. A playlist is already implemented, but this did not work perfectly in the version (0.3.6) reviewed. One important function is hidden behind the two arrows on the right edge of the control panel: This is where the audio channel to be used is set, and in the case of DVDs with several audio tracks, various channels are used to play the different

Diagram 1: Average seek time [ms] (<-- better)

language tracks. The switchover does not occur immediately, you first have to interrupt the film with Pause before the alteration takes effect. Apart from sources, RPMs, debs and Slackware packages for Intel-based systems are available in the download section at http://Xine.sourceforge.net. We settled on the RPM package for i686, which played without any problem on a SuSE 7.0 Professional system freshly-installed from DVD. After that you still have to add two symbolic links, /dev/dvd and /dev/rdvd, which must both point towards your DVD-Rom. If you want to use Xine as a normal user, you should also grant the video group write and read permissions on the block device of the DVD.

Freeze frames... On the first test computer, the Acer TravelMate 737 Diagram 2: Data transfer rates random/linear read [MB/sec] (--> better)

Hitachi GD-7500

30,1

Hitachi GD-7500

5,0 11,1

LiteOn LTD-122

26,3

LiteOn LTD-122

5,5 11,4

NEC DV-5700A

21,6

NEC DV-5700A

6,0 11,1

Pioneer DVD-105SZ

21,9

Pioneer DVD-105SZ

7,0 14,8

Pioneer DVD-115HB

22,4

Pioneer DVD-115HB

7,0 14,9

Pioneer DVD-304S

24,5

Pioneer DVD-304S

5,1

9,2

Raite RDR-108H

30,0

Raite RDR-108H

2,0

3,1

Shuttle DSVD-101

25,6

Shuttle DSVD-101

5,1

9,4

Toshiba SD-M1401

25,5

Toshiba SD-M1401

5,2 10,0

Toshiba SD-M1502

28,8

Toshiba SD-M1502

6,0 14,4

0

5

10

15

20

38 LINUX MAGAZINE 7 ¡ 2001

25

30

35

0

2,5

5

7,5 10

12,5 15


036DVDtested.qxd

01.03.2001

18:41 Uhr

Seite 39

DVD VIDEO UNDER LINUX

ON TEST

Pioneer

Pioneer

Raite

Shuttle

Toshiba

DVD-115HB

DVD-304S

RDR-108H

SDVD-101

SD-M1401

Toshiba SD-M1502

http://www.pioneer.de/

http://www.pioneer.de/

http://www.raite.com.tw/

http://www.spacewalker.com/

http://www.toshiba.de/

http://www.toshiba.de/

U-SCSI

ATAPI

ATAPI

U-SCSI

ATAPI

16x/40x

10x/40x

8x/40x

10x/32x

10x/40x

16x/48x

Tray

Slot

Tray

Tray

Tray

Tray

22.46

24.52

30.01

25.66

25.54

28.88

14.91

9.29

3.16

9.41

10.03

14.41

6.97

5.19

2.06

5.16

5.21

5.99

9.25

5.78

3.27

5.87

6.24

8.54

20.60

12.82

3.06

12.98

13.83

13.85

95

130

80

85

115

112

TLV (reviewed in the notebook group test in issue 5) there were some problems. The driver for the builtin sound card ESS Solo-1 is obviously not yet completely cleanly implemented, as when the OSS module of Xine was used, effectively only individual images could be seen, though on the other hand the sound worked perfectly. If the sound is completely switched off using command line parameters -A null, the picture in the SVGA server of XFree86 3.3.6 is almost jerk-free (Figure 2). The full picture mode of Xine, though, can only be used with XFree86 version 4.0 or higher. We had more success with the Wortmann Terra Aura A74LD, which was also presented in the notebook group test. The picture was just not quite smooth and at times ‘hung’ for fractions of a second, although overall the film looked good. Surprisingly, there were problems with DMA mode: If this was activated, there were occasional display faults on the screen such as shaking and flickering, even with the sound switched off. In this case, as an exception, we advise deactivating the DMA mode of the DVD drive.

watched at 1280x1024 pixels, assuming the appropriate graphics and computing power is there. In Figure 2 you can see a still from Star Trek: Insurrection at 1024x768 pixels.

Coded DVDs As already mentioned, Xine does not offer the option of showing encoded DVDs. This is a shame, as Xine functions well and even worked in dual head mode on the Matrox G400. Sadly there is no chance whatsoever of watching DVD videos legally under Linux. There simply is no licensed plug-in for Xine. This is a gap in the market, which will hopefully soon be filled. So it would be quite possible to offer a commercial CSS plug-in, which could be integrated into various video players. Even if this is not compatible with open source thinking, I favour

Diagram 3: Data transfer rates track inner/outer (MB/sec.) (--> better) Hitachi GD-7500

6,815,5

LiteOn LTD-122

7,015,7

NEC DV-5700A

7,015,0

Pioneer DVD-105SZ

9,219,9

Pioneer DVD-115HB

9,220,6

Pioneer DVD-304S

5,712,8

Raite RDR-108H

3,23,0

Shuttle DSVD-101

5,812,9

Toshiba SD-M1401

6,213,8

Toshiba SD-M1502

8,513,8

Pure film pleasure To get a really smooth picture, you need an X-server with Xv support and if possible a driver with hardware support. We tested Xine under XFree86 4.0.1 and 4.0.2 with an Elsa Riva TNT 2 and Gladiate Geforce 2 GTS with nVidia driver. We also tested it with a Matrox G400 DualHead with the current MDA driver along with an ATI Radeon. Provided the corresponding hardware support is available, the rest of the hardware requirements are relatively modest: On our Pentium-II at 400 MHz we obtained a jerk-free picture and perfect sound with the Gladiate. Another feature of X-servers with Xv-Support is the full picture mode. As usual, the entire desktop turns black and the picture is displayed centred. While other video players try to switch to a lower graphics mode, Xine uses the whole of the available picture size and scales up the film accordingly. This means a film can be

0

2,5

5

7,5 10

12,5 15

17,5 20

7 · 2001 LINUX MAGAZINE 39


036DVDtested.qxd

01.03.2001

18:42 Uhr

ON TEST

Seite 40

DVD VIDEO UNDER LINUX

Figure 2: Pixel saturation: If the graphics mode set has a higher resolution than the film, Xine scales the full picture under XFree86 4.0 immediately up to full screen size

this solution – the release from CSS would obviously be better. But this does not seem likely. Until then, Linux enthusiasts with a hankering for DVD videos are technically criminals if they make use of illegal plug-ins such as the one from Captain_CSS. Because of the lack of a commercial solution we took a closer look at this module. The latest version 0.1.1 works with both Xine 0.3.5 and 0.3.6 without any problem – it is not necessary to recompile the source of Xine. The plug-in can easily be installed into one of the RPM versions from the official Xine site. To do this, the tarball of the plug-in is unpacked and compiled. On our five test systems, this process went without a hitch. For the test we started up the patched Xine from an xterm, to obtain any error messages from the plug-in. As it turned out, decoding did not work with every DVD drive, and of the ten devices tested we were only able to persuade the NEC DV-5700A and the Raite RDR-108H to co-

Info History of the CSS decryption by the Chaos Computer Club (CCC): http://www.ccc.de/tvcrypt/dvd Site of the Xine project: http://Xine.sourceforge.net Portable Alternatives: Linux Magazine 5, February 2001, page 34. Hardware accelerated driver for Matrox G200/G400/G450: http://www.matrox.com/mga/support/drivers/latest/home.cfm DeCSS-plug-in for Xine from Captain_CSS: http://members.nbci.com/captain_css Development of Linux DVD solutions: http://www.linuxvideo.org ■ 40 LINUX MAGAZINE 7 · 2001

operate. The DVD drives of both notebooks also worked. We inserted a DVD and clicked on DVD in the Xine panel. After a few seconds, the message ‘GetTitleKey(): Failed’ or even ‘GetTitleKey(): Success’ appeared, so the drive was unable to play back any encoded DVDs. Why the DeCSS code (which is actually independent of the drive) should only work with some devices was still unclear at the time of going to press. If the aforementioned message does not appear, the plug-in will work with the drive. But it is not possible to make copies of your films with Xine. Naturally the plug-in can do nothing about the region code which has been set on the drive, American videos can thus still not be played back with a Region-2 player.

DVD drives on test Let’s get one thing out of the way in advance: We did not elect a test winner. Depending on the domain of application, several drives often come up trumps, but ultimately, apart from the runaway leader, Raite, they were all relatively close together. What is surprising is that the SCSI market is treated very much like a second-class citizen – drives with a DVD speed of over 10x simply could not be obtained. And prices for SCSI devices are very high for a markedly lower performance than is the case with ATAPI devices. This means even SCSI fans should consider whether they want to buy a drive, which is twice as fast at half the price with IDE connection.


036DVDtested.qxd

01.03.2001

18:42 Uhr

Seite 41

DVD VIDEO UNDER LINUX

All the ATAPI devices tested support UDMA/33, which we obviously activated for the benchmarks. With this, data rushed onto our hard drive at up to 20Mb per second, with the 4.4Gb on the SuSE DVD for example being read in by the Pioneer DVD-114HB in less than five minutes. We found no great differences in terms of noise, only that the Toshiba SD-M1502 produced a slight howling as the result of the constant change of speed. This adjustment incidentally is also responsible for the low data transfer rate at the outer edge of the DVD, and just before the 4Gb mark the Toshiba achieved a glorious 19.45Mb/sec. The data transfer rate for all drives is perfectly adequate for DVD-video, even if the DeCSS plug-in from Xine was only able to use the NEC and the Raite. In view of this the NEC DV-5700A would be our choice. Our measurement values can be seen in Table 1 and in diagrams one to three.

Prospects We hope there’ll soon be a legal way of watching DVD videos under Linux. The DeCSS plug-in has shown that it works in principle with ordinary hardware. A supplier would only need to provide (as for example with nVidia and

ON TEST

Matrox and their graphics drivers) a binary module for Xine. The licence costs could even be recouped by selling the module. Until that time, DVD video under Linux unfortunately remains a ticklish subject. ■

So we tested: All DVD drives with ATAPI interface were connected solo to the second UATA-66 channel (AMD IronGate 756) of the MSI-6167 mainboard. Before starting the test, DMA mode was also selected. For the two SCSI drives we used a Tekram DC-315U Ultra SCSI controller. As data media the DVD for SuSE Linux 7.0 Professional Edition and Star Trek: Insurrection (Regional Code 2) from Paramount were used. When measuring the average seek times we were not content with just the time it took to position the heads (fseek) as this kind of measurement is not especially realistic. Much more telling is the time it takes to return the first data byte, which we accordingly read immediately after the Seek. To determine this we positioned the head in the middle of the DVD and moved it back and forth with a sequence of pseudo-random numbers. This sequence was the same for all drives. The final measurement of the transfer rate was firstly done linearly over the entire medium, with blocks of 10Mb being read in each case. For the random read access, we used the same routine as that for determining the average seek time, but we now read 1Mb of effective data after each positioning.

AD

7 · 2001 LINUX MAGAZINE 41


042embedder-introed.qxd

01.03.2001

14:38 Uhr

FEATURE

Seite 42

WHAT IS EMBEDDED LINUX?

Linux in Industry

SERVER, DESKTOP AND FACTORY ROBERT SCHWEBEL AND BERNHARD KUHN

For some years now, the operating system with the penguin has been the focus of growing public interest. Linux is a Unix-type system and, as such, in the early days it was well suited to deployment in the server and networking domain. So it is hardly surprising that many developers first wrote software which was useful for this field. This rapidly gave rise to the reputation of Linux as being a very stable operating system that was suitable for long-term use.

Many users and programmers soon began to create solutions for everyday office applications so that now Linux increasingly covers this market too. But what are the advantages of using Linux in industrial plants?

Special requirements It is hard for proper operating systems to establish themselves in the world of microcontrollers and programmable control systems. The requirements are usually such that an ordinary office PC could not meet them. Extreme fault tolerance, hard real-time demands, communication capability, integration 42 LINUX MAGAZINE 7 ¡ 2001

into large measuring and control equipment, high temperature and impact requirements are not conditions with which you would expect your desk PC to cope. A single general protection fault would give rise to enormous expense and serious damage and would not be tolerable. So it is no surprise that microcontrollers and customer-specific computer systems have so far occupied this market. In fact, industrial problems are frequently highly specialised. Many computers work as embedded systems without graphical interfaces and are deeply implanted inside measuring devices, switchgear cabinets or plant, without being visible as computers from the outside. It is precisely the


042embedder-introed.qxd

01.03.2001

14:38 Uhr

Seite 43

WHAT IS EMBEDDED LINUX?

FEATURE

related components in operation and to limit their access. No program is completely error-free, but this structure ensures that the kernel catches errors and that their effects are limited. For instance, if the keyboard and mouse of a computer are no longer usable, in most cases it is still possible to log in via the network and sort out the system. Empeg Auto-MP3-Player: http://www.empeg.com

requirement for high serviceability of the systems which means a controller should, if at all possible, only fulfil such functions as those for which it is needed. All components that are not in use could act as a potential source of error and also cost money unnecessarily. So why an operating system for industrial applications, and why Linux? Because of its very special genesis and the philosophies behind it, we now have access to a system that in many cases can fulfil the aforementioned requirements very well and which fits in perfectly with the modern structures in industrial plants.

The modular heart of the matter Strictly speaking, Linux means only the operating system’s kernel, which is responsible for all basic administration tasks. These include the organisation of program runs, the allocation of processor time to individual processes, access to files, and the network and other input and output components. In short, all of the processes that matter in a system when it is running. One of the central concepts of Linux is modularity. Not even the kernel of the operating system is constructed as a monolith. In fact, most of it has been realised in the form of so-called kernel modules. The developer who installs a Linux kernel on his system can decide, for each module, whether he wants to have it permanently (static), only temporarily (dynamic) or not at all, in his individual installation. Unwanted parts can be left out without affecting the stability of the system. But this modularity does not end with the operating system kernel – it continues in the domain of systems software. Functions that are not directly part of the kernel are obtainable as independent program packets and strictly speaking they do not really come under Linux either. The principal one is the GNU Project, in the frame of which practically all the essential tools and systemsrelated components were developed. Examples of such components are the management and synchronisation of system time, starting of timed programs, the provision of network services such as mail, access to ISDN and modem lines, embedded webservers, databanks and much more. There are great advantages in the fact that these components are not part of the kernel. The kernel already had the ability to monitor system-

The single-chip computer to the mainframe: same sources When, at the start of the nineties, Linus Torvalds began to develop the kernel of Linux as a programming exercise, he did not think that his code would ever run on a processor architecture other than his 386. Many developers have now made their contribution to porting the kernel onto other families of processors. Nowadays Linux can be used on most of the available 32-bit architectures. This means that there are platforms available from the tiny onchip system (e.g. Axis Etrax100) in the embedded application up to large multiprocessor computers or mainframes (IBM S/390). The secret behind this is, again, modularity: as only a relatively small part of the total system has to be adapted for the respective processor, most of the rest of the components can be reused directly. It is only the hardware-dependent segments that really have to be re-programmed, which essentially means hardware drivers and the boot procedure. All higher-level services are not in fact part of the kernel and most run unchanged. For the programmer in development the saying: write once, run everywhere, holds true. Software developed on an ordinary PC can usually be converted for the embedded platform without any alteration, as long as attention is paid to the equipment limitations to which the embedded computer is subject. [top] Kerbango Internet Radio [below] Digital video recorder: Philips TiVO Personal TV Receiver http://www.tivo.com

7 · 2001 LINUX MAGAZINE 43


042embedder-introed.qxd

01.03.2001

14:38 Uhr

FEATURE

Seite 44

WHAT IS EMBEDDED LINUX?

Hardware drivers made easy Access to hardware is a privileged action. This means that not every application program under Linux can access an input/output port, perform DMA or interrupt activities. In fact, hardware drivers are realised as kernel modules. If a driver is to be used for a self-developed card, this does not mean the Linux kernel has to be re-converted. Modules can be taken as completely independent programs, which can be loaded into the system at run time and removed from it again later. They run only with the privileges of the system administrator (root) and thus have full access to the hardware. For drivers, the Unix concept ‘Everything is a file’ applies. So-called device files are closely linked with the actual Linux driver, and these are found in the directory /dev. This is not a real file on the hard drive, but a virtual interface between application program and kernel driver. Assuming a driver is to be developed for a measuring card named ‘measuring card’, which digitises analogue signals, then the pseudo file for the measuring card would be called something like ‘/dev/measuringcard’. Access to this file is now possible in the usual way: The C programmer will open it like an ordinary file using open(), read from its data using read() and finally close it again using close(). The application program does not notice the difference between the drive interface and a real file. This means it is easy, in the test phase, to provide a file with simulated data and thereby test the behaviour of a program. Software development with respect to the driver is really simple. It is only necessary to define which activities the driver is to perform when the user opens or closes the pseudo file or reads out its data. The least realistic devices, though, deliver only pure data. Usual control commands are also necessary, for example to switch the measurement ranges in the aforementioned measuring card. To do this there is an additional function called ioctl() (Input / Output Control). This can be used to implement an interface for any additional commands for initialisation, control and monitoring of the card. There is minimal expense involved in integration in the operating system. FrontPath ProGear Webpad http://www.frontpath.com/ progear.htm

44 LINUX MAGAZINE 7 · 2001

Communication with the environment included Control of hardware components is important, but equally important is the communication of an embedded system with its environment. If a manmachine interface in the form of a GUI is not necessary for this, the network capabilities of Linux come into play. The simplest way to communicate with an embedded system is via a serial port. All components of this are available on every Linux system, when support for the interface has been integrated into the structure of the kernel. It is up to the developer to choose which program monitors the interface.

Free networkability In the case of embedded network applications in particular (firewall, VPN-bridge, intrusion detection system), the Linux Kernel 2.4 in combination with the corresponding programs is hard to beat. One additional aspect: A few small and medium-sized enterprises are currently facing the challenge of having to make their products Internet-capable. Whether it’s a lift system or a CNC milling machine – it has to have an integrated webserver for remote status queries. In many mechanical engineering firms, this is actually turning into a serious problem: electronics and software play a subordinate role here and often Assembler language and Dos are still being used. So the path to Linux and GNU Tools is often shorter than that to an overloaded integrated development environment. One interesting option is the use of a socalled ‘getty’. These programs usually serve to ensure that a local user can log onto a system and work on the computer in text mode. Because of the modular structure, however, there is nothing wrong with starting a ‘getty’, not on the local console (embedded systems may not have a graphics card and no keyboard), but on the serial port. If a modem is also used, the device can be serviced remotely without any additional actions. Any terminal program (e.g. Hyperterm under Windows, which comes with the package) can be used to dial into the industrial computer from anywhere in the world and work on it exactly as if one were sitting at a local console. This functions because of the concept mentioned above of the pseudo files. Ultimately, the local console (/dev/console), to the ‘getty’ program, is nothing but a serial port (/dev/ttyS0), namely a file. In principle, this means that any option supported by Linux is open for communication. In recent years the trend has been increasingly in the direction of using Ethernet as ‘unified field bus’ for


042embedder-introed.qxd

01.03.2001

14:38 Uhr

Seite 45

WHAT IS EMBEDDED LINUX?

industrial communication. Linux is ideally prepared for this trend. Since its origins lie in the network communication of the classic Unix computer, drivers and all-important protocols for Ethernet are already included. But this extends far beyond the systemsrelated part. There is nothing wrong with installing small webservers on a measurement computer, via which data from measurement points can be accessed directly from the company’s own Intranet. So there is no obstacle to integration in a companywide network structure. All standard protocols from the IT world such as HTTP, ftp, Telnet etc. can be used. The integration of other field buses has now become a reality: there are now drivers available for almost all the major field buses (Profibus, CAN, RS485, ...), so that a Linux PC can also be deployed at the interface between classic field bus technology and modern industrial Ethernet. The more communication options there are available, the greater the role-played by the question of access security. After all, the competition must not for example gain access over the Internet to measurement values from a quality control system. But here, too, conventional IT technology can be of further assistance. With ‘secure shell’ there is a protocol available with which one can make fully encrypted connections. With this, authentication of users and the entire communication are performed with the latest encryption technologies. Lastly each network service can be encapsulated into a ‘secure shell’ and tunnelled through what may be an insecure network.

Resource saving

FEATURE

Development tools en masse In most cases, applications for embedded controllers are created using a cross-development system. This usually contains an integrated development environment with compiler, debugger and all the necessary tools. In addition to these, an in-circuit emulator is often needed if the application is to be tested directly in the target circuit. In Linux-based systems modularisation also extends to the domain of development systems. The most frequently used GNU Compiler Suite GCC provides front-ends and back-ends. The former are there to translate a programming language, while the latter create machine code for a specific processor. If, for example, code is to be created on an Intel PC, which is running on a PowerPC, only the right back-end needs to be chosen. The Intel back-end can be used in the test phase, which allows the code to be translated, tested and debugged in one’s own time on the development computer. Conversely, with different front-ends a wide variety of programming languages can be used (such as C and Pascal combined in one project). But there are also other advantages to network capability. If software is to be developed for a small processor board, which has no hard disk of its own, but is running directly from the Flash Rom, the following procedure would be suitable. The embedded system does not boot a kernel located on the flash disk in the development phase, but the complete file system together with all operating system parts and application programs is integrated

[left] Bluetooth/DSLWebpad/Telefon Ericson H610 [right] Indrema Entertainment System games console

Adomo Webpad

It’s hard to believe how small Linux can be: Uncompressed kernels with 256K are quite possible, such as with uClinux on Motorola 68K derivatives. In this case, however, there is no TCP/IP stack, which makes for limited use. Usually, depending on the application and target platform, you should reckon on 1 to 4Mb flash and 2 to 8Mb Ram requirement. Other embedded operating systems are (assuming the same requirements) not much more economical. 7 · 2001 LINUX MAGAZINE 45


042embedder-introed.qxd

01.03.2001

14:38 Uhr

FEATURE

Seite 46

WHAT IS EMBEDDED LINUX?

via the network. The processor board does not ‘notice’ any difference here, as to whether the files are present locally on the Flash disk or via the network connection. Developers have the option of inserting new program versions for the running system directly onto its hard drive. The GNU debugger ‘gdb’ which is part of GCC is equally network-capable. This means any application can be remotely debugged without using any special tools. If programming is complete, all you need do is transfer the complete development data tree from the large computer onto the Flash disk.

Real time with Linux Hard real-time demands are very important for many applications in the field of measuring and control technology. If a control device does not respond within precisely defined time limits, vital measurements could be lost or control commands be missed, which might very well lead to damage to the plant or production stoppages. There are a number of real-time expansions available for Linux. With these, firstly a small, hard real-time capable kernel runs on the hardware, which then only assigns the actual Linux kernel processor time and resources when there are no real-time programs waiting which need them. This ensures that the real-time programs, completely independently of events at Linux level, always get the scheduled processor time, thus guaranteeing that response times to interrupts of approx. 10µs can be achieved without any problem. Mini-Linux Distributions Name URL hal91

Floppy/ HDD 1.44Mb

Graphical interfaces Depending on the equipment on a computer, there are some very different options for visualisation. Control devices can send textual outputs to a twoline display with serial port. If a real graphical user interface is desired there and then, there are various toolkits available for this, which offer all the usual widgets of modern window interfaces. The Xwindow system normally used on Unix systems is network-transparent. This makes it possible to send the output of a controller together with all control options via the network into a control room or even to a far remote computer via the Internet. For systems with very modest resources there are also a variety of graphics toolkits available which offer fewer features but on the other hand can be accommodated in a few hundred kilobytes of space.

Double investment protection based on free licences By now many of the options available under Linux have been introduced. One great peculiarity here are the licence models which are used for most

RAM requirement not known

Kernel

Content / Comment

not known

8Mb

2.2.13

Ancestor of all mini and embedded Linuxes, designed as rescue diskette and ‘mobile Linux’ Offers static router and firewall functionality, Floppyfw stems from hal91 Linux on a floppy with diverse network clients such Telnet, ssh, nfs, ftp, lynx and network configuration tools Contains over 100 Unix commands, most important man-pages and some kernel modules for network cards and SCSI adapter on a reformatted diskette (82 tracks, 21 sectors) Contains various tools for network monitoring and detection of network errors Contains various text-based network clients such as mail and newsreader and the Web browser Lynx and the necessary network tools for making connections The Linux Router Project is scalable from a simple IP-masquerader or Remote Access Server up to a WAN router – can also be used for X-terminals. Small Linux basic system with especially low memory requirement due to the use of the 1.0.9 kernel

Floppyfw

http://home.sol.no/~okolaas/ hal91.html http://www.zelow.no/floppyfw/ 1.44Mb

LOAF

http://loaf.ecks.org

1.44Mb

4Mb

2.0.36

Tomsrtbt

http://www.toms.net/rb

1.722Mb

not known

2.0.36

Trinux

http://www.trinux.org

2 x 1.44Mb

12-16Mb

2.2.x

mulinux

http://mulinux.firenze.linux.it/ 1.722Mb

4Mb + Swap

not known

LRP

http://www.linuxrouter.org

1.44Mb 120Mb

12-64Mb

not known

SmallLinux

http://smalllinux.netpedia. net/smalllin.htm

1.44Mb

2Mb-4Mb 1.0.9

46 LINUX MAGAZINE 7 · 2001

The advantage of this concept is that all normal operating system services are still available on the real-time capable computer. So such things as status information can be viewed via a webserver or a graphical display, or data can be saved to a hard disk.


042embedder-introed.qxd

01.03.2001

14:38 Uhr

Seite 47

WHAT IS EMBEDDED LINUX?

parts of Linux. All parts of the operating system itself are Free Software. Kernels and the overwhelming majority of the system-related tools as well as a great many programs are licensed under the GNU General Public Licence (GPL). The purpose of this is to protect Free Software. Software licensed under the GPL can be altered and even sold, without licence fees being payable. The only condition is that code derived from GPL-licensed code must be released again under the GPL. There are some advantages to this procedure. GPL software is mostly developed by many programmers scattered all over the world, collaborating over the Internet. Many programs (for which, with other operating systems, you would have to reinvent the wheel) are already available as GPL software and can be used immediately. Developers can devote their entire concentration to their own tasks. For the software components created by the Free Developer Community, you will usually receive excellent support by e-mail, at no cost. The channels of communication are short, and suggested changes are often realised very rapidly by the author. Since the worldwide developer community is very large, for any problem someone will quickly be found who has a ready solution – or is creating one. If software is developed solely for Linux, but uses no GPL code, then obviously it is possible to produce non-free software. Nor is the interaction between free and non-free programs a problem, so those proprietary algorithms can also receive full protection. The often-quoted saying that under Linux you always have to give away your code is completely false. However, anyone who develops software according to a Closed Source Model is also unable to benefit from the advantages of Free Software. In the domain of automation in particular the procedure for the development of Free Software often poses no great problem. Customers want to buy solutions to problems, not the software as such. Many problems in this field are so highly specialised that the actual performance of a company consists of adapting and tailoring software to the requirements of their customers. Investment cycles in industry are considerably longer than in the IT domain and so Free Software is also an important argument when it comes to security of investment. If a firm discontinues a proprietary product, the customer has a problem. The best thing that can be done in this instance is to undertake an expensive migration to another generation of software. The worst case scenario is that the product is worthless and cost-intensive restructurings of entire plants have to be undertaken. But if Free Software is used, the customer can himself entrust a reliable company to maintain the status quo, since he does have access to the sources.

FEATURE

In full bloom What started out as tinkering with small projects such as the Linux Router Project has now become an economic factor of increasing importance. The figures in this article can show only a small number of the embedded devices developed and built in the past year. More than 120 enterprises have now joined the ‘Embedded Linux Consortium’. Nor should the 24 well-known Japanese firms in the EMBLIX consortium be forgotten. So anxious new customers no longer need to complain about the lack of support on the part of industry.

One example of embedded Linux: ‘Spectator’ powder quality control system From the company Zeutec OptoElektronik GmbH. There is a ‘big’ industrial computer in the switchgear cabinet, which controls a compressed air-controlled sampling unit. The PC scans optical sensors and generates measurement values as a result, which are sent via an Ethernet link to a control room. The measurement device is currently in the trial stage near Cologne. The complete control of the solenoid valves, scanning of the sensors and evaluation of the data is done with software written in Perl. Standard protocols are used for communication (Telnet, HTTP, ssh).

Conclusion Linux is now an operating system to be taken seriously for industrial applications. It is robust, can be adapted to circumstances by modular means, is platform overlapping and network-capable. The same system runs from a battery-powered 386SX with 8Mb Ram via PC/104 components up to industrial PCs, desktop computers, parallel computers and mainframes. Security is a fundamental part of the system and does 7 · 2001 LINUX MAGAZINE 47


042embedder-introed.qxd

01.03.2001

14:39 Uhr

FEATURE

Seite 48

WHAT IS EMBEDDED LINUX?

Pneumatically-actuated sampling unit to inspect powdery substances.

The author Robert Schwebel has been involved with Linux since 1994. Since completing his degree in electrical engineering he has been developing measurement systems for automation and environmental technology under Linux and drivers for hardware components.

not have to be added on later at great expense and half-heartedly. Existing cross-development tools make software testing simple and elegant, while the programmer does not have to get used to new tools, regardless of whether he is programming for the desktop or an embedded system. If necessary there is the option of complying with hard real-time requirements.

Of course, Linux is not the answer to all the problems that can arise in industrial use. But it does have the potential to unite at least part of the diversified software market for embedded systems. The fact that in qualitative terms, extremely high value products are being created can be seen from the victory parade of server and desktop applications. ■

Embedded Systems Info Real-time expansions: http://www.realtimelinux.org Linux Router Project http://www.linuxrouterproject .org Embedded Linux Consortium http://www.linuxembedded.org Japanese Linux Consortium http://www.emblix.org Embedded Linux News and Reports http://www.linuxdevices.com Portal site on automation systems http://www.linuxautomation.de Comprehensive newsticker http://www.linuxdevices.com Linux Lab Project http://www.llp.fu-berlin.de

What is an embedded system? There is no simple, universal answer to this since conceptions diverge depending on the sector and domains of application. For this reason, the following explanation is only an attempt at a definition. An embedded system interacts with its (usually electromechanical) environment (embedding system). No human user is needed here, or if so, he has no need of any knowledge whatsoever about the technical innards of the embedded system to be able to use the system as a whole. Classic embedded systems in industry are, for example, the process control computer of a CNC milling machine (Computer Numeric Control) or a modern SPS plant. In the past decade a whole range of consumer products have come onto the market, all containing electronics which are equally embedded systems – such as mobile phones, video recorders etc. Ideally, computers ought also to be embedded systems for the end user – but the definition above applies best to the Apple Macintosh, as here at least ‘knowledge of the technical innards’ is necessary. Although the Surfstation from Mobilcom only differs very slightly in its principle architecture from a home PC, this is a true-blue embedded system. In fact, among small and medium-sized enterprises standard PC components have been gaining more and more ground in new developments of embedded systems – assuming small to medium production runs and short product cycle times. No wonder: Commodities Off The Shelf, COTS for short, often cost just a fraction of comparable proprietary industrial solutions and at the same time are considerably more flexible (but also more prone to errors). These embedded PCs obviously cannot be used in every situation however. Often, hostile environments and a notorious lack of space force the adoption of application-specific solutions. In the case of large production runs this is obligatory anyway.

■ 48 LINUX MAGAZINE 7 · 2001


049linuxpdaed.qxd

01.03.2001

17:33 Uhr

Seite 49

WORK DEVICE OVERVIEW

FEATURE

PDAs for Linux

PERSONAL ASSISTANTS BERNHARD KUHN

Small, practical and functional: A PDA is a work device and a cool toy at the same time. Apart from the successful efforts to make the free operating system presentable on common handhelds, in the past few months some genuine Linux PDAs have come out. This article gives an overview.

Yopy At the last CeBIT the Yopy caused quite a stir for the two Korean companies, GMate and Samsung. This device did not just introduce the first pure Linux PDA. Yopy makes the competition look outdated, with its ample memory and a fast processor as well as features such as colour display, MP3 player, organiser software by the ton, Compact-Flash slot for digital cameras and a microdrive. GMate Yopy Manufacturer: Controller: RAM, Flash: Display: Resolution: Colour depth: Ports: Power supply: On sale: Price: URL:

GMate/Samsung Intel StrongARM SA1110/206MHz 16Mb, 32/64Mb 4” TFT 240 x 320 pixels 64k colours RS232, Irda, USB, CF-II, mike, loudspeaker 1400 mAh Li-Ion Q1/2001 £220 to £300 http://www.gmate.co.kr

Yet for a long time these devices could not be bought in Europe. Now Gmate is answering back with the Yopy Development Kit, which is intended to aid developers in controlling the wide ranging functions, for example MPEG-video/audio playback and speech input. Gmate wants to enthuse natural gamers with a Gameboy emulator and the first-person shooter Heretic. Like many other Linux PDA manufacturers, GMate also feels indebted to the open source philosophy. Which is why a large part of the Yopy: MP3 player, video decoder and speech input are just the tip of the iceberg in terms of features.

7 · 2001 LINUX MAGAZINE 49


049linuxpdaed.qxd

01.03.2001

17:33 Uhr

FEATURE

Seite 50

WORK DEVICE OVERVIEW

application and development software will be available free, or at least free of charge.

Agenda VR3

IMT2000: Game console, Mobile/Web Telephone, Digital camera and PDA rolled into one

Agenda Computing with its Agenda VR3 is a newcomer to the PDA sector. At the heart of this rounded device is a highly-integrated controller with a MIPS kernel, which is surely enough for mobile requirements. The back lit LCD is software-driven by the Flat Light Tool Kit (FLTK). The manufacturer has already developed a whole range of applications with the help of this: the PDA can offer address book, scheduler, memo book, pocket calculator, e-mail client, terminal, games and diverse utilities ex works. Together with Quick-Sync software for Linux (and Windows) which is also part of the package, on CD-Rom, all basic requirements are certainly met. Additional applications can quickly be ported for the Agenda using the free basic software (FLTK and Linux-VR). The manufacturer is enticing free developers with a price discount for the limited VR3 Developer Edition, which costs £120 instead of the usual £170. For further information, go to developer.agendacomputing.com

IMT2000 Like the Yopy, the IMT2000 also comes from Korea and is not dissimilar to its compatriot. Based on the Strong-ARM SA1110, the companies PalmPalm and M-dream want to turn the IMT2000 into the ultimate Gameboy clone including mobile telephone. Apart from Kernel 2.4, Qt/Embedded and Opera the PDA will be equipped with the usual organiser software. The telephone function covers VoIP as well as H.323 for the direct line. Anyone who finds it too fiddly to hold the PDA to their ear to make a phone call can also use a headset. With so many audio functions there simply has to be an MP3 player too. One other special feature is the built-in CCD camera, with which applications such as digital camera, webcam and video telephony are feasible. Anyone who would like to develop applications right now for the IMT2000 can find the Tynux Box on the Web site of the manufacturer, a prototyping board with a similar range of functions to the IMT2000, as well as the appropriate Tynux Package with development tools and organiser software. PalmPalm will also be mainly giving away its software suite free, as far as licensing law allows.

Agenda VR3: MIPS Kernel, FLTK and any amount of software

Agenda VR3 Manufacturer: Controller: RAM, Flash: Display: Resolution: Colour depth: Ports: Power supply: On sale: Price (planned): URL: 50 LINUX MAGAZINE 7 · 2001

Agenda Computing NEC VR4181/66MHz 8Mb, 2/4/8Mb 5.7cm x 8.2cm 160 x 240 pixels 16 grey shades RS232, Irda 2 x AAA batteries Q1/2001 approx. £250 to £350 http://www.agendacomputing.de

IMT2000 Manufacturer: Controller: RAM, Flash: Display: Resolution: Colour depth: Ports: On sale: Price: URL:

PalmPalm and M-dream Intel StrongARM SA1110/206MHz 32Mb, 32Mb 4” TFT 240 x 320 pixels 64 k colours RS232, Irda, USB, mike, camera, loudspeaker not yet known not yet known http://www.palmpalm.co.kr


049linuxpdaed.qxd

01.03.2001

17:33 Uhr

Seite 51

WORK DEVICE OVERVIEW

Compaq iPAQ The iPAQ has a certain technical similarity to the Yopy and the IMT2000. But it is the offspring of the legendary Itsy from Digital Equipment. At that time the device was simply a PDA experimentation platform. After the take-over by Compaq it turned into something more – but with a different operating system. The manufacturer has now however revived the original Linux line and on the product side of the pocket PC is now offering the basic software kernel and TinyX-Server. The development of the obligatory organiser software, however, is something that Compaq is leaving to the Open Source community. Although these devices are neither especially cheap nor widely bought, development is progressing in giant steps. An everyday organiser suite is not yet available,

iPAQ 3630: Unfortunately not yet available ex works with Linux, but is a highly promising platform – here with Pocket Linux

iPAQ 3630 Manufacturer: Compaq Controller: Intel StrongARM, SA1110/206MHz RAM, Flash: 32Mb, 16Mb Display: 3.8” TFT Resolution: 240 x 320 pixels Colour depth: 64k colours Ports: RS232, Irda, USB, PCMCIA, mike, loudspeaker Power supply: 950 mAh Li-Ion URL: http://www.compaq.com/ products/iPAQ http://www.handhelds.org, http://www.pocketlinux.com Price: £400 to £550

FEATURE

however. This is somewhere that third party manufacturers could make their name, for example Trolltech with the Qt Palmtop Environment (QPE), which promises simple adaptation to existing Qt/KDE applications.

VTech Helio VTech may be familiar to you as the manufacturer of children’s educational computers. With the Helio, the company is now entering new sales territory. Like the iPAQ, this device is not delivered ex works with Linux, it has to be installed later. Here, too, Pocket Linux is certainly the bestdeveloped approach. At just £150 the Helio is the cheapest Linux-compatible PDA. But the 2Mb Flash will not accommodate too many applications and apart from the RS232 port there are no expansion slots. ■

Helio: This is cheap, but has little scope for expansion. Nevertheless the 75MHz CPU is perfectly adequate for MP3 decoding

Helio Manufacturer: Controller: RAM, Flash: Display: Resolution: Colour depth: Ports: Power supply: URL: Price:

VTech TMPR3912AU 75MHz 8Mb, 2Mb 5.9 cm x 5.9 cm 160 x 160 pixels 16 grey shades RS232, mike, loudspeaker 2 x AAA batteries http://www.vtech.com http://www.pocketlinux.com approx. £150 7 · 2001 LINUX MAGAZINE 51


052qtembeddeded.qxd

02.03.2001

16:44 Uhr

FEATURE

Seite 52

QT/EMBEDDED

Graphical User Interface without an X-server

DWARF’S MAKE-UP MICHAEL ENGEL

Linux has never really made much of a breakthrough on PDAs. Although the kernel is now running with reassuring stability on many devices, it takes more than just a command line to satisfy. Alongside Micro Windows/Nano-X, comes Qt/Embedded to breathe life into the LCD. Without applications even the best-equipped PDA is still just a nice little toy for techno-freaks. But the latest applications require graphics libraries on which they can call. Among the diverse developments of recent months, it is Qt/Embedded, which has certainly excited the greatest attention. This is especially true in Europe, where the proportion of KDE users appears to be substantially higher than in the US.

Qt/Embedded Qt/Embedded is a development by the Norwegian firm Trolltech, which with the well-known QtLibrary laid the foundations for the KDE desktop and its associated applications. But Qt was not just compiled for the various processor architectures of PDAs (for example StrongARM or MIPS). On the contrary, the Norwegians gave a bit of thought to how, with extensive compatibility, maximum performance could be achieved with an embedded system while at the same time consuming a minimum of resources.

Architecture Unlike the large Qt, which is based on many X11 libraries, Qt/Embedded has slimmed down considerably. The dependency on X11 and Xlib in particular gave rise to a considerably increased memory requirement – and memory is at a premium on most PDAs. This is why Qt/Embedded sits directly on the framebuffer device, which has long been present in Linux, so it has direct access to the mapped memory. 52 LINUX MAGAZINE 7 · 2001

The volume of memory space saved in this way is certainly considerable – depending on the processor architecture, it is 2 to 4 Mb. Qt/Embedded also offers the option of leaving out unneeded components of the library at compilation time (meaning that a minimal Qt/Embedded library comes to about 0.6Mb). On average, a memory requirement of 2 to 3Mb should be reckoned on for the features normally used. But doing without X11 also means Qt/Embedded has to take care of things like window management itself. Since the Trolltech developers feel that having its own server process to manage windows and graphics is too expensive, then, each application can act as server by being called up with the command line parameter -qws. However two applications cannot be server at the same time, otherwise there can be problems with framebuffer access – as the corresponding experiments for this report prove.

Licensing For some time, Qt/Embedded was only available under a proprietary licence, which handicapped the development of Free Software. However, late last year, Trolltech also issued the product in a GPL version, which is no different in terms of scope and function from their proprietary release. But this also means that the programs developed with the free variant are also under the GPL. For many authors of Free Software this is certainly not a problem. But developers of proprietary applications are forced to acquire a licence for Qt/Embedded (the current prices are


052qtembeddeded.qxd

02.03.2001

16:44 Uhr

Seite 53

QT/EMBEDDED

FEATURE

What the PDA heart desires: Qt Palmtop Environment offers lots of organiser software plus games and multimedia

available on request from the manufacturer). This is a fair compromise between the various interests. This is where the advantage of running Linux on embedded systems and PDAs completely free from licence costs obviously lies – even for devices distributed in large numbers. Naturally, there are no licence fees payable for the kernel.

games like Tetris, Minesweeper and Solitaire, such a device is now also suitable for playing multimedia contents such as audio and video. So in addition to an MP3 player there is now also a video player for MPEG1 videos. Not so long ago, a full-grown desktop PC was required to cope with these kinds of tasks.

Input methods Compatibility One of the great advantages of Qt/Embedded is that of being largely compatible with Qt on X11. This means that authors can benefit from experience gained from the development of desktop applications and even simply continue to use parts of the existing code – obviously there will have to be some adaptation to the limited space on the screen. For new commercial projects this makes it even easier to find developers who come, for example, from the KDE world and are interested in embedded systems. The GUI drafting tool Qt-Designer is also available: So the rapid creation of software prototypes for embedded environments is also possible.

Entering information manually on small devices can quickly become tedious. The trend with PDAs is now towards devices without keyboards. For industrial use a keyboard is often ruled out because the risk of problems caused by hazardous environments is too high. So a variety of input methods are provided in QPE: in addition to a virtual keyboard there is also a pickboard and handwriting recognition. Handwriting recognition has been expanded by an automatic word completion component

Palmtop environment Qt/Embedded in itself is merely a toolkit for applications (as of course is Qt/X11). Trolltech has therefore developed the Qt Palmtop Environment (QPE) for use on PDAs, and like Qt/Embedded, this is also available under the GPL.

Applications QPE provides the usual PDA applications, which are well known from Palm & Co. – contacts manager, scheduler, text editor, pocket calculator and to-do list are all there. But with the computing power of a modern PDA, there’s a lot more you can do. Apart from 7 · 2001 LINUX MAGAZINE 53


052qtembeddeded.qxd

02.03.2001

16:44 Uhr

FEATURE

Seite 54

QT/EMBEDDED

The pickboard is familiar to a few readers from mobile telephones – instead of entering individual letters, one selects letters from groups of three, as they are arranged on the telephone keys. With older telephones, one has to press n times on a key in order to obtain the nth of the letters assigned to this key, which is very fiddly. Modern telephones therefore compare the

possible combinations of letters with an integrated dictionary – the key only has to be pressed once. The Trolltech developers have adopted this method, with the keys being symbolised by small areas on the screen. This saves space on the display and time when entering data. The drawback to this method is of course the limited and language-

Is Qt/Embedded a panacea? A comment from Nils Faerber Trolltech has certainly caused a stir with the GPL issue of Qt/Embedded. Everywhere people are shouting that now, at last, there is a refined graphical user interface available for embedded Linux applications and that now we will be handed a whole raft of applications from the KDE project on a plate. Linux PDAs would finally become usable and applications development, thanks to its compatibility with the normal Qt, would become a great deal simpler. But if one takes a somewhat more critical look at Qt/Embedded, a few weak points come to light. Firstly, it should be clear to everyone that KDE applications are not that easy to transfer to an embedded device like a PDA. A modern X11 desktop has a resolution of at least 1024x768 pixels, a PDA on the other hand only 320x200 – and even that is a lot, comparatively, as the Vtech Helio for example has just 160x160. So putting a KDE application onto a PDA necessarily means completely redesigning the graphical user interface. And most PDAs are not blessed with the same equipment as a workstation. So applications have to be trimmed and slimmed down accordingly. Taking both together is equivalent to a complete redesign. So wouldn’t it be better to re-write the application from scratch? One other weakness is the current architecture of Qt/Embedded. It is more than just a toolkit for graphical user interfaces. It is a display server, I/O manager and toolkit rolled into one. The result of this is that – when a Qt/Embedded application is running – a non-Qt/Embedded application cannot access the display. Nor any of the dependent input devices such as touchscreen, mouse and keyboard, either. Qt/Embedded can thus at present not co-exist alongside other toolkits or graphical user interfaces. Once Qt/Embedded, always Qt/Embedded. That’s how it looks. And now to the GPL problem. In my opinion, releasing Qt/Embedded under the GPL was primarily a marketing decision, rather than one in favour of supporting Free Software. The reason for this belief is the slick exploitation of the GPL by Trolltech. The GPL is a double-edged sword. It certainly ensures that any intellectual property, once released, cannot be locked away by others and sold as their own. But it also means that modifications and derivative works also fall under the GPL. But in the case of Qt/Embedded this means that with the free GPL version, only free software in the sense of the GPL can be developed in turn. Because this is a toolkit and any software developed with it is a derivative work in the sense of the GPL. Well, you may think, that’s great! And that’s almost true, but sadly only almost. The GPL is striving for an ideal world, in which all information is free. But we’re not there yet! There is also the commercial licence model of Qt/Embedded. Trolltech sells one developer licence per development workstation and additionally demands licence fees for each product sold, so-called royalties. Now imagine that Trolltech were to achieve its objective and set up Qt/Embedded as the standard for graphical user interfaces in the domain of PDAs - this would have far-reaching consequences. Developers would then have to decide between the GPL version and the commercial version. There is no interim solution. There could be no possibility of not releasing the source code of a program, but nevertheless still distributing it free. Any software without source code would of necessity have to be sold by the distributor, since he must pay royalties to Trolltech for every item distributed. Now I personally am the last person to propagate closed source software. But in the case of Qt/Embedded I see the problem that many programs actually ought to be available free but cannot be made available as source code because they contain information, which is subject, for example, to NDAs. Such programs would not even be developed and Linux users would have to do without many applications. And because Qt/Embedded does not licence any other toolkit in parallel, an application of this kind cannot even run in any other way on a Qt/Embedded Linux system.

Conclusion Qt/Embedded shows that an appealing graphical user interface is also possible on embedded Linux devices. The licence model is, however, questionable, as long as the fundamental architecture allows no other toolkits in parallel with Qt/Embedded or at least the royalties payable for every one sold are dropped. We are still right at the beginning in terms of graphical user interfaces for embedded Linux. Decisions for or against a certain toolkit in a project can still form the basis of a de facto standard for graphical user interfaces. If the current Qt/Embedded together with licence model were to become standard, I see the danger that the GPL in this case would restrict the freedom of the user, especially when it comes to the selection of applications which become available at a later stage.

54 LINUX MAGAZINE 7 · 2001


052qtembeddeded.qxd

02.03.2001

16:44 Uhr

Seite 55

QT/EMBEDDED

dependent lexicon. In the latest QPE there is currently only an English dictionary. Handwriting recognition is reminiscent of the Jot software used in Windows CE. Only individual letters are recognised, which have to be written one after the other in an input box. Automatic word completion, which is also based on the existing dictionary, attempts to shorten input time by blending in a selection list with possible continuations of the word just started. This makes the task simpler than perhaps with a Palm organiser, as there is no need to learn the – sometimes less than intuitive – glyphs in the Graffiti handwriting recognition used there. True handwriting recognition – like that implemented on Apple’s Newton back in 1997 on a 20-MHz ARM processor – unfortunately remains a daydream.

Trying it out One of the advantages of Linux on PDAs is that there is no need to buy an expensive PDA for £400 just to experiment with Qt/Embedded: Alongside portings onto Compaq iPaq and Casio Cassiopeia, QPE also runs on normal x86 PCs under Linux, when a framebuffer device or a virtual framebuffer is present. For an introduction, the QPE Demo Disk is suitable – Trolltech has managed to accommodate a Linux system with QPE on a single 1.44Mb disk,

FEATURE

which will run on a normal PC with Vesa-compatible graphics card (which is controlled via the unaccelerated Vesa framebuffer).

Konqueror A modern PDA without an Internet connection is only half the fun – a Web browser is thus a must for a Linux PDA. But a browser, which is familiar from your desktop, such as Netscape, simply imposes too high a demand on resources for the limited storage capacities of a portable device. One alternative is the browser and file manager Konqueror, included in KDE 2, which has been adapted to Qt/Embedded: Although, of course, Konqueror was not developed for the low resolution displays on PDAs. But since the source code is freely available, Simon Hausmann has begun to optimise the browser at a screen resolution of 240x320 pixels. The first published version (0.1) is already looking extremely promising. Hausmann’s goal is to develop a complete Web-browsing environment for Qt/Embedded. This should come with support for SSL, for cookies, Javascript and non-blocking input and output, for HTML 4 with CSS (Cascading Style Sheets) and a few more facilities besides. Which is precisely what one expects from a grown up Web browser these days. ■

The author Nils Faerber is an enthusiastic Linux veteran and developer. This interest resulted in the establishment of the firm Kernel Concepts, which is involved in the development of Linux/Unix systems. He can be contacted at: nils@kernelconcepts.de

Info Qt/Embedded: http://www.trolltech.com Konqueror: http://www.konqueror.org Konqueror on Qt/Embedded: http://www.mieterra.com/konqueror/ Konqueror Download: http://devel-home.kde.org/~hausmann/konqueror-embedded-0.1.tar.gz QPE Demo Disk: http://www.trolltech.com/products/qt/embedded/qpe-disks.html KDE homepage: http://www.kde.org ■

With Konqueror a Qt/Embedded-based PDA turns into a powerful super-mini surfboard. 7 · 2001 LINUX MAGAZINE 55


056infozoneed.qxd

02.03.2001

13:19 Uhr

KNOW HOW

Seite 56

CONTENT MANAGEMENT

XML Content Management with Infozone and Prowler

CONTENT HEAVY FALKO BRÄUTIGAM, GERD MÜLLER AND ROBERT STRUNZ

The term content management has become somewhat overused these days, with a confusing range of providers and products trying very hard to distinguish themselves through specialised solutions. The following article takes a more detailed look at the approach of the open-source project Infozone.

Content management is closely linked to the development of large Web sites and their inherent problems. The sheer volume of data, the complexity of the structures and the related workflow make the use of software tools inevitable. As the strategic importance of companies’ Web sites to their business activity increases, the long56 LINUX MAGAZINE 7 · 2001

term prospects for providers of appropriate tools make this new market very attractive. Many large, and even more small, companies want a piece of the action. Consequently, they market their products under the term content management. This has led to confusion in the market, but has at the same time made it very dynamic and interesting, especially as there is by no means a consensus on its future development and everyone is trying to make their mark. One distinguishing feature is the ability of individual products to be integrated into existing IT structures. At this point the sophistication of different providers becomes apparent. While small providers concentrate on Web site administration, larger companies can and must also deliver integration into existing software systems such as ERP, document management or messaging solutions. In this context, Web sites are no longer understood and used solely as a presentation medium, but are increasingly extended to become the company’s central information platform. This leads to completely new content management


056infozoneed.qxd

02.03.2001

13:19 Uhr

Seite 57

CONTENT MANAGEMENT

requirements. In addition to the editorial content, data from other sources now also has to be included and administered.

Infozone and Prowler A very general approach to the issue of content management comes from the open-source community. The Infozone project (see the Infozone framework box) has as its aim the development and integration of components for building company portals (Enterprise Information Portal — EIP). The content management framework Prowler plays a central part in this. Unlike other systems, Prowler is not a complete application but a Java framework, whose API follows the Java servlet model. This framework provides important content management functions, such as the administration of users, rights, versions and transactions, but in addition gives programmers the opportunity to integrate their own functions and extensions.

KNOW HOW

Transactional XML file system At the heart of Prowler is a transactional XML file system, which makes it possible to insert the contents of the underlying data sources at any point of a hierarchical structure. Basically, any number of systems can be integrated as data sources, for instance application servers, ERP systems, mail or groupware servers, RDBMS, OODBMS and anything else that is important for business IT. Unlike normal file systems, Prowler uses XML to display data and transactions are secure. Data from sources that cannot themselves supply XML are automatically converted into XML using special content adapters. This leads to a uniform XML view of all data, which substantially reduces the effort required for presentation via Cocoon and SchemoX (see the Infozone framework box), as well as for data queries and processing. Apart from the consistent use of XML, another of Prowler’s distinctive features is the integration of a JTA/XA compliant transaction manager. This

Figure 1: Prowler architecture

7 · 2001 LINUX MAGAZINE 57


056infozoneed.qxd

02.03.2001

13:20 Uhr

KNOW HOW

Seite 58

CONTENT MANAGEMENT

Info http://www.infozonegroup.org http://java.sun.com/products/jta http://tyrex.exolab.org http://www.postgresql.org http://www.ozone-db.org http://xml.apache.org/cocoon http://java.apache.org/jetspeed ■

Listing 1: Prowler configuration file <?xml version=”1.0” encoding=”UTF-8”?> <properties> <prowler adapter=”document” loglevel=”info warn error debug debug2 debug3 ” name=”intranet”> <usermanager factory=”org.infozone.prowler.um.lightweigt.LeightweightUserManager”/> <transactionmanager factory=”org.infozone.prowler.tm.lightweight.LightweightTransactionManaU ger”/> </prowler> <adapter alias=”document” factory=”org.infozone.prowler.adapter.ProwlerDocumentAdapter” xmlcache=”ozonexml”> <prop name=”versioning” value=”false”/> </adapter> <adapter alias=”db2xml” factory=”org.infozone.prowler.adapter.sql.DB2XMLAdapter” xmlcache=”ozonexml”> <prop name=”propsFile” value=”db2xml.properties”/> <res name=”postgres_jdbc”/> </adapter> <resource alias=”postgres_jdbc” factory=”org.infozone.prowler.resource.jdbc.JDBCResourceImpl”> <prop name=”xadatasource” value=”org.infozone.prowler.resource.jdbc.PostgresXADataSourceFaU ctory”/> <prop name=”pass” value=””/> <prop name=”hostname” value=”localhost”/> <prop name=”port” value=”5432”/> <prop name=”database” value=”test”/> <prop name=”user” value=”test”/> <prop name=”protocol” value=”postgresql”/> <prop name=”driver” value=”org.postgresql.Driver”/> </resource> <resource alias=”ozonexml” factory=”org.infozone.prowler.resource.ozone.OzoneXMLResource”> <prop name=”user” value=”intranet”/> <prop name=”url” value=”ozonedb:remote://localhost:3333”/> <prop name=”passwd” value=””/> </resource> </properties>

enables access to different transactional data sources, for instance databases or application servers, within one global transaction or one HTML Listing 2: Exemplary Java code import org.infozone.prowler.*; import org.w3c.dom.*; import javax.xml.parsers.DocumentBuilder; public class ProwlerTest { public static void main( String[] args ) throws Exception { // 1. Initialise Prowler Prowler prowler = new Prowler( "prowler.xproperties" ); // 2. Open Session session = prowler.newSession( "root", "" ); session.open( null ); // 3. Parse root document and set DocumentBuilder db = ProwlerServices.newDocumentBuilder(); Document doc = db.parse( "rootdoc.xml" ); session.setRootDocument( doc ); // 4. Parse and link 'hamlet.xml' doc = db.parse( "hamlet.xml" ); session.addDocument( doc, Prowler.newAdapterID( "document" ), new ProwlerRepositoryPath( "/root/hamlet", session.rootDocument() ) ); // 5. Close session and shut down Prowler session.close(); prowler.shutdown(); } } 58 LINUX MAGAZINE 7 · 2001

page. The transaction manager ensures data consistency through a two phase commit. In addition, it is responsible for the flexible allocation of transactions to server threads, which makes it an important scalability factor, particularly for Web applications with thousands of simultaneous users. Prowler, therefore, is not an extended editing system, but data integration technology that enables transactional access to the contents of a large variety of data sources through an XML interface.

An example Before things get too abstract, we will demonstrate Prowler’s functionality by way of a simple example. Our little application is intended to perform two tasks: query and display the content of an SQL database and file an XML document in a database. The following data sources are provided to Prowler as resources: an SQL database in the form of PostgreSQL and a database that can store XML directly in the form of Ozone/XML. Which data sources are used with which parameters in Prowler applications is described in an XML file, independent of the actual logic itself. Listing 1 shows the configuration for the example.


056infozoneed.qxd

02.03.2001

13:20 Uhr

Seite 59

CONTENT MANAGEMENT

KNOW HOW

We are assuming that Prowler has already been installed and that all files are in the current directory. We are defining two resources: postgres_jdbc establishes the connection to PostgreSQL via JDBC and ozonexml is responsible for the link to Ozone. To make the content of both resources available as XML we define two adapters: db2xml converts the relational data from PostgreSQL to XML using the RDBMS/XML mapping tool DB2XML. document on the other hand does not convert data, but caches the XML documents in ozonexml, from where it can also retrieve them. Now for the application itself. In principle there are two ways of working with Prowler, either directly through a Java API or through a Cocoon XSP library for the realisation of Web pages. We will demonstrate both methods briefly.

The Java API In the first part of the application we will build a repository using the Java API and file an XML document in Prowler. For the XML document we are using that universally known and loved Shakespeare drama, hamlet.xml. The SQL database on the other hand contains a simple table addresses with the columns name, firstname and town, which already contains a few entries. The code, minus the exception handling, can be seen in Listing 2. Prowler is initialised in steps 1 and 2 and then a session is opened. In step 3 the application-specific Listing 3: An XML page for Cocoon <?xml version="1.0"?> <! File: jones.xml > <?cocoon-process type="xsp"?> <?cocoon-process type="xslt"?> <?xml-stylesheet href="mystyle.xsl" type="text/xsl"?> <! Here the Prowler namespace is defined and the corresponding XSP library linked> <xsp:page xmlns:xsp="http://www.apache.org/1999/XSP/Core" xmlns:response="http://www.apache.org/1999/XSP/Response" xmlns:prowler="http://www.infozone-group.org/prowler"> <page>

Figure 2: Infozone architecture

<! Login> <prowler:login id="login" user="root" passwd="" properties="prowler.xproperties"/> <prowler:onSuccess idref="login"> <! Search for addresses> <prowler:xpathQuery path-order="path1 path2" id="addresses"> <prowler:path id="path1">/root/addresses</prowler:path> <prowler:path id="path2">/database/table0/record0[name/text()='Jones']</prowler:path> </prowler:xpathQuery> <prowler:onError idref="addresses"> Error retrieving addresses. </prowler:onError> </prowler:onSuccess> <prowler:onError idref="login"> Login failed. </prowler:onError> </page> </xsp:page> 7 ¡ 2001 LINUX MAGAZINE 59


056infozoneed.qxd

02.03.2001

13:20 Uhr

KNOW HOW

Seite 60

CONTENT MANAGEMENT

Prowler structure is created (i.e. the root document). This structure is also XML and, in our example, looks like this: <?xml version="1.0" encoding="UTF-8"?> <root> <hamlet/> <addresses prowler:href="db2xml: addresses order by name/" prowler:type= "adapter"/> </root> It is interesting to note that the link to the address table is already inserted here. This linkage could of course also be created via the API. prowler:href points to the adapter db2xml with the table addresses, which means that the table is displayed as an XML document at this point if required. Next we use addDocument() to store Shakespeare’s hamlet.xml and put a link to it into the hamlet tag. That is the first application finished, and after its execution we have created a small repository.

Cocoon as front end

The authors The authors Gerd Müller, Falko Bräutigam and Robert Strunz work as computer scientists. Apart from their managerial tasks, Falko and Gerd primarily deal with technological questions concerning Infozone. Robert is responsible for SMB’s business communication.

However, the Java API is only used for programming the specific presentation logic of applications. Anything else can be done much more easily, for instance with the Prowler XSP library. With this it is possible to dynamically integrate Prowler content in XML documents via Cocoon and to then convert it into HTML, WML, PDF or another output format. In order to be able to use the Prowler XSP library in Cocoon, the Cocoon configuration file must first be extended as follows:

processor.xsp.logicsheet.prowler.java = resource://org/infozone/ui/xsp/prowler.xsl The aim of our example page is to show the addresses of people called Jones. This is shown in Listing 3. First is the usual login. Then follows an XPath query. For this we have to specify an explicit path through the repository. The pathorder attribute determines in which sequence the specified paths are to be processed. We start with the root document at /root/addresses and then move from link to link. As there is only one link to negotiate, the next part of XPath already contains the actual query: /database/table0/ record0 [name/text() =’Jones’]. The result is returned as a DOM tree and is integrated into the XML document via XSP. A style sheet that is not shown here converts the output into HTML and sends it to the browser. This little Web application makes do without a single line of Java code, but it achieves quite a lot. Using Prowler’s other functions via a Java API or an XSP library is just as easy as the data access itself. These are, for instance, user, rights and version administration, workflow support, transaction administration and the export/import of the entire content into a file system or other formats. All of that cannot be described in detail in the context of this article. Nevertheless, we hope to have given some idea of content management in general and Prowler in particular. Questions relating to the article or to Prowler are welcome, either to the authors or straight to the Prowler mailing list. ■

The Infozone framework – rationalisation through integration Infozone was started in June 2000. The project, distributed under an Apache licence, is a Java/XML component framework for the professional creation of complex Enterprise Information Portals (EIP), providing access to a large variety of electronic data sources through integration. EIPs are designed to trigger rationalisation effects in larger companies and organisations by channelling information flows. In this context, Infozone provides a company’s employees with personalised browser-based access to all business-related information. But other user groups, such as customers, suppliers and partners can also access any of the company’s data sources that they have been authorised to use. Within the framework itself, some very central components are developed directly as part of the Infozone group. Others originate from the Apache project and have been selected and adapted for use in Infozone. Figure 2 shows the Infozone architecture. At the moment the following components are used: • Web Server/Servlet Engine – Apache/Tomcat • XML Publishing Framework – Cocoon • XML Content Management Engine – Prowler • Object Oriented XML Database System – ozone/XML • Forms Generator – SchemoX For the future, the Infozone group is planning the integration and development of a number of further modules. Top of the list is Jetspeed from Apache XML, which is intended to simplify the creation of personalised Web applications.

60 LINUX MAGAZINE 7 · 2001


061tripwireed.qxd

05.03.2001

10:08 Uhr

Seite 61

TRIPWIRE

KNOW HOW

Tripwire: Part Three – an integrity checker

SAFETY FIRST KLAUS BOSAU

File system integrity checkers are increasingly popular, but hardly any of their countless users are aware of their forerunner: the hash function. The third instalment in our Tripwire series is intended to close that particular knowledge gap.

The development of the one-way hash function, or message digest function, had its origins in a cryptographic requirement. To speed up the timeconsuming process of signing messages by encrypting them with the sender’s private key, it made sense to first reduce the content volume to a more manageable size, the fixed-size hash value or message digest. The special function of this interim step, which is only distantly related to the task of key-based encryption mechanisms such as RSA or ElGamal, leads to a more effective implementation and therefore to a significant increase in speed. Instead of sending the encrypted original of the message, now the original itself and the encrypted message digest are being sent. First, the recipient decrypts the message digest with the sender’s public key. A subsequent comparison of the result with a message digest

produced from the original will provide information about the authenticity (and integrity) of the message. In order for modified signatures to be able to fulfil this authentication function, suitable candidates have to meet high standards.

Message blocks For instance, the function f must apply to every part of a message. That is mostly a question of design. A process called padding ensures that different sized messages are treated in the same way. In the case of MD5, a message is padded until its size is an integral multiple of 512 bits, so that the compression function (the heart of the hash function) can be processed in blocks within the next computational step. The workflow is reminiscent of Unix pipelines. Each 512-bit message block is involved once and 7 · 2001 LINUX MAGAZINE 61


061tripwireed.qxd

05.03.2001

10:08 Uhr

KNOW HOW

Seite 62

TRIPWIRE

Figure 1: Block schematic of MD5. If f denotes the compression function and Bi represents the i-th of a total of n message blocks, then this can also be very concisely expressed as a set of equations: H0 = K Hi = f(Hi-1,Bi) i=1,2,...,n The hash value of the extended message N = B1,...,Bn would then be Hn.

used for the continued modification of a given initial hash value, which is in the form of four 32-bit constants. The 128-bit hash value of the message in question is computed as the final output (see Figure 1). By chaining the interim results Hi – called chaining values – every part of the message is adequately included in the calculation. However, in the compression function itself there are large disparities (see Figure 2). The function must not be invertable, so that it will be impossible to work out the message content from knowing the message digest. This requirement has been pretty well met up to now, since the message digest normally tends to be much smaller than the

Figure 2: Inner workings of the MD5 compression function.

The compression function has been implemented as a hash value pipeline consisting of 64 identically structured individual operations. Each operation processes only one of the total of sixteen 32-bit words Xk in the current message block. It follows therefore that a word is used exactly four times by the pipeline. This happens in successive phases, or rounds. The diagram shows how the four 32-bit chaining variables aj,..., dj, which form the current chaining value, are linked. In this Fn denotes the non-linear function belonging to round n, which is derived from bit operations (example: F2(b,c,d)=(b^d) v(c^ d)), »x« denotes an addition (modulo 2^32) and »<< s« a bit rotation by s positions). (Tj) is a prepared field of trigonometric origin (sine function), that provides every one of the 64 operations with its own additive constant. Index k and the shift amount s change with each operation: k = k(j), s = s(j). The expression A = ((A + Fn(B,C,D) + Xk + Tj) < s) + B can be implemented effectively by using four 32-bit registers (A, B, C, D) as a buffer for the chaining variables, one of the reasons for the popularity of MD4. The functional construction ensures the thorough mixing of the message’s data words Xk - hence ‘hash’. For example, the multiplicative character of pipelines makes it practically impossible to predict how even the change of one message bit will affect the output, making it equally difficult to discover suitable alterations that would result in a message producing a specific desired hash value. The crucial problem turns out to be ensuring high speed (leading to a restriction to logical bit operations and register-friendly variable formats) without giving rise to the dangers of analysis through over-simplification (as happened with MD4). How difficult it is to arrive at a design, which combines acceptable speed with sufficient complexity, is evident from the widespread use of the ageing MD4 operation type, which often forms the basis for new developments due to its familiarity. For a detailed description of the structure, please refer to Rivest’s original publication.

62 LINUX MAGAZINE 7 · 2001


061tripwireed.qxd

05.03.2001

10:08 Uhr

Seite 63

TRIPWIRE

message itself, and every extreme compression inevitably destroys information. Occasionally some experts manage, after a careful analysis of the functionality, to design an inverse function, mostly for simplified variants. Although this is not able to reproduce the original itself, it can produce a message with the same message digest. The days of that particular hash function are then numbered. This happened in 1998 for a simplified variant of MD4 with two instead of the usual three rounds. Ironically, a leading player in this was the same Hans Dobbertin of the German Federal Information Security Agency (BSI), who later participated in the development of the European equivalent of SHA-1, the RIPEMD-160.

KNOW HOW

Empirical investigation shows that collisions are not uncommon for hash value sizes up to 64bits. That is not surprising, especially since the probability of a collision for a message digest with a size of n bits is of the order of 2-n/2,

Figure 3: The birthday paradox

Unique message digest It must be impossible to produce for any given message, another message with different content that would result in the same message digest. Hash functions that achieve this are described as weakly collision-free, because these conditions do not make very high demands of the algorithm itself. Apart from the danger of algorithm inversion already outlined, which is a special case in this context, the algorithm in question must also be able to resist brute-force attacks. These are a constant threat due to ever increasing computer performance. The offset of a forged message is simply altered until the resulting message digest matches that of the original. In practise this can be done by appending spaces to the ends of some lines. For 30 lines it does not take much effort to produce 2^30 duplicates in this way. To make this more difficult, the bit pattern of the original length is therefore inserted at the end of the extended message during padding. A processor with a performance of 12.5 Mips (very slow by today’s standards) can manage this in 0.42 seconds for a 47K file in case of a CRC-16 hash value and in four hours for a CRC-32 one. It is therefore not difficult to produce a forgery of the same size as the original. However, if the format of the hash value is increased, the limits of this method become obvious. The rapidly decreasing probability of matching (of the order of 2-n for a message digest size of n bits) can barely be offset by increased computational performance for formats of 64-bits. The 128-bit format, which is the current standard, should be able to withstand this sort of attack for quite a while yet.

Strongly collision-free functions It should also not be possible to find any two messages with a different content that just happen to have the same message digest. This condition is much harder to fulfil than the previous one, which is why these functions are called strongly collision-free hash functions.

The birthday paradox is the name given to the deductive result of the astonishingly large disparity in the statistical probability of two specific events: A birthday party consists of N guests. The probability that one of them shares a birthday with the host is p’ = 1-(364/365)N, but p = 1 - 365!/((365-N)! * 365N) for the event of the birthdays of two guests randomly coinciding. The implication of this result quickly becomes clear if we calculate the number of guests needed for a 50 per cent probability. It turns out that while the first condition can only be met with 253 people, the second only requires 23. The reason for the large difference is the fact that the increase in the number of possible guest pairs is of course quadratic, while the increase in potential matches with the host is only linear in relation to the number of guests. The analogy to the probability of random collisions is immediately apparent. It is indeed possible to derive the order 2-n/2p mentioned previously by substituting the number of days in a year with that of all possible hash values with a length of 2n bits. This makes the total number of guest the number of messages required to achieve a certain degree of matching. A good approximation of the 50/50 probability is therefore N P 1,2 * 2n/2 (more precisely: N P (1 + [root of](1 + 0,69 * 2n+3))/2). On the other hand, it would take a total of N’ P 0,69 * 2n P 0,48 * N2 messages to find a match for a specific hash value (host-birthday)! The result for N obviously provides a useful criterion for the collision resistance of an n-bit hash function. For the testing of formats beyond 128-bits, which are barely manageable in terms of computation, handier duplicates with short signatures are used, such as 16 or 32-bits. It is then possible to use the experimentally computed collision frequency – ideally one collision to N hash values – to extrapolate the behaviour of the original. Note: significant disparities can point to an unequal distribution of the hash value probabilities. That would, of course, be unwelcome, as an attacker could take advantage of it.

7 · 2001 LINUX MAGAZINE 63


061tripwireed.qxd

05.03.2001

10:08 Uhr

KNOW HOW

Info http://www.faqs.org/rfcs/rfc13 21.html H.Dobbertin: RIPEMD with two-round compress function is not collision-free Journal of Cryptology H.Dobbertin: Cryptanalysis of MD4, Fast Software Encryption - Cambridge Workshop. Lecture notes in Computer Science vol 1039 B.den Boer and A.Bosselaers: An attack on the last two rounds of MD4. Advances in Cryptology - Crypto ‘91 CryptoBytes ftp://ftp.rsasecurity.com/pub/cr yptobytes/crypto1n3.pdf B.den Boer and A.Bosselaers: Collisions for the compression function of MD5, Advances in Cryptology, Proc. Eurocrypt ‘93 ftp://ftp.cert.dfn.de/pub/docs/c rypt/ripemd160.ps.gz ■

Seite 64

TRIPWIRE

which is much greater than in the classic case of a brute-force attack. The once unrivalled cyclic redundancy checks CRC-16 and CRC-32 fail spectacularly in this respect. Out of 250 000 files tested on various computers 14 000 pairs with identical 16-bit hash values were found, and there were still three pairs with an identical 32-bit hash value. This aspect only loses its significance for hash value formats far beyond the 64-bit mark. This result is a good example of the birthday paradox (Figure 3). It forms the basis of perhaps the most promising of all attack types: the Birthday Attack. The aim of this brute-force variant is to obtain a digital signature through random collision.

Unhappy birthday In the Birthday Attack, the attacker produces two documents: a forgery that requires a signature and an innocuous message which the recipient would have no hesitation in signing. Then 2n/2 variants of each with almost identical content are produced, along with the corresponding message digests in nbit format. Minor alterations to the text that convey the same meaning are sufficient. Now the probability of finding two documents with the same message digest but belonging to different groups must be greater than 1/2. The attacker then only needs to get the innocuous version digitally signed by the recipient (encryption of the message digest with the private key) and can then send the corresponding signature together

with the suitable variant of the forgery. It is now impossible for a recipient to recognise the message as fake. The culprit has achieved his purpose without ever having gained access to the private key of the target.

Known weaknesses... Consequently only a message digest of sufficient size can offer protection. In this titanic struggle that is not a constant. While the 128-bit message digest was all the rage until recently, some experts are already demanding a 160-bit alternative today. PCs are not a threat in this respect. Even though a 200 MHz Pentium processor only takes nine milliseconds to calculate an SHA hash value for a 50K file, it would have to produce 2^81 P 2.4 * 10^24 variants to find a match. A usable result would take 7 * 10^14 years of computing time, too long for most of us. Even hardcoding or parallelisation via the Internet are no help for these formats in the foreseeable future, unless it was possible to shorten the computing time through clever choice of process. Such an attempt, which undermined the trust put in MD5 until then, was made in 1996 by the German cryptographer Hans Dobbertin (see Figure 4).

... and the tandem pipeline This hash function research can practically be transferred to MD5. MD4 was once pestered by an inconspicuous attack from two of Dobbertin’s

Figure 4: Example of an attack on MD5. The cryptographer Dobbertin was only able to discover collisions for the MD5 compression function, i.e. an initial value k and two different 512-bit blocks B and B’, for which the following is true: f(k,B) = f(k,B’). However, if the hash value H = H2 of a message N = B, B2 is written in the form f(H1, B2) = f(f(K,B), B2)), the consequences of these results become clear immediately. The different messages N = B, B2 and N’ = B’, B2 created during padding would produce the same hash value H, if it were possible to match the initial value k of the collision created to the initial value K of the MD5 hash function by suitable alteration of the discovered process. The attack takes advantage of the process used by the MD5 compression function for reading in the words of the message block. To simplify matters, Dobbertin assumes that the blocks B and B’ only differ in one of the 16 words, e.g. X14. Since every word is read exactly once in each of the four rounds, following a set pattern which varies for each round, the four diverging steps in the calculation of the hash values for B and B’ can be identified immediately: step 15 (round 1), step 26 (round 2), step 36 (round 3) and step 51 (round 4). The basic idea is to produce two harmonised inner collisions in the segments 15 to 26 and 36 to 51 by selecting appropriate chaining values. The chaining values of B and B’ should therefore match again before steps 27 and 52, ensuring that they would develop identically in the three other segments. The solution found should lead to identical compression values f(k, B) and f(k, B’) and therefore to a collision in the compression function. These assumptions lead to a set of equations in which the chaining values had to be logically regarded as an unknown. This simplification through certain assumptions reduces the problem to the iterative solution of equations that only contained the non-linear functions Fn of the MD5 operation, known quantities ci and [delta]x, as well as an unknown quantity x: Fn(c1, c2, x) + c3 = Fn(c4, c5, x + [delta]x) In this way, both the chaining values from step 15 onwards and the message blocks B and B’ (functions of the now known chaining values) become accessible to calculation. Details of the calculation methods can be found in RIPEMD and MD4. Finally, the initial value k could be found through simple backwards calculation, starting with step 14. The process was later implemented as a PC application. It took a Pentium processor ten hours to track down a collision for the MD5 compression function.

64 LINUX MAGAZINE 7 · 2001


061tripwireed.qxd

05.03.2001

10:08 Uhr

Seite 65

colleagues. Three years later MD4 was history. In cryptobytes, page 5, the reader can find a specific example of random collision, i.e. two messages that produce the same message digest despite having different contents. The computing time needed was less than one hour. The future will show how long Rivest’s MD5 will stand up to the inventiveness of ambitious cryptographers. There are already (more) secure alternatives: the newcomers SHA-1 and RIPEMD-160 exhibit some distinctive features that make attacks of the kind described above considerably harder (see Figure 5). The one-way hash function has developed into a universal tool. The secure transmission of passwords and digital timestamping (as realised in eternal logfiles) are further applications for this cryptographic star. After this excursion into the high-flying world of hash functions, the next part will return to more down-to-earth topics and give practical tips for operating and securing Tripwire shields. We will also be introducing an extension that breathes new life into the slightly outmoded Academic Source Release. ■

Figure 5: RIPEMD-160, a state of the art hash algorithm The structure of RIPEMD-160 is significantly different from that of MD5. The signature format has increased from 128 to 160 bits and a fifth data word was required ej. This is

intended to deter brute-force attacks. The added bit rotation << 10 on the other hand has its origins in the shrewd manoeuvre of two certain gentlemen (Boer and Bosslaers). In order to avoid specific procedures during the reading of the words for a message block as in MD5, the development team around Hans Dobbertin is relying on the new combination of two conventional pipelines, each of which only contributes to the compression value as a summand. As both of the complementary steps i and i’ in a round use a different sequence for reading in (additional permutation [pi](n) = 9n + 5 (mod 16) of the data words for the current message block at i’) and also exchange information, conservative attacks using the internal collision model will fail here. This sort of reinforcement is achieved at the cost of a nine per cent drop in performance as compared to SHA-1, but it is probably the most effective defensive concept against keen analysers. RIPEMD-160 does not come with any licensing conditions, and because of its pipeline structure it is easily applied to double-length signatures.

ad


066ide-overviewnew.qxd

01.03.2001

14:51 Uhr

PROGRAMMING

Seite 66

THE LATEST IDES COMPARED

Four of the latest IDEs compared

DEVELOPMENT AID MARCO KRAUS

Writing code professionally means the skilful handling of many tools. Integrated Development Environments (IDEs) help to simplify and combine these processes. This article introduces and tests four free IDEs.

Development environments promise to increase productivity and ease of use for the programmer. For Linux, Integrated Development Environments (IDEs) were a scarce commodity for a long time. Developers were thus forced to knock together their own tools and utilities, using the editor of their choice, so as to make programming easier. Since Linux is now part of the mainstream and even people with little experience want to write good code for Linux, developers and manufacturers are trying to close this gap. There is still not very much free software. This article is about the bigger IDEs like Code Crusader, KDevelop, the Source Navigator from Red Hat and the Penguin Edition from Sniff+ – all are either free software or free tools.

Code Crusader 2.1.4 Code Crusader – a development by John Lindal – is a free clone of the well-known Code Warrior from 66 LINUX MAGAZINE 7 · 2001

Metrowerks, whose product has already been ported onto many other operating systems, including Linux. It is based on the JX Application Framework, also developed by Lindal, and offers a considerable range of C++ libraries for software development. The complete packet is available, already compiled for several platforms, from the Web site of New Planet Software. Anyone who would still like to convert it themselves must download a few additional JX libraries. The IDE relies heavily on the method of operation of its big brother. It has very freely configurable syntax highlighting, which can be simply adapted to practically any programming language and thus turns the Code Crusader into a development platform for any number of languages. Though the toolbar is not especially intuitive and is limited to the essentials, this does leave a lot of room for the source browser. You can then access other functions via meta-keys in the style of Emacs.


066ide-overviewnew.qxd

01.03.2001

14:51 Uhr

Seite 67

THE LATEST IDES COMPARED

Menu control takes a bit of getting used in places to start with, especially in the field of project management, where inexperienced users can easily become confused, because certain functions are interlocked and have imprecise titles. And the interplay of the individual components sometimes demands a higher input of ingenuity. The individual components of the IDE are each built up in their own windows and thus form the whole project. This is practical, as you can split up the space yourself for the corresponding tools and theoretically you could use multi-heading to distribute the individual windows onto various monitors.

PROGRAMMING

graphical inheritance tree, which graphically displays inheritances and also, if required, shows the methods of the individual classes. Sadly, there is still no direct support for a version control system such as CVS which, with a view to multi-user development, is a shame and reduces the ease of use. But this feature too should be included in one of the future versions. Overall, Crusader gives a very solid impression, so anyone who liked Code Warrior will surely love this development

[top] Figure 1: Code Crusader with integrated editor. [below] Figure 2: Code Medic, the GNU Debugger GDB front-end for the Code Crusader.

Easy editor – but not much help The internal editor is very easy to use, especially because it provides the X-Drag-&-Drop protocol function. Syntax highlighting, an auto-indent, which cleanly inserts the source code, and the builtin macro function round off the editor. Of course you can also use your own favourite editor to write the code. But if you do so you must ensure there is acceptable source browser functionality in the editor. As a debugger, Code Medic comes as part of the package, which (as with most tools) is a frontend for the GDB. It is equipped with almost all the common functions; supports Drag & Drop and is limited only by the functionality of the GNU debugger. Its integration in the development environment appears to be problem-free and it also performs well in the interplay with the output and error window of the compiler. An inbuilt interface for the command line rounds off the range of functions of the Medic. The help system is displayed in a JX-based HTML viewer. But this is primarily limited to the IDE’s own functionality. On the other hand, though – in contrast to the standard in many other free products – it is very neatly constructed and leaves very few questions unanswered with respect to the product. However a context-sensitive system, which directly displays the help or syntax for the commands just written, does not exist at all. A builtin viewer for manpages is one of the few things worth mentioning at this point.

Family tree included – the class browser There are also a few more little things to make it easier to work with this tool. These include for example the history function, which covers the whole environment, the wheel-mouse support in the integral editor, the integration of Make, which makes this tool very easy to handle for programmers in ordinary cases, or the extended search-and-replace function. And since C/C++ is the language preferred and best supported by Code Crusader, it also contains a nice class browser with

Code Crusader (+) very flexible and function-rich editor (+) highly configurable and scalable system (+) complete support for the X-Plug-&-Play protocol (+) modular system with many expansion options (such as a graphic development tool) (-) not especially intuitive in many places (-) no support for version control systems like CVS (-) no context-sensitive help or language references 7 · 2001 LINUX MAGAZINE 67


066ide-overviewnew.qxd

01.03.2001

14:51 Uhr

PROGRAMMING

[top] Figure 3: CodeCrusader with graphical class browser. [below] Figure 4: KDevelop 1.4, based on KDE2-libraries

Seite 68

THE LATEST IDES COMPARED

environment. It does take some time before one can make use of the complete range of functions of this tool, but the flexibility gained as a result will pay off many times during development. And a look at the To-do list with the continuous development and planned features, for example, support for even more languages, automatic codecompletion or again, wizards, which should facilitate project management – shows that Code

Crusader will in future certainly be one of the development environments on the Linux market.

KDevelop 1.3 KDevelop is, as the name suggests, a tool based on the KDE and Qt-libraries. The versions 1.x available on the Web site are still based on the old KDE-1 libraries. Since version 1.4, porting has been running on KDE 2, which will be finished with the upcoming major release 2. Also available for downloading are the latest ‘daily snapshot’, diverse binaries for several platforms and the complete source code. Since KDevelop combines and embeds many external tools, it is also advisable to download these components in order to enjoy the full range of functions. To simplify this, the developers of each major release put together a KDevelopment Kit, a sort of complete package with all individual components. KDevelop is developed by a crew of freelance programmers, which has been speeding the progress of one of the most ambitious KDE projects since 1998.

Looks like Microsoft’s Visual Studio KDevelop was designed for programming in C and C++ and in this domain it does not leave much room to manoeuvre for alternative languages. A wizard leads the developer through the entire procedure for creating and installing a project. This very quickly shows off the possibilities available with KDevelop when it comes to programming language. Your choice may fall on console-based C and C++-programs or on the graphic development of KDE, KDE 2 and on GTK programs, too. Depending on your choice, the IDE creates source templates with header information and creates a fully working minimal program. When first working with KDevelop you may be struck by the similarity to the Visual Studio range of products from Microsoft and their look-and-feel. The individual tools are combined in one window. Focusing of the tools required at a particular time occurs automatically at some important points, at others it is still necessary to define these manually as required via a navigation bar.

Editing with borders KDevelop (+) wizards lead you simply and safely through the project management (+) integrated RAD for KDE (+) very good integrated documentation system (+) application wizard and class generator integrated (-) very C/C++-oriented (-) integrated editor is not replaceable (-) because of the single-window concept, limited division of space 68 LINUX MAGAZINE 7 · 2001

The integrated editor is based on KWrite-Source by Jochen Wilhelmy and also makes this functionality available. Plus, in addition to syntax highlighting for the programming languages supported it also offers an auto-indent function, to structure the code more legibly. There are also most of the other editor functions needed for day-to-day programming. Self-defined macros or extended configurations are not possible, which might give some developers


066ide-overviewnew.qxd

01.03.2001

14:52 Uhr

Seite 69

THE LATEST IDES COMPARED

the idea of wanting to integrate their trusty old Emacs or vi as editor. Unfortunately, however, the development environment will not allow any external alternatives here. KDevelop has a class browser and also a graphical inheritance tree and this makes the development of C++ applications – which is what KDE and Qt are – almost effortless. Again, it is possible to create new classes and methods using a wizard, which then takes over all routine tasks in the creation of classes and methods. The developer can navigate in source code in two ways: Apart from the class view as already mentioned, it can also navigate via alternative options such as LFV (Logical File View), in which the project files are combined into logical groups, and the RFV (Real File Viewer), which reproduces the complete project directory. KDevelop has a fully integrated debugger and offers an expansion interface for external alternatives. The editor supports the setting of break-points and the read out of variables during the debug procedure. Navigation through the source code with the aid of the debuggers is done via function buttons in the toolbar or via the corresponding menu points. Sadly, there are no shortcuts for this. It is necessary to switch manually between the standard, the error and the disassembler output. The help system is, as with the Code Crusader, very well designed for its own IDE. And there are also tutorials and manuals for development of Qt and KDE programs in the document collection. Here there is in fact a language reference for C and C++, but it only covers the basic chapters. A text search can be performed via htdig or glimpse, but this presumes a functioning basic system with indexed documents.

PROGRAMMING

structure can also be laid out for version control systems such as CVS and easily be integrated via graphical interfaces. With a glance at the to-do list of the project, we will certainly be able to delete some of the points which until now have come across as negative. There is also a wish list on the Kdevelop Web site, where functions not yet planned can be suggested to make a good development environment even better.

Source Navigator 4.5.2 Source Navigator was originally built up by Cygnus Solutions as a commercial development environment and came onto the market with the GNUPro (Compiler) Toolkit as programming solution

[top] Figure 5: References and tutorials embedded in KDevelop. [below] Figure 6: Red Hat Source Navigator with integrated editor

Fast development for KDE Since one of the main objectives of KDevelop is to write simple, fast and easy graphics applications, a classic RAD (Rapid Applications Development) for the simple designing of the interfaces must be included. For this a dialog editor of its own and an interface to Trolltech’s new QTDesigner are integrated, which takes over this task for KDE and/or Qt programs. When it comes to GTK, you have to rely on Glade.

Breakneck progress KDevelop also possesses a considerable number of embedded tools to make life easier for the programmer. These include the integration of Automake and Autoconf, which save the developer the tedious configure and makefile creation in simpler projects and standard cases, KIcon Edit for program icons or Kdoc, a complete documentation system with DOC++-type syntax. The project 7 · 2001 LINUX MAGAZINE 69


066ide-overviewnew.qxd

01.03.2001

14:52 Uhr

PROGRAMMING

[top] Figure 7: Parser configuration with the navigator. [below] Figure 8: Insight – GNU Debugger GDB front-end

Seite 70

THE LATEST IDES COMPARED

Code Fusion. But after Red Hat took over Cygnus, it was decided in July 2000 to stop the development of Code Fusion and to place Source Navigator under the GNU Public Licence. It can be downloaded for several platforms, ready-compiled or as source tarball. The IDE is distributed by Red Hat with their own product, Embedded Dev Kit (EDK), a development kit for embedded systems.

The classic from Cygnus in a new dress Source Navigator greets the developer after starting for the first time with a window for the project properties. With the aid of very clearly structured and intuitive navigation options (but a multitude of configurations nevertheless) the programmer is led at this point to his projects. The project file is saved as a binary file, although this would mean a limitation if any manual alterations were made to the project configuration. The source navigator consists, after successful project initialisation, essentially of a window for the settings and project properties, which can be called up at any time as necessary. There are also two separate main windows for project display and the tool window.

Design coming of age... The design appears at first glance to be a bit antiquated; but in these days of KDE and GNOME, this is certainly due to the classic, if not especially informative, style with its own buttons, cursors and other elements. After the first efforts, however, the navigator shows a completely different side. In the tool window, you can select from editor, Xref, classes, include-files and hierarchy to bring the desired function onto the screen. The complete navigation is perfectly harmonised between them all. So it is possible, using cross-references, not only to display the embedded files graphically, but also their content by means of a single click. The same applies for the declaration and definition of functions and classes. If the editor permits, this selection also exists in the corresponding context menu. This practical type of navigation extends to all integrated tools and menus and very quickly proves to be an extremely helpful feature, not only making the task itself much easier, but also noticeably cutting down on development time.

... but well thought-out functionality The integrated editor is in a more classical style. It contains no major gimmicks, apart from the essentials such as syntax highlighting, auto-indent or auto-wrap. The CUA-key-bindings included are not something that will delight dyed-in-the-wool fans of Emacs. But the navigator does come up with a very nice solution: In the project preferences, you can enter an individual editor for each parser. So if necessary you can continue to write your TCL projects with the internal editor and when working on C files, for example, return to XEmacs. At this point it would be hard to offer any more flexible options than these. 70 LINUX MAGAZINE 7 · 2001


066ide-overviewnew.qxd

01.03.2001

14:52 Uhr

Seite 71

THE LATEST IDES COMPARED

PROGRAMMING

Figure 9: Lots of windows can easily make Sniff+ incomprehensible.

Compiler Integration for DIY fans After the first test runs with the navigator it quickly becomes apparent why Red Hat has called it the Source Code Analysis Tool. There is indeed a buildsystem, but it is really obscure and can become a major hurdle, especially for less-experienced programmers. The IDE possesses great browser functionality, but the implementation of compiler, linker and automake is not very intuitive in use, and has limited functionality (Syntax). Source Navigator does in fact provide a large number of setting options here, from macros to the start function in the application created. But these need to be very well configured, in order to work properly. As debugger the IDE Insight is included, a frontend for the GDB, originally developed by Cygnus Solutions as Gdbtk in TCL/TK. As it originates from the same developers, it is well integrated into the whole environment and provides many – though not all – functionalities of the basic GNU debugger, including the interface to its command line. The slogans ‘Insight brings world peace. Insight makes your food taste better’ – which can be read on the developer’s Web site – are not something I can actually vouch for, but nevertheless Insight is a tool which is easy to use. Although it does not stand out from the broad mass of available front-ends, it does come with almost everything necessary to make effective use of the GNU classic. The documentation for Source Navigator resembles that for other products in this test. The

documentation for the actual development environment is integrated into the online help for the tools, it is precise and comprehensive. Language references and tutorials have been left out altogether. There is not even an interface for manpages, as there is with Code Crusader. Nor is there an optional search via indexed data, as in Kdevelop. Nor is there a documentation system or a corresponding interface for DOC++ or similar tool, either. And it offers no option by means of which you could embed development tools for GUIs. The years spent in development work on Source Navigator by Cygnus is plain to see. The result is a mature system. The highly successful source browser searches for similar ones, not just among the products presented here. Like many other free tools, despite all the features and advantages, it does have a big weak point in the documentation. The rather dull Look & Feel is something you could put up with, but the sometimes problematic handling of the build system when compiling, certainly does not make things easy for beginners and lessSource Navigator (+) very good source browser (+) many individual components independent and comprehensively configurable (+) good RCS support (-) project file only saved as binary (-) no language references (-) no documentation system (-) no option for development of graphical user interfaces 7 · 2001 LINUX MAGAZINE 71


066ide-overviewnew.qxd

01.03.2001

14:52 Uhr

PROGRAMMING

Seite 72

THE LATEST IDES COMPARED

experienced developers without the corresponding help.

Sniff+ PE 3.2 The version of Sniff+ tested here is the so-called Penguin Edition from Take Five’s commercial development environment. This version is a free, though not open-source, version of the commercial product. Certainly the biggest limitation of the PE version is that it is limited to a total of 200 files in any one project. Which makes the PE unusable for bigger projects. And this Lite version supports only C and C++. On starting the application, you come to a main window representing the management for the project. In the selection it is possible to choose between a project wizard, a standard project or templates. But the handling of the project configuration, despite help-wizards, is unfortunately very confused. Obscure menus and poor file and project import functionality do not make the task of management easy and even at this stage may frighten off some less experienced users.

Co-operative with big projects Once the initialisation is dealt with, a project browser opens up next to the management window. This co-ordinates procedures such as project grouping or the VCS integration of the task and starts the corresponding tools, for example the Editor Make, the Compiler or the Documentation. At this point it rapidly becomes obvious that Sniff+ is actually designed for larger development works and work groups, as there are lots of filters and grouping options for the corresponding files. There is also a very good connection to a version control system, which can be used simply and safely from the context menus of the individual files up to project management. But overall, the project structuring is not exactly intuitive to use. You really Sniff+ Penguin Edition (+) very good grouping and filter options for projects (+) enormous number of integrated tools and features (+) good VCS connection (-) its use is complex and not very intuitive (-) lots of windows causes chaos (-) only binary version available (-) Penguin Edition can manage maximum of 200 files Other IDEs Product Code Forge Sniff+ Code Warrior XWPE alpha KDE Studio gIDE wxStudio

Web site http://www.codeforge.com http://www.takefive.com http://www.metrowerks.com http://www.identicalsoftware.com/xwpe/ http://www.thekompany.com http://gide.pn.org/ http://wxstudio.source-forge.net 72 LINUX MAGAZINE 7 · 2001

Comments commercial commercial commercial Turbo C clone needs Qt 2.2.x GTK-based early alpha stage

do need time, patience and constant sight of the documentation to be able to make effective use of the features. The individual development tools are started from the project browser. Since there is an unprecedented number of tools available in Sniff+ and everything from the code-viewer via the editor to the make settings, is opened in its own window, it’s easy to end up in a complete tangle of opened windows, but this is something you have to get used to with this development environment in order to make use of all the functions. The actual editor is equipped with the usual features tested here – syntax highlighting, autoindent and so forth. What’s nice about this is its total integration in the environment. Source browsing is very easy, even if it is a bit overloaded in functional terms at times (special code-viewer and separate symbol-browser). If you like you can also replace the editor with VIM or Emacs and this leaves little to be desired.

Good advice is not dear Take Five has also done some good work on the documentation and is a praiseworthy exception among the test candidates. The Penguin Edition comes with nearly 40MB of documentation. About a quarter of this consists of tutorials and reference guides in postscript format, the other part being the HTML version as online help. This can to some extent be applied to the context, at least it supports those seeking help with respect to the development environment. Unfortunately there are no language references in this form, just C and C++ guides for development with Sniff+. A huge range of functions is offered, too many to discuss in detail here. For example the environment includes the tool Sniffaccess, which can connect other tools from third party providers, such as a GUI-builder. Small aids such as diff and merger tools make life a great deal easier for the developer. A documentation synchroniser and an includebrowser, which are called up as necessary, are just some examples of many other applications which come with Sniff+. This IDE has a documentation system. But (like the rest of the components) it really takes some time getting used to. Overall, Sniff+ gives a professional impression. It is very powerful, but also very complex. The documentation is the most important utility when you take your first steps with this tool. The excellent CVS connection and project scalability guarantees the especially good implementation options for larger project developments and the inevitable multi-user development that goes with it. But Sniff+ is going to have a hard time establishing itself as an IDE among open-source developers because of the limitations that come with the Penguin Edition.


066ide-overviewnew.qxd

01.03.2001

14:52 Uhr

Seite 73

THE LATEST IDES COMPARED

What else is there? There are lots of development environments on the Linux market. Some are language-independent, others are tied to special compilers. Yet others are available commercially or free. Some are graphical and some are console-based. The larger and free IDEs with the focus on C/C++ development were tested here. But what alternatives are there apart from these? For those who like console-based applications there is, just to mention the best-known program, the Turbo C clone XWPE alpha. This not only imparts the Look & Feel of the old Borland classic, but also copies its functionality in an acceptable way. And of course, as with the original, this one also offers easy use over distance. Other graphical and freely available IDEs include the GTK-based gIDE, or the KDE Studio from The Kompany or wxStudio, which is now supported by the former Wipe-Out from Software-Buero. These are in the development stage, mostly a bit behind the products presented here. For developers in the Unix field in particular, the good old editors such as VIM or XEmacs are a common alternative to the available IDEs. These classics have become familiar tools over the years for the developer, especially since their multiplicity of functions is in no way inferior to many development environments.

Conclusion All the products tested here proved to be well developed and ready for productive use. But almost

PROGRAMMING

everywhere there were small cosmetic faults, as have already been described in the individual reports. One major gripe is that none of the products presented comes with an acceptable and satisfactory language reference, which would ideally also be context-sensitive. In the case of KDevelop one developer was specially set to work to correct this failing. The functionality of the source navigator was very surprising. The drab design and the certainly small hurdles for beginners are more than made up for by the excellent source browser and the enormous range of configurations for experienced programmers. In this field, only Sniff+ could keep up, but again, this could only be used effectively after some intensive study. For those experienced with Visual Studio and beginners, KDevelop is certainly highly recommended. Maybe the source browser is not outstanding in comparison with the other IDEs, but it is adequate for most purposes. So it is worthwhile taking a look at the current state of development, as lots of highly promising improvements have been announced. Of course many developers are not immediately going to cast off their old, tried-andtested utilities, most of which have been expanded into little development environments. But what’s happening with IDEs is encouraging. The breakneck development which KDevelop is undergoing, or the heartening fact that Source Navigator, which was once a commercial product, is now in the ranks of free software means we can look forward to a promising future for the Linux developer. ■

Info http://www.metrowerks.com http://www.suse.de/de/produkte/busi ness_soft/develop/warrior http://www.newplanetsoftware.com http://www.kde.org http://www.trolltech.com http://www.kdevelop.org http://sources.redhat.com/sourcenav http://sources.redhat.com/insight/ http://www.takefive.com ■

The author Marco Kraus can be contacted at marco@linuxstuff.de and is always glad to receive any feedback.

Comparison table Facts Maintainer and/or manufacturer Latest Release Licence Web site Download size Comments Features Debugger Editor Automake support Programming languages support Macro support Version control support Class browser or inheritance tree RAD support Documentation system Help system/language reference Additional Features

KDevelop

Source Navigator

Code Crusader

Sniff+ Penguin Edition

Sandy Meier 1.4 GPL www.kdevelop.org ~ 25 MB Versions before 1.3 need KDE2 Libraries

Cygnus/RedHat 4.5.2 GPL sources.redhat.com/sourcenav ~ 14 MB -

John Lindal 2.1.4 proprietary www.newplanet.software.com ~ 15 MB -

Take Five 3.2 proprietary www.takefive.com ~ 22 MB only available as binary and limited to 200 files

integrated integrated yes C/C++

Insight (GDB front end) integrated/external yes C/C++/Java/Tcl/FORTRAN/COBOL

Code Medic (GDB front end) integrated/external yes C/C++ (others planned)

no yes yes KDE yes yes/yes KIcon, Application-Wizard

yes yes (RCS/CVS/SCCS/Clear Case) yes no no yes (online)/no -

yes no yes modular for JX Framework no yes/no Drag & Drop-support, Wheel-Mouse support

external (variable) yes/external yes C/C++ (additional support in full version) yes yes (RCS/CVS) yes via Sniffaccess yes yes/no Symbol-Browser, Diff-/Merge-Tool and many more

7 · 2001 LINUX MAGAZINE 73


074gnomeproged.qxd

01.03.2001

15:08 Uhr

PROGRAMMING

Seite 74

GNOME PROGRAMMING

Applets

A LITTLE SNACK THORSTEN FISCHER

You don’t always have to use a fully-grown program. Lots of little tasks can also be handled by applets, which live in the panel and are just waiting to be called up.

[top] Figure 1: The GNOME panel with weather applet. [below] Figure 2: The same panel, now with ‘Bon appetit’ applet.

Applets are small and thrifty. Unlike the big Gtk+ or GNOME programs, they don’t take up much space on the screen and (in most cases) nor do they lay claim to much in the way of resources. They are especially suitable for status messages of all kinds; such as for processor capacity, the battery display for a laptop, or a weather view that tells whether or not it’s raining. So you don’t even have to get up from the keyboard and take a look. In terms of programming, applets are not substantially different from normal GNOME programs. In Listing 1 you can see a normal program for GNOME, showing only an empty window. It contains the usual steps: Define internationalisation, create application window, connect with the standard signals and then display. The definitions in lines 3 to 5 are created automatically and passed on during compilation, when you are working with a source text tree that you have created previously. An empty applet behaves very similarly, and at

74 LINUX MAGAZINE 7 · 2001

this point (as a variation on the Hello world theme) I would like to call it the ´Bon appetit´ applet. And accordingly, what does it do first but display Bon appetit. This can be seen in Listing 2. The defines in lines 4 to 6 have again the same origin as before. In line 2 the header file appletwidget.h still has to be included, to allow access to the library function for applets. The first really new part can be seen in line 16: The program is not initialised by gnome_init(), but by a command from applet_widget_init(). The parameters of this function are the program name, the program version, the command line parameters argc and argv and the arguments for parsing the command line by the library libpopt. But this procedure is not going to be discussed just yet. Applets are a particular type of widget, as can be seen from the command applet_widget_ new() in line 18. The applet must communicate with the panel, so as to be able to insert itself at the right spot. Occasionally this communication fails right at the start, so that no applet can be created. If so, then there is a void pointer in our example applet, which we catch in the lines 19 to 22 and then end the applet with an error message. In the following lines a label is merely created and inserted into the applet.


074gnomeproged.qxd

01.03.2001

15:08 Uhr

Seite 75

GNOME PROGRAMMING

PROGRAMMING

As the applet functions perfectly normally as a container-widget, in theory any other widget could be inserted. But for the moment it remains to be seen which widget would produce sense and which would not. Applets require their own parameters during compilation. If our file is called Bon appetit_applet.c, then the following command is correct:

with windows. Of course, I that know that in the sense of the X-server an applet also has a window; ultimately a window is nothing but an area in which it is possible to draw. For example it should be able to react to vertical and horizontal orientations on its own, and also to changes in size, because after all, GNOME has seven different sizes for an applet, extending from 12 to 128 pixels in size. As soon as the size of the panel

gcc Bon appetit_applet.c `gnome-config libsU cflags gnome gnomeui applets` -o bon appetitU _applet

Listing 1: Skeleton of a normal GNOME 1: #include gnome.h 2: 3: #define PACKAGE "gnome-std" 4: #define VERSION "0.1.0" 5: #define GNOMELOCALEDIR "/opt/gnome/share/locale" 6: 7: int main(int argc, char *argv []) 8: { 9: GtkWidget *app; 10: 11: bindtextdomain (PACKAGE, GNOMELOCALEDIR); 12: textdomain (PACKAGE); 13: 14: gnome_init (PACKAGE, VERSION, argc, argv); 15: 16: app = gnome_app_new (PACKAGE, PACKAGE); 17: gtk_signal_connect (GTK_OBJECT (app), "delete_event", gtk_main_quit, NULL); 18: gtk_signal_connect (GTK_OBJECT (app), "destroy_event", gtk_main_quit, NULL); 19: 20: gtk_widget_show_all (app); 21: 22: gtk_main(); 23: 24: return TRUE; 25: }

If the applet is compiled and started (which can also be done from the command line as with a normal program) then it appears as if drawn by a ghostly hand in the panel, as can be clearly seen from Figure 2.

Decoration So much then for the first applet. If you click on it with the right mouse button, two menu points called Move and Remove will be seen, and their names speak for themselves. You can also see another menu point, Panel, behind which the familiar panel configuration is hiding. At this point you may wish to add your own menu points. This can be done without any trouble at all. With the function applet_widget_register_stock_callback new menu points can be generated and also immediately connected with the callback functions. In our example, which is listed in full in Listing 3, there is a menu point About, which displays a corresponding box. There are also functions that remove the menu points again or make complete sub menus.

Notification If you have put the code together and perhaps even installed it in its own code tree (with the aid of which compilation on any systems can be done very easily) then you would surely also like the applet to be put to good use. To do this it should appear in the menus seen by the user when clicking on the panel with the right mouse button and selecting add applet. For this, basically, a .desktop file is necessary, which should look roughly like Listing 4. This file must be copied into the directory prefix/share/applets/category where the prefix is the root directory of the GNOME installation (in SuSE for example /opt/gnome) and the category corresponds to the type entry in the .desktop file, thus here Application.

More stuff The requirements for an applet are of a somewhat different nature than those of an ordinary program

Listing 2: The first bon appetit applet 1: #include gnome.h 2: #include applet-widget.h 3: 4: #define PACKAGE "Bon appetit applet" 5: #define VERSION "0.1.0" 6: #define GNOMELOCALEDIR "/opt/gnome/share/locale" 7: 8: int main(int argc, char *argv []) 9: { 10: GtkWidget *applet; 11: GtkWidget *label; 12: 13: bindtextdomain (PACKAGE, GNOMELOCALEDIR); 14: textdomain (PACKAGE); 15: 16: applet_widget_init (PACKAGE, VERSION, argc, argv, NULL, 0, NULL); 17: 18: applet = applet_widget_new (PACKAGE); 19: if (!applet) 20: { 21: g_error ("cannot create applet.\n"); 22: } 23: 24: label = gtk_label_new (" Bon appetit! "); 25: applet_widget_add (APPLET_WIDGET (applet), label); 26: 27: gtk_widget_show_all (applet); 28: 29: gtk_main(); 30: 31: return TRUE; 32: } 7 ¡ 2001 LINUX MAGAZINE 75


074gnomeproged.qxd

01.03.2001

15:08 Uhr

PROGRAMMING

Seite 76

GNOME PROGRAMMING

Listing 3: A full applet 1: #include gnome.h 2: #include applet-widget.h 3: 4: #define PACKAGE "Bon appetit-applet" 5: #define VERSION "0.1.0" 6: #define GNOMELOCALEDIR "/opt/gnome/share/locale" 7: 8: void change_pixel_size_callback (appletWidget *applet, int pixels, gpointer data) 9: { 10: printf ("The panel is %d pixels in size.\n", pixels); 11: } 12: 13: void change_orient_callback (appletWidget *applet, PanelOrientType orient, gpointer data) 14: { 15: switch (orient) 16: { 17: case ORIENT_UP: 18: printf ("The panel is on the bottom.\n"); 19: break; 20: case ORIENT_DOWN: 21: printf ("The panel is at the top.\n"); 22: break; 23: case ORIENT_LEFT: 24: printf ("Right of the panel!\n"); 25: break; 26: case ORIENT_RIGHT: 27: printf ("Left of the panel!\n"); 28: break; 29: default: 30: printf ("No orientation !?!\n"); 31: break; 32: } 33: } 34: 35: void about_callback (appletWidget *applet, gpointer data) 36: { 37: GtkWidget *dialog; 38: const gchar *authors [] = {"Thorsten Fischer @derfrosch.de>", NULL}; 39: 40: dialog = gnome_about_new (PACKAGE, VERSION, "(c) 2000 Thorsten Fischer", authors, 41: "Sampleapplet for Linux-Magazine.\n Code subject to the GPL.", NULL); 42: 43: gtk_widget_show (dialog); 44: 45: return; 46: } 47: 48: int main(int argc, char *argv []) 49: { 50: GtkWidget *applet; 51: GtkWidget *label; 52: GtkWidget *frame; 53: 54: bindtextdomain (PACKAGE, GNOMELOCALEDIR); 55: textdomain (PACKAGE); 56: 57: applet_widget_init (PACKAGE, NULL, argc, argv, NULL,0,NULL); 58: 59: applet = applet_widget_new (PACKAGE); 60: if (!applet) 61: { 62: g_error ("Cannot create applet.\n"); 63: } 64: gtk_signal_connect (GTK_OBJECT (applet), "change_orient", 65: GTK_SIGNAL_FUNC (change_orient_callback), NULL); 66: gtk_signal_connect (GTK_OBJECT (applet), "change_pixel_size", 67: GTK_SIGNAL_FUNC (change_pixel_size_callback), NULL); 68: applet_widget_register_stock_callback (APPLET_WIDGET (applet), "about", GNOME_STOCK_MEU NU_ABOUT, 69: _("About"), about_callback, NULL); 70: 71: 72: frame = gtk_frame_new (NULL); 73: applet_widget_add (APPLET_WIDGET (applet), frame); 74: 75: label = gtk_label_new (" Bon appetit! "); 76: gtk_container_add (GTK_CONTAINER (frame), label); 77: 78: gtk_widget_show_all (applet); 79: 80: gtk_main(); 81: 82: return TRUE; 83: } 76 LINUX MAGAZINE 7 · 2001


074gnomeproged.qxd

01.03.2001

15:08 Uhr

Seite 77

GNOME PROGRAMMING

alters – and when the applet is first started – the signal change_ pixel_size is sent out, which can be caught by a corresponding callback. In the example in Listing 3 this is done using the function change_pixel_ size_callback. Although as a programmer one should never work on the assumption of standard situations, comparisons with possible pixel sizes can be done using constants; they all bear the prefix PIXEL_SIZE_ and are then called ULTRA_TINY, TINY, SMALL, STANDARD, LARGE, HUGE and RIDICULOUS, with a size of 12, 24, 36, 48, 64, 80 or 128 pixels respectively. No one can do anything with the last size, but it’s nice to take a look at the anti-aliasing of the icons. The representation of a widget may also depend on the orientation of the panel. It is therefore convenient that an applet always receives a signal from the panel, when it changes its orientation, and also of course immediately on first starting the applet. It is called change_orient and is caught in the example (Listing 3) with the callback function change_ orient_callback. It may appear miraculous that the constants, which can exist as the result, produce the exact opposite of what they say at first glance. However, it is not actually the position of the panel that is being passed on, but the direction in which a menu would extend if it had to be created.

PROGRAMMING

Listing 4: The desktop file for an applet [Desktop Entry] Name=Bon appetit applet Comment=An applet which says Bon appetit Exec=Bon appetit_applet Icon= Terminal=0 Type=Application It should also be noted that the connection with the signal should take place before additional content is added into the still-empty applet with applet_widget_add(). Otherwise this does away with the option of being able to respond accordingly to the orientation. Happy Gnomes!

The author Thorsten Fischer is a student of computer science and/or media constancy. He can be contacted at frosch@derfrosch.de.

Info Source texts for the article: http://www.derfrosch.de/weichewaren/linuxmagazin.html Gnome-core applet writing HOWTO: http://cvs.gnome.org/lxr/source/gnomecore/panel/APPLET_WRITING Gnome applet Tutorial: http://developer.gnome.org/doc/tutorials/applet/index.html ■

AD??

7 · 2001 LINUX MAGAZINE 77


078schemeed.qxd

05.03.2001

10:47 Uhr

PROGRAMMING

Seite 78

SCHEME

Advanced Elements of Scheme Programming

FULLY FUNCTIONAL FRIEDRICH DOMINICUS

After introducing the basic elements of Scheme programming in the previous issue, this

A great advantage of languages like Lisp is the existence of higher order procedures. These are procedures that can either accept other procedures as parameters, in which procedures can be return values, or both. This ability is especially useful in cases such as the following example.

article will focus on one of Scheme’s essential advantages – functional programming.

Procedures as parameters The procedures double-all and add-two will be used to demonstrate how useful procedures are as parameters. The first procedure doubles every element of a list, while the second adds two to each element (Listing 1).

78 LINUX MAGAZINE 7 · 2001

apply-to-all (define (apply-to-all op a-list) (if (null? a-list) ‘() (cons (op (first a-list)) (apply-to-all op (cdr alist))))) In double-all op looks like this: (* 2 x), which can be translated directly into Scheme as: (define (double x) (* 2 x))


078schemeed.qxd

05.03.2001

10:47 Uhr

Seite 79

SCHEME

The similarity between the two procedures is so remarkable that we may be tempted to ask whether there isn’t some scope for generalisation – there is (at least in Scheme). The only difference in each case is in the respective operation on the first element of the remaining list. After processing, the result is added to the returned list. Both examples can be simplified by using a procedure as a parameter. In order to do this, we will retain the implementation and parameterise the differences (in this case using the parameter op ). Let’s use double-all and apply-to-all together with double: (define a-list ‘(1 2 3)) (double-all a-list) -> ‘(2 4 6) (apply-to-all double a-list) -> ‘(2 4 6) The arrow -> represents ‘results in’ or ‘evaluates to’. The two procedures return the same result, but the second version can be applied more universally. What is remarkably easy here is impossible in some languages, or can only be reproduced with a

PROGRAMMING

lot of effort. The possibilities arising from higher order procedures should be so obvious even from this example that one has to ask why all languages do not offer them. To avoid having to give every Listing 1: Two very similar procedures (double-all, add-two) (define (double-all a-list) (if (null? a-list) ‘() (cons (* 2 (first a-list)) (double-all (rest a-list))))) (define (add-two a-list) (if (null? a-list) ‘() (cons (+ 2 (first a-list)) (add-two (rest a-list)))))

Listing 2: Implementation of filter (define (filter pred? a-list) (cond ((null? a-list) ‘()) ((pred? (first a-list)) (cons (first a-list) (filter pred? (rest a-list)))) (else (filter pred? (rest a-list)))))

7 · 2001 LINUX MAGAZINE 79


078schemeed.qxd

05.03.2001

10:48 Uhr

PROGRAMMING

Seite 80

SCHEME

little function its own name, anonymous procedures can be used in Scheme. Therefore apply-to-all can be simplified in the following way:

statements is that they are both simply macros around lambda with which we are already familiar. In principle, the following lines are equivalent:

(apply-to-all (lambda (n) (* 2 n)) a-list)

(let ((i 1)) (display i) (newline)) ((lambda (i) (display i) (newline)) 1)

The result would once again be ‘(2 4 6). Lambda is an principal element of Scheme programming and forms the basis of other elements which at first sight may seem to have nothing in common with the less flashy lambda. Apply-to-all can be replaced by the standard Scheme procedure (map), with which our solution would look like this: (map(lambda (n) (* 2 n)) a-list) Naturally, double-all can also be re-implemeU nted using map. (define (double-all al) (map (lambda (n) (* 2 n)) al)) Another useful procedure, (filter) extracts elements that satisfy certain conditions. Filter can be implemented as shown in Listing 2: If you would like to filter out all positive elements from a list, you can use the following Scheme procedure: (filter positive? a-list)

In my opinion, the first line is clearer and easier to read. Please be careful not to get the ‘named-let’ in part 1 mixed up with this local variable declaration though. The valid format here is: (let ((variable init)). In Scheme, initialisation cannot be omitted. The following example shows that you can also bind procedures to local variables in Scheme. (let ((d (lambda (n) (* n 2)))) (display (d 1)) (newline)) Let statements can be found not only within other procedures or additional let blocks, but also at the top level. In every case the declared variables are only visible until the end of the block in which they are defined. Nesting not only occurs with let statements, but also for combinations of let and define. Whether you are going to use (let ((i 1) (j 10)) (+ i j)) or (let ((i 1)) (let ((j 10)) (+ i j))) depends on the situation or your preference. Scheme does not impose any restrictions on you regarding the position of additional procedures or the introduction of local variables.

Map and filter can be combined as required. With

Lexical binding

(filter positive? (map double a-list)) for instance, you can double all elements and then extract the positive ones. In this case (map double (filter positive? a-list)) would be equivalent and preferable for efficiency reasons.

Procedures as return values Procedures and data are equivalent in Scheme. Procedures are permitted anywhere ‘normal’ variables can occur, within other methods, as parameters and also as return values. In technical terms, they are first-class objects. Here is an example: (define (make-adder n) (lambda (m) m))) (define add-5 (make-adder 5))

(+ n U

Add-5 is a procedure that adds 5 to its argument.

Local variables As in other languages, it is possible to declare and use local variables in Scheme. Unlike most other languages, it is irrelevant whether the values of the local variables are data or procedures. Local variables are declared and initialised in a block that starts with a let or let*. The difference between let and let* is that you can refer to previous declarations in let*. A notable aspect of the two let 80 LINUX MAGAZINE 7 · 2001

Scheme is leading the way in this area, as far as the Lisp family is concerned. Lexical binding is again best illustrated with an example. (define counter 50) (define (inc-counter) (set! counter (+ 1 counter)) counter) (let ((counter 100)) (display (inc-counter)) (newline) (display (inc-counter)) (newline)) Since Scheme uses lexical binding, the output will be 51 52. Even though counter in the let block overrides the global variable of the same name, this is not true for the procedure inc-counter. When this procedure is defined, only the global variable is known, and inc-counter therefore only has access to this. Procedures or variables defined within the block, however, would only have access to the overriding variable. The standard for early versions of Lisp was another type of binding, called dynamic binding, which is still used by Emacs Lisp. DrScheme provides this type of binding in the form of a fluid-let: (fluid-let ((counter 100)) (display (inc-counter) (newline)) (display (inc-counter) (newline))) The output here would be: 100 101. Since the behaviour of lexical and dynamic bindings is different, you ought to be aware of the type of


078schemeed.qxd

05.03.2001

10:48 Uhr

Seite 81

SCHEME

binding that is being used. Scheme normally only supports lexical binding, Common Lisp offers both types and the standard for Emacs Lisp is dynamic binding (with the possibility of emulating lexical binding).

Data encapsulation in Scheme One interesting application for a combination of lexical binding and the use of higher order procedures in Scheme is controlled data access. In Listing 3 you will notice the following innovation in the methodhead: . args. This parameter separated by a dot represents a list that comprises additional optional elements, similar to the ellipsis (three dots) in C. The initialisation of the first variable balance is achieved through (if (not (null? args)) (car args) 1000)). If the list args exists its first element will be regarded as the initial value, otherwise this is set to 1000. The interest rate is similarly initialised with a value. Local variables cannot be accessed from outside, but they can be exported in the following way: (lambda (message) (case message ((name) (lambda () name)) ((balance) (lambda () balance)) ... This is an anonymous procedure with a parameter, and it also becomes the method’s returned value. The parameter is used to access a method defined

PROGRAMMING

in the case differentiation. For example, if message is ‘name, the following procedure is returned: (lambda () name))). As this is a procedure, it has to be called before you get the result that you are actually interested in. This call can be initiated in various ways, either by an object-oriented, or functional route. The OOP option could look like this: define (send fun message . args) (apply (fun message) args)) The procedure apply is expecting a procedure and a list of elements to which this procedure will be applied. Should you for instance want to perform an addition, you could either use (+ 1 2 3) or (apply + ‘(1 2 3)). If we send the message ‘name to

Backtick vs. normal quote (define al ‘(1 ,(+ 1 2) 3)) -> (1 ,(+ 1 2) 3)) (define a2 `(1 ,(+ 1 2) 3)) -> (1 3 3) These almost identical looking expressions show that a comma before an expression forces its evaluation. The official names for ‘ and ` are quote for ‘ and quasiquote for `. When expanding ,@ it should be noted that body is a list, while ,@ is used to divide and insert each individual list element.

Listing 3: Data encapsulation ”la Scheme” (define (account name . args) (let ((name name) (balance (if (not (null? args)) (car args) 1000)) (interest-rate (if (and (not (null? args)) (not (null? (cdr args)))) (cadr args) 0.06))) (lambda (message) (case message ((name) (lambda () name)) ((balance) (lambda () balance)) ((deposit) (lambda (amount) (set! balance (+ balance amount)) balance)) ((withdraw) (lambda (amount) (set! balance (- balance amount)) balance)) ((interest-rate) (lambda () interest-rate)) ((add-interest) (lambda () (set! balance (* balance (+ 1 interest-rate))) balance)) (else (lambda () "Method unknown")))))) (define (send fun message . args) (apply (fun message) args)) 7 · 2001 LINUX MAGAZINE 81


078schemeed.qxd

05.03.2001

10:48 Uhr

Seite 82

PROGRAMMING

SCHEME

account, we receive the parameterless procedure mentioned above. Starting from the following definition: (define acc1 (account ”someone”)), the substitution for the call (send acc1 ‘name) is (apply (acc1 ‘name) ‘()). If you prefer functional calls, use: ((acc1 ‘name)) (Please note the use of parentheses!) This approach can form the basis for an OO system. If that system is to meet the expectations of object-oriented programming, then macros, another Scheme programming tool, would certainly help.

Macros All Lisps offer the possibility to define new data and control structures, such as new case differentiations or new loops. In most Schemes there are different ways of defining macros. We will call them the ‘old’ and the ‘R5RS’ way. This example is a unilateral case differentiation.

The old way my-when Macro (define-macro my-when (lambda (test . body) `(if ,test (begin ,@body)))) You can see how easy it is to implement such extensions in Scheme. Macros start with definemacro, receive a name (my-when), expect parameters (here test . body and a ”suitable ” substitution (`(if ...) ). Let’s take a closer look at the substitution: In front of the if-parenthesis is a backtick (inverted single quote). This backtick can be compared to the double quote ( ” ) in shell programming. The already familiar single quote ( ‘ ) on the other hand has a similar function in Lisp and in shells. While in the first case certain characters obtain a special significance ( , and ,@ in Scheme, the dollar sign for shells), in the second case this

Info Newsgroups: comp.lang.scheme, comp.lang.lisp, comp.emacs,comp.emacs.xemacs Homepage of various Lisp projects; i.e. CMU version of Common Lisp: http://www.cons.org Association of Lisp Users: http://www.alu.org Everything about Scheme: http://www.schemers.org Peter Norvig; Paradigms of Artificial Intelligence Programming, Case Studies in Common Lisp; Morgan Kaufman 1992 Harold Abelson and Gerald Jay Sussman with Julie Sussman; Structure and Interpretation of Computer Programs; McGraw-Hill 1996 Oliver Grillmeyer; Exploring Computer Science with Scheme; Springer, Berlin 1997 MzScheme Handbook: http://www.cs.rice.edu/CS/PLT/packages/pdf/mzscheme.pdf Examples from this article: ftp://ftp.linuxmagazin.de/pub/listings/magazin/2001/01/ ■ 82 LINUX MAGAZINE 7 · 2001

special significance is revoked. (See Backtick vs. Normal Quote) After these explanations it would be interesting to see our newly-defined control flow element in action: (my-when 1 0) -> 0 (define foo 2) (my-when (< foo 3) "foo is less than 3") -> "foo is less than 3" Our macro seems to be expanding as required, which we can verify. In order to do this, mzscheme must be called from the command line, since this validation does not work in the Scheme development environment. Here is the expansion of our my-when macro: > (expand-defmacro ‘(my-when (< 1 2)"True")) -> (#%if (< 1 2) (#%begin "True")) The integration of new and old elements is seamless. This creates attractive application areas, such as the ability to configure your software using a language embedded in Scheme, without having to miss out on the advantages of a complete programming language. These advantages are inherent in Lisp, therefore the success of Emacs with Emacs Lisp or the decision of the FSF to use Guile, a Scheme implementation, as their scripting language, should come as no surprise.

The R5RS way If you compare define-syntax to what you already know, you might detect analogies to case differentiation. With define-syntax my-when-new the macro is given a name (my-when-new). my-when-new Macro (define-syntax my-when-new (syntax-rules () ((my-when-new test body ... ) (if test (begin body ...)U )))) After syntax-rules follow a number of patterns in which the macro can appear. In our case there is only one possibility: (my-when ...). This pattern requires first the name of the macro, then a test test and afterwards something like body ... , where the ... represent any number of further expressions. Should a my-when-new in the required form be found, then the subsequent transformation ((if test (... is performed. This substitution does not require special expansion characters. The names of the variables that appear in the template are allocated automatically. To find out how the templates should look please refer to the R5RS report, which you can find in Dr Scheme’s manuals. Go to the menu option Help Helpdesk and select Help Desk Manuals Revised(5) ... . Here is another example, from the report:


078schemeed.qxd

05.03.2001

10:48 Uhr

Seite 83

my-and Macro (define-syntax my-and (syntax-rules () ((my-and) #t) ((my-and test) test) ((my-and test1 test2 ...) (if test1 (my-and test2 ...) #f)))) Pretty impressive stuff. You have implemented an and that works like the one in C, using only six lines of Scheme. The last pattern is of particular interest, it passes several tests to my-and . This is a recursive macro expansion, i.e. this macros is expanded until it contains no further macros. As soon as the expanded form results in a truth value of ‘false’, #f is returned.

,@slots) (lambda (message) (case message ,@(create-getter-clauses slots) ,@(create-setter-clauses slots) (else (error "Method unknown"))))))) The macro define-my-record expects a name, a list of elements (slots), generates a creation method from the first parameter, as well as a ‘get-’ and ‘set-’ method from each of the name elements in slots. All elements in the example can be queried and amended. With a little more programming effort you can add read-only variables, type tests, additional methods and even inheritance.

Summary A more substantial example We will now look at the initial stages of structure definition in Scheme. Access will be restricted to access procedures. The usage is: (define-my-record name Fields). We will then set up a creation method make-name, as well as methods for read- or writeaccess to the various fields. Read-access methods will start with get- , write-access ones with set- . Let’s look again at our example of Scheme data encapsulation. The planned extensions result in a partial automation. (define-my-record account (name balance inteU rest-rate)) (let (( me (make-account ("Friedrich" 1000U 0.06)))) ((me ‘get-name)) -> "Friedrich" (send me ‘get-balance) -> 1000 ((me ‘set-balance 2000))) -> 2000

In these extensions macros are combined with procedures. Here, as an example, the method for the generation of read-access: (define (create-getter-clauses slots) (define (create-getter slot) `((,(prepend-string "get-" slot)) (lambda () ,slot))) (map create-getter slots)) You can see how the different Scheme elements are joined together. An internal procedure is defined. The output of the call to create-getter-clauses corresponds exactly to the form required in case. The access method is generated dependent on the name. So when you use name in define-my-record, the symbol get-name is generated with prependstring ”get-”name. As this is required for all field names, the inner method is applied to all passed elements (map). By calling the procedure you have dynamically created Scheme code! This code is built in to the following macro: (define-macro define-my-record (lambda (name slots) `(define (,(make-new-record-name name)

This article shows how important procedures are in Scheme and how easily they can be applied. On the one hand, this reduces the reluctance to use procedures as parameters or returned values. On the other hand you have to abandon the idea of the separation of data structures and procedures familiar from other languages, in order to use Lisps to their best advantage. Such a change can only come from working with functional languages for a while. One notable feature of Scheme is the generation of code by macros. This shows how a minimalist language with (warning: buzz word alert) orthogonal programming elements can provide enormous flexibility.

Outlook In the next article I will be dealing with Standard Scheme as well as some useful libraries. Also, I will be introducing some ‘specialities’ of the different Schemes. As always, I would welcome any comments, suggestions or criticism. You can contact me at frido@q-software-solutions.com. Or simply visit the Scheme/Lisp newsgroups. ■

The author Friedrich Dominicus has worked with Linux since version 0.99pl13, trying pretty much every distribution at some point and finally ending up with Debian. He is currently developing new software using Eiffel (naturally on Linux) with a handful of other people. He has been a father since August 1998 and really enjoys every new day with his daughter. His hobbies are computers, sport and reading.


084bookreviewed.qxd

01.03.2001

17:28 Uhr

BOOKS

Seite 84

REVIEW

THE LINUX COMPANION BY CHRISTOPHER LYNAS ALISON DAVIES

Info The Linux Companion is published by Prentice Hall, includes a CD Rom of SuSE Linux 7.0 and is priced at £17.99 ■

This book looked promising on the bookshelf. It’s subtitled ‘Everything you need to understand and release the potential of Linux’ and has a cute baby penguin on the cover. The section headings include ‘Why Choose Linux?’, ‘Linux Applications and the Desktop’, ‘Linux Fact and Fiction’ and ‘Linux Information and How to Find It’. As a confirmed newbie I had hoped to find information and tips to help me – things I had not heard of before. Unfortunately there was very little to be found. The book is readable and very well written, though I found all the little ‘Did you know?’ boxes slightly annoying. However, the content is aimed at people who know little of Linux other than the name. This is not a bad thing, we need to encourage as many people as possible to take up Linux and Christopher Lynas is a sound advocate of the cause, but I would have preferred a title which reflected the content a little better. I fear that it may be passed over by its target audience as being too complex, which would be a shame. The Linux Companion is a good basic introduction to Linux, it covers its history and early development, briefly mentions the various distributions, devotes a chapter to embedded systems and describes the current limits of Linux. The author strengthens the case for Linux by giving examples of businesses that have already used it successfully, including NASA, the United States Postal Service and Digital Domain – the company that rendered the graphics for Titanic. A chapter is devoted to why you should choose Linux; it compares Linux to other operating systems and lists the advantages of using Linux. It describes programs that can be used in place of Windows applications and reassures the potential user on the availability of support. Chapter five is devoted to dispelling any myths about Linux, which might be in the minds of potential users. The usual topics, such as ‘lack of support’, ‘lack of security’ or the ‘reluctance to produce software’ are covered. It then moves on to consider the various applications available to businesses that can take the place of Windows products. Emulators and the use of Linux on laptops and Macs are discussed and the chapter draws to a

84 LINUX MAGAZINE 7 · 2001

close by covering viruses (or the lack of). Finally, the growing number of games is explored. One section covers the variety of open source projects and describes what each one does, often giving example Web pages. Another section covers different companies that now support Linux (again providing sample Web pages). Later on, the section deals with how Linux can be used in business generally and where to go for support and training. The appendices address frequently asked questions on both SuSE linux and Linux in general, including how to set up partitions to run a dual boot machine. There’s also a section on tips – some of which have already been discussed in the main text of the book. Nevertheless, it is useful to have them collected together. The book ends with a glossary, though again, it is a little basic for current users of Linux. The aforementioned ‘Did you know?’ panels appear on many pages and are a distinctive feature of the book. These take the form of definitions of various terms. Most of these are general, whilst a few of them are specific to Linux. Most of them are things that you’ll already know, but occasionally there is one that will make you think ‘Oh yes, of course!’ The large number of Web page screenshots makes you realise just how much there is available on the Internet about Linux. If you have not already visited a particular site, these images give you an idea of what to expect. A CD of SuSE Linux 7.0 is included with the book. The disc comes with installation instructions and requirements, along with information on where to go for the handbook and other support. Christopher Lynas is prejudiced towards SuSE, to the almost total exclusion of other distributions – but perhaps it is best to stick to what you are most accustomed to. This book is about becoming comfortable with Linux; it encourages the user to try it out and see what all the fuss is about. The author acknowledges that The Linux Companion may not suit everyone, especially businesses that have already invested heavily in Windows, but it encourages the idea of change, of a challenge to Microsoft. The Linux Companion is probably too basic for most readers of this magazine, but it would make an excellent present for your boss or a friend who has expressed an interest and would like to find out more. ■


085fagIntroed.qxd

05.03.2001

9:26 Uhr

Welcome to the LinuxUser section of Linux Magazine. You’ve found your way back to the LinuxUser pages – your source of information about the latest Linux software as well as easy-to-follow articles for beginners. Creating booklets from A4 formatted documents is an art form in itself. However, when you’ve got a Linux box with the PostScript Tools installed, you can simplify this process a lot. Let Answer Girl tell you how it’s done. So you think KDE’s looks dull? Then you’re lucky – since there are lots of themes out there. One of them is Aquatica, which gives your desktop a look similar to the new MacOS X interface. K-splitter has all the news. In K-tools you learn how to use the KDE Address Book. For those of you who favour GNOME over KDE, we have our regular Gnomogram section. Have a look at interesting news on the alternative desktop project. What to do on the command line? In this issue we show you how to browse the Internet without an X session. You need X? OK, our console based browsers will save some memory then when running them in a terminal window instead of using Netscape and the like. Now as to terminal windows, check out a new flavour: aterm has a number of nice features while requiring just a little RAM. This issue’s last LinuxUser article is Out of the Box – gatO is a frontend to the at command that lets you schedule tasks so that your comptuer can run automatically while you sleep. Enjoy the LinuxUser pages, Hans-Georg Esser

Seite 85

CONTENTS 85 BEGINNERS

This is where you should start in the world of the free. 86 Answer Girl This month, Answer Girl shows you how to print that special poem to your beloved. 92 Ksplitter News from the land of K. How to use themes up brighten up the screen. 93 Ktools How to address the need for a book. 95 Gnomogram The latest news in the Gnome world. Find out what’s happening to your favourite desktop. 97 At the Command Line Making the most of text browsers. 101 Desktopia How to make the most of the AfterStep terminal package

104 SOFTWARE 104 Out of the Box Using gatO becomes a piece of cake! 7 · 2001 LINUX MAGAZINE 85


086thetutored.qxd

01.03.2001

18:54 Uhr

BEGINNERS

Seite 86

ANSWER GIRL

The Answer Girl

BROUGHT TO BOOK PATRICIA JUNG

The fact that the world of everyday computing, even under Linux, is often good for surprises, is a bit of a truism: Time and again things don’t work, or not as they are supposed to. TeX/LaTeX: A professional text editing environment where the formatting instructions, as with HTML, are written as clear text commands in the ASCII document text and converted by the programs latex or tex respectively according to rules of typesetting. Especially good for scientific texts of pretty much unlimited length, but also suitable for letters or folios. dvips: The dvi-to-PostScript converter creates PostScript code from the dvi (‘device independent’, hence the name) format generated by TeX/LaTeX. In most cases dvips is preconfigured such that a dvips filename.dvi sends the PostScript code direct to the default printer. With the option -o filename.ps in this case you are forcing dvips to print it instead to the file filename.ps. ■

The Answer-Girl in Linux Magazine shows how to deal elegantly with such little problems.

Printouts, each placed, in the West at least, with boring monotony page after page each on an A4 sheet, certainly have their proper place in everyday life. But when you would prefer to honour your beloved with the poetry collection you’ve written yourself, then you need to come up with at least a nice A5 notebook, printed on both sides. The paper-saver has less romantic reasons: Printing out the 100 page thesis for proof-reading, on your home PC’s two pages per minute inkjet printer, is not good for either the nerves (inks, like paper, are dear, not to mention the time), nor does the resulting mountain of paper provide any particular motivation to revise. Psychologically, a thinner stack is better. So whether it’s trees, zeal or nerves which need saving – to accommodate several logical pages on one side of an A4 sheet has to be a good idea.

86 LINUX MAGAZINE 7 · 2001

All in one format How nice that with PostScript a standard format exists, through which (almost) all printed matter under Linux has to pass: These are passed in the form of a PostScript file from applications to the print machinery, and as such they can also be turned by hand using the lpr command into the content of a print job. Using the infamous Print to file, from every word processing (and also of course from other applications such as Web browsers, the dvips used by LaTeX scribblers etc.), you obtain a PostScript file which can still be edited before the actual printing. Anyone who now thinks of PostScript as a programming language, which also has to be put into shape by hand with an editor, is not necessarily wrong, yet a glance into the PostScript code (e.g. with


086thetutored.qxd

01.03.2001

18:55 Uhr

Seite 87

ANSWER GIRL

less filename.ps and a q for ”quit” to finish, when the pain has receded) ought to make it clear: This is not something which would fit into a single article but would need a lot more space. So what we need are some tools which take PostScript as an input format, pack several old pages onto one, rearrange them as necessary according to our specifications and at the end spit out PostScript again.

The tool hunt Let’s just see if our clever Manpages have something to offer us here: man -k (-k for keyword) which is often also found under the name of apropos, should at least throw light on the question of whether it is in fact worthwhile tackling this problem with installed on-board resources. [trish@lillegroenn answergirl]$ apropos postU script [...] mpage (local) - print multiple pages perU sheet on PostScript printer [...] pstops (1) - shuffle pages in a PostScriptU file Although there is a whole pile of tools involved somehow or other with conversions to and from PostScript, after an introductory reading of the short descriptions there is not that much left – and it doesn’t even say that your own distribution and your installation spits out precisely what you see above. As querying the packet manager shows, pstops is hidden in the packet psutils (which comes with most distributions, but in case of doubt it can be found at http://rpmfind.net/linux/rpm2html/search. php?query=psutils): [trish@lillegroenn answergirl]$ rpm -q -f `wU hich pstops` psutils-1.17-3 The ”Red Hat Packet Manager” receives queries (”queries”) with the option -q . We tell it what we want to know with -f: in this case, to which packet the following specified File belongs. Since a file is only unequivocally specified when not only its name (pstops), but also the associated directory path is specified, it is not enough simply to say -f pstops. In the case of programs existing in the search path you can find out, though, with which programname, where they are. If we enclose this command in Backquotes (``), then it evaluates the shell first and sets the result (in most distributions /usr/bin/pstops) into the query command so that we actually ask for rpm -q -f /usr/bin/pstops. mpage on the other hand is usually in a packet of the same name, which can be found in case of doubt at http://rpmfind.net/linux/rpm2html/search. php?query=mpage.

BEGINNERS

Cutting your coat according to your cloth A brief look at the Manpages for pstops and mpage promises the solution for ambitious booklet publishers with the former of these tools, but the latter seems easier to use. Since it also appears to be tailored perfectly to the task of ‘Cutting stacks of paper down to size by printing several logical pages on one side of A4’, we will first let our laziness win. mpage is often preconfigured such that its output goes direct to the default printer. What is useful later is something we want to avoid right now, since what’s the point of saving paper, if on the way there we produce masses of test printouts? As befits a proper Unix filter program, mpage can divert its PostScript output via the arrow > into a file. With time-served PostScript display programs such as gv and ghostview or the KDE alternative kghostview (which can also be used from the KDE file manager via Drag & Drop) the test file thus produced can always be inspected, before capturing it on paper. Thus equipped, the first mpage exercise is not hard: If one believes the Manpage, mpage -2 thesis.ps > proofreading.ps captures the file thesis.ps on the virtual sheet such that an oddnumbered and the following even-numbered page (thus a total of 2) land on one A4 side. Neatly, mpage has drawn a pretty frame around each logical page – but when printed out, this, together with the entire content of the page, is sitting anything but centred on the A4 sheet. There must be something wrong with the format... In actual fact, mpage has the option -b, after which the paper format has to be specified without blank spaces. If the brief description of the program available with mpage -x declares as follows:

stdin: The standard input, in the shell normally the keyboard. Here in Netscape this statement only shows that the print editing goes, not direct from the file displayed, but via filters, whose output applies as in a Pipe (|) as standard input for the next command ■

-b papersize: A4|Letter|Legal (default US leU tter) that the compiled default is the US letter format, this offset is no surprise. Then there is nothing for it but to enhance the mpage command by -ba4, as long as we are printing on A4. Just when you want to capture unnumbered pages on paper, nevertheless, (like those produced for example by Netscape 4.x under File/Save as..., when selecting as Format for saved document the format PostScript), an -X helps, which perpetuates the name of the file and the date in the header, when keeping order. The option -o as in ‘outlines off’ switches off the frames created by default around each individual logical page. All this can of course be used in Netscape etc. even without dumping into a real PostScript file: An mpage -ba4 -X | lpr as Print Command as shown in Figure 1 File/Print dialog prints the displayed Web page together with page numbering and with the source stdin on A4 paper, where – the option -4 7 · 2001 LINUX MAGAZINE 87


086thetutored.qxd

01.03.2001

18:55 Uhr

BEGINNERS

Seite 88

ANSWER GIRL

Figure 1: Affecting the print output of Netscape with mpage

Figure 2: Default arrangement of logical pages with mpage: on the right the output material was in landscape format, left in portrait format

Portrait/Landscape: Upright or horizontal format. []: In the Backus-Naur notation, in which the Manpages in section Synopsis specify the whole syntax of a command at a stroke, arguments in square brackets are optional. ■

does not need to be stated at the same time as default setting – four logical pages land on one page of A4. These are then arranged as in Figure 2 – left, if Netscape orients the logical pages in Portrait format, right in Landscape, before mpage gets a look in. If, on a page in portrait format, you want to have the logical pages 1 and 2 at the top from left to right and then 3 and 4 underneath, you have to select the mpage option -a. The alert Manpage reader has of course already noticed that mpage, in addition to other exciting options, also controls one which makes piping the mpage output into the print command lpr (if necessary at all) superfluous: mpage -P prints out on the standard printer on its own (as already mentioned this flag can, if necessary, be left out altogether, depending on the pre-configuration), with -Pprintername another installed printer is selected with lpr. Yet with all this abundance of mpage options, there is no hiding the fact that disappointment is on the way: booklets cannot be produced with -E (every 1st and 4th page together on one page) and -E (every 2nd and 3rd page on one page) – unless this is a very thin booklet, consisting of just one sheet of paper.

Order out of Chaos This is where pstops by its very name recommends itself as a panacea in matters of internal PostScript conversion. But not even this tool can perform magic and it expects the source file to comply with the conventions for structuring of PostScript documents (Document Structuring Conventions – DSC) of the PostScript inventor Adobe. Unfortunately not all PostScript outputting programs do this, nor does pstops have control of all DSC requirements from A to Z, so it can happen that the tricks of pstops fail. But that’s no excuse. Now is the time to be brave and look the pstops Manpage right in the eye. And so that we can see the wood for the trees,

88 LINUX MAGAZINE 7 · 2001

it’s a good idea to specify just what we want. We would like to print out our poetry collection in such a way that it becomes a booklet. For this to work, the number of logical pages must be divisible by four – pstops will add as many blank pages at the end as necessary so it fits. On the front page of a sheet of A4, then, the first (right) and the last (left), the third (right) and the last but two (left) etc. On the back of sheet 1 come page 2 (left) and the penultimate page (right). A 12-page booklet looks like the one in Table 1a. But since we cannot feed pstops with a table like that, we must formalise the whole thing a bit. If we count thoughtfully through the pages to be printed so that we start again at 0 every four pages (so with twelve pages, 0 1 2 3 0 1 2 3 0 1 2 3), the following scheme results: On the first front page to be printed, on the right there is the first, not yet printed, logical page, which was thoughtfully marked with 0 during the count. On the left next to this is placed the last unprinted page, thus the first page from the back, where dividing the number of pages minus 1 by four produces the remainder 3. On the back page with its back to the last page comes the second page from the back (remainder: 2), on the left next to this is placed the second page from the front (remainder 1). The entire procedure – we divide the number of pages-1 by 4 and write down the remainder – incidentally, this is known as modulo division. The first four logical pages are thus crossed off the list, the old page 3 becomes the new logical page 1, and we start again at the beginning with the modulo numbering: 0 1 2 3 0 1 2 3. Here, surprise surprise, the pattern repeats itself: the next front page contains the first page from the back with remainder 3 and the first page from the front with remainder 0. The back page in turn is shared by 1 from the front and 2 from the back. The same little game is repeated with the remaining four logical pages, and with the pattern thus found (cf. Table 1b) we have found the start of the page print specification, which is stated thus in the pstops Manpage: pstops [...] pagespecs [...] [...] pagespecs follows the following syntax: pagespecs = [modulo:]specs specs = spec[+specs][,specs] spec = [-]pageno[L][R][U][@scale][(xU off,yoff)] We have the divisor 4 for the modulo value, the front pages’ specs begin with the spec for the left page: a -, because we want to have one page from the back, followed by the pageno 3. As we still need a spec for the right page as well, there is a + and a new spec: no minus this time, as we take a logical page from the front, and as pageno we had discovered the 0. This means the pagespecs for all printed front pages so far read: 4:-3+0


086thetutored.qxd

01.03.2001

18:55 Uhr

Seite 89

ANSWER GIRL

BEGINNERS

Similarly a look at Table 1b helps to write out the page description found so far for the print back page: 4:1+-2

Rotate, move, reduce in size This is all very nice, but how do we just get two logical A4 pages onto one? Quite simple, you say: they just have to be rotated through 90 degrees, reduced by half and moved into the right place. Unfortunately we find out from the Manpage on pstops that these operations are not always executed in the sequence 1. Move by xoff in x-axis and yoff in y-axis, 2. 90 degrees rotation anticlockwise (L for ”left”), clockwise (R – ”right”) or 180 degree rotation (”U-turn” – U) and if necessary 3. scaling to scale of the original size. The best thing to do is take a couple of sheets of A4 paper and play around a bit with the geometric operations. If we lay down the sheet in portrait format (which is the usual way for most printers) after all the transformations, we must land back in this format and at this point. If we decide to turn the sheet anticlockwise by the left bottom corner, then accordingly there is nothing else for the bottom left corner of the future left half of the sheet than to land at bottom right. To do this we must first move the portrait-format sheet horizontally, by a distance equal to its width (Figure 3). Since an A4 sheet is 21cm wide and 29.7cm long, we expand our pagespecs for V=front pages to

= 14.85cm. If one compares the widths of A5 and A4 (14.85cm : 21cm) or again, the lengths (21cm : 29.7cm) with each other, then one obtains the scaling factor 0.7. Figure 6 shows that we are spot on with this and can thus expand our page specifications as follows:

Figure 4: 2nd step: Anticlockwise Rotation

4:-3L@0.7(21cm,0)+0 4:1L@0.7(21cm,0)+-2 This leaves the right pages: When it comes to rotation and scaling, we can leave everything the same: 4:-3L@0.7(21cm,0)+0L@0.7 4:1L@0.7(21cm,0)+-2L@0.7 To do this, all we need do is move our A4 sheet a bit differently at the beginning: not just the 21 horizontal centimetres, but also by half the A4 length (thus 14.85cm) upwards (Figure 7).

Figure 5: Wrong: Reducing page dimensions by half

4:-3(21cm,0)+0 and for back pages to 4:1(21cm,0)+-2 Then we can rotate undisturbed as in Figure 4 round to the left by 90 degrees, which our pagespecs expands as follows: 4:-3L(21cm,0)+0 4:1L(21cm,0)+-2 The left page is now such that all we have to do is reduce it so that it comes to lie in the appropriate place at the right size. A5, the target size, is half as big as A4. But anyone who now simply halves length and width reaches a wrong answer, as it is too small, as Figure 5 shows. This is not surprising because the halving relates not to the dimensions of the page but to the area. Stupidly, pstops, when scaling, is not interested in the ratio of the area and actually wants to see side ratios where different scalings in x- and y-axis are not possible. A look at Figure 5 or the living paper object luckily shows that the rotated page must be reduced until the longer side corresponds to the old A4 width. The width of an A5 page in turn corresponds to half of the A4 length, thus 29.7/2cm

Table 1a: sheet division for a 12-page A5 booklet A4-sheet No. Front page left right 1 12 1 2 10 3 3 8 5 Table 1b: ... reduced to a formula Pages not yet taken into account counted from 0 to 3: 3 0 From the front (+) or from the back (-)? +

Back page left 2 4 6

right 11 9 7

1 +

2 -

7 · 2001 LINUX MAGAZINE 89


086thetutored.qxd

01.03.2001

18:55 Uhr

BEGINNERS

Seite 90

ANSWER GIRL

single pagespec, modulo: must appear only once at the beginning: pstops -pa4 ”4:-3L@0.7(21cm,0)+0L@0.7(21cm,U 14.85cm),1L@0.7(21cm,0)+-2L@0.7(21cm,14.85cmU )” poetry.ps poetrybook.ps The less-fortunate users of single-sided printers generate two files for the front pages... pstops -pa4 ”4:-3L@0.7(21cm,0)+0L@0.7(21cm,U 14.85cm)” poetry.ps poetrybook-front.ps ... and the back pages: pstops -pa4 ”4:1L@0.7(21cm,0)+-2L@0.7(21cm,U 14.85cm)” poetry.ps poetrybook-back.ps

[top] Figure 6: 3rd step: Reducing the area by half [above] Figure 7: Steps 1 to 3 for future right page halves

This means our final pagespecs look like this: 4:-3L@0.7(21cm,0)+0L@0.7(21cm,14.85cm) 4:1L@0.7(21cm,0)+-2L@0.7(21cm,14.85cm)

Well printed, tiger People with printers which automatically print double-sided now have it easy as they can write all the pages at once into a file: pstops -pa4 ”4:-3L@0.7(21cm,0)+0L@0.7(21cm,U 14.85cm),4:1L@0.7(21cm,0)+-2L@0.7(21cm,14.85U cm)” poetry.ps poetrybook.ps As page size we specify with -p (for ”page”) a4. The error message pstops: page specification error: <pagespecs> = [modulo:]<spec> <spec> = [-]pageno[@scale][L|R|U] [(xoff,yoff)][,spec|+spec] modulo<=1, 0<=pageno<modulo [right] Figure 8:The selected page is marked with the third marking button under Redisplay in gv

gives us a shock, though, and sends us back to a thorough study of the Manpage. In fact, to combine the specifications for front and back pages into a

90 LINUX MAGAZINE 7 · 2001

... and have to place the stack of paper from the ”lpr poetrybook-front.ps” print run back in the paper tray. In multi-user environments it is advisable to wait to do this until a time when other users are unlikely to be printing, so that you don’t suddenly find a business letter from your colleague on the back of your most passionate love poem. But even if the timing is right, you still have to find the right position for the sheet of paper – not always a simple task. This undertaking is best approached by loading poetrybook-front.ps in gv or similar, merely marking the first page (Figure 8) and printing out just this one with Print Marked. If you have not found out how the first page of poetrybook-back.ps will be correctly reproduced on the sheet thus printed, you can test the first two pages to find out if the sheets printed with poetrybook-front.ps are also actually arranged such that the pages in poetrybook-back.ps really do end up on the back of the appropriate front pages. If at this point you find that the printer spits out the poetrybook-front.ps pages so that poetrybookback.ps is better printed with the last back page first, mpage -r -1 -o for example may be of assistance. ■


092ksplittered.qxd

01.03.2001

17:47 Uhr

BEGINNERS

Seite 92

KORNER

K-splitter

DESKTOP FACELIFT STEFANIE TEUFEL

Who says there is no place for gossip and scandal in a Linux magazine? Each month, K-Splitter noses around here and there behind the scenes to bring you the latest news from K-World.

Thematic If you’re anything like me you’ll never be able to get enough KDE Themes. It’s good news then, that Version 2.0 of KDE comes with a few of these dainty treats. Slowly but surely, the first themes for KDE 2.0 are rolling in. Aquatica can now be obtained from http://kde.themes.org/ . But before you get yourself some of that maritime mood on your desktop, you first have to install it. To do this, unpack the graphical surprise package Aquatica-KDE2.0.tar.gz. After this there should be a new folder on your hard drive called Aquatica with two sub-folders pixmaps and themes. Copy the file aquatica.themerc from the themes folder into the directory .kde/share/apps/kstyle/themes in your home directory. Under pixmaps there is another folder called aquatica, in which a whole range of png files is situated. Copy the entire folder to

Aquatica Theme LinuxMagazine/ksplitter/

~/.kde/share/apps/kstyle/pixmaps. If there is no pixmaps folder in this directory, don’t panic – simply make one. If you’d like to enjoy the appropriate background image, copy the file Background.png from the folder Aquatica to $KDEDIR/share/wallpapers. Still with me? Good, now open the KDEControlCentre, click on the menu point Display/Design/Style and select the hopefully newly available entry Aquatica. After that, turn your attention to the point Display/Desktop/Background, and then opt, with the tab Backgroundimage, for Background.png. Et voilà – your desktop looks all wet suddenly (Figure 1). If you don’t like the pre-set size for the scrollbars this can easily be changed to suit you. To do this, insert in the aqua.themerc file, under the [Misc] section, the following line: ScrollBarExtent=20

PNG: Short for Portable Network Graphics, this was conceived as the format to succeed GIF. This graphics format has a range of remarkable properties. For example, colour images up to 48 bit colour depth, grey scales up to 16 bit or inspecting a file for damage. PNG itself does not support animation or several images in one file. But there is a PNG extension named MNG (short for Multiple Image Network Graphics) being discussed. Compression is loss-free, as with GIFs. KDEDIR: This variable, as it is set, should contain the root of the KDE file tree. As a rule this is /opt/kde, although in the latest versions Red Hat has (like Debian) decided on /usr. $: The dollar sign before a variable name signals to the shell that one wishes to access the content of the variable. Pixel: Smallest unit on a PC monitor. Usual resolutions are 72 pixels per inch (PCI). Stringing these pixels together creates letters and graphics. ■

92 LINUX MAGAZINE 7 · 2001


092ksplittered.qxd

01.03.2001

17:47 Uhr

Seite 93

KORNER

BEGINNERS

[left] Figure 1: The desktop’s new clothes [right] Figure 2: A whole new typeface

The number represents the number of pixels. The higher you select this, the fatter the bars become.

Black on white Still a bit shaky, really only to be used by hardcore users with hacker experience, but all the more promising, are the latest things from the font front. Kurt Granroth from the KDE team has compiled a KDE version with the assistance of the Qt extensions from Keith Packard, the applications of which use anti-aliased fonts. The results can be seen in Figure 2.

Update If you are annoyed by one or more of the bugs in Version 2.0 or have not yet dared make the version leap: KDE 2.0.1, and since 26 February 2001, even Version 2.1 is here. KDE 2.0.1 mainly contains some important bugfixes for the initial 2.0 release whereas in KDE 2.1, there are a lot of new applications. For further details about the impressing improvements look at http://www.kde.org. Sources and RPM packets of both new KDE versions can as usual be found for the various distributions on the KDE FTP server ftp.kde.org. ■

Anti-aliased: Aliasing refers to the stair effect at the edges of graphics, especially of text or lines, due the fact that with pixels truly straight lines can really only be displayed as vertical and horizontal lines. The countermeasure (inserting shading pixels in the steps of the stairs) is accordingly referred to as anti-aliasing. ■

K-tools

WELL ORDERED STEFANIE TEUFEL

In this column we present tools, month by month, which have If you aren’t blessed with a photographic memory, then you’ll have to consider alternative methods of keeping your most important addresses, telephone numbers and e-mail addresses handy. If you are aware of this problem you should also be aware of Kab, the KDE address book. I know, computer address books are usually pretty dreadful, as they often use a proprietary file format and thus other programs such as mail readers or organisers are unable to access the virtual address card index. Intensive work has been – and still is – going on within the KDE Project on Kab, so that at some point it will be possible to say for all KDE applications: An address book for all. The nicest thing about it: Kab does not usually have to be specially installed, since it is a component of the basic packet. In Version 2.0 it is hidden away in

proven to be especially useful when working under KDE, solve a problem which otherwise is deliberately ignored, or simply highlight some of the nicer things in life, which – once discovered – you simply couldn’t live without. the kdepim packet or can be installed independently as a kab packet. Users of earlier versions need not worry about their details from the days of KDE-1.x, because the new Kab makes a backup of the old datasets. The data itself can be read into the new version at any time via File/Import/KDE1-address book (Figure 1). To do this, though, you must first start the program by bravely entering kab & in a terminal emulation or via K menu, Utilities/Addressbook.

Proprietary: 1. Manufacturerspecific; 2. Encumbered with undocumented or secret characteristics and as a result, usually incompatible with other systems. ■

7 · 2001 LINUX MAGAZINE 93


092ksplittered.qxd

01.03.2001

17:47 Uhr

BEGINNERS

[top] Figure 1: Changing over made easy

[left] Figure 2: Kab in all its glory [right] Figure 3: The right visiting card for each person

[above] Figure 4: Telephone number orgies are something you’ll prefer to create yourself [right] Figure 5: If it’s that easy, you simply have to send a mail

Seite 94

KORNER

How does Kab work? The structure of the address book is relatively simple. For each new dataset, a visiting card is made, in which personal or business details such as surname, forename, company, title, birthdays or address of home page are entered. Using the buttons [|<–], [<–], [–>] and [–>|], which picturesquely frame the pulldown menu with the address entries, you can leaf back and forth at will between the individual visiting cards and skip to the first or last entry. One click on one of the three icons next to the arrow keys – and you can now create a new entry if

you like, edit an existing one or remove a disgraced business partner from your databank at a click. The status line at the lower end of the window shows the number of total entries and the serial number of the current entry (Figure 2).

What now? If you’ve previously been recording contacts elsewhere you’ll now be faced with the timeconsuming task of typing them in.

To make a new card with the details of your friends, relations, acquaintances and business partners, either open the Edit field in the menu list with the mouse and click on Add entry, or memorise the key shortcut (Ctrl+A). This may be quicker in the long run – especially if you have a lot of friends to take into account. Fields such as Title, Forename, Second Name, Surname should be self-explanatory. With the field Formatted Name you can define the text displayed as names on the visiting card. Normally the program compiles this itself out of the aforementioned fields. If it makes mistakes when doing so or you wish to deviate from the standard specification for a certain person, enter the precise notation in the field Formatted Name. As soon as you feed data into this field, this replaces the normally displayed name line (Figure 3). Since the trend is now, as well as stationary and mobile phones, more and more towards the second telephone and third mobile, Kab provides you with an extra tab for telephone and fax numbers. Under Telephone you can seek out the fields you need in the pulldown menus in the column Type, and complete these exactly as you please (Figure 4). Kab allows you to enter a huge amount of data for one person. These are not always meaningful, because few would believe that the details of the position, department or firm of your bowling partner are of any great relevance. For this reason, Kab only displays the data in the visiting card field that contain details. E-mail and Talk addresses and the URL of the homepage are entered separately. To do this, click on the button E-mail addresses..., Talk addresses... or URLs..., and add the appropriate data (Figure 5).

Mail back soon! Talk: Direct, synchronous connection between two users on remote computers to exchange brief textual information. To be able to talk successfully to another person, you need the specific computer name and the user ID of the person on that computer. Furthermore, the user being addressed must be logged in on the computer and accept the call. Because of security loopholes in many implementations and the fact that the majority of users now no longer work on Unix computers with permanent connection to the Internet, but on home PCs with changing IP addresses, Talk has now lost some of its importance. URL: Uniform Resource Locator, the unique details of a resource on the Internet. For example: http://www.linux-magazine.co.uk/ ■ 94 LINUX MAGAZINE 7 · 2001

As soon as you have specified an e-mail address for an entry, Kab enables you, by activating the menu point Edit/Send e-mail (or the key combination Ctrl+M) to start KMail, whereupon the e-mail address and name of the recipient are automatically transferred into the appropriate fields of the mail program. A similar automatic mechanism comes into play with URLs. If you have entered one on the visiting card, a click on the menu point Edit/Browse (or the key combination Ctrl+B) starts Konqueror, and you can get a direct idea of whatever your business partner is getting up to on his homepage. ■


095gnomogramed.qxd

01.03.2001

16:18 Uhr

Seite 95

GNOMOGRAM

SOFTWARE

GNOME news and programs

GNOMOGRAM BJÖRN GANSLANDT

GNOME and GTK as the basic programs for GNOME have in recent years been attracting more and more followers. There are now programs for almost every task and new ones are being added daily. Each month in the Gnomogram column we present the pearls among the GNOME tools and reporting on the latest GNOME rumours.

GNOME under Windows Global Technologies Ltd. have now succeeded in getting the GNOME Desktop to run under Windows. This was done by using the software U/Win, which makes it possible to use the Unix-API under Windows, and an X Server for Windows. Thanks to U/Win, scarcely any changes had to be made to the GNOME source code (just 100 lines according to the developers). Although this project is very interesting there are still many features lacking, and the additional X-Server or U/Win are not exactly going to add to the performance and stability of the system. In the long term it would seem more promising to use the Windows ports of GDK/GTK.

Dell and Eazel co-operate Dell wants, with the launch of GNOME 1.4, to supply end-user PCs or laptops with pre-installed Linux and Eazel Services. Dell also wants to invest an as-yet-unnamed sum in Eazel. Dell, formerly highly Windows-oriented, is thus continuing a whole range of investments in Linux companies.

Debian joins the GNOME Advisory Board Debian has now joined the GNOME Advisory Board and will henceforth be represented there by Wichert

Akkerman, who took over the running of Debian in 1999. This means that almost all the big distributors, apart from SuSE, are now members of the Board, which appears to be restricted to the KDE League, although it does employ an important GNOME programmer in the form of Martin Baulig.

Orbit port for the Linux kernel Under the name kOrbit an experimental kernel port from Orbit, the GNOME ORB, has been programmed. An ORB (object request broker) is a sort of middleman for CORBA objects, which (in principle regardless of the programming language) can be requested by a program. This makes possible a technology such as Bonobo, with which objects such as a PDF viewer can be loaded easily into programs. Since it not only does not matter in which programming language the program was written, but also where it is executed, it is possible with kOrbit to execute kernel modules via a network on other computers. Also, the modules are not executed, as they usually are, in the kernel space, but in the user space, thus like a normal program, which makes debugging experimental code easier. On the other hand kOrbit still represents an enormous security risk and does not

gtetrinet 0.4.1, solfege 0.7.26 LinuxMagazine/gnomogram

7 · 2001 LINUX MAGAZINE 95


095gnomogramed.qxd

01.03.2001

16:18 Uhr

RUBRIK

Seite 96

SUBRUBRIK

the game using the T key, but this is not recommended due to the ever-increasing speed.

Solfege [left] Figure 1: The game is practically won [right] Figure 2: To recognise all types of tone by their sound takes a bit of practice

exactly make the kernel slimmer. For this reason, it is highly unlikely that this patch will find its way into the standard kernel. Nevertheless it is an impressive project with interesting possibilities – exactly what the merging of computers and network is all about.

Gtetrinet The author Björn Ganslandt is a student and a passionate bandwidth squanderer. When he is not involved in trying out new programs, he reads books or plays the saxophone.

URLs www.gtlinc.com/gnomedesktop.html www.research.att.com/sw/tools /uwin/ www.zdnet.com/zdnn/stories/ news/0,4586,2659624,00.html www.debian.org/News/2000/ 20001121 korbit.sourceforge.net gtetrinet.sourceforge.net tetrinet.org solfege.sourceforge.net theopenlab.uml.edu/pygtools/ www.python.org www.goice.co.jp/member/mo/ timidity/ www.lilypond.org ■

Another Tetris clone is not something worth writing about, but Gtetrinet can do more than a normal Tetris. With Gtetrinet a game with up to five other players is possible via a Tetrinet server where, depending on the server, somewhat different rules apply. Similarly to networked Gameboys, it is possible to play ‘pure’. In this mode, if you complete two or more lines in one go, all your opponents have one to four lines added. The same rules apply in normal mode, but in addition there are also special blocks there, which can be used for attack or defence. Such blocks can for example empty one’s own field or place blocks randomly spread in the playing field of the opponent. They can be applied by specifying the number of players or deleted with the D key. A list of Tetrinet servers together with general information on the game can be found at the tetrinet.org site. But not all servers will co-operate with Gtetrinet; some will insist on special clients such as Tetrifast. On the server, you can chat with the other players in the Partyline window and select various games, where IRC commands (listed with the command /help) are used. The first player in a game becomes the respective Moderator and can start and end the game. Players can also combine into teams. In this case, in the Winlist, instead of one’s own name, that of the team is stated. For each game, depending on how long one remains alive, one can receive one to three points, so it may take some time for an entry in the Winlist to occur. It is also possible to talk to the other players during

96 LINUX MAGAZINE 7 · 2001

All musicians have to get to grips with the basics of making music sooner or later. This includes the ability to recognise specific intervals and tones or rhythms. Solfege is a program for GNOME with which you can train your musical ear, with exercises ranging from triads up to twelve-tone scales. The program is written in Python, which means you have to install the Pygnome or Pygtk bindings (and Python, of course) yourself. All the sounds are emitted via MIDI; but even without MIDI support on the sound card all the exercises can be played back via Timidity – Timidity converts MIDI data into the wav format and passes this on to the sound card. The MIDI settings can be found under File/Settings/ Sound Set-up, where the MIDI device can also be changed if necessary. It is interesting that Solfege can be expanded by so-called ‘lesson files’ especially for school use. In these lesson files individual exercises can be defined, making use of the notation of Lilypond. Overall, Solfege is a very useful program for training one’s own ear, even if the interface sometimes takes a little getting used to.

URL Handler Programs which rely on the GNOME URL Handler start Netscape for Internet sites by default even when another browser has been assigned to the Mime type html. This setting can, however, be altered in the Control Centre under Handling documents/Opening URLs, by changing the entry default to mybrowser %s, where %s stands for the URL. The pre-set for default is gnome-moz-remote – >newwin %s – a script Netscape starts, if it is not yet active, and otherwise opens a new Netscape window with the specified URL.. A mail program can also be set by making an entry for the protocol mailto – but when doing so one must take care as not all mail programs can cope with the address given and there may be a ‘mailto:’ at the start of the recipient’s address. ■


097commanded234.qxd

02.03.2001

11:09 Uhr

Seite 97

AT YOUR COMMAND

BEGINNERS

Lynx, links and w3m

SURFIN’ ON THE COMMAND LINE HEIKE JURZIK

Fast surfing in text mode, obtaining information from the World Wide Web without a graphical user interface or converting HTML documents into easily legible text files –all this and more is offered by programs such as lynx, links and w3m. These resolve such problems as displaying frames or tables with varying degrees of success. There are also some differences in ease of use of the individual browsers. Here is an overview of what can be done with surf tools on the command line.

Taking that bit longer – lynx The program can be started from an xterm or from the console. You can specify either a direct URL or local HTML file, so for example: lynx www.linux-magazine.co.uk lynx ~/linuxmagazine/atyourcommand.html By default a short overview of the most important commands is included in the bottom three lines. With h or ? you can go to the online help files for lynx at any time. The program can be used with or without mouse support; there is a whole range of key combinations available for

HTML: Stands for HyperText Markup Language and refers to the format for documents on the World Wide Web. HTML instructions, so-called tags, are shown in pointed brackets, e.g. <H1>Text</H1> for a first-level caption. frame: This means a sub-division of the browser window into further smaller windows. Each of these sub-windows can display its own documents independently of the other windows. URL: A World Wide Web address, the abbreviation stands for Uniform Resource Locator. Each of these addresses is a unique assignment to a page that is located on the net,(http://www.linux-magazine.co.uk/index.html for example). The simple syntax is: http://host/path, where host is the computer to which a connection is to be made, and path represents the document which will be displayed. ■ 7 · 2001 LINUX MAGAZINE 97


097commanded234.qxd

02.03.2001

11:10 Uhr

BEGINNERS

Seite 98

AT YOUR COMMAND

this (see Table 1). Many commands are assigned several options: the Right Arrow key activates a link in the same way as pressing the Return key, for instance. Apart from the interactive commands lynx can also be provided with a few parameters right at the start. The command lynx -accept_all_cookies does exactly what you would expect: All Cookies are accepted without any interaction by the user. Otherwise you will be asked when calling up such a page: www.site-with-cookie.co.uk cookie: session-iU d=302-8162141-3688069 Allow? (Y/N/Always/neVer)

Cookies are pieces of data that are transferred from a server to the browser. In plain English, this means that a special Header is delivered with the Web site, which the browser may or may not store. If you do store these pieces of information and access that Web site again, you send your own cookie together with the query back to the server. This mechanism makes many things possible: the user’s default settings can be stored and this means individual web pages can be designed for the user. Header: The Hypertext Transfer Protocol, by means of which documents of all kinds are transferred on the World Wide Web, adds a few bits of information to these, which are served up in the form of feature-value-pairs: A specific header thus receives a specified value. When the browser calls up a Web site, it receives, internally, e.g. the following reply: Date: Thu, 21 Dec 2000 15:58:10 GMT, Server: Apache/1.3.12 (Unix)... etc. ■

Now you can decide whether you agree to accept this cookie (Y), refuse it (N), accept all cookies regardless during this session (A) or always refuse them all (V). It is practical to start with the parameter book – as starting page. You will see a list of your own personal bookmarks. If you want to test some home made HTML pages on the console, start lynx with the extension -editor=vim (or any other editor of your choice). If you now type in e, you can edit the just-displayed page directly in the editor. After closing the editor, you can reload the HTML file with Ctrl+r (for reload) and, if working on a local computer, you should add the option localhost. HTML files can be converted into easily legible text, by the way, with the -dump option. A command such as e.g. lynx -dump http://www. linux-magazine.co.uk/output/2001/02/ index_html > linux-magazine.txt produces a really clear document:

LinuxMagazine: February 2001 Title:The Great Notebook Test 34 COVER FEATURE: THE GREAT NOTEBOOK TEST Take 10 of the latest and greatest notebookU s covering a range of prices and sizes. Add [...] Incidentally, you can define a whole range of settings so as not to have to set the parameters for lynx every time you start up – type o after starting the program to install the options. Watch out: Before going through all the settings, activate, right at the top of the menu, Save options to disk: [ ] (press the Return key, when you are over the link). Now page down with the arrow key and take a closer look at the individual points. With fields in pointed brackets ([ ]) you can use Return to reach a selection window in each case. In User mode: [Novice___] if you select Advanced, the automaticallydisplayed help functions of the program disappear – you then have an extra two lines in the window. In text fields, in Editor: ____, you enter something direct. If everything has now been set to your liking, select either Accept Changes to activate or Reset Changes, to return everything to its original condition. All settings you make via this option menu land in the file .lynxrc in your home directory. Naturally, you can also make changes directly in this configuration file, but be careful: The next time you save new settings via the options menu, the file will simply be overwritten.

Table 1: The most important key combinations Command Function Arrow Up, Arrow Down page back and forth through the links Arrow Right or Return follows a link Arrow Left goes back to the previous page k delivers a complete list of available commands d downloads the page invoked (with all graphics) g go to specified URL G go to last URL; also offers the options of editing this further l lists all links of the document o offers the facility of changing the options for lynx p print options, e.g. print out a page on a local printer q ends the program by asking whether you really want to leave lynx Q ends lynx without challenge a adds the pages called up to your own bookmarks v gives an overview of the bookmarks that have been stored r deletes a bookmark (with safety challenge) z stops the connection being made to the page Ctrl+a jumps to the start of the page Ctrl+e jumps to the end Ctrl+r reloads the page ! allows a command to be input on the shell / allows a search for a term in the current document Del shows the History (the most recently visited pages)

98 LINUX MAGAZINE 7 · 2001


097commanded234.qxd

02.03.2001

11:10 Uhr

Seite 99

AT YOUR COMMAND

Browsing with links Immediately you start up this browser a configuration file is set up in your home directory. If you have not specified a URL or local HTML file when starting the program, at first you will see just an empty window. Press the Esc key, and a menu appears on the upper edge of the window. Use the right arrow key to reach the item Setup/Settings and configure the program according to your own wishes. links is capable, just like lynx, of displaying colours – always on the condition that your terminal supports this feature. When you have configured everything the way you like it, you must select, in the Settings menu, the last point Save options, or else links forgets all of your configurations after leaving the program. You can completely control the program – as can the other browsers – using the keyboard

BEGINNERS

commands. In addition to this, links can be used very easily with the mouse. To reach the menu you can bypass the use of the Esc key and instead click with the mouse in the top line in the terminal. One feature that is especially useful is that the keyboard command is listed for every function. After a while you will simply pick up all the most important abbreviations for the individual commands. But with the mouse, there’s a lot more you can do: To follow a link, click on it with the left mouse key. If you click with the right key, a context menu opens, in which you have the option of following the link, of opening it in a new window or starting a download. If you want to mark text, hold down the Shift key and only then mark the text with the mouse. Apart from the fact that links can display frames and tables properly (see Fig. 2), you can

Table 2: Control commands for w3m Command Function Spacebar leaps forward a page at a time through the file b leaps back a page at a time through the file > lets the display move completely over to the right < lets the display move to the left g goes to the first line of the file G goes to the last line of the file Tabulator jumps to the next link Esc Tabulator jumps to the previous link Return follows the link U opens a URL u displays the URL of the link at the bottom of the window v displays the HTML source text of the document V loads a new local file B goes to the previous page/file a (only in the link itself) stores link in file Esc a adds the page to Bookmarks Esc b displays your own Bookmarks R reloads the page s displays the most recently visited sites in the History Esc s saves the file to your own hard disk / searches forwards for a term ? searches backwards for a term H calls up Help, delivers a complete overview via the keyboard commands o switches to the Options menu

[left] Fig. 1: Correct Tables and Frames with neat menu control under links [right] Fig. 2: The same page with lynx – still some room for improvement here

MIME-Type: This means Multipurpose Internet Mail Extension. MIME types are predefined file types with precisely defined file endings. This mechanism makes it possible to transport file types, via the World Wide Web or by e-mail. This only works where these types are known by both sender and receiver. Normally these items of information are stored in a file named mime.types (in most distributions under /etc/mime.types). ■

7 · 2001 LINUX MAGAZINE 99


097commanded234.qxd

02.03.2001

11:10 Uhr

BEGINNERS

Seite 100

AT YOUR COMMAND

Fig. 3: w3m – easy-to-use command line browser with neat features

also tell the browser how it should handle certain types of files (MIME-Type). While lynx accesses configurations from /etc/mailcap and /etc/mime.types or .mailcap and .mime.types in your own home directory, you can tell links in the Setup/Settings menu under Associations, how it should handle JPEG images etc. To do this, go to Add. The first field (Label) is just a name for the entry, so call it JPGs for instance. In Content-Type(s), enter image/jpeg. Under Program the program then pops up, with which you wish to open the file, thus xv %. Confirm everything with OK and also remember at this point to save the new settings. By the way, if you would like to define different file endings for JPEG files such as e.g. jpeg, jpg, jpe, you can do this under Settings/File extensions/ File endings: Enter the individual endings in

Careful with the Bookmarks for w3m Info on the World Wide Web: Homepage of lynx: http://www.lynx.browser.org Site for links: http://artax.karlin.mff.cuni.cz/ ~mikulas/links/ w3m homepage: http://ei5nazha.yz.yamagatau.ac.jp/ ~aito/w3m/eng/index.html SSL for lynx: http://www.moxienet.com/lynx/

The first time you want to set a bookmark for this browser, you may receive an error message, saying the file ~/.w3m/bookmark.html could not be found. After a few investigations it became clear that when first making an entry in Bookmarks the field Section: [ ] has to be completed. Go to the text entry, press Return and enter a name – only after you have done this can w3m carry on working as it should, setting up the file and writing in it.

■ 100 LINUX MAGAZINE 7 · 2001

Extension(s) separated by commas, the ContentType is again image/jpeg. If you now click on a JPEG shown as [IMG] with the right mouse key, under display image you will receive a new option: [ Open ]. If you select this, the image file will be displayed as desired with xv.

Off into the W3 with w3m Here comes a sophisticated tool from Japan – w3m stands for ‘WWW-to-Miru’. This is Japanese and means: ‘Look at the WWW’. This browser can handle tables and frames just like links (see Options menu). Unlike the first two programs w3m wants to know a target file right at the start of the program. You must specify either a local HTML file or a URL otherwise the browser immediately shuts down again. What’s missing here, at first glance, is an insert showing how to get help or how to close down the program – for this, just take a look at Table 2. You must look at the Options menu before starting to surf for the first time. If you have switched on the option Automatic rendering of frame, w3m can cope splendidly with pages with frames. If you have a terminal with colours, you can switch on Display with colour – it’s nice to be able to choose the colours in which the links, input fields, background, active link etc. are displayed. There is no need to have an expensively designed graphical browser with 15 MB file size to look for information on the Internet. w3m, links and lynx can in many cases present Web content just as easily as their X-Window relatives, and usually at a higher speed, since cumbersome advertising banners are not loaded. ■


101desktopiaed.qxd

01.03.2001

16:34 Uhr

Seite 101

DESKTOPIA

SOFTWARE

Jo´s alternative Desktop

HOCUS POCUS JO MOSKALEWSKI

Only you can decide how your Linux desktop looks. With deskTOPia we regularly take you with us on a journey into the land of window managers and desktop environments, presenting the useful and the colourful, viewers and pretty toys. In the last issue, a program disappeared before the very eyes of a window manager. This time we are going to make the background of a terminal transparent – and at the same time save memory.

Hastily put down by many a newbie as a cumbersome relic of past ages of computing, many are surely still becoming familiar with the advantages of a text-based command input (known as shell or terminal) – at least if the limits of the standard installation from the distributor are not simultaneously meant to mark the edge of one’s own horizon. Lots of things can be used more quickly and effectively with this. And for some things, a shell is actually necessary – such as for putting together a new kernel. Even environments like KDE2 are not making any effort to do away (as many might presume) with the shell – on the contrary, a meaningful symbiosis is the objective.

Mirror, mirror, on the wall... Terminal programs for the graphical user interface are abundant in the Unix environment. The standard terminal is called xterm – and there is also a special (optically adapted) wterm for the user of Window Maker. The terminal of KDE calls itself

Console. All fulfil the same purpose with varying equipment and appearance. With respect to consumption of resources, clear differences can also be discerned. Only you can say which terminal suits you best. But one thing is for sure, a user of Window Maker no more has to implement a wterm than the KDE faction their Console. All terminals are fully usable on another desktop. Admittedly, the console of KDE2 is a thing of beauty. But anyone who has only 64MB of working memory (which is just enough for KDE2) will not be happy to pay for these good looks with more than 8MB of memory capacity for the console alone. Users of the GNOME desktop are a bit better served in this instance: Here 3.4MB will go to the GNOME terminal. But even that is clearly too much for a user who wants to use several text-based programs in a graphical environment – or is working with four or more consoles at the same time (and that’s something everyone does, sooner or later). On the opposite page is a little table in which the various terminal programs are compared in this respect: 7 · 2001 LINUX MAGAZINE 101


101desktopiaed.qxd

01.03.2001

16:35 Uhr

SOFTWARE

Seite 102

DESKTOPIA

Memory 8.4MB 3.4MB 2.7MB 1.8MB 1.3MB 1.1MB 1.0MB

Terminal console gnome-terminal Eterm xterm wterm aterm rxvt

Desktop KDE2 GNOME Enlightenment – Window Maker AfterStep –

I gave a few options with the Configure script here, to enable the display of background graphics, for instance. There are a large number of additional options, by means of which the terminal can be made leaner or even more voluminous – it’s up to you. There is an overview in the file README.configure in the packet.

Gingerbread house

Off to the realm of dreams

The aterm terminal has a lot to offer, coupled with very little memory requirement. The latest version can be found on the coverdisc. Future releases can be fetched from http://aterm.sourceforge.net/. aterm arose from the code of wterm, which in turn took rxvt as a model. Nevertheless, the prime choice was aterm, which apart from all the usual features, offers the following: • scaleable display of background graphics • pseudo-transparency (can also be coloured) • sensible scrollbars (also transparent if required) • fading when there is loss of focus This list is certainly not exhaustive, but hopefully it has been sufficient to whet your appetite. Installing aterm is really simple. It needs what every other graphics program also requires: A compiler (e.g. GCC) including the associated tool Make and support for XPM graphics (xpm4g-dev or libXpm) is required – equally, the header files for X (xdevel) should be installed. And all this comes with an ordinary distribution. After that the aterm packet can be converted for your own distribution and installation:

Obviously, our aterm is started with the command aterm – but first the program will surely gladden only the purists with a look at the amount of free working memory. Until we tell aterm how it is going to look in future, it puts on a face as drab as an ordinary xterm (even if it does have a sensible scrollbar). So let’s start to configure our aterm.

jo@planet ~> tar -xvzf aterm-0.4.0.tar.gz [ ... ] jo@planet ~> cd aterm-0.4.0 jo@planet ~/aterm-0.4.0> ./configure —enableU -fading —enable-background-image jo@planet ~/aterm-0.4.0> make jo@planet ~/aterm-0.4.0> su Password: root@planet ~> cd /home/jo/aterm-0.4.0 root@planet /home/jo/aterm-0.4.0> make install root@planet ~> logout

Figure 1: aterm with blue-coloured background pixmap. 102 LINUX MAGAZINE 7 · 2001

Font and window size To be able to use this thing immediately it is definitely essential to design the outputs legibly. The font can be selected by calling up with the option -fn fontname. However, as with every other terminal, a font has to be selected with a specified character width. The simplest thing to do here is to experiment with -fn 8x16 or -fn 10x20, but the font lucidatypewriter is also suitable (e.g.: aterm -fn -*lucidatypewriter-medium-r-*-*-*-120-*-*-*-*iso8859-*). The tool xfontsel reveals additional font names (as does gfontsel). But that’s not all: Anyone who prefers to work with 80x30 characters instead of the usual 80x25 characters simply adds -geometry 80x30 when starting the program off.

Foreground and background Fancy a dark blue background with pale grey text? No problem: An aterm -bg ”#000040” -fg lightgrey and it’s done. But what if, instead of dark blue you’d rather have a graphic? Graphics should preferably be in XPM format – if not, the tool


101desktopiaed.qxd

01.03.2001

16:35 Uhr

Seite 103

DESKTOPIA

Convert for example from the ImageMagick packet would recommend itself. After that the reward comes via aterm -pixmap graphic.xpm. By default the graphic now becomes tiled. Anyone wanting to adapt this graphic to the window size can do this using the option -backgroundType scale. Additional display options for graphics can be found in the instructions (man aterm). Another popular option is to see the desktop background through the terminal. This is simple to achieve with aterm -tr. But there is one restriction on this function: Only pseudo-transparency is offered, with just the corresponding section of the desktop background used – any windows lying underneath this are not visible. The drawback with all graphics here is the poorer legibility of the characters and figures in aterm. And here, too, the makers of aterm have not been idle. They have come up with the option tint colourname to ensure that the background shining through in the terminal can be coloured. Those who prefer their backgrounds to look a bit more primitive can darken the window content by 50% – the option -sh 50 clears the way for this. And thus, high-contrast graphics as background for text outputs is no longer a knockout criterion.

SOFTWARE

thing would obviously be much easier if you stored the defaults in the file ~/.Xdefaults . If this file does not exist, it is easy to make. Next, enter the defaults to be altered together with their new values in this file (not simply all options – this creates more confusion; if you select transparent, you should no longer specify a background colour...). These are described in full in the Manpage (man aterm) and for the settings described in this article these would be: aterm*font: aterm*geometry: aterm*background: aterm*foreground: aterm*backgroundPixmap: aterm*backgroundType: aterm*transparent: aterm*tinting: aterm*shading: aterm*fading: aterm*scrollBar: aterm*scrollBar_right: aterm*transpscrollbar:

8x16 80x30 #000040 lightgrey graphic.xpm scale true blue 50 90 false true true

Our next deskTOPia will also be about a memorysaving program: We introduce Sapphire, a small, young Window Manager with extremely low memory requirements. ■

[top] Figure 2: Aterm times two with coloured transparency – the back one shows fading [below] Figure 3: aterm -fg lightgrey -tr -sh 60 -sr -trsb

Fading on off-focus What’s so dramatic about this is not that simple, when all’s said and done: Just as a window frame highlights an active window in colour, an aterm can (additionally) signal whether it is currently active – and thus listening to our keyboard. This function is activated with the call parameter -fading number. For the number, insert a value between 0 and 100 -. Therefore, -fading 90 has the effect that 90% of the brightness is retained when it is inactive, while with -fading 50 the window is darkened by 50%. A combination of foreground colour, transparency, colouring and fading can be seen in Figure 2.

Scrollbar If you don’t want one at all, say so with +sb, and those preferring to keep it by way of tradition can simply place it on the right side (-sr). But anyone who has just set everything to be transparent may well take exception to the conspicuous appearance of this scrollbar – although there is also a remedy for this: A -trsb makes this transparent, too. Figure 3 shows one possible result of these options.

Brave little tailor? Now, our Linux should certainly be good-looking, but above all it must be easy to use. And who wants to have to face a five-line series of options on his terminal every time he enters a call-up? The whole 7 · 2001 LINUX MAGAZINE 103


104ootbed.qxd

01.03.2001

17:52 Uhr

SOFTWARE

Seite 104

OUT OF THE BOX

Software

TO THE MINUTE CHRISTIAN PERLE

There are thousands of tools and utilities for Linux. We take the pick of the bunch and suggest a little program each month that we feel is either absolutely indispensable or unduly ignored. This month we put the spotlight on gatO.

With the utilities cron and at, every Linux system has the use of control mechanisms which are accurate to the minute. So you can have yourself trumpeted awake every morning at seven by soft MP3 music (provided the fan in the computer is quiet enough) or postpone the tedious calculation of a Raytracing scene to the middle of the night.

After a visit to the gatO homepage (http://www.arquired.es/users/aldelgado/proy/gato/ default.htm) you will be better off by one file (gato0.6.6.tgz). Unpacking and installation of the program functions as follows:

Quarter to... Before you can enjoy using the graphically usable at, a few more conditions have to be met. So you will need: • the GTK packet (libgtk etc.), plus • the GTK Development packet (gtk-devel etc.) together with • autoconf and automake

cron: Serves for regular timed executions of any console programs (CronJobs) and thus takes care, among other things, of updating the databank for the locate command. at: Unlike cron, at performs its duties (At-Jobs) one time only at a specific time. Any outputs from the program started are sent as mail to the owner of the At-Job. But using the at command is rather difficult for beginners, because you have to comply with a specific format when entering details of the date. A graphical front-end would be nice here – which is precisely what gatO, from Antonio Luis Delgado Gonzalez, is. Raytracing: Procedure for photo-realistic calculation of three-dimensional images, which is highly processor intensive.

■ 104 LINUX MAGAZINE 7 · 2001

tar xzf gato-0.6.6.tgz cd gato-0.6.6 su (enter root password) make cd .. rm -rf gato-0.6.6 exit

Twelve! If everything has worked, the executable file gato will now be in the directory /usr/local/bin. Since this is usually included in the PATH variables, it is sufficient to enter gato & in an xterm, K or GNOME terminal to start the program. The main window that now appears is shown in Figure 1. It is split into two main areas. The left half shows the tasks already assigned, while on the right new At-Jobs are entered. In Figure 1 there are two tasks in the queue, which are to be executed on 8.2.2001 at 23:30 and on 9.2.2001 at 7:00.

Job agency We want to add another job to these. Since an AtJob rarely consists of the call-up of a single program, it is best to create a text file containing the desired commands. For example save the following lines in a text file under the name findexec in your home directory:


104ootbed.qxd

01.03.2001

17:52 Uhr

Seite 105

OUT OF THE BOX

SOFTWARE

cd $HOME find . -type f -perm +111 > exec.log echo "Executable files listed in exec.log." This three-liner searches, starting from the home directory, all executable files and stores the result in the file exec.log. The file findexec has no need of execution rights, since gatO transfers its content to at. In the right half of the gatO main window, change from Command to File and click on the ”...” button in the same line. A selection box now opens for the file whose content is later to be executed by at. Alternatively, you can also enter the file name direct in the box on the right next to File. Set the time when this job is to be done with the boxed situated underneath. If the checkbox next to Day remains unticked, the time specification relates to the same day so that only hours and minutes play a role. If Day is selected, on the other hand, you can also use the ”...” button here to set the date easily with a mini-calendar (Figure 2). If you do not want to enter the time or the day in figures, you can use the two Specified buttons to enter details such as midnight,teatime or tomorrow, Mon, Tue. In this case the figures underneath are ignored. If a job does not have an automatic output but you are still interested in a report by mail, select the Mail notification button. Finally, click at the bottom right on Add, to include the job in the queue.

Forgetful? If you have already entered several jobs, but no longer recall what the individual assignments do, you just have to mark the appropriate entry on the left side and click on the View button. A separate window then displays the commands of which the job consists, with the first part consisting of internal gato lines and the actual job only coming after that (Figure 3). Jobs can also be removed from the queue using the Del button – at least as long as they have not already been done. The Refresh button serves to redisplay the job list. When this happens the jobs

[top] Figure 1: gatO main window [left] Figure 2: Calendar

which are no longer in the queue since the last Refresh disappear, because they have either been deleted or executed. The Exit button selfexplanatory. If you can handle gatO well, there is more good news for all those who found no suitable program for managing Cron jobs in the overview article last month: Antonio Luis Delgado Gonzalez is also writing a program in this category – gcrontab, which can be found at http://www.arquired.es/users/aldelgado/proy/ gcrontab/. ■

GTK: The ”Gimp ToolKit” is a programming library that facilitates the creation of menus, dialog boxes and other window elements under X11. It was originally written for the graphics program Gimp, but has now become the basis of many other programs. autoconf, automake: Tools for the automatic creation of a configure script. configure script: Serves for the automatic evaluation of properties of the system on which a source text is to be compiled. So configure finds out automatically, which C Compiler is installed. With the aid of this tool, it is possible to compile cross-platform software on various (mostly Unix) systems, without having to make any changes by hand.

Figure 3: Job Ad

PATH: This variable lists directories separated by a colon. These are searched by the shell for commands that the user enters without path specification. So for example ls is found as /bin/ls. ■ 7 · 2001 LINUX MAGAZINE 105


106gnuworlded.qxd

02.03.2001

14:39 Uhr

COMMUNITY

Seite 106

BRAVE GNU WORLD

BRAVE GNU WORLD GEORG C. F. GREVE

Welcome to Georg’s Brave GNU World. I can hardly believe that it is already the two year anniversary of the GNU World Web site. Of course, I’d like to say a few things about that. But first I have an interesting mix of different topics for this month’s issue.

GNU Paint GNU Paint (gpaint) by Andy Tai is a port of the xpaint program to the GTK+ toolkit and the GNOME libraries. It deliberately avoids competing with GIMP, which is more of a high-end program. Instead GNU Paint concentrates on being very lean and easy to use in order to also allow beginners to manipulate it. The strong GNOME-integration of GNU Paint is a desirable feature because it seeks to be an extension of the GNOME desktop. One of its future plans is to make gpaint a Bonobo-component. That way, other GNOME applications like gnumeric can share the functionality of gpaint. Being an official GNU Project it comes as no surprise that GNU Paint is distributed under the GNU General Public License. As far as further development is concerned, Andy would like to receive more help from translators to expand the internationalization; the program itself is otherwise very usable .

Gnatsweb Gnatsweb, a Web-based front-end for the GNU Bug Tracking System, has found a new maintainer in Gerald Pfeifer. The GNU Bug Tracking System is one of the most robust bug-tracking systems available and is in use by projects and companies around the world. Its function is to give users an easy way to report bugs that can then be fixed by developers. One of the core features is the coordination of cooperative work. This reduces the danger of simultaneous solutions for the developers whilst users can check whether an error is already known or even fixed. The last stable version of GNATS was released in 1993 and the official development has been 106 LINUX MAGAZINE 7 · 2001

dormant for a while. But now GNATS has also found a new maintainer in Milan Zamazal and we should therefore expect to see a new stable release soon. The main problem for the two new maintainers and the group of volunteers is the inclusion of all the patches that have been written in past years. There will most probably always be problems but the loss of know-how should be avoided. So Gerald is still looking for more developers interested in this task.

Fcron Fcron aims to be a replacement for the wide-spread daemons Vixie cron and anacron. The function of so-called cron-daemons is to start programs at predefined times and they are essential for system maintenance. Typically, the daemons allow users to start specific programs at a certain time, date and/ or day of week and send the user a mail upon completion with the result of the program. They normally also support periodical time specifications like every 2 hours or every minute. Fcron by Thibault Godouet expands this in several interesting ways. First of all it is also possible to make the program start dependent on the system-load, which is an indicator for how busy the system is. It also supports the specification of a field that specifies the recipient of the mail sent upon completion – mails do not have to go to the user running the program. Furthermore, there is a field for nice-values that can be used to determine the priority of the program directly. Also very interesting is the capability to also specify how often a program should be started. This makes it possible to specify something like ‘start it once a day either between 3:00 and 6:00 or 19:00 and 22:00.’


106gnuworlded.qxd

02.03.2001

14:39 Uhr

Seite 107

BRAVE GNU WORLD

COMMUNITY

Especially for computers that are not running permanently, the execution intervals can be keyed to the uptime instead of the normal time. So a program could be run all 24 hours of uptime, for instance. In order to avoid making the configuration file obscure, it is possible to have entries being valid for multiple lines and jobs can be serialized to prevent them from running in parallel. Currently, fcron is still in the beta-test phase but it is already rather stable. So the current goal is to test it thoroughly and to release a stable version. Thibault is still looking for volunteers, especially for testing under different environments and situations.

Euklides Euklides is an extension of LaTeX under the GNU General Public License that provides a commandlanguage to create Euclidean geometry. Christian Obrecht, author of Euklides, sees LaTeX-using maths teachers like himself as the biggest target audience. But every pupil and student can probably benefit from it. Thanks to the included euk2ps shell-script it is possible to create encapsulated postscript files, which can be viewed with Ghostview, directly out of the Euklidescommands. The advantage of Euklides in comparison with other programs like DrGeo or Kseg is that Euklides is not limited to WYSIWYG interfaces like those programs are, because WYSIWYG is not necessarily the best method to describe geometrical figures. But since a GUI can be very helpful sometimes, he

plans on writing a GTK+ based front-end – this will allow users to change figures interactively. The next project could be especially interesting to users reading their mail with EMACS.

Etach John M. Rulnick wrote Etach, which is an EMACS extension for easy and comfortable use of MIMEattachments in email. Although there are several projects in this area, John wasn’t really satisfied by any of them, so he finally started writing his own. His prime incentive was to

7 · 2001 LINUX MAGAZINE 107


106gnuworlded.qxd

02.03.2001

14:39 Uhr

COMMUNITY

Seite 108

BRAVE GNU WORLD

make it as easy as possible to attach MIME attachments when composing mail and saving MIME attachments to disk in incoming mail. For this reason Etach was written so that some oftenneeded tasks are easy to do, whilst offering multiple options for customization to your own needs. Etach works together with versions of EMACS and has no limiting dependencies. This makes it easy to install – which should encourage EMACSbeginners especially to check it out. The status of etach is ‘almost finished’, as John himself does not plan any more extensions although he is open to suggestions and willing to implement them. Although etach is officially available as betarelease, there has been no bug-report filed for several months so it is probably ready to be considered stable.

GNU Serveez NU Serveez is a server-framework originally written by Martin Grabmüller and now maintained by Raimund Jacob and Stefan Jahn.

GNU Serveez provides routines and help for IPbased servers (TCP, UDP and ICMP) as well as named pipes for all connection-based protocols. It demonstrates in a portable manner the different aspects of network programming and is reported to run on GNU/Linux and other 32-bit and 64-bit Unices as well as Microsoft Windows (9x/ME/NT/2000). Among the funniest experiences during development accordingly to the developers are the built-in restriction of some WindowsSystems. Windows 95 for instance can only have up to 100 TCP-connections system-wide. Users can implement their own servers with GNU Serveez or use it to understand how a server works. The servers included in GNU Serveez can be used as examples for this. The servers included are, for example, a very fast and easy to configure HTTPserver, an extremely clean IRC server or a Gnutella spider. Since GNU Serveez is entirely covered under the GNU General Public Licence, routines can also be used directly in own projects. People especially interested in the exotic should take a look at GNU Serveez. There is for instance a very well functioning TCP-over-ICMP tunnel and all protocols included in GNU Serveez can run on a single port. The easy configuration and installation especially, have been a prime goal of the developers in order to allow normal users to benefit from GNU Serveez. To keep this up and/or to improve it even further is very high on the list for further development. There are plans to put the functionality into a libserveez library so other projects can use it and to make the server extensible with the help of dynamically loaded modules. The developers are also considering moving the configuration language from Scheme to Guile. People running a network at home could be interested to hear that the plans for further servers also include an easy to configure DNS-server that can modify its functionality accordingly to the online/offline status of the local network. But now I would like to introduce a project that I consider extremely important.

GNU Enterprise The GNU Enterprise project has been started by Derek A. Neighbors and has the goal of covering

108 LINUX MAGAZINE 7 · 2001


106gnuworlded.qxd

02.03.2001

14:39 Uhr

Seite 109

BRAVE GNU WORLD

the complete area of tasks normally needed by enterprises under the GNU General Public Licence. The project is modular and several of the modules are usable out of the box, while others are included on an extensible or customizable basis. Modules would for instance be ‘human resources’, ‘finance’ ‘customer relationship management (CRM)’ or ‘enterprise resource planning (ERP)’. The currently functional core includes GNUe forms, the GNU-Engine, GEAS, the applicationserver and libGDA, the library for data abstraction. GNUe reports, the report-server and GNUe integrator, the enterprise application integration (EAI) tools, are currently under development. Other parts like EWOK, the fax, email communicationsengine and GNUe Workflow for workflowmanagement and so on, are currently in the planning phase. There are also ideas for loadbalancing and discussions about a transactionprocessor. Originally the project targeted small and mediusized enterprises but by now the orientation includes corporations of all size. It is obvious that this is a huge project which is essentially the main problem. Right now there is a bunch of volunteers and employees of some big computer-companies, universities and governmental agencies of the US working on it with Derek. In order to achieve maximum portability, things have been based upon XML and GNUe runs on Unix (GTK+ or Motif), Win32, Mac, Curses and the Web. Since developers from all corners of the world are busy with it, complete internationalization is one of the major goals of the project. Extraordinary is also its fundamental and very conscious orientation towards Free Software. So the GPL has very consciously been chosen instead of its lesser counterpart and the developers seek to have a good insulation with CORBA rather than risking losing freedom. It is also a principle of the project that all active developers give their copyright to the Free Software Foundation to assure the lastingness of the project. As solutions in this area have pretty much been exclusively proprietary in nature, this is a very important project that can, in the long run, ensure the introduction of Free Software into every company. This brings us to the last topic of the month – which is a matter of great personal pleasure for me.

Two years of Brave GNU World The past year has gone by so fast that I find it hard to believe but the Brave GNU World is two years old. When I began writing it, I was not entirely sure whether it would be possible to fill a page with Free Software topics every month for a long period of time. It seems we now have the proof that it is indeed possible.

COMMUNITY

But the column has not only survived, it is still growing. Two Korean translators – Lee Jong Keun and Ki-Young Choi, have joined the Brave GNU World family. Thus, the column now appears in six languages. Additionally, it seems that it is also printed in the Korean Linux Magazine which increases the count of magazines it appears in to four (Linux-Magazin Germany & U.K., LinuxMagazine France and now Korea). All this would have been impossible without all the help I received from volunteers that work in the background as proofreaders, translators, scouts and moral supporters. This anniversary is as much yours as it is mine and I would very much like to thank every single on of you! I would like to take even another step forward with Brave GNU World but, due to my work for the Free Software Foundation Europe, time is rather limited. That is why I am looking for someone or a small group of volunteers that would be willing to maintain the Brave GNU World Web page and slowly start expanding it towards a fully fledged Web site. Currently the most important task is maintaining the page, but although the design isn’t bad there is still room for improvement. Osvaldo La Rosa has for instance had some ideas how the page could be made more friendly to read for visually impaired people. And at some point I would like the Web site to become a truly interactive forum in which the column will appear every month but I have also been thinking about a speakers corner, in which selected essays to some topics could be published. Also the integration and the layout of the ‘We run GNU’ campaign is in need of a redesign. If you think you can do this and feel like it would be fun to do so, please email me. I hope this was not the last anniversary the Brave GNU World has seen – it will definitely continue next month. Ideas, comments, questions, interesting projects and life-stories by email are welcome as always. ■

Info [1] Send ideas, comments and questions to Brave GNU World <column@bravegnu-world.org> [2] Home page of the GNU Project http://www.gnu.org/ [3] Home page of Georg’s Brave GNU World http://brave-gnu-world.org [5] GNU Paint home page http://gpaint.sourceforge.net/ [6] GNU Image Manipulation Program (GIMP) home page http://www.gimp.org/ [7] GNATS home page http://sources.redhat.com/gnats/ [8] Fcron home page http://fcron.free.fr/ [9] Euklides home page http://euklides.multimania.com/ [10] Etach home page http://etach.sourceforge.net/ [11] GNU Serveez home page http://www.textsure.net/~ela/serveez/ [12] GNU Enterprise home page http://www.gnue.org ■ 7 · 2001 LINUX MAGAZINE 109


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.