Activate your free membership today | Log-in

Tuesday, July 8th, 2008

Ext GWT 1.0: GWT 1.5 support, new APIs, performance, and docs

Category: Ext, GWT

Darrell Meyer has announced Ext GWT 1.0. This is the first fully stable release of the product and it includes a lot of goodies including:

  • Documentation: new screencasts of the various steps
  • GWT 1.5 support: “Ext GWT is a 100% native GWT application written in Java. Ext GWT does not wrap any 3rd party JavaScript and does not use any external JavaScript files. Ext GWT fully leverages the GWT API including the widget lifecylce, events, listeners, messaging, and RPC.”
  • “Performance was a high priority item for the Ext GWT 1.0 release. Many changes were made since the first beta releases. Initial rendering times are quicker and the new layout code reacts quicker to window resizing. Improvements can easily be seen in the Explorer demo.”
  • Advanced Form Layouts
  • Improved Data Loading, Store, Binder, and Field API

Looks like a very solid release indeed. Congrats to the team.

Posted by Dion Almaer at 8:15 am
4 Comments

+++--
3.9 rating from 36 votes

Wednesday, June 11th, 2008

Leveraging Ext JS on the Server via Jaxer

Category: Aptana, Ext

When Aptana released Jaxer, it really excited the community because you could now leverage your client-side skills on the server end of things. Rich Waters of Ext JS talks about how to leverage Ext JS on the server via Jaxer. The code created by Rich creates a Ext JaxerStore which allows you to run queries and directly put them into a Ext Store. This has the benefit of leveraging the same Ext language syntax you've become accustomed to for server-side processing by allowing Jaxer to wrap client and server-side communications up allowing either synchronous or asynchronous calls between the client and server.

I asked Rich why would developers do this versus doing a simple Ajax call to a template sitting on a server:

The template bit lets you generate the html before the page is served up so that no extra client side calls are necessary. I think the Ext template system is really slick and easier than even a lot of other existing server side templating systems. More or less it was also just an example to get people thinking about what could be done now that Ext can be run server-side.

The code snippet allows you to make the calls to Jaxer very easily:

JAVASCRIPT:
  1.  
  2. Ext.onReady(function() {
  3.    var store = new Ext.data.JaxerStore({
  4.        table : 'demo',
  5.        fields : [
  6.            {name : 'name'},
  7.            {name : 'phone'},
  8.            {name : 'email'}
  9.        ],
  10.        readerConfig : {
  11.            sortInfo : {
  12.                sort : 'name',
  13.                dir : 'asc'
  14.            }
  15.        }
  16.    });
  17.  
  18.    // create the Grid
  19.    var grid = new Ext.grid.GridPanel({
  20.        store : store,
  21.        columns : [
  22.            {header : "Name", sortable : true, dataIndex : 'name'},
  23.            {header : "Phone #", sortable : true, dataIndex : 'phone'},
  24.            {header : "Email", sortable : true, dataIndex : 'email'}
  25.        ],
  26.        viewConfig : {
  27.            forceFit : true
  28.        },
  29.        stripeRows : true,
  30.        height : 350,
  31.        width : 680,
  32.        title : 'Jaxer Demo Grid',
  33.        renderTo : Ext.getBody()
  34.    });
  35. });
  36.  

which would then populate a grid control and render it accordingly.

The source code to this new functionality can be downloaded here.

Posted by Rey Bango at 6:00 am
Comment here

+++--
3.8 rating from 38 votes

Thursday, June 5th, 2008

WiiExtJS: Building Ajax apps that run on the Wii Opera browser

Category: Ext, Opera

Shea Frederick has posted on building Wii-friendly web pages using the ExtJS library.

Shea focuses on the various issues that come up when building something for the Wii resolution, screen size, input types, and more.

For example, check out the layout:

JAVASCRIPT:
  1.  
  2. Ext.ns('Ext.ux.layout');
  3. Ext.ux.layout.wii = Ext.extend(Ext.layout.FitLayout, {
  4.     setItemSize : function(item, size){
  5.         var viewSize = Ext.getBody().getViewSize();
  6.         this.container.addClass('ux-layout-wii');
  7.         item.addClass('ux-layout-wii-item');
  8.         size.height = (viewSize.height-60);
  9.         size.width = (viewSize.width-60);
  10.         item.setSize(size);
  11.     }
  12. });
  13. Ext.Container.LAYOUTS['wii'] = Ext.ux.layout.wii;
  14.  

And then you can detect the Wii to set this layout:

