Martin Michlmayr
Martin Michlmayr

I'm a member of Debian, and I work for HP as an Open Source Community Expert. The opinions expressed here are mine.

Subscribe to the RSS feed of this journal.

Joining HP

I joined HP's Open Source and Linux Organization (OSLO) at the beginning of the month as an Open Source Community Expert. I spent the last three weeks in Ft. Collins for some training and to get to know the team, but normally I'll be working from home in Europe. The main focus of my work will be governance issues related to the deployment of FOSS in enterprise environments. However, I've already started to get involved in a number of other areas I'm interested in, such as community relations. I'm pretty excited about my new position because it is a good fit for my skills and interests.

Mon, 24 Dec 2007; 15:55 — hppermanent link

GCC 4.3 related build problems: duplicate function parameters

GCC 4.3 now prints an error message when C++ code contains duplicate function parameter names in function prototypes. You'd think that's a pretty obvious problem, but we still have about 15 packages in the archive that contain such code.

Anyway, for code like this:

class foo {
    foo(int w, int w);
};

GCC will as of 4.3 show the following error message:

t.cc:2: error: multiple parameters named 'w'
Fri, 07 Dec 2007; 21:04 — gccpermanent link

N2100 network troubles due to r8169 bug

Daniel Smolik reported problems with NFS on a Thecus N2100 a few days ago. I confirmed the bug with 2.6.18 and 2.6.22 but found that the problem didn't occur with 2.6.23. I started a git bisect and a few hours later located a fix that Francois Romieu, the maintainer of the r8169 driver, had put in. Apparently the driver had some confusion regarding hardware and IP header alignment. The good news is that the patch is very small and can easily be backported to our 2.6.18 kernel in stable. Also, packages of 2.6.23 were uploaded today and should be in the archive soon.

Fri, 30 Nov 2007; 22:12 — debian/iop/n2100permanent link

Tips on reducing memory and running Linux on a flash device

David Härdeman has contributed two really valuable guides to my Debian on NSLU2 site that will be of great interest to many NSLU2 users:

These guides mention Debian but most of the advice applies to other NSLU2 firmware flavours and to Linux in general.

Sun, 11 Nov 2007; 20:54 — debian/nslu2permanent link

NSLU2 tar ball for Debian 4.0r1

I updated the tar ball for the manual Debian/NSLU2 installation to Debian 4.0r1 (including the new 2.6.18-5 kernel) today. The proprietary NPE microcode from Intel is now included in the tar ball since the code no longer has a click-through license.

Fri, 28 Sep 2007; 13:47 — debian/nslu2permanent link

Dr Michlmayr

Martin at his PhD graduation Having passed all requirements for the Doctor of Philosophy, I had my graduation today.

Sat, 21 Jul 2007; 23:53 — unipermanent link

GCC 4.3 related build problems: pedantic preprocessor warnings in C++

Update: This change has been reverted from 4.3 again and won't be in the final release of 4.3.

GCC 4.3 changed pedantic preprocessor warnings in C++ code into errors, in line with the C++ front-end. Because of this change, preprocessor warnings are now errors.

This change has caused at least the twofollowing errors which are all fairly common:

error: "xxx" redefined

It's not allowed to #define something twice, as in this example:

#define TEST "foo"
#define TEST "bar"

This code will lead to the following error:

test2.cc:2:1: error: "TEST" redefined
test2.cc:1:1: error: this is the location of the previous definition

Most typically, this occurs because something is defined in a header that is included and then redefined in the current source file. It can also happen when a #define is put in the code but also on the command line, e.g. via -DTEST="bar". This will lead to:

test2.cc:1:1: error: "TEST" redefined
<command line>:1:1: error: this is the location of the previous definition

The correct solution is to avoid redefinitions directly or to use #ifndef to make sure that something has not been defined already.

extra tokens at end of #endif directive

While an #ifdef obviously needs a second parameter, it's not allowed to give one to #else and #endif. Unfortunately, this is commonly done as a reminder for what is being tested for:

#ifdef TEST
#endif TEST

This code will lead to the following error:

test3.cc:2:8: error: extra tokens at end of #endif directive
Fri, 11 May 2007; 14:37 — gccpermanent link

GCC 4.3 related build problems: missing #include

In GCC 4.3 the C++ header dependencies have been cleaned up. In the past, compilation would often be quite slow because including a simple header would indirectly include a lot of other headers, even if they were not needed to compile the current code. Many headers have now been cleaned up with the result that compilation is quicker. The downside is that programmers cannot rely on indirect inclusion of headers they may need anymore. Instead, everything that is needed has to be directly referenced with an #include.

Typical errors look like these:

error: 'find' is not a member of 'std'
error: 'exit' was not declared in this scope

Below is a table showing which header needs to be included for a number of common functions:

