[Spice-devel] Alternate platform exploration

Jeremy White jwhite at codeweavers.com
Wed Mar 28 10:05:33 PDT 2012


I, like many before me, am interested in seeing a spice client on other
platforms.  Things like Mac OS X, iOS, Android, HTML5, and so on.

I've spent a bit of time researching what has gone before, and thought
I'd try to summarize what I've found.  Mostly that will show my
ignorance and hopefully smarter people than I will rush to correct me
and I'll learn something <grin>.

I gather that the primary focus of Spice development is around the spice
gtk client.  That currently provides clients for *nix and Windows
systems.  Spice-xpi lets you launch the client from a web browser so you
get some modicum of browser integration.  libvirt integration lets you
launch the client from vm managers, and related systems.

Spice-gtk and spice-common is where all the action is.  The interesting
spice implementations are all in c code.

A proof of concept Mac implementation with Gtk has already been done. In
theory, that's a straight forward, if potentially unsatisfying, solution
for the Mac.  iOS and Android pose a much more substantial challenge,
however.

I didn't see any evidence of active work on alternate platforms - if I
missed that, please both accept my apologies and fill me in.

So, as I look around for ways forward, I've considered the following
options:

  1.  Native versions for all

      This is probably the most satisfying option, but requires fairly
      meaty work for Mac, iOS, and Android.  It also doesn't satisfy
      the zero-installation I-want-it-in-my-browser people.  It also
      imposes a long term maintenance challenge.


  2.  HTML5 to rule them all

      This, afaict, requires a complete SPICE client written in
      Javascript.  This is no small task, and creates a fairly serious
      maintenance challenge.  The client is still evolving
      fairly rapidly, and synchronizing two code bases will be tricky.

      It's also not clear if HTML5 can deliver the kind of performance
      we all crave.

      But, if a functional client could be implemented, it
      would effectively solve all the alternate platform issues, right?


  3.  Chrome / Pepper / Native Client

      This approach would reuse the spice-common code, presumably,
      and is a bit of hybrid.  It would be part Javascript, part
      C code.  It would have similar, if more modest, maintenance
      issues.  It would also only support Chrome (afaik, no
      other browser has adopted the Native Client vision).

      I saw one person on the mailing list propose this, but I saw no
      actual action on it.


  4.  Use gtk/Broadway

      On the face of it, this would appear to be a compelling option.
      Just rebuild the client to use the broadway backend, do some
      server side footwork, and you have a solution similar to the
      HTML5 vision.  But you have one code base.

      But then I realized that having broadway working on a remote
      server just recreates the problem that spice is meant to solve,
      once again serving to remind me of my own stupidity :-/.

      I can't find any reference to this being considered in the
      mailing list archives, and a broader search finds me lots
      of spicy restaurants on Broadway Ave :-).

      I can't help but feel that there may yet be something clever
      that could be done with broadway; I'm probably wrong, but it
      feels like a string I should tug on.



I did discard the concept of a Flash client; I feel that's not really a
good long term solution.

So all that leads me to conclude that the best path forward would be a
Javascript / HTML5 client implementation.

So now, please bring out the clue bats!

Did I miss some implication of the libvirt connection?  Can an alternate
client solution be leveraged instead?

Other thoughts?

Thanks,

Jeremy


More information about the Spice-devel mailing list