Development Mode will not be supported in Firefox 27+

22,786 views
Skip to first unread message

Brian Slesinsky

unread,
Feb 3, 2014, 7:01:41 PM2/3/14
to google-we...@googlegroups.com
Mozilla has stopped exporting some C++ symbols that the Firefox plugin relies on [1]. Therefore it's not possible to support Development Mode in any new versions of Firefox starting with 27.

As a workaround, I am doing one last release to get the plugin working again with Firefox 24.2 (and hopefully newer point releases on the ESR track). If you wish to continue to use Development Mode on Firefox, you will need to download this version from Mozilla [2]. For more details see the issue tracker [3]. 

Long-term, the plan is to improve Super Dev Mode.

I apologize for the late notice; when I said at GWT.create that Firefox could stop working with any release, I didn't expect it to be the next one.

- Brian


Cristiano Costantini

unread,
Feb 4, 2014, 2:05:16 AM2/4/14
to google-we...@googlegroups.com
Hi Brian,

I wonder how does it works the development mode plugin?
Isn't it possible to replace it with something in pure javascript that is based on Web Sockets?

Yesterday I was making some test with this technology (see https://github.com/cristcost/gwt-websocket) and it it seems it has good support at least on latest Chrome, Firefox and IE (Safari don't works but I've not investigated deeply why). For the server side, I used the Jetty 7 WebSocket implementation.

I would enjoy to have a look a the code but GWT src is big, could you please tell where to look for if I would like to study the feasibility of this idea?


Debugging in Eclipse the Javascript code is one of the most important aspect of using GWT for me and I would be happy if it is possible to save it.

Cristiano




2014-02-04 Brian Slesinsky <skyb...@google.com>:

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-tool...@googlegroups.com.
To post to this group, send email to google-we...@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.

Thomas Broyer

unread,
Feb 4, 2014, 4:16:14 AM2/4/14
to google-we...@googlegroups.com


On Tuesday, February 4, 2014 8:05:16 AM UTC+1, Cristiano wrote:
Hi Brian,

I wonder how does it works the development mode plugin?
Isn't it possible to replace it with something in pure javascript that is based on Web Sockets?

No, because we need blocking I/O, synchronous communication with the DevMode code server.

Leif Åstrand (from Vaadin) tried something using synchronous XMLHttpRequests, but even synchronous XMLHttpRequests are going to disappear.

The only solution would be to use the remote debugging protocols so you can really pause the execution in the browser while you do things in Java. I had started a proof of concept using the Flash Debugger to connect to an Adobe AIR runtime a while ago, could be used as a starting point if you want; but connecting a remote debugger (or using the debugger APIs from an extension) generally disables the browser's dev tools (at least it's the case in Chrome, don't know about Firefox).

Debugging in Eclipse the Javascript code is one of the most important aspect of using GWT for me and I would be happy if it is possible to save it.

The idea going forward is to use SourceMaps and remote debugging from the IDE, leveraging the same IDE code (and effort!) as for other "compiled to JS" languages (CoffeeScript, etc. or even just JS with a minifier or js2js compiler)

Cristiano Costantini

unread,
Feb 4, 2014, 4:38:34 AM2/4/14
to google-we...@googlegroups.com

No, because we need blocking I/O, synchronous communication with the DevMode code server.

mmm, good point...
can we just block with a while?
 
The only solution would be to use the remote debugging protocols so you can really pause the execution in the browser while you do things in Java. I had started a proof of concept using the Flash Debugger to connect to an Adobe AIR runtime a while ago, could be used as a starting point if you want; but connecting a remote debugger (or using the debugger APIs from an extension) generally disables the browser's dev tools (at least it's the case in Chrome, don't know about Firefox).

I'll take a look.

Cristiano
 

Thomas Broyer

unread,
Feb 4, 2014, 4:54:29 AM2/4/14
to google-we...@googlegroups.com


On Tuesday, February 4, 2014 10:38:34 AM UTC+1, Cristiano wrote:

No, because we need blocking I/O, synchronous communication with the DevMode code server.

mmm, good point...
can we just block with a while?

Because JS is single-threaded, you'll never know when to break out of the while.

Cristiano Costantini

unread,
Feb 4, 2014, 4:57:11 AM2/4/14
to google-we...@googlegroups.com
webworkers?


2014-02-04 Thomas Broyer <t.br...@gmail.com>:

--

Jens

unread,
Feb 4, 2014, 5:02:05 AM2/4/14
to google-we...@googlegroups.com
Anything people can look into to improve SDM performance? For example is it still worth it refactoring generators to be incremental generators or does the upcoming incremental compile of GWT does a better job at the end and it would be better to take a look at other things to improve SDM?

I think it would be great to have plan written down or at least very well organized issues in the bug tracker so that more people can work on improving SDM. With Firefox 27 not supporting DevMode and Chrome can break any time in the next months it may take too long for Brain alone to make SDM more useful.

-- J.

Cristiano Costantini

unread,
Feb 4, 2014, 5:01:15 AM2/4/14
to google-we...@googlegroups.com
looking at the docs of webworkers and even them don't share any state, so it won't work it too...
Anyway it would be great to find a workaround that don't require either Flash or browser plugin or Java Applet...


2014-02-04 Cristiano Costantini <cristiano....@gmail.com>:

Thomas Broyer

unread,
Feb 4, 2014, 5:33:35 AM2/4/14
to google-we...@googlegroups.com


On Tuesday, February 4, 2014 11:01:15 AM UTC+1, Cristiano wrote:
Anyway it would be great to find a workaround that don't require either Flash or browser plugin or Java Applet...

Flash or applets wouldn't work, because a) they're going asynchronous too (Flash at least) and b) they can't get access to the internal APIs we need in DevMode plugins to make them work (and that have just been removed in Firefox 27); basically knowing the lifecycle of JS objects so we can send a message to the DevMode code server to free the corresponding Java objects/references and reclaim memory (but there might be other things we need).