Functions and definesHeader
find, for_each, sortalgorithm
isalnum, touppercctype
INT_MIN, RAND_MAXclimits
printfcstdio
atoi, free, randcstdlib
EXIT_FAILUREcstdlib
strcmp, memcpycstring
auto_ptrmemory
fd_set, mode_tsys/types.h
typeidtypeinfo
Thu, 10 May 2007; 15:56 — gccpermanent link

GCC 4.3: common build failures

Even though GCC 4.2 has seen many delays and still hasn't been released (although it's finally getting close), a lot of development has already been done on trunk for the release of GCC 4.3. I started testing 4.3 in March and in addition to finding and reporting compiler issues I have filed bugs on packages that fail to build with GCC 4.3. The idea is to give people an advance warning and to be ready for GCC 4.3 when it will be released.

We have almost 500 bugs related to GCC 4.3 already, mostly due to a clean-up of C++ headers in GCC that has exposed sloppy programming in many programs. Fortunately, these bugs are easy to fix. As I'm finding common mistakes in packages, I will document these problems and way to make sure a program is ready for GCC 4.3.

Common problems

Update: there is now a GCC 4.3 porting guide that describes the most common problems people will face when moving to GCC 4.3.

Thu, 10 May 2007; 14:48 — gccpermanent link

Links

Here are a number of links to various postings and other information related to my research about release management in free software projects:

Sat, 28 Apr 2007; 11:30 — phdpermanent link

X.org

In previous times, most Linux distributions and other free software projects relied on the XFree86 system. Over the years, the structures within the XFree86 project became were rigid and the project failed to innovate and keep up with the pace of the wider free software community. When XFree86 changed its license in February 2004, the active community and the majority of vendors quickly moved to X.org. X.org is a very active community and they decided to break up the monolithic code base and to adopt a more modern build system. As of X.org 7.0, the project moved to the modular system in which components are developed and released separately. Effectively, the project introduced a development mechanism which features two release mechanisms: individual components can be released as needed and there is an overall release of X.org in which all stable components are put together. These roll-up releases take place every six months.

VersionDateMonths
7.02005-12-21
7.12006-05-225
7.22007-02-159

Past problems

Solutions

Outstanding problems

Sat, 17 Mar 2007; 11:49 — phdpermanent link

Plone

Plone is a content management system that is built on the powerful Zope application server. The project experienced many delays with its 2.1 release. This made it difficult for Plone consultants to choose whether to use the old release or wait for the new one, and users faced many upgrade issues when 2.1 was finally released and had many changes. Partly to address these problems and partly in order to sync their releases with Zope, they decided in 2005 to move to a six month time based release cycle.

VersionDateMonths
1.02003-02-06
2.02004-03-2313
2.12005-09-0617
2.52006-06-169

Past problems

Solutions

Outstanding problems

Fri, 16 Mar 2007; 19:52 — phdpermanent link

OpenOffice.org

OpenOffice.org is an office suite offering various integrated applications, such as a word processor and a spreadsheet. Originally developed by StarDivision, StarOffice was acquired by Sun who released it as free software as OpenOffice.org in July 2000. While Sun still maintains fairly tight control over the development of OpenOffice.org, many other vendors, in particular Novell, are important contributors to the project. The project had a fairly long release cycle of about 18 months to accommodate StarOffice, the commercial product from Sun. There were many delays, making it hard for vendors to decide which version to include. OpenOffice.org moved to a three month release cycle after their long-delayed 2.0 release, published 26 months after 1.1. The new release cycle is viewed as a positive development by contributors who get their features and fixes out to users faster. Nevertheless, at the end of 2006 a discussion took place in which a six month interval was suggested. Apparently users didn't want new features every three months and the short interval between releases put a lot of pressure on the QA team.

VersionDateMonths
1.02002-05-01
1.12003-09-0216
2.02005-10-2026
2.0.12005-12-212
2.0.22006-03-083
2.0.32006-06-294
2.0.42006-10-133
2.1.02006-12-122

Past problems

Solutions

Outstanding problems

Fri, 16 Mar 2007; 08:44 — phdpermanent link

Linux kernel

The Linux kernel project has seen major changes to its development and release strategy in the last few years, in particular since the first stable release of the 2.6 series in December 2003. This series was opened almost three years after the 2.4 series in January 2001, which many felt was too long. A problem that resulted from the long interval between major releases was that vendors had to back- and forward-port a lot of patches. Nowadays, major development happens on the 2.6 series and new releases are published every three to four months. This new development model has faced much controversy. While some people, in particular developers of the kernel, claim that the new model is working very well, some users are worried about the number of significant changes and lack of stability in the kernel. Andrew Morton, a lead developer, has expressed several times that he believes the kernel is getting buggier.

VersionDateMonths
1.01994-03-14
1.21995-03-0712
2.01996-06-0915
2.21999-01-2531
2.42001-01-0423
2.62003-12-1735

Past problems

Solutions

Outstanding problems

Thu, 15 Mar 2007; 16:31 — phdpermanent link

GNOME

