Profile: Jörg Schilling
By Daniel P. Dern
May 1, 2005
If you're an open source fan looking to burn CDs or DVDs, there's a good chance you're using Jörg Schilling's CDrecord. Widely used on thirty operating systems, from the Solaris platform to Linux to Apple OS X, CDrecord, Schilling claims, "is the only CD-R program available that supports most CD recorders and comes with full source."
Schilling, 49, was born in Berlin, where he currently lives and works as a researcher at the Fraunhofer Institute for Open Communication Systems (FOKUS). His current project involves berliOS, which he describes as the first collaborative environment for open source software development in Europe. "berliOS started as a SourceForge clone; we now have about 2,000 projects, more than 10,000 users, and 4TB of downloads a month," he says.
These days, Schilling is a frequent contributor to discussions on the OpenSolaris mailing lists, but he started out to be an electrical engineer at the Technical University of Berlin. He took his first computer course there, starting out with PASCAL, on IBM mainframes with punch cards, and moving to C around 1982. At the university, he was exposed to Unix for the first time: "There was a nice course in 1981, where we took the Unix v6 sources, and had a group where we talked about it with the John Lions book [/Source Code and Commentary on Unix Level 6/]. It was already illegal by then, so somebody made photocopies."
His workplace acquired some 68000-based Unix clones in the early 80s, which led him deeper into C and Unix. In 1986, he began working on a Unix-like operating system for the Atari, but stopped that effort when a Sun 2/50 came into his home a month later.
One of his earliest development efforts was an open source |tar| clone for the Berthold UNIX clone that he still supports. Later, working for type setting company Berthold, he began to work on the Unix kernel itself. There, he worked on kernel and user level debugger support for a VM implementation of Berthold's Unix clone,| |and a cursor-editable shell. Moving to SunOS, he wrote a WORM filesystem for his masters' thesis.
But it's for CDrecord that Schilling is probably best known. Now ubiquitous across Unix-like operating systems, CDrecord has its origins in a humble SCSI driver. "At Berthold, I was responsible for writing drivers for SunOS. We had our own keyboard, with 155 keys, so I had to modify the Sun keyboard driver to allow for more keys, and to do some things with languages and layouts that Sun did not support.
"Berthold also had some very high resolution scanners, which could scan about 100 lines per millimeter with a paper size of 420 by 420mm; this meant that an A3-size scan would create about 50MB of data. The only way to get this information into the computer at the time was by using SCSI, so I wrote a SCSI driver for SunOS (SunOS-3.0 at the time) that let us use the high-res scanner.
"The scanner work was the basis for CDrecord. When the first scanner was ready as a product, engineering started with a newer, much smaller, and less expensive model, but they did not know how to work with the SCSI interface. So I wrote the first generic SCSI interface, really the first generic SCSI driver in the world, because I did this in August 1986. Two years later, Adaptec did their ASPI drivers, but I did mine first and the interface is unchanged since then."
One offshoot of this early SCSI work was the development of |sformat|, a disk formatting utility for Suns that was the first to allow formatting from a live operating system. But when Kodak and Philips announced the first CD writers in 1992, Schilling decided that SunOS should be able to write to them. "The problem was, it was hard to get the information, so I contacted Phillips and got the OK from them to get the info. But I would have to buy a drive, for DM25,000; Berthold, the company I was working for, was already dying, so they didn't have enough money to buy the drive. So the project of writing CD-recording software would need to be delayed. A year or so later after Berthold folded, I ended up at FOKUS, and there I found the Phillips CD writer I wanted access to, and how to get info in order to interface with the drive."
His first effort involved trying to port |CDWrite|, a Linux-based tool, to run on Solaris. "That turned out to be a nightmare. The program was really bad; it relied on proprietary Linux SCSI calls. I converted it to use my generic SCSI driver, and after I was ready with the conversion, I found I had changed 95 percent of the code."
After a second rewrite, and after all the old |CDWrite| code had been replaced, CDrecord launched in February of 1996. Almost immediately, he enhanced it to deal with multi-session CDs, and in 1997, he ported it back to Linux. From there, it rapidly spread to other operating systems. "Within a few months, CDrecord, which I thought at this time was the most non-portable program, turned out to be the model of portability, because people were interested in having it run. We soon had ports to FreeBSD, Silicon Graphics, and other platforms, and CDrecord now runs on thirty platforms, including OS/2 and Microsoft systems." According to Schilling, "CDrecord supports DVD-R and DVD-RW, with all known DVD writers, on all UNIX-like OSes and on Win32. DVD-writing support has been implemented in CDrecord since March 1998."
Schilling says that CDrecord had over a million users worldwide by around 2000. "There are more than 1,000 downloads a day from the main FTP server, and more from the mirror sites, and CDrecord is integrated into many Linux distros." CDrecord is packaged as part of CDrtools, along with other utilities and various support libraries.
The next steps for CDrecord will involve continued improvement of internationalization and support for the new dual-layer DVD burners that have entered the market. But Schilling is also looking forward to the release of an open version of Solaris. "When Solaris becomes OpenSolaris, there will be some contributions from me. I have some hacks on filesystem codes I could contribute. I will most likely (if I get permission from Sun, which I expect I will after OpenSolaris is available) publish my WORM file system. This could not be published before, because it contains about a thousand lines of code taken from the UFS code, which you need to write a working file system on Solaris. However, it was written for SunOS 4, so it won't be directly usable on Solaris; now it will have to be ported."