[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