GNOME provides a complete desktop environment that is easy to use. The project experienced major problems, such as delays, during its 1.x series and in particular during the preparation of its 2.0 release. GNOME introduced time based releases after its 2.0 release and has significantly improved release management. The project has published time based releases every six months for a number of years now and is considered as the reference model for a good implementation of time based release management. They have shown that it's possible to set and meet deadlines in volunteer projects and to release on time.

VersionDateMonths
1.01999-03-03
1.22000-05-2515
1.42001-04-0210
2.02002-06-2715
2.22003-02-067
2.42003-09-117
2.62004-03-317
2.82004-09-156
2.102005-03-096
2.122005-09-076
2.142006-03-156
2.162006-09-066
2.182007-03-146

Past problems

Solutions

Outstanding problems

Thu, 15 Mar 2007; 08:21 — phdpermanent link

GCC

The GNU Compiler Collection (GCC) is a compiler suite which supports a number of programming languages, such as C and C++. It is a very important development tool and is the standard compiler among free software projects. GCC was quite stagnant in the middle of the 1990s until the EGCS project formed. EGCS took over development of the official GCC in October 1998 and instituted rigorous processes, such as high levels of peer review, and created a steering committee which has the power to appoint maintainers and make important decisions. In theory, the project follows a time based release with an interval of six months. In practice, the project has released only one new version every year in recent times.

VersionDateMonths
3.02001-06-18
3.12002-05-1511
3.22002-08-143
3.32003-05-139
3.4.02004-04-1811
4.0.02005-04-2012
4.1.02006-02-2810

Past problems

Solutions

Outstanding problems

Wed, 14 Mar 2007; 15:41 — phdpermanent link

Debian

The aim of Debian is to integrate software produced by other projects to create a complete operating system based on free software. In recent years, the project has faced increasingly delayed and unpredictable releases. Most notably, the release process of Debian 3.1 was characterized by major delays. Initially announced for December 1, 2003, the software was finally released in June 2005: a delay of one and a half years. Since then, the project has made a number of improvements to its release process.

VersionDateMonths
1.11996-06-17
1.21996-12-126
1.31997-06-026
2.01998-07-2414
2.11999-03-097
2.22000-08-1417
3.02002-07-1923
3.12005-06-0635

Past Problems

Solutions

Outstanding problems

Wed, 14 Mar 2007; 09:42 — phdpermanent link

Quality Improvement in Free Software: Release Management

As I'm nearing the completion of my PhD, I'm starting to write about the findings from my research. The aim of my PhD is to investigate quality improvement in free software projects. After some exploratory studies about quality in free software, I decided to focus on release management as one problematic area in which improvement is possible. My approach is to study the development process of projects and to investigate ways how these processes can be improved. The hope is that such improvements will lead to increased levels of quality in the software produced by free software projects.

With regard to release management, I'm focusing especially on large and complex projects, in which hundreds of volunteers need to be coordinated during release preparations. I've been looking particularly at time based release management since my exploratory studies have shown that there is significant interest in this release management strategy. The main question of my research is how and why time based release management works for large free software projects.

In my first series of postings, I will introduce the seven free software projects I have studied in depth during my research. For each project, I will briefly summarize what problems the project faced in the past, what changes they have implemented to address these problems, and what outstanding problems they still have.

Projects: Debian | GCC | GNOME | Linux kernel | OpenOffice.org | Plone | X.org

Tue, 13 Mar 2007; 22:22 — phdpermanent link

debian-installer rc2 for NSLU2 available

Frans Pop uploaded debian-installer a few days ago in preparation for RC2. RC2 will be released in a few days after some more testing and the creation of CD images. Since the NSLU2 doesn't need CD images and I've tested the installer already, I've made NSLU2 images of RC2 available.

Special thanks go to Gordon Farquharson who has done tremendous amounts of testing in the last few weeks and months. Since RC1, the following changes have been implemented:

Installation instructions are available.

Mon, 12 Mar 2007; 09:53 — debianpermanent link

Lemote's Fulong Miniature Computer

Lemote's Fulong Yesterday I received a Fulong Miniature Computer from China. This device is produced by Lemote and is based on the Loongson chip, a MIPS-like CPU developed in China and previously known as the Godson. The Fulong mini-PC has a Loongson 2E CPU running at 666 Mhz, 256 MB RAM and a 2.5" 40 GB hard drive. There are the usual I/O ports, such as USB, PS/2, Ethernet, audio, VGA and TV out. The Fulong mini-PC ships with a customized version of Debian.

I'm really excited about the Loongson because it promises to make MIPS available on the desktop. In fact, the folks at Lemote already have a laptop based on the same motherboard used in the Fulong mini-PC. Lemote is also trying to establish a community around the Loongson. They have given 400 devices to partners and 600 to Loongson fans and developers in China. It seems that the community is quite active, but it's hard to tell because I don't read Chinese.

For now, I have taken some pictures of the Fulong, but in the coming months I look forward to integrating Loongson support into Debian.

Thu, 08 Mar 2007; 12:13 — debianpermanent link
Previous  1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15  Next