Don't understand german? Read or subscribe to my english-only feed.

Use of VCS in Debian packages – some stats

August 19th, 2011

Everyone loves stats, ok well – at least I do. I was doing some research with regards to package maintenance within the Debian distribution and since the results might be interesting for someone else – there we are.

On 19th of August 2011 there have been:

  • 16935 unique source packages in Debian/sid
  • 9977 packages with Vcs-* field in Debian/sid
  • 6957 packages without a Vcs-* field in Debian/sid

Therefore ~59% of all packages in Debian/sid are officially managed with a version control system (VCS). Now, which VCS do those packages use?

  1. Svn: 4939
  2. Git: 4377
  3. Darcs: 284
  4. Bzr: 247
  5. Hg: 61
  6. Cvs: 31
  7. Arch: 28
  8. Mtn: 10

I’ve retrieved the numbers from the Ultimate Debian Database (UDD). Sadly there’s a bug in UDD regarding the Vcs-Type information, see #637524. Therefore I’ve extracted a list of 80 packages where a Vcs-Browser header is available but the Vcs-Type entry is empty in UDD. 29 packages of them are managed inside CVS but don’t appear as such in UDD, so I manually corrected the number for CVS in the numbers above. The remaining 51 packages have a Vcs-Browser field set but lack the according Vcs-* entry, some of them pointing to upstream VCS instead of the according Debian package repository, some of them result in 404 errors, etc. As a result I’ve reported bugs where applicable (#638466, #638468, #638469, #638470, #638471, #638472, #638474, #638475, #638476, #638477, #638479, #638482, #638486, #638488, #638493, #638497, #638501, #638475, #638475, #638502, #638503, #638505, #638506, #638508, #638509, #638510, #638511, #638512, #638513, #638516, #638518, #638519, #638520, #638522, #638523, #638524, #638525, #638526, #638527, #638528, #638529, #638530, #638516, #638531).

Disclaimer: I found Debian’s Statistics wiki page and Zack’s VCS usage stats after starting to play with my own stats. AFAICT Zack’s slightly higher numbers are the result of looking at multiple versions for the same source packages, as you’ll see when comparing numbers from UDD’s sources_uniq view (which I used) with either 1) UDD’s sources table, 2) source table count from projectb or 3) Package count from http://$DEBIAN_MIRROR/debian/dists/unstable/{main,contrib,non-free}/source/Sources.bz2.

Conclusion: 9316 packages are officially managed with Subversion and Git as of today, representing ~94% of the VCS managed packages. This means ~55% of all the Debian (source) packages are available through either a Git or Subversion repository – and that’s actually the number I was originally interested in.

Thanks to Alexander Wirt, Christian Hofstaedter, Gerfried Fuchs, Jörg Jaspert and Michael Renner for hints in forming up the final stats results.

Review: Das Git-Buch

August 14th, 2011

*

Ich habe soeben “Das Git-Buch – Verteilte Versionsverwaltung für Code und Dokumente” von Valentin Haenel und Julius Plenz gelesen. Das deutschsprachige Buch füllt 328 Seiten und konkurriert mit freien Büchern wie dem Git Community Book, Pro Git und Git In the Trenches. Das Inhaltsverzeichnis des Buches sieht wie folgt aus:

  1. Einführung und erste Schritte
  2. Grundlagen
  3. Praktische Versionsverwaltung
  4. Fortgeschrittene Konzepte
  5. Verteiltes Git
  6. Workflows
  7. Git auf dem Server
  8. Git automatisieren
  9. Zusammenspiel mit anderen Versionsverwaltungssystemen

Es geht schnell zur Sache: die fürs Verständnis besonders wichtigen Themen Index und Objektmodell sind bereits nach rund 60 Seiten solide absolviert. Bei dickeren Büchern habe ich immer Angst, dass die Seiten mit Auszügen aus Manpages oder Kommandozeilenoutput gefüllt sein könnten, das ist aber hier definitiv nicht der Fall. Die Erklärungen sind knackig und präzise geschrieben, es wird nicht lange um den heißen Brei geredet.

Es gibt anschauliche Beispiele und es wird nicht nur das wie erklärt, sondern auch das warum und was der Hintergrund von einem anfangs vielleicht noch komisch anmutendem Konzept ist. Fortgeschrittene Themen wie reflog und filter-branch werden praxisnahe behandelt und auch meine Lieblinge wie –color-words, interaktives Rebasen, git grep und cherry-picking kommen vor.

