Re: Extensions Infrastructure Work

On Tue, Jun 21, 2011 at 10:08 PM, Tim Cuthbertson <tim gfxmonk net> wrote:
> On Wed, Jun 22, 2011 at 11:01 AM, Jasper St. Pierre
> <jstpierre mecheye net> wrote:
>>> Sorry if I'm late to the party with this suggestion.
>> I'd rather late than never. I don't want to break this if people are
>> unhappy with what I've come up with.
>>> but I think this
>>> is where using zero install[0] for extensions would shine:
>>>  - feeds that contain only JS (i.e no compilation required) are
>>> trivial to create.
>>>  - built-in GPG signing of feeds
>>>  - version requirements are supported for dependencies (before, not-before)
>>>  - you can depend on other extensions, or on arbitrary packages. These
>>> can be other (vanilla) zero install feeds, or they can be feeds that
>>> are a wrapper for a system package
>>>  - system packages can have multiple names for a given zero install
>>> feed. This will allow you to depend on fooBar for fedora, but
>>> libfoo-bar on debian
>>>  - 0install uses packagekit to resolve & install system packages, so
>>> the experience should be fairly straightforward for users
>>>  - doesn't require root access (unless system packages need
>>> installing, obviously)
>> I'm confused at what you want -- do you want 0install to be used for
>> extension packages themselves, or for their dependencies?
> For extensions packages themselves. If dependencies are required, they
> would have to be represented as a 0install feed (but this could just
> be a reference to a package implementation if that is all that's
> needed).
>> If you mean the former, I'll look at 0install if it does what I
>> need.... and here's what I need.
>>  * Users need to be able to click one button, and like magic the
>> extension instantly is downloaded, unzipped, loaded and enabled. This
>> is working correctly.
>>  * Users need to be able to click the same button in the web UI, and
>> the extension is disabled. This is, again, working correctly.
>>  * I need to be able to inspect the state of the extension so I can
>> enable the correct buttons. Right now this is done with the HTTP
>> server.
>>  * We need to be able to make this seamless for a simple extension
>> case (no dependencies). I will not allow the word "0install" on a
>> dialog when installing, enabling or disabling an extension.
> You could presumably use the 0install API (it's written in python) to
> implement whatever UI you wish. In the typical case you would just
> want to implement a download progress bar and a "do you trust this
> person's GPG details" dialog for first-run of a new extension.

If it's required that there's a progress bar, or "do you trust", I'd
again like it to be in the web UI. This sounds possible, which is

> Note: 0install wouldn't change how extensions are enabled / disabled,
> as that's pretty specific to GS itself. It would simply help with
> distribution, integrity (GPG signed feeds), updates and dependency
> resolution. All of which are pretty generic problems that shouldn't
> need to be specific to GS.

OK, this all sounds pretty excellent, but I'm not sure I'm ready to do
that, at least for now. Everything that I listed above that I have to
do when upgrading the shell doesn't change with 0install, so I'll just
base it off the installation code I've already written. Tomorrow I'll
remove the old mimetype handler approach from
gnome-shell-extension-tool and stick the HTTP server into a new Python
script so the patches are easier to digest. I'll download 0install and
play with it a bit and experiment with exporting a feed from
SweetTooth-WWW itself, along with the manifest.

>> I'm editing the screencast that shows what I have worked out right
>> now. Jason Clinton: what do you usually use for video editing, so I
>> can stop cursing PiTiVi?
>>> [0]:
>>> I'm working up to releasing an extension that requires my own mutter
>>> fork (for now, I hope that won't always be the case), and 0install is
>>> the only way I can sanely do so. It allows my extension to
>>>  - have dependencies
>>>  - not mess with the system version of mutter
>>>  - work cross-platform (not a big deal when fedora is the only distro
>>> with GS, but will become more important later).
>> How does 0install make the mutter case better?
> I'm not sure I follow. None of the above points can be done with the
> current extension system as far as I know, so I'm not sure what I can
> add. "the mutter case" is simply my reason for requiring bleeding-edge
> dependencies and not conflicting with the system version of mutter.

OK, let's try that again. How does 0install sanely let users who
install your extension use a bleeding-edge mutter?

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