As I said, using the debugger APIs/protocols could work, except again for detecting JS objects "finalization" (maybe if one day we see WeakRef in JavaScript, but it's not there yet).

No, really, the way forward is better tooling for SuperDevMode to provide a similar experience to DevMode (i.e. never leave the IDE), and even allow setting breakpoints and do step-by-step within JSNI.

Cristiano Costantini

unread,
Feb 4, 2014, 6:05:30 AM2/4/14
to google-we...@googlegroups.com

No, really, the way forward is better tooling for SuperDevMode to provide a similar experience to DevMode (i.e. never leave the IDE), and even allow setting breakpoints and do step-by-step within JSNI.

Oh if this is possible than I'm ok, I was thinking that with SuperDevMode I would had been obliged to debug and breakpointing on browser development tools.
Then I need to have a look at it. 

...and yes if that is possible I agree that it is the way forward.

Ümit Seren

unread,
Feb 4, 2014, 8:52:18 AM2/4/14
to google-we...@googlegroups.com
Playing devil's advocate here: 
I code in IntelliJ but I must say that I really like the experience that the Chrome Developer Tools are providing. 
From pure debugging point of view (stepping through the code) I actually prefer the Dev Tools over the IDE because with the Dev Tools I can easily change CSS styles, modify the DOM and see the results directly in the browser. 
Furthermore Chrome Dev Tools has some really good performance and profiling tools built in. 

There are a couple of pain points of course and things I would like to see changed. 
- Bi-directional breakpoints:  Currently if I want to set a breakpoint I have to do it inside Chrome Deve Tools. It would be nice to be able to set the breakpoint in my IDE and then debug inside Chrome Dev Tools and vice versa. 
- Sometimes Dev Tools crash or freeze (if you debug a huge project) or try to display an array with many values. 

Wayne Rasmuss

unread,
Feb 5, 2014, 8:45:39 AM2/5/14
to google-we...@googlegroups.com
I second the bi-directional breakpoints idea. That's the biggest pain point for me with SDM. It stinks to track down some code in your IDE then have to track it down again in your browser to set the break point. If I didn't have to do that, I wouldn't miss debugging in the IDE much.

Kirill Prazdnikov

unread,
Feb 6, 2014, 4:03:35 AM2/6/14
to google-we...@googlegroups.com
Does the Chrome expose any kind of debugging interface so that any front-end IDE can use and visualize it ?

Thomas Broyer

unread,
Feb 6, 2014, 4:04:54 AM2/6/14
to google-we...@googlegroups.com

On Thursday, February 6, 2014 10:03:35 AM UTC+1, Kirill Prazdnikov wrote:
Does the Chrome expose any kind of debugging interface so that any front-end IDE can use and visualize it ?

Ed

unread,
Feb 7, 2014, 3:33:20 PM2/7/14
to google-we...@googlegroups.com
Usage example of the chrome debugger (not as part of the Chrome browser): Wienre: http://people.apache.org/~pmuellr/weinre/docs/latest/
(A very nice tool btw for controlling your DOM on a mobile device)

Thomas Broyer

unread,
Feb 9, 2014, 1:33:40 PM2/9/14
to google-we...@googlegroups.com
Remote debug works great too ;-)

Ed Bras

unread,
Feb 9, 2014, 1:49:54 PM2/9/14
to google-we...@googlegroups.com
Remote debug works great too ;-)
Yes, if you have a Mac ;)      (I assume you mean Safari remote debugging ? Else let me know, device independent (iphone, android))

Thomas Broyer

unread,
Feb 9, 2014, 6:40:04 PM2/9/14
to google-we...@googlegroups.com
I don't have a Mac. Chrome remote debug works great cross platform (tested with Chrome for Android, on Linux and Windows; should work w/ Chrome for iOS AFAICT). Firefox for Android (and FirefoxOS) should too (though I haven't tested it)

sabi...@hotmail.com

unread,
Feb 17, 2014, 1:48:41 AM2/17/14
to google-we...@googlegroups.com

well. no more gwt for me then, until mozilla gives google access again. downgrading the browser(either by using chrome or an earlier version of firefox) is not acceptable for me. but i can wait. got lots of non-google projects to work on.

Aleksander Gralak

unread,
Feb 18, 2014, 4:30:50 AM2/18/14
to google-we...@googlegroups.com
That is pretty bad information for all GWT developers.
For now I can stick with FF 24.2, however in the future we need to develop on the most up to date browsers.

When do you estimate Super Dev Mode will be production ready? If it is more then 6 months then we should think of some workaround. Is is possible to do a custom build of FF with all necessery symbols exported? According to

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=920731

they have switched it off. But if someone (sorry I am not C++ developer so I will not do it myself) can build GWT development version with those symbols. Then we would be able to do development for several more months on the latest browser and wait till Super Dev Mode if fully functional.

Jeff Evans

unread,
Feb 19, 2014, 11:37:01 AM2/19/14
to google-we...@googlegroups.com
Can someone clarify what is meant by "fully functional" for Super dev mode?  In my view, debugging the client-side GWT code in the IDE debugger, alongside server-side Java code, is the "killer feature."  I can't believe anyone would ever consider in-browser Javascript debugging to be an acceptable replacement.  Or perhaps I'm missing something?

Brian Slesinsky

unread,
Feb 19, 2014, 1:03:15 PM2/19/14
to google-we...@googlegroups.com
Super Dev Mode works and we have many teams that use it. The Chrome debugger is quite good and I recommend learning it well; anyone working on web apps will benefit from knowing this tool. For other browsers, adding a GWT.debugger() call to the Java code and recompiling is an easy way to stop in the right place. I discussed other workarounds in my GWT.create talk [1].

It's an unfortunate transition and this experience is not as smooth as it could be yet, but that's where we are.

--
You received this message because you are subscribed to a topic in the Google Groups "Google Web Toolkit" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/QSEjbhhHB4g/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-tool...@googlegroups.com.

Jeff Evans

unread,
Feb 19, 2014, 2:55:23 PM2/19/14
to google-we...@googlegroups.com
On Wednesday, February 19, 2014 1:03:15 PM UTC-5, Brian Slesinsky wrote:
Super Dev Mode works and we have many teams that use it. The Chrome debugger is quite good and I recommend learning it well; anyone working on web apps will benefit from knowing this tool. For other browsers, adding a GWT.debugger() call to the Java code and recompiling is an easy way to stop in the right place. I discussed other workarounds in my GWT.create talk [1].

It's an unfortunate transition and this experience is not as smooth as it could be yet, but that's where we are.


Thanks, this presentation looks useful.
 

Ed Bras

unread,
Feb 19, 2014, 2:56:59 PM2/19/14
to google-we...@googlegroups.com
 The Chrome debugger is quite good and I recommend learning it well;
It depends on your project. I been down this road, tried it several times with several projects (few months ago last one). 
Currently the Super Dev mode is "Hello World ready", but not "Enterprise ready"

With new projects, I like to start with Super dev mode, but when it becomes bigger... I am forced to jump back to FF/Chrome plugin usage.

Using it with bigger code base makes it slow and a code puzzle in chrome debug. 
For bigger projects, Chrome debugger should offer more IDE features that make debugging easy and friendly, just like we are used to using IDE tools like Eclipse.
Of course this will change, and I hope this will be soon..

m...@touk.pl

unread,
Feb 20, 2014, 3:49:42 AM2/20/14
to google-we...@googlegroups.com
Couldn't agree more... debugging the client-side GWT code in the IDE debugger (Eclipse in my case) is base of my every day work :(

Thomas Broyer

unread,
Feb 20, 2014, 5:57:30 AM2/20/14
to google-we...@googlegroups.com


