[olpc-software] No package manager?
Christopher Blizzard
blizzard at redhat.com
Mon Mar 13 21:11:13 UTC 2006
James Clark wrote:
> I'm intrigued by the comments in
>
> http://fedoraproject.org/wiki/OLPC/Goals
>
> to the effect that there won't be any need for a package manager.
>
> I can see that by constraining the platform you may not need a package
> manager to manage the platform itself, but won't you still need a
> package manager to allow users to install, uninstall and update the
> applications that are built on top of the platform?
>
> I guess you could avoid a package manager using the one directory per
> application approach. Is that what you have in mind?
>
James, your question is perfectly timed. Daniel's answer has more
specifics but I'll answer to this question directly: I would like to be
able to basically use one directory per application, with some
additional descriptive information. The idea is that it would enable
new kinds of deployment scenarios. Imagine kids being able to share
books (content) or applications (programs) with each other directly
instead of having to go to a centralized server for the software.
Having a peer to peer system means that any time you need to add a
dependency you have to reassemble that dependency from component parts,
which gets very complicated for those of us having to build these
systems and the kids who have to live with them.
It also fixes a few other problems. Like the orphan problem - how do
you know when it's safe to delete a particular program or library with
the current set of package managers? Also, re-installing an application
means just deleting a directory instead of trying to find all the files
scattered all over the operating system. In a system in which disk and
memory are at a premium we want to make this as easy as is humanly
possible. Current linux systems don't make this easy, especially when
something goes wrong. I don't expect that kids will be actually seeing
those directories, but it's much easier to write a utility to do it for
them if everything for each app is in one place (app bundles? Is this
the Mac name for them?)
To talk about this a little more, I think that there's another really
important mantra at work here around deployment scenarios. And that is
that replacing the operating system to fix something should be
incredibly easy and shouldn't be scary at all. I prefer something along
the lines of a "one click re-install." In reality it will probably be
something like plugging your laptop into your friend's laptop or using a
USB key to do the re-install. But it's the fact that it shouldn't be a
scary event that's the key.
The implication of that is that a person's data _and_ their applications
need to be separate from the OS. Especially given that a server might
not be available for backups, etc at the time the re-install might need
to be done. So we end up with three separate areas of data:
o The operating system (/etc, /usr, /lib, etc)
o A kid's home directory (/home, probably)
o The applications and content on the machine (/olpc or stored in a home
directory? With single-directory applications and content all of a
sudden we can install applications in a user's home directory.)
A re-install could be as simple as deleting everything other than /home
and copying over data. End of story. But it means that it's very easy
to do and can be done from another laptop or some easy to use source.
No servers required and no admins required in attendance.
As with most things in life there are downsides. For example, if we
assume that anything that an app requires is outside of the scope of the
what the OS provides, those apps need to carry those libraries and
capabilities along with them. This means that for some common
libraries, we might end up with more than one copy on disk! (This is
actually similar to the use case in the Java world, also with its ups
and downs.) So do we try and optimize and try and have common copies of
libraries? That opens up a lot of the same problems that we have with
package managers in general, that is, all of a sudden a single app isn't
self-sufficient. And really, if we have something that's found in a lot
of apps, maybe it should be part of the OS image. I've had some long
conversations with Jim Gettys on this question and I think that we've
walked away with two big questions:
1. What kinds of customization will we have at an OS and application
level in each individual country and region?
2. What apps will people _realistically_ want to put on these machines
_for kids_ and what libraries do they need?
We don't have a lot of data on either of these points yet, so it's
largely a question of conjecture. And Jim and I don't totally agree, so
expect some of that to come out on the mailing list. :)
--Chris
More information about the olpc-software
mailing list