JAVASCRIPT:
  1.  
  2.     Ext.isWii = navigator.userAgent.toLowerCase().indexOf("wii")> -1;
  3.     var layout = 'fit';
  4.     var title = 'Normal';
  5.     if (Ext.isWii) {
  6.         layout = 'wii';
  7.         title = 'Wii';
  8.     }
  9.  

Posted by Dion Almaer at 10:12 am
2 Comments

++++-
4.5 rating from 33 votes

Monday, April 28th, 2008

Ext JS responds with Open Source FLOSS Exceptions

Category: Ext, JavaScript

Jack Slocum and his team are listening, and appear to be working with the community to clear things up:

With our recent change to the GPL v3 some concerns have been brought up by the Ext Community. We are hoping to address some of those concerns via community discussion of two new FLOSS exceptions.

The first step for us is the Open Source License Exception for Extensions. It is currently in draft status and we are seeking input from the community before we have it finalized.

The intention of this exception is to allow for more liberal licensing of extensions, language packs, themes and open source developer toolkits and frameworks for Ext libraries under a variety of open source licenses. (Note: this exception is not for applications and does not grant any exception for the library itself. A FLOSS exception on the libraries for open source applications will be addressed in the exception discussed in “Next Up” below).

He is looking for input and feedback. You can see the latest draft, and if you have thoughts join the discussion.

This exception is the first step, with more to come:

After the Extension Exception is complete, the next step will be drafting a FLOSS exception similar to the one by MySQL AB for both Ext JS and Ext GWT.

This exception will for open source applications that use Ext JS. It will have a few distinct additional grants the Extension Exception doesn’t have (e.g. “bundling” will be ok) but won’t be applicable to extensions or toolkits, as that’s what the Extension Exception is for.

Quick work, and the fact that he is joining and leading the discussion is huge.

Posted by Dion Almaer at 12:11 am
15 Comments

++++-
4.2 rating from 48 votes

Sunday, April 27th, 2008

OpenEXT: The fork

Category: Editorial, Ext, JavaScript

OpenEXT is here. It is a fork of Ext JS 2.0.2, which was under an LGPL license (kinda.... with some invalid, non-open source licensing).

The crux of the fork is:

Ext are claiming that a fork of the existing 2.0 version is not legal, due to the way they applied the LGPL. This is likely to be incorrect, and if correct then their use of the name LGPL was grossly misleading.

At this point, developers are getting increasingly passionate, and Jack needs to make a big effort and come clean to his community to save the reputation of the project. If not, it will probably always be in a cloud of darkness as people are both confused and wonder about motives. This is not about personal attacks, but due to not having clarity on the core issues.

You will notice that most of the detractors are members of the Ext community. They aren't out to spoil some of the work that they themselves put into the project. You see the opposite in fact when you read posts such as this one from Jason Sankey:

The saddest part about this is that the Ext team really have built a fantastic library, and a vibrant community around it. The library had all the hallmarks of an open source success story. Now, however, Ext have committed the cardinal sin of an open source project: they have undermined the trust of their own community.

There are others too.

I actually believe that Jack has been given really poor legal advice, which hasn't helped his thinking on the issue. It has thus spiraled out of control, and needs a big humble gesture to steer things in the other direction.

If I were Jack, I would call a meeting (phone, irc, whatever) and get all of the parties together. Hash it out with an open mind, and end up with the right answer. Again, this is for the sake of the Ext JS community, customers, as well as the entire open source JavaScript community. If this doesn't happen, you are keeping the cloud around the project, and handing contributors to other projects. No-one wants to see this happen.

In my opinion the way to protect your business and the project, isn't through a license to protect the forking. If you have a healthy strong community, any fork by someone wouldn't put much of a dent in you... as who would go with BobsExt when they can get the real deal. Of course, the reverse is also true, and tearing the community apart will lead to a world where you will never find the true potential.

Posted by Dion Almaer at 2:07 am
51 Comments

++---
2.4 rating from 227 votes

Saturday, April 26th, 2008

Ext JS and the fun with Open Source licenses

Category: Editorial, Ext

There has been a lot of noise revolving around Ext JS and the open source license decisions. Under the original license (LGPL-ish) many thought that it wasn't actually an open source license at all. Jack changed to GPL last week when he announced version 2.1, but others have been upset with views on forking the old code-base.

I have publicly tried to stay out of the discussion, but today Jack published his thoughts and timeline, as well as frustrations with personal attacks.

This is all such a shame, as Ext JS is great stuff, and I wish that Jack could be spending him time on building more great functionality, and growing his business. I am sure these debates have taken way too much time and energy.

Here is the history from Jack's point of view:

  • For 7 months I wrote yui-ext full time from my home, gave it away under a BSD license and loved every minute of it. There weren’t many donations and no official support from Yahoo. With my third child due, and savings running low I had to find a way to continue building what was now changing to Ext JS and also find a way to earn a living from it.

    At this time I contemplated switching to a strictly commercial framework. I openly discussed this decision with the community in the Ext forums. If you want to read the discussions, they are here:

    “Official Commercial License Input Thread”
    http://extjs.com/forum/showthread.php?t=2194

    “Official Open Src License Thread (Commercial License Part 2)”
    http://extjs.com/forum/showthread.php?t=2253

    In the end, after much discussion with the community, I decided to go to the LGPL.

  • Shortly before 1.0 is released, there numerous Ext “clones” started popping up that were hacking Ext themes, css and other resources from 1.0 - before we had even released 1.0. Here I had 4 new themes for Ext JS 1.0 that I had spent countless hours working on (I am not a great designer) and what could now be considered competitors were already using it before I even have a chance to release Ext 1.0.

    That’s why the proprietary license on the “Assets” (CSS and images) was introduced in Ext 1.0.

  • Ext JS 1.0 is released under the LGPL, minus the Assets license as mentioned above. Shortly thereafter 2 major publicly traded corporations (names withheld) embedded Ext JS into their development frameworks. With no mention of Ext JS except in credits files that no one ever saw. No support for all the work that had been put into the framework. Neither one of them even contacted us. How can that be possible? Can they do that? How can we compete with them taking such a large chunk of our potential customers? These are the questions I was faced with and so began my “Intro to Business 101″.

    The next release of Ext JS was released under the Ext License, to serve as proxy to the LGPL and add the additional “no framework/toolkit” restriction that was present until 2.1.

Then things got public:

  • This blog post comes out on CNET out of nowhere:

    http://www.cnet.com/8301-13505_1-9878693-16.html

  • Alex Russell publicly bashes the Ext License on Ajaxian (sorry no link, I could’t find it) and then continues his attack on the license with me personally over email. He then follows with this blog post:

    http://alex.dojotoolkit.org/?p=654

  • Matthew Garrett decides in his infinite wisdom to completely disregard our Ext License or Assets license:

    http://mjg59.livejournal.com/84586.html

  • Dion Almaer of Ajaxian privately informs us of concerns he has about the Ext License. His points are very clear and sincere and he is only interested in the open source community as a whole.
  • Several private conversations were held with customers regarding the license, spurred by the links and discussions above.

Then Jack talks about some personal attacks, which I won't go into here.

I really hope that this can be worked out, and we can move on. The last thing that Jack, the Ext community, and even the open source JavaScript community needs is for this to go forward. It needs a quick solution, and I think that a message about the past code base can take care of this.

This reminds me of my old days running TheServerSide. These kind of situations happened pretty regularly. Controversy was the norm, especially with characters like JBoss around... oh and CocoBase brought a lot of hilarity too with their fake legal stupidity.

Anyway, I have been very happy to see that Ajaxian hasn't had the same level of controversy in the Ajax community as I saw in the Enterprise Java one. Controversy is great for page views, but life is too short. I hope that our community stays strong and united around the simple goal:

Let's grow the Open Web. The bigger we grow it. The bigger the pie. And, then we all succeed.

Posted by Dion Almaer at 3:03 pm
10 Comments

++++-
4.6 rating from 52 votes

Wednesday, April 23rd, 2008

To GWT Ext or to Ext GWT?

Category: Ext, GWT

One part of the Ext JS 2.1 release was the prominence of the sub project Ext GWT, a project that lets you code in Java with GWT while using the Ext components and framework.

But wait a minute, I thought that that project was GWT-Ext? Or wasn't there something called MyGWT too? Confused?

Didier Girard has come to the rescue. He has discussed the different projects, how Ext GWT (the new one) is actually a repurposing of MyGWT. He also lists the differences, in his opinion, between the two projects (noting that the latest one is going to be rev'ing quickly):

Posted by Dion Almaer at 8:55 am
1 Comment

+++--
3.3 rating from 50 votes

Monday, April 21st, 2008

Ext JS 2.1 Released

Category: Ext

Ext JS 2.1 has been released. In this point release the featured changes are:

  • Full REST support
  • Added Ext.StatusBar Component and Samples
  • Added Ext.Slider Component and Samples
  • Added Example to demonstrate Remote Loading of Component Configs
  • Added Grid Filtering Sample
  • Added Layout Browser Sample
  • Added Spotlight Sample

Even more importantly, the license has changed to a simple GPLv3 version compared to the Ext version, which some complained about. Kudos to Jack and the team for listening to the community and making this change.

Ext JS 2.1

Posted by Dion Almaer at 9:38 am
14 Comments

++++-
4 rating from 92 votes

Thursday, April 3rd, 2008

JavaScript, C#, and ExtSharp

Category: .NET, Ext

Colin Ramsay thinks that JavaScript and C# can be scarily similar as he shows an ExtJS example:

JAVASCRIPT:
  1.  
  2. var win = new Ext.Window({
  3.     title: 'Order Viewer', layout: 'border',
  4.     width: 500, height: 500,
  5.     modal: true, resizable: false, closable: false, draggable: false,
  6.     items: [ frm, lst ]
  7. });
  8.  
  9. win.on('render', function() {
  10.     load(5);
  11. });
  12.  
  13. win.show();
  14.  
C#:
  1.  
  2. var win = new Ext.Window{
  3.     Title = "OrderViewer", Layout = Layout.Border,
  4.     Width = 100, Height = 200,
  5.     Modal = true, Resizable = false, Closable = false, Draggable = false,
  6.     Items = new [] { frm, lst }
  7. };
  8.  
  9. win.Render += delegate {
  10.     load(5);
  11. };
  12.  
  13. win.show();
  14.  

This works well for ExtJS since it is written in a style that leads itself to this similarity. Colin also points out ExtSharp, a project that lets you write your Ext application in C#:

I really love Ext but coding in javascript just gives me the chills. So I went out and found a way to use my favorite js library (Ext) and my favorite programming language (C#) at the same time. By using a project called Script# I am able to write C# code and have it converted into javascript, similar to GWT. Building on that, Script# also allows you to code against external APIs, but you need to create the types, methods, properties, etc. for everything in the javascript library. So what I did was write a little console app that parses all of the ExtJS source files extracting out the script comments and writing C# files for each class. The end result is a programmable C# API to access all of the Ext objects and I threw in a couple new things to make life a little easier.

Posted by Dion Almaer at 6:06 am
3 Comments

++++-
4.3 rating from 39 votes

Friday, March 28th, 2008

Using the YouTube API via Ext

Category: Ajax, Ext

With the YouTube API recently released, there's bound to be lots of cool controls coming out soon. Thorsten Suckow-Homberg spent a weekend hacking up a Ext-based user extension that leverages YouTube's chromeless API to build The Ext.ux.YoutubePlayer.

The Ext.ux.YoutubePlayer allows developers to embed youtube videos into Ext applications, using native Ext components for controlling the video playback. It’ll show the buffer status and let’s you jump to any part in the video using a slider component.

Cool features include:

  • Showing the buffer status
  • Playback slider that let's you jump to any position in the video playback
  • Mute/unmute the video
  • Overall volume control

I whipped up a demo for all to see.

Posted by Rey Bango at 8:00 am
6 Comments

++++-
4.5 rating from 53 votes

Monday, March 24th, 2008

Ext-based Jabber Client

Category: Ext

The Ext JS user community has been extremely active producing some very cool user extensions to the framework. A new project that recently showed up is a Jabber client that includes:

  • Full rostermanagment
  • Instant notifications
  • Desktop look and feel
  • Tabbed chats
  • Wysiwyg messages


You can test out the Jabber client here:

https://194.94.76.11/jame/
You can use your own jabber account or you can use the following login info:
username:tester
password:tester
server:jabber.har.fh-stralsund.de
port:5222

Posted by Rey Bango at 2:28 pm
7 Comments

++++-
4.5 rating from 33 votes

Thursday, March 6th, 2008

To ExtPHP, or to PHP-Ext?

Category: Ext, JavaScript, PHP

I got emails on the same day from two developers letting me know about ExtJS wrappers for PHP.

PHP-Ext

First, Sergei Walter Guerra told me about PHP-Ext "an open source widget library written for PHP 4 and 5 to empower the UI Layer."

The API looks like this:

PHP:
  1.  
  2. echo Ext::onReady(
  3.         Javascript::stm(ExtQuickTips::init()),
  4.         Javascript::assign("data",Javascript::valueToJavascript($myData)),
  5.         //Javascript::valueToJavascript($myData),
  6.         $store->getJavascript(false, "ds"),
  7.         $italicRenderer,
  8.         $changeRenderer,
  9.         $pctChangeRenderer,
  10.         $colModel->getJavascript(false, "colModel"),
  11.         $gridForm->getJavascript(false, "gridForm")
  12. );
  13.  
  14. $gridForm = new ExtFormPanel("company-form");
  15. $gridForm->Frame = true;
  16. $gridForm->LabelAlign = EXT_FORM_LABEL_ALIGN_LEFT;
  17. $gridForm->Title = "Company Data";
  18. $gridForm->BodyStyle = "padding: 5px;";
  19. $gridForm->Width = 750;
  20. $gridForm->Layo