Ich habe einiges dazu gelernt, wie z.B. ‘git show id:datei’, ‘git gui blame’, den Einsatz von ‘git rerere‘ und wie man eine GPG-Signatur in einen Blob steckt. Dass die sehr nette patch-Option ‘-p’ in vielen Tools funktioniert war mir bereits bekannt, dass die verbose-Option ‘-v’ aber etwa beim Commiten nützlich sein kann war mir neu. Der Hinweis auf mergeinfo-Support in git-svn mit Git Version 1.7.4 kam mir ebenso wie die Gegenüberstellung von Submodules zu Subtrees gerade recht.

Zu Beanstanden habe ich nur eine Kleinigkeit: Im Absatz über gute Commit-Nachrichten fehlt mir ein Hinweis auf englischsprachige Commit-Nachrichten als empfehlenswerter Standard. Das Buch richtet sich natürlich an deutschsprachiges Publikum und daher sind die deutschen Commit-Nachrichten in den Beispielen verzeihbar, aber deutschsprachigen Commit-Nachrichten möchte zumindest ich in keinem Repository begegnen, an dem mehrere Personen beteiligt sind.

Aus der Stichwortliste was ich gerne erwähnt gefunden hätte sind folgende Punkte offen geblieben: das praktische Tool git-wtf, das Konsolenfrontend tig sowie der mit speziellen Tools versehene Workflow gitflow. Zu git-svn fällt mir noch die addAuthorFrom/useLogAuthor-Thematik ein. Sehr praktisch für den Alltag finde ich weiters url insteadOf/pushInsteadOf. Im Kapitel zu Github hätte vielleicht noch ein Hinweis auf eines der hilfreichen Tools wie git-pull-request Platz gehabt. Dass Tools wie git-buildpackage und gitpkg im Debian-Paketbau beliebt sind und diverse Frontends für Emacs und Vim existieren hätte aber vermutlich das Buch inhaltsmäßig gesprengt oder das Risiko mit sich gebracht, dass die Informationen für ein Buch zu schnell überholt sein könnten.

Mein Fazit: Selbst mit über 3 Jahren Erfahrung und als Anhänger von Git hat mich das Buch nicht gelangweilt, sondern das vorhandene Wissen gefestigt und neues dazugestellt. Das Buch liefert solides Wissen in angenehm lesbarer Form und ich kann es Einsteigern wie Fortgeschrittenen empfehlen. Man hat damit den passenden Überblick und die richtigen Stichwörter um sich durch die diversen Manpages und die Weite des Internets zu kämpfen und Git voll genießen zu können.

Disclaimer: Ich habe vom Verlag ein kostenloses Exemplar zur Verfügung gestellt bekommen.

The Zsh Pony

July 29th, 2011

I was giving a skills exchange session about Zsh at DebConf 11. I wasn’t expected to prepare the session, but since there was no video projector available in the meeting room I started to work on some notes.

Looks like I suffer from presentation driven development, so the notes turned out to become bigger than expected. If you’re interested in my Zsh pony then head over to grml.org/zsh-pony.

PS: I plan to provide the zsh pony at github, but my org-mode file still causes an error 500 at github. Github support is already aware of it. In the meantime I’m happy to receive feedback, patches and contributions via mail.

Creating 32bit Debian packages in 64bit environments

July 12th, 2011

i386 systems are dying off and therefore building 32bit Debian packages in 64bit environments is important if you still need packages for i386. For some recent projects I had to set up 64bit-only environments with the need to provide 32bit packages for i386 as well as according i386 Linux kernel packages.

1) Common Debian packages

Just prepend the “linux32″ command to the build commands and use the “-a386″ option of dpkg-buildpackage(1). So use “linux32 dpkg-buildpackage -ai386″, “linux32 git-buildpackage -ai386″, “linux32 debuild -ai386″,… or whatever build tool you prefer to work with. I personally like using “git-buildpackage … -S” together with cowbuilder. When using cowbuilder it’s easy to get i386 Debian packages:

