[cap-talk] Selling capabilities programming

Jörg Bornschein joerg at capsec.org
Fri Jul 27 07:13:07 EDT 2007


Jonathan S. Shapiro schrieb:

Hello,

> The issue of configuration information is trickier than it looks.
> Assume, for a moment, that we have a means to save this type of state. A
> week from now, when the bundle is re-installed, how do we know to
> associate it with this configuration information?
> 
> Worse, a week from now when a second bundle appears for installation, we
> will want to "preserve" the configuration information by reading and
> transforming the configuration information of the earlier version into
> configuration information that is appropriate for the new version. How
> do we know what configuration data to associate? The bundle in our hands
> may be the next version of the app or it may not; the problem is that
> the installer has no way to know that.
> 
> One solution may be to declare that all such configuration information
> is publicly readable.

I was thinking in terms of a additional indirection:

On the one hand, there is a repository of installed applications (their 
constructors) without any configuration storage attached.

On the other hand, each user has his own repository storing 
"application-starter-objects" which bind (application_constructor, 
configuration_storage, other_storage) to a clickable application.
Where other_storage is e.g. your mp3 music container.


This means a user has to import an application into his personal 
application namespace. He could do so multiple times using different 
storages.

This does not solve the problem, but maybe helps to structure this 
discussion... Upgrading an application now means two things:

1) Install a new constructor into the application repository
  No problem at all

2) Import a new "application-starter-object" into the users namespace.
  There are multiple sane ways to do this:

  1. Make a new starter-object without any migrated storage
  2. Export and reimport all storage data and assign it to the new
     starter-object. Potentially using COW.
     This should never affect the old version since the new version is
     working on its very own storage objects. I think this is the
     case you thought of when saying "publicly readable"?
  3. Assign the new starter-object the very same storage objects the
     old version uses. This of course is only possible if the old and
     the new version are compatible.

I don't see a "always the right think to do" solution -- the desired 
case heavily depends on the type of application (e.g. system services, 
mail servers etc.  may prefer 3.) and the kind of storage.

Maybe the system should keep track of different kinds of storage objects 
-- this should allow good, explicit user interfaces.
(User can assign a music-storage to different music players,
  Administrator can assign Mailbox-storage to imap server etc.. )

   j.





More information about the cap-talk mailing list