Mozilla Prism is an interesting product. What I really like is that it requires no real extra work for your app to run in it. With some additional effort you can potentially add some great stuff (offline support for example). It’s too early to develop applications for it just yet, but it does show off some serious potential. I did two tests as an example:
Url: http://calendar.google.com (SSL doesn't seem to work at this time) Name: Calendar [ ] Show location bar [ ] Show status messages and progress [x] Enable navigation keys Create Shortcuts [x] Desktop [ ] Start Menu [ ] Quick Launch Menu
CBSNews.com Video Player
Disclosure: My employer.
Url: http://www.cbsnews.com/sections/i_video/main500251.shtml Name: CBSNews.com Video [ ] Show location bar [ ] Show status messages and progress [x] Enable navigation keys Create Shortcuts [x] Desktop [ ] Start Menu [ ] Quick Launch Menu
Both worked nicely. It gave me a way to keep the app open independently of my browser. The second test proves the next thing I wanted to mention. Plugins are supported. No reason why you can’t use a Flash player for example. Of course you could also use
<video/>. I wonder if Google Gears could be installed on it? You can use
about:plugins as an application url to see what plugins are installed (I believe it should be the same as Firefox). There doesn’t seem to be an
about:prism just yet.
There are however some security aspects that an application like this must take into account.
There are a bunch of things I’d love to see. For example:
- API for Interactions – For certain events such as minimized/maximized (or user-visible/user-hidden to make it more neutral in terms of meaning). Also one for for opening a file so that the OS could map a file to be handled by an Mozilla Prism Application. The event could be handled similar to that of an upload. Haven’t looked to see what WHATWG offers in regards to these two things.
- Extensions Support – Think of this as an interface/vehicle for XULRunner. Full window apps like Calendar could be run in Prism. This provides a common runtime shared across multiple applications.
- Install Mechanism – To share the two things I did I had to document my settings up above. The ability to pass those perhaps using a protocol would be really nice. For example:
would then open prism who would then ask you if you want to “install” this application. Bonus points if it accepted a base64 encoded icon similar to a data:url and used it. Using an technique similar to what Apple does for iTunes and having a landing page would give the user the option to install Prism if they didn’t have it already.
Great stuff. I can’t wait to see where it goes from here.
Edit [10/29/07 @ 11:45 PM EST]: Fixed bad url in example.