# create initial cow base directory, needs to be executed just once:
cowbuilder --create --basepath /var/cache/pbuilder/wheezy32.cow \
   --architecture i386 --distribution wheezy --mirror http://ftp.de.debian.org/debian

# the "debbuildopts -b" says I want a binary-only build, see dpkg-buildpackage(1):
linux32 cowbuilder --build --basepath /var/cache/pbuilder/wheezy32.cow \
   ~/foobar_0.42.dsc --debbuildopts "-b"

2) Debian Kernel packages

If you’re building your own kernel images you might be aware of setting ARCH for the common make targets, like:

ARCH=i386 make oldconfig

To build a linux-image Debian package you can use upstream’s deb-pkg target, like:

ARCH=i386 make deb-pkg

This should provide you according linux-headers, linux-firmware-image, linux-libc-dev and linux-image i386 Debian packages.

But if you need the according source and doc packages as well you might prefer make-kpkg of kernel-package instead, using options like:

DEB_HOST_ARCH=i386 setarch i386 make-kpkg --revision "$KERNELVERSION" \
  --cross-compile - --arch=i386 --us --uc --initrd \
  --rootcmd fakeroot kernel-image kernel-headers kernel-doc kernel-source

3) Debian linux-2.6 kernel packages

If you’re interested in building Debian kernel images the same way as the Debian kernel team does (AKA linux-2.6) make sure to check out the kernel-handbook.

After installing essential software packages I had to set up some symlinks for building:

apt-get install build-essential fakeroot devscripts fakeroot
apt-get build-dep linux-2.6
ln -s /usr/bin/gcc-4.4 /usr/bin/i486-linux-gnu-gcc-4.4
ln -s /usr/bin/ld /usr/bin/i486-linux-gnu-ld
ln -s /usr/bin/ar /usr/bin/i486-linux-gnu-ar
ln -s /usr/bin/objcopy /usr/bin/i486-linux-gnu-objcopy
ln -s /usr/bin/nm /usr/bin/i486-linux-gnu-nm
ln -s /usr/bin/objdump /usr/bin/i486-linux-gnu-objdump
ln -s /usr/bin/strip /usr/bin/i486-linux-gnu-strip

Then executing:

apt-get source linux-2.6
cd linux-2.6*
debuild -ai386 -us -uc

provided the according Debian packages (linux-doc, linux-headers, linux-image, linux-libc-dev, linux-manual, linux-patch-debian, linux-source, linux-support and linux-tools).

4) Out-of-tree kernel module packages

If you want to build external modules which are available as $MODULENAME-source in Debian (e.g. tp-smapi-source) using module-assistant then use the DEB_HOST_ARCH environment variable, like:

DEB_HOST_ARCH=i386 m-a -v --text-mode -k /home/mika/linux-$KERNELVERSION -l $KERNELVERSION build tp-smapi

If the external module is not available for use with module-assistant then compile the module running:

make -C /lib/modules/$KERNELVERSION/build M=$(pwd)

whereas /lib/modules/$KERNELVERSION/build is pointing to the build directory of your 32bit kernel.

Create virtual disk images using grml-debootstrap

May 31st, 2011

Background:

Lars Wirzenius was searching for a tool to create virtual disk images. Turned out I needed something similar to improve the automatic deployment process of a customer’s platform installation.

Being the author of the mentioned grml-debootstrap tool I started to work on deploying virtual disk images using grml-debootstrap. As a result I just uploaded grml-debootstrap version 0.46 which is the first release being capable of installing virtual disk images. Thanks to great help by Thorsten Glaser also proper Grub integration is working now.

Instructions:

Grab the most recent grml-debootstrap version (>=0.46) from the grml-testing repository and make sure to install its recommends (kpartx mksh parted qemu-utils). Then just use the vmfile option to activate deployment of a virtual disk image, combined with the target option as usual. To adjust the disk size use the vmsize option.

Usage example:

# IMAGE_FILE="/mnt/sda1/qemu.img"
# grml-debootstrap --vmfile --vmsize 3G --target $IMAGE_FILE

I tested it from inside a running Grml live system, which is running inside a KVM image running on a Proxmox VE cluster. I can even invoke KVM/Qemu inside Grml inside KVM to test the image (using remote access e.g. via “vncviewer $IP_OF_KVM_HOST:5901″) running:

# kvm -hda $IMAGE_FILE -m 256 -vnc :1