On Thursday, February 20, 2014 9:49:42 AM UTC+1, m...@touk.pl wrote:
Couldn't agree more... debugging the client-side GWT code in the IDE debugger (Eclipse in my case) is base of my every day work :(

I'm sure the SDBG devs would love to hear your feedback ;-)
 

m...@touk.pl

unread,
Feb 20, 2014, 9:23:04 AM2/20/14
to google-we...@googlegroups.com


On Thursday, February 20, 2014 11:57:30 AM UTC+1, Thomas Broyer wrote:
I'm sure the SDBG devs would love to hear your feedback ;-)
 

SDBG has a long way to come (it is still in proof of concept stage, there is no support for other browser then chrome), nether the less what else we can do but to help them.

bruciadmin

unread,
Feb 21, 2014, 4:10:46 PM2/21/14
to google-we...@googlegroups.com
This is a pretty important change for me - looks like it's a downgrade to FF 26 a workaround is found. I had never heard of Super Dev mode but sounds like it's still got a fair way to go - and right now I need to focus on ROI for my work (retooling in the last 90% of a project is not an option with given deadlines).

Benjamin Bitdiddle

unread,
Feb 25, 2014, 2:47:53 PM2/25/14
to google-we...@googlegroups.com
Would anyone like to follow up the last comment on the bugzilla thread, where a FF dev claims that:

Most C++ JSAPI usage in extensions can in fact be replaced by a combination of privileged script and the debugger APIs

I assume we wouldn't be seeing this thread if that was really true as you guys would have just updated the plugin.

Brian Slesinsky

unread,
Feb 25, 2014, 3:08:48 PM2/25/14
to google-we...@googlegroups.com
I'm not sure there's much to discuss. Firefox 27 is already released, and we do want to move off of Dev Mode sooner or later for other reasons. I don't feel comfortable asking them to bring back an API that they never officially supported anyway and it seems unlikely that they'd agree. Running Firefox 24 seems like an acceptable workaround.

Regarding the Firefox-specific debugger API's, I'm not sure it's worth even figuring out if it's feasible or not since our plan is to move to Super Dev Mode. But if someone wants to take a look then go ahead.

- Brian



--

joerg.h...@googlemail.com

unread,
Feb 27, 2014, 7:51:45 PM2/27/14
to google-we...@googlegroups.com
Hi there,

