SipXconfig UI libraries

From SIPfoundry sipXecs IP PBX, The Open Source SIP PBX for Linux - Calivia

Jump to: navigation, search

Contents

Selection Criteria

  • runs in modern browsers without user having to install any plug-ins
  • allows for communicating with server over RESTful
  • allows for implementing responsive, rich user interface - everything that we need to implement user portal
  • is skinable: administrators can change color schemes/logos etc.
  • allows writing and executing unit test - preferably without having running server
  • offers no-compilation/minimum compilation deployment during development (unlike with Tapestry/Java - I want to change something and see it in my

browser after refreshing a matter of seconds not minutes)

Libraries

add notes here I'll move them to google docs spreadsheet


JQuery UI
Nice widgets, theme support (one of the default themes is very similar to this proposal), CSS enabled.
works best if used to improve/decorate static or generated HTML - no easy support for generating/modifying DOM tree
integrates well with other libraries: for example can be used with mootools
dual license: MIT/GPL
qooxdoo
No static HTML needed.
Generated DOM tree looks really bad. Questionable CSS support (looks like it has it's own styling mechanism)
dual licence: LGPL and Eclipse
YUI - Yahoo User Interface Library
CSS based skinning
many interesting widgets, Douglas Crockford works for them
BSD license
GWT
Google javascript generator: write in Java, run in javascript approach
easier learning curve compared to pure javascript
lot's of widgets and many other libraries are writing modules to be used with GWT
might be hard to integrate with existing RESTfull server-sideL GWT supports basic HTTP request builder but as of GTW 1.6 it only supports GET and POST methods (we can use restlet POST tunnelling)
JSNI allows for integrating native JavaScript libraries in GWT application
licence: Apache 2.0
pyjamas
GWT implemented in python
probably more natural language than java, no change/compile/run cycle
less popular than GWT
licence: Apache 2.0
ExtJS
nice, mature widget set
dual license: GPL/commercials - would need a commercial license for sipXecs

Helper Javascript libraries

Those are non-UI libraries that can be used to provide some low-level support. In most cases it's OK to use more than one.

MooTools
mostly augmenting standard classes (map, each for Arrays, some string methods)
effects
MIT License
Ext Core
DOM manipulation, AJAX requests
MIT Licence


GWT and pure JavaScript

Criteria GWT JavaScript
Browser support No plugin required in modern browsers No plugin required in modern browsers
UI Extensive widget set, no fireworks but allows for creating complicated, highly responsive and usable UI.

In theory it is possible to use widgets and components from JavaScript libraries but it requires repackaging them as GWT composites.

Depends on the used library: really nice widgets but require a lot of customization. If we want to use the best components from each library we will have to worry about interactions and lack of uniforms API. Probably better chance to have exactly what we want if we are willing to invest more time in that.
Tools/language Well integrated Eclipse plug-in. Most of the tools that can be used with Java can be used with GWT. Unit test libraries, code coverage, ant - no changes to standard sipXconfig toolset required. Basic Eclipse plug-in support. More extensive plug-in from Aptana. Some functionality limited by a typeless nature of JavaScript. Language itself seems to be better for writing UI than Java: especially functions and closures are nice.
Skin/Customization Several themes provided. Ability to define new themes if needed. CSS based. Depends on specific library: usually CSS based. Some libraries (jQuery) have really nice predefined skins (better looking that GWT default skins).
Localization Very similar to what we have today: java properties based.  ?
REST client support Limited to GET and POST method so we would need to use POST tunnelling for PUT and DELETE. Alternatively use JSNI to package some of the javascript supported options. Very natural: each library that I looked at has some version of fully functional request object in many cases with JSON parsing support.
Development cycle Reasonably fast: GWT hosted mode browser supports running application without long recompilation cycle. Changes in Java nad HTML are visible after pressing Refresh: on my small application it was seconds rather than minutes. It's possible to Debug application directly in Eclipse. In order to see application in the browser recompilation is needed. Very fast: changes in the browsers immediately visible. In browser debugger needs to be used (Firebug is a really nice tool.)

Flex/Flash

Flex is an open source RIA framework built on top of Flash.
Flex has a scripting language called ActionScript that is based on the ECMAScript standard (as is JavaScript)
Flex requires compilation (using either FOSS or proprietary compilers) and also requires a browser plug-in to run
The "official" development environment is FlexBuilder, by Adobe. FlexBuilder is currently not available on Linux. This shows no signs of changing anytime soon. There are several open source development environments that I found, but none seemed to have much information about them available online. One appears to be available only on Windows. IntelliJ IDEA supports Flex development, but this is a commercial IDE.
Flex/Flash may be appropriate for some parts of sipXconfig in the future, but using it as a primary technology does not seem to be friendly to open source development.

JavaFX

JavaFX is a framework for developing RIAs
JavaFX uses a scripting language on the browser that can access a subset of the Java libraries
JavaFX requires a JRE installed on the client, as well as a browser plugin.
JavaFX is not currently available for Linux clients
Personal tools