Hello,

  allow me to forward an email by Vexi project lead
Charles Goodwin posted to the uuu-devel mailinglist
that answers the question why use Vexi in detail.

  Here we go:

Unununium is one of these really interesting projects
that I like to monitor (I guess I'm just one of those
web junkies) periodically, checking up on mail list
discussion etc.

One thread perked my interest: GUI approach [0]

A quick bit of background on me so that you understand
where I'm coming from... I work on the Vexi project
[1] which basically provides a platform for creating
UIs using just XML and JS that are automagically
distributed.  It's like, say, XUL but not tied into
Mozilla.

The conversation about how to approach the UUU GUI
struck a chord or two with me.  Enough to make me
subscribe to the list and lay down a form proposition
on how UUU could use Vexi and why.

In the 'GUI approach' thread, the following were
mentioned / discarded:

1.  PicoGUI - www.picogui.org
    - too large
    - not actively developed

2.  Nanosistemas - www.nanosistemas.com
    - in tasm
    - confusing code
    - portugese documentation only

3.  MGL
    - requires wxWindows (presumably too big)

So, the conclusion seems to be "there is nothing
suitable" which would mean creating your own from
scratch.  Well, I'd like to make the case for Vexi. 
"An XUL motor!?"  Bear with me, please, it'll be an
good read if nothing else. ;)

My understanding of the critical issues so far cited
for an ideal GUI candidate are:

1. Portability
2. Perfomance
3. Size
4. An understanding of the interals

Well, Vexi is all about portability.  We have build
targets for Linux, Windows, MacOS, and Solaris.  We
could have more if anybody wrote them (a single file
that implements the local hooks necessary for the core
to perform.)

We are also about performance.  The goal of the Vexi
project is to provide an environment for creating
applications that behave / feel like native
applications, only are launchable over the Internet.

Size is also a big issue.  The core weighs in at
around 700k or so, and that includes a fair bit of
stuff you guys wouldn't really want (or perhaps you
would but for other reasons).

Finally, the internals of Vexi are pretty basic.  The
Vexi platform consists of 3 major parts: the core, the
widgets, and the launcher (which is of no interest to
you).

The core implements a box layout model and an API for
manipulating it. This provides an environment where
you can construct widgets and applications using a bit
of XML and JS.  The Vexi widgets are just a bunch of
templates utilising the core API.  The XML/JS code for
the widgets weighs in at less than 300k.  So, for a
megabyte, you have a GUI and a GUI library that
supports freetype fonts, pngs, jpgs, transparency, and
comes with a ton or pre-prepared widgets that are as
simple to use as this:

<button margin="10" padding-left="20" text="Push me!"
/>
<tabpane maring="10">
    <ui:box tabtext="Start" text="Select a tab for
some fun" />
    <lazyload src=".org.vexi.chess.main" />
    <lazyload src=".org.vexi.irc.main" />
</tabpane>

Vexi widgets are 100% themable and 100% customisable.
Since they're all written in the core API, you could
literally pull the code out of any widget to use in
your own widget.  As templates are defined in an
object-oriented manner, it's very easy to share common
behaviour and to create a well-engineered codebase. 
(As the main widget author, I like to think the
widgets are well engineered!)

Hopefully you've got a raised eyebrow or two at the
moment, so now I'd best move on to the more technical
matters that could make or break this proposition.

Vexi is written in Java.  (Shock, horror!)  Yes, Java,
that "slow" language.  But it doesn't need Java. 
Using GCJ and some platform- specific .c files that
can tie the core into a native environemnt, we can
port Vexi to just about anything.  There will be an
OpenGL accelerated version of the core in the nearish
future (before the end of the year) for Windows,
Linux, and MacOS X.  Then we'll have a GUI that not
only looks / feels like a native GUI, but is _faster_
too.

Vexi applications commonly communicate using XMLRPC or
SOAP.  Obviously that is way less than ideal for an OS
GUI library, but that is something I personally am
looking to address anyway.  Given the flexibility of
Vexi, personally I'm looking to make Vexi a UI tool
for OpenGL applicaitons so that would need rectifying
regardless.

One little puzzler that you might be thinking about
is, "How does a Java-based application support a
C-based library like Freetype?"  The answer is
surprising but effective.  We have something called
'nestedvm' which is a dynamic MIPS-to-Java-bytecode
translator.  It's fast.  Very, very fast.  We can
compile a C app into MIPS and then run it anywhere,
giving us leverage over an extreme number of existing
libraries.  We actually only use it for Freetype and
libjpeg.  But, as an aspiring OS, this could be a very
useful tool as it would give UUU access to literally
thousands of existing codebases without the need to
port them at all.  Anything that compiles to MIPS and
isn't hardcoded to a particular platform would be
available to you.  I hope that raises an eyebrow or
two!!! ;)

Vexi is actively developed.  In fact, 5 of us are
getting together to start a support company as we are
starting to perk some interest.

Licensing... the Vexi core is GPL.  We can't change
that.  The original author released it as XWT [2] (we
had to fork [3] reluctantly) and has no intention of
releasing it under any other license.  But that's not
a bad thing necessarily.  The Vexi widgets are LGPL
and we _can_ relicense those if you _really_ didn't
like that. ;)  Because any UI written on the Vexi
platform is interpreted (ie XML/JS are only
interpreted) they can be of any license.

So, to quickly summarise, Vexi and UUU could work
because:
1. Vexi is portable; a small UUU-specific class and
Vexi is yours
2. Using XML/JS to define a GUI is simple and fast,
and as it's dynamic you could develop your GUIs live -
no compiling needed
3. Vexi brings a lot to the table that you might have
to otherwise port such as freetype fonts.
4. You get nestedvm in the bundle - C apps are all
yours
5. The core can be OpenGL accelerated - fast GFX
anybody?
6. Vexi is pretty small and very flexible.  Define
your own widgets, create your own themes, it's all
easy.
7. You don't have to write your own GUI system!
8. We are working on eventually getting SVG support
into Vexi.  SVG support that could be OpenGL
accelerated.  Niiice. :)

So, if you want Vexi, the million dollar question is
"how much would need to be done for Vexi to be in
UUU?" Well, I can think of 3 major tasks:

1.  A UUU-specific GCC/GCJ output so you can compile a
UUU binary.

    I have no idea what work this entails.  I know
nothing about compilers.  Considering the XWT author
and 1 of our development team are GCJ hackers, this
isn't 'out of reach' so to speak.

2.  A UUU-specific .c file implementing Vexi for UUU.

    This wouldn't be hard.  The platform specific
files are no more than a few hundred lines of code
each.  For somebody who knows what they are doing, it
would be acheivable in a day.

3.  Establishing and implementing how Vexi and UUU
would communicate.

    Again this wouldn't be hard.  The Vexi project
would implement it's side of the problem once the
details are established.

Ok, before I promise you a golden egg, I'd better go
over the caveats:

1.  Native binaries don't work at the moment.

    Not as bad as you think.  When we forked we had a
lot of ground to make up to get the project back on
track, and we have only just gotten around to
reimplementing the native binaries.  They return in
the next Vexi release (Vexi Beta 3) in 2-3 weeks time.

2.  Vexi doesn't seem fast when resizing frames.

    In order to get over some dirtying issues, some
optimizations were temporarily disabled.  This will be
reimplemented in Beta 3.

3.  Vexi doesn't seem that fast.

    Actually, the only demoable version at the moment
is in Java.  When Beta 3 comes around, the difference
will be immense.  Because Vexi uses a simple box-based
layout, the rendering process is very, very efficient.

4.  Vexi is only at Beta stage. / "I've not heard of
Vexi."

    Version numbering is subjective.  Vexi is a
codebase with a lot of history.  Because we are a fork
of a project that was renamed, and the project was (at
the time) floundering due to bad management, we are
not exactly a recognised brand.  Expect that to change
in a big, big way in the coming months now that we
have gotten Vexi back to a respectable level.

5.  Where's the documentation?

    In the fork, the documentation was unlicensed
which implies it is under sole copyright of the author
of the XWT project.  We have to write all the docs
from scratch.  We valued a working platform over a
well documented one.  Now the platform is approaching
a decent level, we are now looking to bring the
documentation up to a similar level in the coming
months.

So, if you're still with me - apologies for the long
read - then I'll finish up with a demo link and an
idea of how you could follow up any interest in a
Vexi-UUU union.

Vexi Beta 3 debuts in 2-3 weeks time.  It will be
faster, better, and nicer than previous releases and
start to see the project documentation emerging so
people can start using Vexi.  I would ask you not to
judge Vexi on the following demo but on Beta 3 (join
the news list [4] to get the announcement) before
deciding against Vexi.  Here is a quick demo of Vexi,
again something that will be much improved by the next
release:

http://www.addedspace.co.uk/vexi/applet.cgi?build=test9&url=http://download.vexi.org/chess-test3.vexi&url=http://download.vexi.org/widgets-test10.vexi

Given the progress we have been making, the advantages
of the platform, and that we will be a stable,
documented project in roughly 2 months time, Vexi
could be the ideal GUI candidate for UUU.  Could be. 
I've invested a lot of time composing this email, so I
obviously believe.  I hope I've also given you reason
to. :)

I'm always available through email, will happily
answer any questions, and can usually be found in
#vexi on irc.freenode.net if that is your preferred
pigeon.

Regards,
-- 
- Charlie

Charles Goodwin <charlie at vexi.org>
Online @ www.charlietech.com

[0]
http://unununium.org/pipermail/uuu-devel/2004-June/000155.html
[1] www.vexi.org - remote UIs in XML / JS
[2] www.xwt.org
[3] http://wiki.vexi.org/InfoFAQ
[4] news at vexi.org - subscribe using
http://lists.vexi.org   


-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
_______________________________________________
xul-talk mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/xul-talk

Reply via email to