I can understand that it is a hard task to maintain the GWT and especially DevMode with its plugins.
However, the hole thing about GWT is that you can do pure Java and use the Java tooling.
Developers know how to work with Eclipse. And within the Eclipse debugger you can evaluate deeply into variables and objects, add conditional breakpoints, exception breakpoints, dynamically evaluate expressions, have step filters, drop to frame, etc., etc.
I am a power user and going to SDM with chrome debugger is simply no alternative and will IMHO never be.
With GWT 2.6.0 DevMode even stopped working due to Jetty problems so I can not even use it with older FF versions.
This is a real pain for me. I am wondering if I wasted the last years building on GWT all nights (https://github.com/m-m-m/mmm/tree/master/mmm-client/mmm-client-ui/mmm-client-ui-widget/mmm-client-ui-widget-impl-web-gwt). Then I could also assimilate with JS hell and go for AngularJS.
Sorry for being so negative but I am really frustrated. Thanks for all your support on GWT (2.6.0 brings J1.7 syntax support, etc. what is really cool) and your will to improve it in the future. Maybe you can change my mind one fine day and bring me back...

Regards
  Jörg

Brian Slesinsky

unread,
Feb 27, 2014, 7:59:24 PM2/27/14
to google-we...@googlegroups.com
I'm not sure what the Jetty problems are but they should be fixed. Do we have a good bug report for them?

(In our setup we see stack traces but Jetty still runs.)

- Brian



--

Ümit Seren

unread,
Feb 28, 2014, 3:55:14 AM2/28/14
to google-we...@googlegroups.com
The Chrome Dev Tools support actually most of  eclipse's debugger features like: 
  - Evaluating deeply into variables
  - Conditional breakpoints
  - Exception breakpoints (break on uncaught exception and any exception)
  - Dynamically evaluating expressions 

Missing features are AFAIK "Drop to frame" and "step filters". 

However an advantage of SDM is that you can visually evaluate and the DOM and also inspect javascript objects (both are not really possible in eclipse).

Jens

unread,
Feb 28, 2014, 3:59:10 AM2/28/14
to google-we...@googlegroups.com
you can evaluate deeply into variables and objects,

You can do that in Chrome 
 
add conditional breakpoints,

You can do that in Chrome 
 
exception breakpoints,

You can do that in Chrome 
 
dynamically evaluate expressions,

You can do that in Chrome 


So the most important things are covered. Maybe you should just give it a serious try ?

-- J.

 


Nagin Kothari

unread,
Feb 28, 2014, 8:22:03 AM2/28/14
to google-we...@googlegroups.com
I do not know what Jetty problem  Jörg  is talking about. I am using GWT 2.6 with FF 26 and I am able to use DevMode.


--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-tool...@googlegroups.com.

To post to this group, send email to google-we...@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.



--
Nagin Kothari
Co-founder,
Zilicus Solutions
www.zilicus.com

Thomas Broyer

unread,
Feb 28, 2014, 1:37:32 PM2/28/14
to google-we...@googlegroups.com


On Friday, February 28, 2014 1:59:24 AM UTC+1, Brian Slesinsky wrote:
I'm not sure what the Jetty problems are but they should be fixed. Do we have a good bug report for them?

And a small regression on something we never really actually supported: https://code.google.com/p/google-web-toolkit/issues/detail?id=8526
…and now that we're using Jetty 8, people are sking for more ;-) https://code.google.com/p/google-web-toolkit/issues/detail?id=8472

joerg.h...@googlemail.com

unread,
Feb 28, 2014, 4:48:25 PM2/28/14
to google-we...@googlegroups.com
Hi Jens,


> Maybe you should just give it a serious try ?
I already gave SDM several tries. However it never worked in my case at all. The problem is that I am not just doing a hello world with GWT but some rather complex UI framework with some special aspects. I hope that I do not appear just to be a ignorant jerk. Maybe SDM can convince me some day...
Hopefully someone can help me. I always get this:

workDir: C:\Users\hohwille\AppData\Local\Temp\gwt-codeserver-8835691028753667732.tmp
log4j:WARN No appenders could be found for logger (org.eclipse.jetty.util.log).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
binding: user.agent=safari
binding: compiler.useSourceMaps=true
binding: locale=en
Compiling module net.sf.mmm.app.Mmm
   Validating units:
      Ignored 17 units with compilation errors in first pass.
Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
   Finding entry point classes
      [ERROR] Unable to find type 'net.sf.mmm.app.client.Mmm'
         [ERROR] Hint: Check that the type name 'net.sf.mmm.app.client.Mmm' is really what you meant
         [ERROR] Hint: Check that your classpath includes all required source roots
[ERROR] Compiler returned false
com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)
    at com.google.gwt.dev.codeserver.Recompiler.compile(Recompiler.java:128)
    at com.google.gwt.dev.codeserver.ModuleState.<init>(ModuleState.java:58)
    at com.google.gwt.dev.codeserver.CodeServer.makeModules(CodeServer.java:120)
    at com.google.gwt.dev.codeserver.CodeServer.start(CodeServer.java:95)
    at com.google.gwt.dev.codeserver.CodeServer.main(CodeServer.java:71)
    at com.google.gwt.dev.codeserver.CodeServer.main(CodeServer.java:49)

This is all confusing:
> Unable to find type 'net.sf.mmm.app.client.Mmm'
That is actually my entry Point and it is available in the m2e project from that I run the SDM. Also didn't GWT say the following so it should have already found the type:
> Compiling module net.sf.mmm.app.Mmm
Also confusing:
> Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
IMHO there is no such option for com.google.gwt.dev.codeserver.CodeServer
> [ERROR] Hint: Check that your classpath includes all required source roots
I am using m2e in Eclipse and my codebase is VERY modular. Maybe that is the source of the problem.

Any help would be highly appreciated...
BTW: I found some workarounds for my Jetty problem and can at least run DevMode with FF 26 on 2.6.0 now.

Regards
  Jörg

Thomas Broyer

unread,
Mar 1, 2014, 10:33:36 AM3/1/14
to google-we...@googlegroups.com
That's the module (gwt.xml), which references the entry point.

How are you launching SDM? Using M2E or just a “Java application” Eclipse launch configuration? How is it configured?
 
Also confusing:
> Compile with -strict or with -logLevel set to TRACE or DEBUG to see all errors.
IMHO there is no such option for com.google.gwt.dev.codeserver.CodeServer

That's right.
 
> [ERROR] Hint: Check that your classpath includes all required source roots
I am using m2e in Eclipse and my codebase is VERY modular. Maybe that is the source of the problem.

Maybe, maybe not. Hard to tell without knowing more about the way you launch SDM.

(also: maybe better to start a new thread, for others that could search the group archives in the future)

Joseph Lust

unread,
Mar 4, 2014, 4:36:41 PM3/4/14