[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [olpc-software] No package manager?

James Clark wrote:
I'm intrigued by the comments in


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. :)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]