And the best about it: it just works. :)
As usual: testing and feedback highly welcome.

Grml 2011.05 – Codename Just Mari

May 30th, 2011

I’m proud to be able to announce a new stable release of Grml, the Debian based Live system for system administrators.

This release is a very special one for me. On the one hand of course because of the special release name “Just Mari”, being dedicated to my lovely wife.

But it’s also special because of the way the release management worked out. I’ve been the release manager for Grml since the very beginning, which turned out to be more than 6 years since the first stable release already. I developed grml-live as build framework based on FAI for generating a Grml and Debian based Linux Live system to streamline the build process. Anyway it was mainly me who managed the release chroots, doing the update management during release freeze, editing main web page etc.

As I want to make the project as independent from myself as much as possible and to keep the Bus factor in balance we started to improve our project infrastructure so it’s not just me who can do this kind of release management. As a result Grml core developer Christian Hofstaedtler became the release sergeant of this release. The release candidate version was even released without myself being available (the release happened behind my back during our marriage). Major work on the final stable release was also done by Grml core developers Ulrich Dangel, Christian Hofstaedtler, Frank Terbeck and Alexander Wirt and I’m very happy about that. Kudos guys for all your work and all the hidden efforts going on behind my back. :)

The details regarding the new Grml release are available in the official release announcement, get the ISOs from grml.org/download.

I hope you enjoy the release as much as I do. Happy hacking!

mika.marry(“mari”)

May 29th, 2011

*

4489 days later we did it, on 21st of May Marianne and I got married.

Turned out it became a pretty geeky marriage, as Grml 2011.05-rc1 with codename “Just Mari” was released during the ceremony (thanks guys!), I had to solve a nice groom quiz and our event had its own hashtag on twitter.

Thanks to everyone making the day unforgettable for us.

I am going to DebConf11

May 5th, 2011

*

Just registered myself for DebConf11, see you in Banja Luka.

Report from FAI developer meeting 04/2011

April 21st, 2011

Last week a developer meeting of the FAI project took place in Cologne/Germany. Four core developers (project lead Thomas Lange and 3x Michael :)) met for two days to discuss and work on the FAI project.

The first day (2011-04-14) started at 11:45 and lasted until around 21:15, the second day (2011-04-15) started at 11:00 and lasted until 22:00. We made 134 svn commits in those two days. The developer meeting was great, we got tons of stuff done:

  • New release candidate version for stable release 3.4.8
  • Implemented support for CentOS 5
  • Website improvements:
  • Setup-storage improvements:
    • Backport from trunk/experimental of setup-storage into 3.4.8
    • Cleanup of setup-storage patches
    • Minor bugfixes
    • setup-storage in 3.4 got align-at and default to cylinder alignment if preserve is used
  • Worked on autotesting using Kantan:
  • Discussed Release management:
    • 3.4.x considered as long term stable release (includes tested bugfixes and tested features that have been backported from developer versions (4.x and experimental))
    • 4.x considered as developer version (inclusion of fast bugfixes, inclusion of big features which might break stable version,…)
  • Documentation:
  • Unsorted other stuff:
    • Removed obsolete branches in svn
    • Grub now being installed from inside the target instead of nfsroot
    • Changelog in trunk got entries from 3.4.X with fixed git commit ids; entries were merged to find exact diff of trunk to 3.4.X
    • Defined what needs to be done after the developer meeting.

Event: Grazer Linuxtage 2011

April 1st, 2011

Nicht vergessen – am Samstag, dem 9. April finden an der FH Joanneum wieder die Grazer Linuxtage (GLT11) statt.

Das Programm bietet von 09:30 bis 19:00 Uhr über 30 Vorträge, LPI- und BSD-Prüfungen, eine Keysigning-Party und viele Infostände von renommierten Projekten wie z.B. Debian, LibreOffice und OpenStreetMap.

Ich selbst bin neben der Tätigkeit als Organisator auch am Grml-Projektstand sowie als Vortragender von Gute Open-Source-Projekte bestehen aus mehr als nur Code anzutreffen.

Das Programm sowie alle weiteren Informationen gibt es unter linuxtage.at.

Grml User Survey 2011 – the results

March 17th, 2011

