Some tensions that have been building in the GNOME community for a while came out this week. Havoc Pennington wrote about the language and platform options available to open source development generally, and GNOME in particular. This sparked a large debate on PlanetGnome, among other places.
Currently the GNOME platform, meaning primarily the libraries available to GNOME developers, is written in C. There are a number of historical reasons for this: C was considered to be the most portable language around, and it allowed for very easy bindings to be written for other languages. The only real alternative when GNOME was formed was C++, which, at the time, scored lower on both of the previous measures. Also, some members of the community generally didn't like C++ as a language.
Times have changed. The Mono project was launched in August 2001 after the folks at Ximian had decided that, having gone through the pain of developing a large, multi-component application, enough was enough:
The obvious candidate for an object oriented, statically typed, garbage collected language is Java. Unfortunately, the most widely used, certified Java Virtual Machines (JVMs) are not free software. Sun Microsystems still maintains tight control over them, and even limits the ability to freely redistribute the free-as-in-beer JVM, even without modification. Currently, to the author's knowledge, the only Linux distributions that ship with either the Sun or IBM JVMs are a few commercial enterprise distributions. While there are some free software JVMs available, their performance is generally well below that offered by the proprietary ones.
You may be wondering why languages such as Python, Perl or Ruby aren't in consideration here. Havoc's paper doesn't do much to explain why languages such as these won't be used for writing system components, because the audience that he wrote it for probably take that as a given. Dave Camp's one-liner in this blog post probably explains the thoughs of most developers on this issue: I have a soft spot in my heart for Python (although I have a softer spot for static type checking).
Ximian saw the standardized C# language, and the standardized Common Language Infrastructure (CLI) from Microsoft as the way out: they could write a GNOME platform with all to goodies of an object oriented, statically typed, garbage collected language using and extending the existing GNOME APIs. Since the language was standardized, there were seemingly no trademark issues, and the parts of the platform that were Windows specific would be replaced with GNOME components anyway.
So Ximian founded the Mono project, and things have continued with the GNOME platform itself continuing to be coded in C, with the Mono team progressing its C# compiler, CLI runtime and class libraries at a tremendous rate.
Two things have happened recently to make some in the community start to think about the strategic direction that GNOME should take. The first is that Mono is actually approaching a 1.0 release sometime this year. The second is that the Java compiler and class library that are part of the GNU Compiler Collection (GCC), GCJ, is now considered to be fairly mature.
GCJ treats Java essentially as a subset of C++ with garbage collection and a large class library. Java source code is compiled to native code and then linked against a modified Boehm garbage collection library. Most of the standard class libraries have been implemented, with the notable exception being the windowing packages AWT and SWING. The GCJ was able to natively compile Eclipse last year, and it is considered mature enough for Red Hat to ship a GCJ compiled Tomcat Java Servlet Container in their Application Server enterprise distribution.
All of these environments will work quite well together, until GNOME makes a decision to start writing platform libraries in a managed language, for a managed platform. Whichever platform is not chosen might have a much more difficult time integrating such components. Many feel that GNOME needs to make some decision about which platform to support officially, otherwise the community will continue to be tied to C for the platform libraries indefinitely, or worse, risk forking.
There are a number of reasons given (by Havoc and others) as to why some in the GNOME community are unhappy with using Mono as the platform of choice, including:
While Havoc argued that using a C#/CLR combo might "speed up" the adoption of Microsoft's technology, proponents of Mono point out that it allows a migration path away from Windows in the future, something that won't be there if the Windows world is using CLR technologies, and the free software world has no CLR.
The catching-up-with-Microsoft argument is persuasive, but Java hardly presents a better alternative. Java, under the tight control of Sun, has moved much slower than the corresponding pace of many free software projects such as GNOME, Python, or indeed, Mono. The language has evolved very slowly, with features that developers have wanted for years, such as enums and generics (templates for C++ people), only just now being added to the language, after they came out as part of C# from Microsoft, a much younger piece of software.
Sun's reluctance to support a native widget based GUI toolkit, sticking with the sometimes sluggish, alien looking SWING, left developers with no real option for developing desktop applications. There's a reason why Java is used heavily on the server, with a devoted following, but very sparingly on the desktop. To use a contrasting example, Python has evolved as a language at a much faster rate, with incremental rather than groundbreaking speed improvements over time as well. The Benevolent Dictator model is used in Python as it is in Linux, with great effect.
Keeping Sun happy seems like a very valuable goal for some in the community in light of the major contributions that Sun has made to GNOME. It's ironic, however, that the community seemingly is in this position at least partly because of Sun's refusal to let go of Java, and more ironic that one proposed solution to keep Sun happy is to use a non-Sun-licensed, non-Sun-certified Java platform which doesn't support Sun's preferred GUI APIs. While it might keep Sun happier than if GNOME adopted Mono, it would seem unlikely that that's where they'd like to be. Even if Sun were to make an open source version of their JVM and class libraries available, as advocated by IBM and others, the interaction between two competing platforms may still be awkward. It would be a great step, in any case.
Meanwhile, discussions continue, and there have been some constructive suggestions as to how to interoperate and leave the community's options as open as possible. The debate is currently civil, intelligent and constructive. There are a number of parties with big stakes involved, however, so things may yet get heated. A fragmented platform helps nobody, so there's a big incentive to work out the most inclusive solution constructively. It's a debate which will be watched closely by many.
Audio Projectslibfishsound provides a simple programming interface for decoding and encoding audio data using Xiph.Org codecs (Vorbis and Speex)."
CORBAis out. "openMDX enables software architects and developers to build and integrate software applications in a highly automated and industrialized way. openMDX supports J2SE, J2EE, and .NET."
Database Softwarewrites about Database Templates on O'Reilly. "Once you've built several MySQL databases, you'll learn some shortcuts to database design. Many databases are very similar. When creating new databases, developers often build the same basic tables with only slightly different names and some adjustments to columns. Rather than starting from scratch when putting together a new database, developers will sometimes copy tables from an existing database, give them new names, and then make modifications. This can be a big timesaver."
Networking ToolsClick 1.4pre1 is the current (almost) stable release of Click - a modular software router that can be run in userspace OR be loaded into the kernel." is available. "The major feature of this new release is support for multiple [s]imultaneous instances of the packet capture engine within a single Java VM." is out. "Net-snmp provides tools and libraries relating to the Simple Network Management Protocol including: An extensible agent, An SNMP library, tools to request or set information from SNMP agents, tools to generate and handle SNMP traps, etc." is available. "Zabbix is software for monitoring of your servers and applications. Polling and trapping are supported. Zabbix works with both native and SNMP agents. It has simple, yet very flexible notification mechanism. Web interface allows easy administration."
Peer to Peeris available. "XNap is a Java plugin-based peer-to-peer (P2P) framework and client including an OpenNap plugin with multiple server support, as well as Gnutella, giFT (OpenFT), IRC, ICQ and an OverNet plugin. XNap provides resuming, chat, hotlist and a media library. This release fixes a rather critical bug that caused large amounts of tcp sockets remaining in CLOSE_WAIT state forever."
Printinghas been announced. "The CUPS Driver Development Kit (DDK) provides a suite of standard drivers, a PPD file compiler, and other utilities that can be used to develop printer drivers for CUPS and other printing environments." is out. "Many bugs were fixed, especially wrt users and printers groups which can now be nested to an arbitrary depth. Some new command line utilities and configuration directives were added. Speed was improved at different places, especially when managing several thousands of users on many printers. An Italian translation was added. Pluggable hooks at job start/end are now entirely configurable. Sample print quota reports made from within OpenOffice.org are now included, as well as some preliminary Debian packaging specific files."
Web Site DevelopmentCI-Link, a cross-platform language and IDE that is aimed at web site development, was recently announced on the project's Source Forge page. "CI-Link is an object-oriented language, easy to handle and dedicated to Web applications, like PHP or JAVA. Gateways are available to enable CI-link to interact with JAVA, .NET, COM or XML applications." has been announced. "Over a year in development, the Plone Team released the 30+ languages strong Plone 2.0 today." See the announcement for a long list of changes. Main feature of this version is i18n support, with Russian translation already in place. Other improvements include ability to work as plain CGI without mod_ruby, support for Windows/Cygwin, massive speed increase, and a long list of bugfixes. Database schema is changed again, but this time it is trivial to migrate from the previous version."
Data Visualizationis available. This version: "can draw labels along edges, uses double precision coordinates, fixes handling of negative coordinates and in-place editing, adds map to default graph model."
Desktop Environmentshas been announced. "That's right - it's almost here, and this is your last chance to have a sneak preview, and hopefully beat out some of the last remaining bugs before our final release." a notice that some GNOME web servers have been compromised. The cleanup is now in progress. The project has determined that the GNOME 2.6 sources (which were due to be released today) have not been tampered with, but the release has been delayed one week (to the 31st) anyway. (Thanks to Jonathan Lucas). writes about Scalable Vector Graphics (SVG) on the GNOME platform in an OS News article. "Computer graphics have long been dominated by bitmapped images. However, the free software community has taken an innovative lead by adopting scalable graphic formats on its desktops. In this article I cover the history and rise of scalable graphics on the desktop from my viewpoint - a proponent of its use in the GNOME platform." KDE-CVS-Digest has been published. Here's the summary: "KDE integrates Mono with C# bindings. A PHP debugger integrated into Quanta. Work continues on eGroupware / Kontact integration. Kopete rewrites the Jabber plugin. Plus, a new tool for monitoring application usage." has announced a new KDE document. "I'm very happy to announce a new document for inspiring KDE hackers, entitled "Common Programming Mistakes". The document aims to combine the experience of many of the top KDE developers about the Qt and KDE frameworks dos and don'ts. The way they were usually passed on to the next generation was by letting the youngsters make the mistakes and then yell at them in public."
ElectronicsOpenCollector site includes version 0.1.0 of the Eclipse Verilog Editor, and version 0.9 of Confluence. "Confluence is a declarative functional programming language for the design and verification of synchronous reactive systems including digital logic, hard-real-time software, and hardware-software co-design."
Financial ApplicationsOBA Accounting System is an Accounting, Inventory and Invoicing system best for small to middle organisation. This is a double entry accounting system and the data is stored in a SQL-Server."
GamesWorldForge Weekly News is out with the latest news from the WorldForge game project.
GUI Packageshas been announced. is out "This is the first beta release on the way towards 2.6.0. NOTE - you need GTK+ 2.4, and GNOME 2.5.x if you want GNOME support."
Imaging Applicationsthe GIMP is available. "Today the last bugs on the 2.0 milestone have been fixed and the GIMP team is preparing the GIMP 2.0 release." See the changes document for details. Gimp.org has the news that the GIMP 2.0 release has happened. "This release is a major event, marking the end of a three year development cycle by a group of volunteers and enthusiasts who have made this the most professional release of the GIMP ever." A list of new features is available in PDF format; it includes a great deal of internal restructuring, a reorganized toolbox, an improved text tool, various path tool improvements, a full-screen editing mode, and much more. is available with lots of bug fixes.
Interoperabilityhas been released. "The Netatalk development team is proud to announce the second alpha release of the upcoming version 2.0 of the Netatalk File Sharing suite. Please note that this release has not yet received widespread testing due to its beta status. It should therefore *not* be used in production. Netatalk is a collection of server programs and utilities for handling various protocols employed by Apple Macintosh computers on Unix compatible systems. This allows Unix hosts to act as file, print, and time servers for Apple Macintosh (classic MacOS as well as MacOS X) computers." This release is *not* intended for production servers. However, there have been several bug fixes and new features added since 3.0.2a that we feel it is important make it available to the Samba community for wider testing." Wine Traffic is out with the latest Wine project news.
Medical Applicationsis out. "David Chan is announcing the availability of OSCAR version 2.0 which features Drugref.org's Free and Open Source drug database, easy internationalization, a laboratory module, improved billing and more."
Office Applicationsis available. "Gfax gives you the familiar "pop up" window and phone book support for sending facsimiles by printing to a fax printer. This is a GNOME-2.x port of Gfax. It is a complete re-write in C# and Gtk# using Mono."
Office SuitesIt incorporates numerous bug fixes and is cleaner than RC1. However, we are asking you, the community, to make sure that there are no outstanding issues remaining."
Scienceis out. "CDAT (Climate Data Analysis Tools) is an open-source, Python-based environment for scientific calculations and graphics with focus on the needs of climate modelers. This release includes Full Mac OS-X support, thermodynamic diagrams contrib package, and averager/time tools bug fixes (bounds related issues)."
Web Browsershas been announced. "Mostly a bugfix release, it adds support for Mozilla 1.7b, and the developers are saying it will be the last gtk-2.2 release."
Word Processorshas been announced "The AbiWord team is very proud to announce the release of AbiWord v2.1.1, the second snapshot of the development that will lead to AbiWord 2.2. This snapshot allows interested developers, testers and users a sneak preview to see how AbiWord is advancing the State-of-the-Art in Word Processing."
Miscellaneousis out. "With version 2.2.5, an era ends. This will be the last version based on the old source tree. Over the last three years, FileZilla has been constantly improved. However, in the past few months development has slowed significantly, mainly due to the fact that it's become quite difficult to add new features to FileZilla. The complexity of FileZilla has grown far far beyond anything then anyone could imagine when the project first started, this also reflects in the source code. That's why I've decided to leave the current source tree behind and start FZ3 from scratch."
Languages and Tools
C++discusses the initialization of dynamically allocated memory in C++ in an article on LinuxJournal. "The term user friendly is not the term new programmers usually associate with C++. One of the darkest areas in the entire C++ jungle is the place where students are supposed to find out how to initialize data structures accessed by pointers."
Javais available. "Retroweaver is a Java bytecode weaver that enables you to take advantage of the new 1.5 language features in your source code, while still retaining compability with 1.4 virtual machines. New features in this release include new support for enumerations, new support for java.lang.Iterable, and more optimized autoboxing."
LispThis version provides a more flexible APROPOS, a more efficient function for computing the composition of MOD and EXPT on integers, a function for returning the command line arguments, an extension of FILE-POSITION to Gray streams, better ANSI compliance, and more."
Perlis available. "The Perl 5 developer team is pleased to announce the release of perl 5.9.1, the second development release of perl 5.9, incorporating developments towards the next major stable version of perl, perl 5.10." Synopsis 3, which covers Perl 6 Operator Renaming. This Week on perl5-porters has been published. "This week saw the arrival of spring in the northern hemisphere, and coincidentally the release of a new development version of bleadperl, which you can peruse for testing the new features, the new fixes, the new optimisations, and of course the new bugs. But of couse 5.9.1 is already outdated for the perl 5 porters, who like to live at the edge of the bleadperl." This week on Perl 6 is out. "Another week, another summary. It's been a pretty active week so, with a cunningly mixed metaphor, we'll dive straight into the hive of activity that is perl6-internals"
PHPPHP 5 is out. "The first Release Candidate of PHP 5 is finally here! The move from Beta stage to RC stage means that PHP 5 is now feature complete, and is quite stable - stable enough for everyone to start playing with. Note that it is still not recommended for mission-critical use."
Also, PHP version 4.3.5 RC4 has been announced.PHP Weekly Summary for March 18, 2004 is out. Topics include: 64bit fixes, More PHP 5 fixes, and CVS account requests. PHP Weekly Summary for March 22, 2004 is out. Topics include: PHP 5.0.0RC1, PHP 4.3.5RC4, New security feature for PHP 4, and the Montreal based PHP conference. part two. "Today I'll explain dealing with errors, determining the number of rows in a result set, and more."
Rubymentions a new Ruby library collection, RubyGems. "A concept initially demonstrated by Ryan Leavengood at the first RubyConf, RubyGems has been a long time coming. It is a package manager for Ruby libraries, handling library versioning (allows co-existence of multiple versions of a single Ruby library), search, download, and installation."
XMLtalks about Syncato, an XML-based web logging system. "In the past few years there's been a surge in popularity for what has become known as blogging. The weblog (or "blog") is an online journal of links and information. It seems everyone has one now. I've written a blog for several years now using Movable Type to manage it. Unfortunately, I've always been bothered by the very rigid perspective provided by most weblog management systems. Most of these systems are based on a relational database system and have a limited number of post types that you can add. I wanted something that would be much more flexible and allow you to define an arbitrary level of structure to the content you add to your site. This lead me to the development of the system that is now known as Syncato." continues his series with part two on describing open-source projects with XML. "This time, I will distill a set of terms that are candidates for inclusion in this vocabulary and talk about some of the difficulties inherent in specifying it. I will show you that the admirable aim of being able to share DOAP descriptions globally has some consequences for the design of this vocabulary."
Page editor: Forrest Cook
Next page: Linux in the news>>
Copyright © 2004, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds