Development
GNOME Platform Stormclouds
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).
"
In short:
- The platforms currently associated with these languages are specific to the language, the sharing of components would be difficult. Parrot, at some point in the future, may unify these languages.
- These languages are not statically type checked by a compiler. To developers who have been writing primarily in C, this seems dangerously like leaving certain types of error to happen at runtime, to be discovered by users. Automated testing can address some of these issues, but a certain type of C programmer might have trouble sleeping at night after shipping a large Python application, with the expectation of receiving bug reports containing NameErrors.
- At least partially due to the dynamic nature of these languages, there are limits to some of the optimizations that can be done, either at compile time or by a Just-In-Time compiler at runtime, as used by the Java and .NET platforms. Thus performance, particularly in platform libraries which need to be fast, is a concern.
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:
- Patent concerns over parts of .NET
- General distrust of Microsoft, or strategic reluctance to adopt a Microsoft technology
- Not wanting to play "catch-up", since Mono will always be behind Microsoft's implementation
- Not wanting to upset IBM or particularly Sun, who have contributed a lot to GNOME over the past few years
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.
System Applications
Audio Projects
FishSound 0.6.0 Released
Version 0.6.0 of FishSound is out: "libfishsound provides a simple programming interface for decoding and encoding audio data using Xiph.Org codecs (Vorbis and Speex)."
vsti 0.0.3 announced
Version 0.0.3 of vsti, which allows a Windows vsti plugin to be used with JACK and alsa-seq, is out.
CORBA
openMDX v1.1.0 (stable, production quality) released (SourceForge)
Version 1.1.0 of openMDX, an open source MDA (Model Driven Architecture) platform, is 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 Software
Database Templates with MySQL (O'Reilly)
Russell Dyer writes 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."
PostgreSQL Weekly News
The March 22, 2004 edition of the PostgreSQL Weekly News is out with the latest PostgreSQL database news.
Networking Tools
Announcing Click 1.4pre1
Version 1.4pre1 of Click is out. "Click 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."
jpcap - v0.01.15 released (SourceForge)
Version 0.01.15 of jpcap, a Java-based network packet capture facility, 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."
Net-SNMP 5.1.1 released (SourceForge)
Following last week's pre-release, version 5.1.1 of Net-SNMP 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."
Zabbix 1.0 released (SourceForge)
Version 1.0 of Zabbix 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 Peer
XNap 2.5r2 released (SourceForge)
Version 2.5r2 of XNap is 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."
Printing
CUPS Driver Development Kit 1.0rc1
Version 1.0rc1 of the CUPS Driver Development Kit has 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."
PyKota 1.18 released
Version 1.18 of PyKota, a print quota management system, 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 Development
The CI-Link language and web development IDE
Version 4.3.0.3 of CI-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."
Plone 2.0 released (SourceForge)
Version 2.0 of Plone, a web Content Management and Publishing system that is based on Zope, 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.
Samizdat 0.5.1 released
Version 0.5.1 of Samizdat, and RDF-based engine for building collaboration and open publishing web sites, is out. "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."
Desktop Applications
Data Visualization
JGraph 3.2 released (SourceForge)
Version 2.3 of JGraph, a Java-based graph component, is 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 Environments
GNOME 2.6 Desktop & Developer Platform RC 1 (GnomeDesktop)
Version 2.6 RC 1 of GNOME has 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."
GNOME servers compromised, 2.6 release delayed
The GNOME system administration team has sent out 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).SVG and its Path into the Linux Desktop (OS News)
Christian Schaller 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 (KDE.News)
The March 19, 2004 edition of the 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."
KDE Developer's Corner: Common Programming Mistakes (KDE.News)
Zack Rusin 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."
Electronics
New OpenCollector releases
New software from the OpenCollector 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 Applications
The Open Business Account accounting system
The Open Business Account accounting system is a new project which was forked from Sql-Ledger version 1.8.7. "OBA 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."
Games
WorldForge Weekly News
The March 19, 2004 edition of the WorldForge Weekly News is out with the latest news from the WorldForge game project.
GUI Packages
FLU 2.9.2 Maintenance Release
Maintenance Release 2.9.2 of FLU, a collection of FLTK Widgets, has been announced.Glade 2.5.0 released (GnomeDesktop)
Version 2.5.0 of Glade, a User Interface Builder for GTK+ and GNOME, 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 Applications
Release 2.0 rc1 of the GIMP
Version 2.0 rc1 of the 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 2.0 released
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.
gThumb 2.3.2 released (GnomeDesktop)
Development version 2.3.2 of gThumb, an image viewer application for Gnome, is available with lots of bug fixes.
Interoperability
Netatalk 2.0-beta1 released (SourceForge)
Version 2.0-beta1 of Netatalk has 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."
Samba 3.0.3 pre1 Available
Samba version 3.0.3 pre1 has been released. "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
Issue #215 of Wine Traffic is out with the latest Wine project news.
Medical Applications
Oscar 2.0 Has Open Source Drug Reference (LinuxMedNews)
Version 2.0 of OSCAR, the Open Source Clinical Application Resource medical record system, is 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 Applications
Gfax version 0.6.0 (GnomeDesktop)
Version 0.6.0 of Gfax, a front-end to Hylafax, is 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 Suites
OpenOffice.org 1.1.1 RC3 released
Version 1.1.1 RC3 of the OpenOffice.org office suite is available. "It 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."
Science
CDAT 4.0Beta 2 available (SourceForge)
Version 4.0Beta 2 of CDAT, the Climate Data Analysis Tools, is 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 Browsers
Galeon 1.3.14 Released (GnomeDesktop)
Version 1.3.14 of the Galeon web browser, has 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."
Galeon version 1.3.14a was also released this week to fix an automake problem.
Mozilla 1.7 Beta Released (MozillaZine)
Version 1.7 Beta of the Mozilla browser has been announced. "The Mozilla Foundation today released Mozilla 1.7 Beta, the latest test version of the Mozilla Application Suite. 1.7b features hundreds of improvements, including a new preference to stop sites blocking the standard page context menu and a Password Manager option to show the actual saved passwords."
w3m 0.5 released (SourceForge)
Version 0.5 of w3m, a text-based browser, has been announced. "This release is the first release with m17n features that has been provided as m17n patch by Hironori Sakamoto. w3m is a pager and/or text-based browser. It can handle table, cookies, authentication, and almost everything except JavaScript."
Word Processors
AbiWord 2.1.1 Released (GnomeDesktop)
Version 2.1.1 of the AbiWord word processor has 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."
Miscellaneous
FileZilla 2.2.5 final released, FZ 3 development started (SourceForge)
Version 2.2.5 final of FileZilla, an FTP client and server, is 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++
Initializing User Defined Data Structures (Linux Journal)
William F. Simpson 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."
Caml
Caml Weekly News
The March 16-23, 2004 Caml Weekly News is available with the latest Caml language articles and news.
Java
Retroweaver 1.0 RC4 released (SourceForge)
Version 1.0 RC4 is 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."
Lisp
GNU CLISP 2.33 released
Version 2.33 of GNU CLISP has been released. "This 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."
Perl
Perl 5.9.1 released (use Perl)
Perl 5.9.1 is 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 (O'Reilly)
Luke Palmer presents Synopsis 3, which covers Perl 6 Operator Renaming.This Week on perl5-porters (use Perl)
The March 15-21, 2004 edition of 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 (O'Reilly)
The March 14, 2004 edition of 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"
PHP
PHP 5 Release Candidate 1 Released
Release candidate #1 of PHP 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
The 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
The 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.Using MySQL from PHP, Part 2 (O'ReillyNet)
John Coggeshall continues his series on using MySQL from PHP with part two. "Today I'll explain dealing with errors, determining the number of rows in a result set, and more."
Python
Dr. Dobb's Python-URL!
The March 19, 2004 edition of Dr. Dobb's Python-URL! is out with the week's Python language article links.
Ruby
RubyGems release (Ruby Garden)
The Ruby Garden mentions 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."
Tcl/Tk
XML
Microcontent Management with Syncato (O'Reilly)
Kimbro Staken talks 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."
Describe open source projects with XML, Part 2 (IBM developerWorks)
Edd Dumbill 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>>