The results of the Grml User Survey 2011 are available. I strongly recommend any open source project to run such a survey. Besides gathering really interesting feedback it’s motivating for developers to read what people think about your product.

Interesting facts for Planet Debian readers: With a leading 86% our users are Debian users. Further quoting:

Also just a short overview but it seems that the most important reasons for using Grml are:
* Based on Debian
* Command-line interface
* Ships all necessary command-line tools
* Zsh

I personally consider the survey a big success for the Grml project. Thanks to all participants for your feedback.

Grazer Linuxtage 2011: Call for Lectures / Projects

January 28th, 2011

Am Samstag, dem 9. April 2011 finden an der FH Joanneum die Grazer Linuxtage 2011 (GLT11) statt. Die ganztägige Veranstaltung (9:00 bis 18:30 Uhr) richtet sich mit zahlreichen Vorträgen und Informationsständen nach den Interessen der Zielgruppen Anwender, Administratoren und Softwareentwickler.

Soeben sind Call for Lectures und Call for Projects online gegangen. Wer auf den GLT11 einen Vortrag halten oder ein Open-Source-Projekt mit einem Stand präsentieren möchte, kann das ab sofort über die Homepage einreichen.

Ich hoffe man sieht sich im schönen Graz!

Grml User Survey 2011

January 11th, 2011

Grml users out there: We are interested in getting your feedback so we can further improve Grml. We are also working on a webpage which lists happy Grml users and also some quotes and use cases. Now we need your help:

Please provide your feedback and take part in Grml’s user survey!

Booting ISO images from within GRUB2

January 7th, 2011

You might be aware of GRUB’s loopback option for booting an ISO, I wrote about it in Boot an ISO via Grub2 more than a year ago. A few months ago Goswin von Brederlow came up with this idea:

grml functions great as rescue system. So it would be nice to have a boot entry for it in grub instead of having to go look for the CD when needed. To make installing and updating simple it would be great if one could install this as a normal debian package which would register itself in grub (and maybe lilo too).

What a lovely idea: no need for a CD or USB stick as long as the bootloader and the harddisk are still working. Minimal manual intervention needed to keep it up2date and working – sounds like the perfect rescue system. 8-)

Now since end of 2010 a new stable version of sysadmin’s favorite live system (AKA Grml 2010.12) is available and the great news is that we came up with two independent solutions known as grml-rescueboot and grub-imageboot. Having shipped them to one of my customers already I’d like to write some words about it and why you should also consider using it on all your systems where GRUB2 is available.

grml-rescueboot uses GRUB2 and its loopback feature for booting. Grml as well as Ubuntu provide all what’s needed out-of-the-box. If you’re interested in the details check out Jordan Uggla’s excellent Loopback.cfg webpage in the supergrubdisk wiki. The best about it: you can provide custom bootoptions automatically when booting Grml. For example just set CUSTOM_BOOTOPTIONS=”ssh=grml2011″ in /etc/default/grml-rescueboot and the Grml rescue system will automatically start the OpenSSH server with the specified argument as password for user grml. Of course you can use all the other nifty bootoptions like scripts/netscript/… to further customize your Grml rescue system. [A note to other distributions like Ubuntu: I’d be interested to establish a mechanism to pass kernel options for loopback boot in a standardized way, drop me a note if you’re interested in this.]

grub-imageboot uses GRUB2 and syslinux’ memdisk to boot ISOs and floppy images. It doesn’t rely on the loopback feature but instead maps the ISO into the memory directly. This is great for Linux ISOs that can’t and won’t support the the loopback feature (and have everything inside their initrd so the ISO doesn’t have to find itself during booting), like BIOS or firmware updates. Also for example FreeDOS and Alpharev are known to work just fine. But sadly memdisk ISO emulation doesn’t work with all Linux systems, as documented in the syslinux wiki. The good news is that Grml supports the memdiskfind/phram/mtdblock approach out-of-the-box. As far as I know therefore Grml is the first Debian based live system supporting memdisk ISO boot, though my patches already went to the Debian-Live project so if you’re using live-boot >=2.0.14-1 or >=2.0.12-1+grml.04 your live system should be able to boot via memdisk ISO emulation as well.

Summary: If you want to boot a Linux system which supports loopback.cfg use grml-rescueboot as its a more powerful tool to boot Linux live systems like Grml and Ubuntu. If you want to boot non-Linux systems (BIOS-/Firmware-Updates/FreeDOS/….) use grub-imageboot.

