Re: Bug#327081: ITP: rpmstrap -- bootstrap a basic RPM-based system
On Sun, 2005-09-11 at 20:56 +1000, Anthony Towns wrote:
> On Wed, Sep 07, 2005 at 02:08:04PM +0200, Piotr Roszatycki wrote:
> > * Package name : rpmstrap
> > Version : 0.5
> > * URL : http://hackers.progeny.com/~sam/rpmstrap/
> > * License : GPL
> > Description : bootstrap a basic RPM-based system
> > rpmstrap is a tool for bootstrapping a basic RPM-based system. It is inspired
> > by debootstrap, and allows you to build chroots and basic systems from RPM
> > sources.
> Looking at the source it seems more "based on" than "inspired by",
> particular to "rpmstrap" itself, though the "functions" and "scripts/*"
> files sure seem more derivative than just coincidently similar. If
> so, it's in violation of debootstrap's license (by not including
> debootstrap's copyright text), and it seems fairly rude to relicense it
> from debootstrap's BSD-ish license to GPLv2+, not to mention expunging
> my name and copyright notice from the source, and for that matter all
> references to debootstrap.
> Removing the copyright's a license violation, and presumably renders the
> program undistributable and unpackagable, afaics.
> At least Bastian Blank's cdebootstrap was written from scratch to justify
> its different license and lack of recognition. Colour me unimpressed.
To be completely honest with you, I've not looked much at the
debootstrap code before now. I have tried to mimic debootstrap's
interface without a doubt, but have only done so by *using* debootstrap
rather than snooping in its code. I am astounded that I have been
accused of stealing code or "expunging" any name or copyright
For what it's worth, rpmstrap as it is today is actually based on a tool
developed in house at Progeny. This tool could only bootstrap Fedora
Core 2 at a specific revision. Looking at that code now and comparing it
to what I see inside of debootstrap, the only real similarities I see
are that they both have functions common to /many/ other shell scripts
(usage(), die(), warn(), trace()).
I will have to check the legacy on this tool used internally at Progeny
to ensure nothing came from debootstrap, but to the best of my knowledge
it did not. In fact, looking at this internal tool now, it is only 314
lines of code, 153 of which are lists of FC2 packages, so it doesn't
seem likely to share any common ancestry with debootstrap.
Starting with this internal tool, I aimed to build something that could
bootstrap any other RPM-based systems. Part of my goal was to mimic
debootstrap's functionality as it was a tool I had a lot of respect for.
However, I only mimicked it based upon my usage of debootstrap. Thus, in
my design of rpmstrap I did recreate the following from the design of
1) Identical command-line options:
I wanted rpmstrap to take the same command line options
as debootstrap. This was more out of convenience because
I already knew the debootstrap options and I didn't want
to have to keep track of two different usages. This was
also because I wanted rpmstrap to be something that
someone could just drop into a tool that already used
debootstrap and it would work without any major
2) Placing of suite scripts inside of a "scripts/*" directory:
I wanted to split out the RPM-suites into their own
suite scripts. Originally, I thought of placing these in
either a directory called "suites/*" or one called
"scripts/*". I'll admit freely that I did a "dpkg-query
-L debootstrap" so I could mimic the directory structure
(remember, I wanted this to be a drop-in replacement).
However, that is not looking at the code, merely the
directory layout. I am reasonably certain that directory
layout is not copyrightable.
3) Making common functions available to suite scripts:
I wanted several functions written to be available to
the suite scripts. I originally place these into a file
called "functions", and was pleased to see that
debootstrap had taken similar logic when I did the
"dpkg-query -L debootstrap" above.
So, in conclusion, I did not copy any code from debootstrap, and to the
best of my knowledge, neither did any other contributors. The goal of
rpmstrap has always been to mimic what debootstrap does, except for
rpmstrap and debootstrap both have similar design goals (and rpmstrap
was designed to have the same interface as debootstrap) so there will
undoubtedly be similarities.
Anthony, I value and respect your input, could you show me examples of
code that you believe was stolen? There is a very remote possibility
that code from contributors may have contained something from
debootstrap. I say remote because, as far as I can recall right now the
vast majority of contributions have been additional suite scripts.
.O. Sam Hart, firstname.lastname@example.org
..O Progeny Linux Systems, Inc