[RFC] Reorganizing the download directory.

Rob Landley rob at landley.net
Mon Feb 8 06:55:48 UTC 2010


On Sunday 07 February 2010 20:57:45 Denys Vlasenko wrote:
> On Sunday 07 February 2010 01:15, Rob Landley wrote:
> > I'd like to do a couple things to http://busybox.net/downloads/
> >
> > 1) Move the actual source tarballs into a "sources" subdirectory (there's
> > a lot of them now, makes it hard to see anything else in downloads).
> >
> > I note that this change is potentially disruptive to people who download
> > via script, but it should only have to be done once.  (And we already did
> > it for the "legacy" directory with the pre-1.0 versions back when clutter
> > was getting overwhelming.)
>
> In order to not break the script, I propose just moving "sufficiently old"
> releases to legacy/

I thought about that.  The question is how to define "sufficiently old".  It also 
means that all download scripts eventually break as things get moved in 
future.

What I used to do is have everything at the top level also linked from the 
"legacy" directory so that right on the day it was released the stable URL 
would be out of the legacy directory.  (Then the links at the top level would 
last a while, but then eventually go away.)  But the legacy directory was 
always a bit of a hack, I was just trying to cut down the clutter so you could 
find what you were looking for.  It's not a good long-term solution because the 
"sufficiently old" problem is inherent and unanswerable...

Possibly if the download directory is going to accumulate enough stuff other 
than the project's source code release tarballs, then the release tarballs 
should be in their own "sources" subdirectory?  (I suggest "sources" plural 
because downloads is plural, which I always had a hard time remembering when 
"download.html" was singular.)

> > 2) Group the fixes together into a "fixes" subdirectory (so it would now
> > be fixes/1.15.2 instead of fixes-1.15.2).
>
> Same as above, move some to legacy/? I fear deeper tree only open up
> more possibilities for collecting cruft...

The project's ten years old, we've already collected cruft.  Past tense.  If 
we don't want to leave it piled in a heap, we either organize it better or we 
delete old stuff.

> I actually went ahead and moved those to legacy/, does it look ok now?

It looks fine for now, but it's a short term fix.  The oldest source tarball at 
the top level is currently march 2008.  So any download script that's a full 2 
years old (February 2008) is already broken.

It really depends whether you want to break it once in a big way and be done 
with it, or break it regularly in small ways that don't inconvenience as many 
people but which never ends...

> Another thing: we can stop generating .gz files, I think.
> It's year 2010 after all.

Except that raises the question "should we produce lzma files"?

I personally use the bz2 files, but other than ubiquitous availability the 
format hasn't really got anything to recommend it.  It's neither as efficiently 
encoded/decoded as gzip (which is why streaming protocols like ssh -C will 
continue to use gzip), or as space efficient as lzma (which does not yet have 
universal availability, and asking people to download the busybox source in a 
file format they need busybox to decompress would be silly).

If you'd like me to rewrite your bzip/bunzip code to be multi-threaded so it 
could take advantage of SMP while compressing/decompressing, then it might 
have some advantage.  (It has independent fixed-size chunks, before compression 
anyway; gz doesn't really lend itself to that so easily, and I'm not familiar 
with the guts of lzma.)  But selectively adding -lpthreads to the busybox 
makefiles really doesn't sound like fun.

In general, I tended to take my queues from the linux kernel, and they're 
still producing gz files.  But it's your call.  Back in 2003 the kernel needed 
ftp://www.kernel.org/pub/README_ABOUT_BZ2_FILES but now the main 
http://kernel.org/ page's "full source" links are straight to the bz2 files and 
nobody blinks...

> > 3) Zap Changelog.gz and the "patches" directory.  I stopped updating both
> > back during the outbreak of Bruce, and now that things have switched over
> > to git there's not much point anyway.
>
> Zapped.
>
> > 4) Is anybody still using the "qemu" directory (the one with a Red Hat 9
> > image in it for regression testing)?  As far as I know it still works
> > fine, but I dunno what our minimum acceptable development environment is
> > these days.
>
> Didn't try.

I know the image still works, I mean as far as I know the current busybox 
source still builds under it.

> > 5) Move "README" to "README-busybox" (what updates this, by the way?  Is
> > there some kind of commit hook?  Does it match what's currently in source
> > control?),
>
> It seems redundant and obsolete, ok to delete?

Look at the nav bar on the main page, under documentation, there's a link to 
that README.  It's also in the source tarball.

It's not a bad thing to have (the linux kernel source has a README too), but 
it could use a little love...

> > and add a new README describing the layout of the download directory.
>
> If layout will become non-obvious, yes.

I'd like to keep it as obvious os possible, but I'm wary of thinking that 
what's obvious to me is obvious to other people.

Also, web servers can be configured to display README file contents at the top 
of directories they provide file listings for.  (Ours currently isn't, though.)

> > 6) Add a "binaries/$VERSION" directory with prebuilt "not quite
> > allyesconfig" busybox binaries for a bunch of different targets, based on
> > the current version of the source and statically linked against uClibc. 
> > See
> > http://busybox.net/~landley/binaries/1.16.0 for what I'd put there.
>
> Wow, I like it.
> Maybe squashed one level, binaries-$VERSION?

Like busybox-armv4tl-1.16.0 you mean?  Seems a bit long, but if that's what 
you prefer, sure.  (The version number's primarily there to ensure it gets 
updated when the release does, or that if it hasn't people notice.)

As long as it's still just a postfix to the name "busybox", then

  qemu-arm ./busybox-armv4tl ls -l

Should work just fine as a quick smoke test of non-x86 bugs, which is the 
important thing.  (This bug happens for me on arm, here's how to reproduce 
it... :)

One thing I was thinking was at some point in the future I could set up a cron 
job to build nightly versions from the repository, in which case they'd need 
some way to distinguish them.  But that could go under snapshots/binaries or 
something...

Rob
-- 
Latency is more important than throughput. It's that simple. - Linus Torvalds


More information about the busybox mailing list