Alright – how do you deploy this solution? Just grab and install grml-rescueboot and/or grub-imageboot.

To deploy grml-rescueboot (adjust $VERSION if you want to use another flavour):

# choose Grml version:
VERSION=grml64-medium_2010.12

# create directory
mkdir -p /boot/grml

# download and verify ISO
cd /boot/grml
wget download.grml.org/${VERSION}.iso{,.md5}
md5sum -c ${VERSION}.iso.md5

To deploy grub-imageboot:

# choose Grml version:
VERSION=grml64-medium_2010.12

# create directory
mkdir -p /boot/images

# download and verify ISO
cd /boot/images
wget download.grml.org/${VERSION}.iso{,.md5}
md5sum -c ${VERSION}.iso.md5

That’s it! Now when running update-grub you should get something like:

# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.36-grml64
Found initrd image: /boot/initrd.img-2.6.36-grml64
Found memtest86+ image: /boot/memtest86+.bin
Found memtest86+ multiboot image: /boot/memtest86+_multiboot.bin
  No volume groups found
Found Grml ISO image: /boot/grml/grml64-medium_2010.12.iso
Found memdisk: /boot/memdisk
Found iso image: /boot/images/grml64-medium_2010.12.iso
done

Voilà, when rebooting your system you should see something like:

Screenshot: grml-rescueboot

The “Grml Rescue System” entry is what grml-rescueboot provides and “Bootable ISO Image” is what’s provided by grub-imageboot. Just select the entry you’d like to use, press enter and and you should get the bootsplash of the according ISO.

BTW: I’ve tested this with Ubuntu 10.10 too, grml-rescueboot works out-of-the-box with the Ubuntu ISO as well, it just doesn’t support the memdisk ISO boot by grub-imageboot (yet).

Tip: if you want to use grml-rescueboot and grub-imageboot with the same ISOs without having them twice on the disk just point the configuration option IMAGES in /etc/default/grub-imageboot to the according directory (like /boot/grml).

Note: if you’re using the ext{2,3,4} filesystem on the partition that’s being used for /boot please be aware that you need GRUB >=1.98+20100804-12 (newer version is already available in Debian/unstable and hopefully migrates to squeeze in time) or GRUB >=1.99~20101122-1 because of the INDIRECT_BLOCKS support, see #543924 for the details.

PS: We think about providing grml-rescueboot and grub-imageboot within official Debian. If you’re interested in seeing integration support for other distributions as well please help and drop us a note.

Simple DNS in chroots

January 7th, 2011

Update: Ulrich ‘mru’ Dangel suggested pdnsd as nice alternative to dnsmasq and Cyril ‘KiBi’ Brulebois pointed out, that it’s not necessary to invoke dnsmasq after fresh installation as it’s running by default then – I adjusted the text accordingly, thanks for the pointers!

If /etc/resolv.conf doesn’t provide any nameserver entries glibc[1] will automatically initialize the nameserver to the loopback address. This is nice for dealing with chroots without having to manually edit resolv.conf to get working DNS.

Just install a basic DNS forwarder like dnsmasq (‘apt-get install dnsmasq’) or if it’s already on your box just start it (‘/etc/init.d/dnsmasq start’). That’s it. Now when chrooting into a system without an existing resolv.conf configuration it will give you a working DNS setup without any further work.

PS: Grml ships dnsmasq by default and ‘/etc/init.d/dnsmasq start’ or ‘Start dnsmasq’ will work out-of-the box. In Ubuntu the dnsmasq package is available only through the universe repository – but the dnsmasq-base package (providing e.g. the init script) is shipped by default, so replace the ‘/etc/init.d/dnsmasq’ command with a simple ‘dnsmasq’ there.

[1] At least the [e]glibc versions provided on Debian and Ubuntu are known to provide this glibc extension. Other libc implementations like dietlibc and uclibc don’t seem to provide it, so don’t strictly rely on this feature but use it as the icing on the cake.

Open Source Projektmanagement

November 18th, 2010

*

