All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jürgen Botz" <jurgen@botz.org>
To: Bennett Todd <bet@rahul.net>
Cc: reiserfs-list@namesys.com
Subject: Re: software packaging and ReiserFS v4
Date: Wed, 03 Sep 2003 14:18:07 -0700	[thread overview]
Message-ID: <3F565A8F.4010209@botz.org> (raw)
In-Reply-To: <20030903165409.GD4714@rahul.net>

Bennett Todd wrote:
> As I've gotten deeper into the project, I've had my nose rubbed in
> the fact that rpm is the accumulating cruft heart; it's the worst.

Amen.  It's so bad that RH can't even fix it anymore... It took
them the better part of a year to fix the widely reported hanging
bug that appeared in RH 8.0.

> Then I started thinking about the database that a good software
> packging tool needs to maintain. After a bit, it hit me that
> ReiserFS 4 would be _killer_!

Uh-huh.  I've been dreaming about something like this for 10 years,
even since I first played around with the Prospero file system.
In its implementation Prospero fell short of its promise, but it
demonstrated the revolutionary idea that closure enabled complete
customization of namespaces in a file system.

> With ReiserFS v4 its as natural as can be; a file /usr/bin/foo,
> installed by a package foo, would simply have a symlink
> 
> 	/usr/bin/foo/pkg -> /var/lib/pkg/foo
> 
> Besides scaling elegantly and staying wonderfully simple, this has
> the additional otherwise-impossible feature that the package
> attribution automatically correctly updates if you move the file
> (although the forward mappings within /var/lib/pkg/foo wouldn't
> update automagically).

They could, with the right plug-in.  Without such a plug-in I don't
see why you need reiser4 for this... in fact, this kind of scheme
has already been implemented in some older package managers.  There
are several LISA papers talking about this kind of thing since
the early 90s.  In particular the CMU "depot" system comes to mind.

But take this idea further.... in my ideal system there is no /usr.
/usr is just a historical artifact, anyway.

Nor is there a $HOME.  Depending on your point of view (more about
that below) there is only /, /bin, /lib, /etc, and maybe /man or
/doc, plus any directories you create.  Your files go into /.  Or
at least that's what you think...

In /bin are the programs you use.  There are all the standard Unix
utils, of course, but if you're an emacs user there's /bin/emacs, and
if you're a vi user there's /bin/vi.  That's for you as a user... for
root all commands that are installed in the system are in /bin.  If
you become a heretic ;-) and convert from emacs to vi, you just use
a UI that lets you deselect the emacs package from being included in
your namespace and select the vi package.

The key to this are what we might call "perspectives".  Every user
has their own perspective, or maybe more than one that they can
chose between.  There's also a special perspective that
shows every package in its own hierarchy, i.e.
/pkg/emacs/20.1/{bin,lib,man}.  This perspective is your "package
manager" if you will.  In addition every execution context
has its own perspective... when emacs runs it always sees itself and
all its files as "/pkg/emacs/20.1/...".  This is closure, and
it guarantees that every reference can always be resolved.  It once
and for all solves the "hardcoded path" problem.  It also resolves
name collision problems, multiple installed package version problems,
etc., etc.

Reiser4 as it is today can't do this yet.  But it provides the
infrastructure on which such a system (and others) can be built.

I have learned that very few people actually understand the importance
and power of flexible namespaces, never mind closure in namespaces.
Fortunately Hans Reiser does, and since his wonderful filesystem has
other benefits is being adopted in spite of people's ignorance of
its far-ranging implications!  ;-)

:j

--
Jürgen Botz               | While differing widely in the various
jurgen@botz.org           | little bits we know, in our infinite
                           | ignorance we are all equal. -Karl Popper


  reply	other threads:[~2003-09-03 21:18 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-03 16:54 software packaging and ReiserFS v4 Bennett Todd
2003-09-03 21:18 ` Jürgen Botz [this message]
2003-09-03 21:37   ` Bennett Todd
2003-09-03 21:52     ` Jürgen Botz
2003-09-04  1:28       ` Bennett Todd
2003-09-04  5:05         ` Jeffrey Yasskin
2003-09-03 23:11     ` Grant Miner
2003-09-05 18:15     ` Grant Miner
2003-09-05 19:44       ` Mike Fedyk
2003-09-05 20:18         ` Ragnar Kjørstad
2003-09-05 20:35           ` Mike Fedyk
2003-09-05 20:39           ` OT: package scripts (was Re: software packaging and ReiserFS v4) Bennett Todd
2003-09-05 21:37             ` Grant Miner
2003-09-08  9:49       ` software packaging and ReiserFS v4 Nikita Danilov
2003-09-08 10:52         ` Hans Reiser
2003-09-05  7:08 ` Richard Heycock

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3F565A8F.4010209@botz.org \
    --to=jurgen@botz.org \
    --cc=bet@rahul.net \
    --cc=reiserfs-list@namesys.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.