Seit Ende September gibt es das Resultat von rund 3 Jahren Arbeit in Buchform im Handel. "Open Source Projektmanagement – Softwareentwicklung von der Idee zur Marktreife" ist mein literarischer Beitrag rund um das Management von Open-Source-Projekten. Dass das Buch so lange auf sich warten hat lassen, liegt – entgegen anders lautender Gerüchte – nicht an der schönen Seitenzahl 28-1. Die Seitenzahl war natürlich reiner Zufall. Mir war es aber durchaus wichtig, dass das Buch einen leicht zu bewältigenden Umfang hat und nicht im Buchregal verstaubt.

Mein Buch ist ein Rundumschlag um alle möglichen Aspekte des Projektmanagements im Open-Source-Bereich – wie etwa Marketing, Kommunikation, Entwicklung und Infrastruktur. Darüber hinaus bietet dieses Buch Hilfestellung und Hinweise was es bei einem Open-Source-Projekt alles zu beachten gilt und wie man das in die Praxis umsetzt.

Warum dieses Buch? Seit mehr als 7 Jahren bin ich Projektleiter von Grml und darüber hinaus in vielen anderen Projekten wie u.a. Debian und FAI als Entwickler aktiv, seit mehr als 2 Jahren lebe ich ausschließlich von freier Software. Ich bin ein überzeugter Anhänger des Open-Source-Gedankens, stelle aber leider zu häufig fest, dass viel-versprechende Projekte beim Projektmanagement teilweise versagen. In meinem Buch berichte ich über diese, auch von mir begangene Fehler, warne vor bestimmten Praktiken und stelle Möglichkeiten zur Verbesserung des Entwicklungs- und Releaseprozesses vor.

Natürlich berichte ich nicht nur aus der Theorie oder meinen persönlichen Erfahrungen im Grml-Projekt, sondern lasse auch andere Personen zu Wort kommen: Alexandra Leisse (Nokia, Qt) erzählt vom Community Management bei Nokia, Lenz Grimmer (Oracle, MySQL) von der Arbeit in der virtuellen Firma MySQL. Wie das Releasemanagement in großen Projekten funktioniert erläutern Andreas Barth (Debian) und Michael Renner (PostgreSQL). Ferdinand Thommes (Sidux) schließlich erzählt von seinen Erfahrungen im Vereinswesen eines Open-Source-Projekts.

Für wen ist das Buch? Einerseits nimmt es den Einsteiger an der Hand und führt ihn mit Themen wie Projektstart, Lizenzwahl, Projekt-Logo und Namenswahl in die Open-Source-Welt ein. Andererseits zeigt der Blick in das Inhaltsverzeichnis, dass auch Beitragende von bereits bestehenden Open-Source-Projekten davon profitieren können: Kapitel zur Projektverwaltung, die Beleuchtung der unterschiedlichen Entwicklungsmodelle, Aspekte rund um das Team, Code und Releasemanagement, über Infrastruktur und Dokumentation bis hin zu Marketing und dem Thema Finanzierung sollten jedem Entwickler genug Anregungen und Stoff zur Selbstreflektion liefern.

Wer Interesse daran findet: Ich würde mich besonders freuen wenn ihr das Buch in der Buchhandlung eures Vertrauens bestellt und damit eure Buchhändler auf das Buch aufmerksam macht. Ich freue mich insbesondere über jede Rezension die für mein Buch zustande kommt. Ich halte es hier mit Tom vom Bestatterweblog: "Wenn viele gute Rezensionen bei einem Buch stehen, erhöht sich natürlich die Wahrscheinlichkeit, dass auch andere es noch kaufen, und darüber würde ich mich natürlich auch sehr freuen."

An dieser Stelle möchte ich mich noch einmal bei allen Beteiligten recht herzlich bedanken. Insbesondere bei meiner Verlobten, die auf ein 3 Jahre andauerndes Projekt Rücksicht genommen hat und mehr als nur den einen oder anderen Abend auf mich verzichten musste. Ich möchte mich auch noch bei Rhonda für die sehr schönen Worte über mich und Grml bedanken.

Also, viel Spass beim Lesen und ich hoffe man sieht sich auf der einen oder anderen Open-Source-Konferenz!

Event: Vorträge “Internet und Recht” und “Privatsphäre im Internet” am 18.11. in Graz

November 8th, 2010

via Peter Kuhm:

Am Donnerstag, den 18. November 2010 finden um 18:30 Uhr die Vorträge

* Internet und Recht – Stolpersteine und Wegmarken
* Privatsphäre im Internet – Facebook, Xing, Twitter und Co statt.

Wo: TU Graz, HS E, Kopernikusgasse 24/1, 8010 Graz.

Vortragende: MMag. Dr. Albrecht HALLER, Rechtsanwalt, Wien
Mag. Markus KLEMEN, Geschäftsführer SBA Research GmbH, Wien

Nähere Informationen finden Sie unter:
http://www.ove.at/akademie/details.php?ID=1233

Die Vorträge werden in Kooperation mit der Österreichischen Computer Gesellschaft (OCG), der Fakultät für Elektrotechnik und Informationstechnik, der Fakultät für Informatik und dem Absolventenverein ELiTE veranstaltet und sind – wie immer – kostenlos. Im Anschluss gibt es bei einem Buffet (auf Einladung von OVE und OCG) die Möglichkeit zum Informationsaustausch in geselliger Atmosphäre.

Die Teilnahme ist kostenlos, um Anmeldung wird jedoch gebeten.

LART of the day – the solution

October 31st, 2010

Remember my LART of the day? It looked like:

% cat foo.c
int main() { return 0; }
% gcc foo.c
foo.c:1: fatal error: can’t open /tmp/ccxgyEhb.s for writing: Permission denied
compilation terminated.

Congratulations to sunckell and Bernd for guessing the right answer.

Additionally to the blog comments (which I delayed through moderation to give everyone the same chance) I received further comments through ICQ/Jabber/IRC. It’s interesting that most people think it’s related to /tmp, but the issue isn’t related to /tmp at all.

The solution

Umask settings.

Just try my demo with ‘umask 222′. No mount/ACL/SELINUX/whatsoever tricks necessary. :) To clarify:

% umask
002
% gcc foo.c
% umask 222
% gcc foo.c
foo.c:1: fatal error: can’t open /tmp/ccteC66I.s for writing: Permission denied
compilation terminated.
% touch /tmp/ccteC66I.s
% ls -la /tmp/ccteC66I.s
-r--r--r-- 1 mika mika 0 Oct 31 12:56 /tmp/ccteC66I.s

I stumbled upon this LART by accident. As part of implementing a specialized configuration management system for a customer I had to deal with permission handling. The requirement was to generate configuration files based on the permissions of the template files but remove any existing write permissions. While playing with umask settings I noticed that you can’t set umask in the shell to get the executable flag being set. I was aware of umask(2) and always had its 0777 in mind. But files are actually generated via:

0666 & ~umask

by default instead. As I noticed that most people aren’t aware of this fact and that a umask of 222 turns out to be pretty unobtrusive this was the perfect base for a LART. Learning something new and coming up with a LART at the same time. Win-win! :)

LART of the day – guess what’s wrong

October 29th, 2010

Update: see LART of the day – the solution for the solution.

% cat foo.c
int main() { return 0; }
% gcc foo.c
foo.c:1: fatal error: can’t open /tmp/ccxgyEhb.s for writing: Permission denied
compilation terminated.

Uh?! Ok, does the file exist? Do I have write permissions? gcc ok?

% pwd
/tmp
% ls -lad /tmp
drwxrwxrwt 23 root root 1000 Oct 29 16:43 /tmp/
% ls -la /tmp/ccxgyEhb.s
ls: cannot access /tmp/ccxgyEhb.s: No such file or directory
% echo foo > /tmp/ccxgyEhb.s
% cat /tmp/ccxgyEhb.s
foo
% which gcc
/usr/bin/gcc
% gcc --version | head -1
gcc (Debian 4.4.3-7) 4.4.3

Alright, everything looks fine, right?

Assuming I would apply this LART to YOU, would you correctly guess what I did to you?

Vortrag “Gute Open-Source-Projekte bestehen aus mehr als nur Code”

August 26th, 2010

Auf der FrOSCon (Free and Open Source Software Conference) habe ich am letzten Wochenende einen Vortrag mit dem Titel "Gute Open-Source-Projekte bestehen aus mehr als nur Code" gehalten.

Das Videoteam war heuer schnell (danke!) und daher gibt es für Interessierte zu meinen Vortragsfolien (PDF, 10MB) auch bereits das Video zum Vortrag: