Welcome to my corner of the web!
My name is Mihai and I work on the Firefox developer tools.
When it comes to web development, I like doing server-side (Python,
PHP, mySQL and others) and client-side work. I am mainly interested
in Web browsers, Web standards and related technologies. I have
good experience with Flash as well, but I no longer like it much.
I have contributed to various Web standards-related mailing lists,
with reviews and comments to web specifications like HTML5.
Additionally, I also worked on several projects of my own.
I am an Opera browser and
Firefox user, and I really enjoy
working on Firefox for Mozilla. I also like Webkit and KHTML. I am an Ubuntu Linux user - no dual-boot.
9 April 2013, 14:12
Today we just landed three new Web Console features you can play
with in tomorrow's Firefox
On a related note, Victor Porof also landed the new network monitor
which gives you a very nice UI for working with the log of network
requests and responses. The new tool uses the
Web Console actors we worked on for making the Web Console
remotable - both tools share the same network logging mechanism.
Whenever you are debugging a script in the page you can now
sure you select in which stackframe you want to evaluate your code
- just switch to the desired frame in the Debugger view. Until
today the Web Console locked up while debugging pages. For
technical details, see bug
This feature required a number of important changes. The Web
Console now uses only the
debugger API to access the content JS objects. With these
changes we are fixing a number of bugs reports by users.
New object inspector
The old object inspector popup has been replaced with the same
variables view from the debugger, allowing us to fix long standing
issues with the old inspector. This is not just pretty UI: you can
now filter/search through the properties by name and value, edit
property name and value, delete properties, and more. You can also
variables view: when you edit a value you can just write
$("foo") or whatever you wish.
With this change object inspection works slightly different: you
will notice that many of the methods and properties of DOM objects
show in the prototype of the objects you inspect. The switch to the
The new Browser Console
To enable the Browser Console make sure you set
true in about:config (Firefox restart is needed). Open
the Browser Console from the Web Developer > Browser
Console menu item.
The new Console is meant for browser and addon developers: you can
see all of window.console API calls, from all windows,
all script and style errors/warnings, and all network requests from
all over the browser and from addons.
We plan to replace the Error Console with the Browser Console as
soon as possible: the Error Console provides users with less
capabilities than the Browser Console, and it is not remotable. You
can currently connect to any Firefox Mobile, Firefox OS and Firefox
for desktop instance and see all of the logs in the Browser Console
from the remote instance.
Given the amount of logging happening we plan to support better
ways of filtering output. For example, we would like to allow
developers to filter messages by addon.
The screenshot shows the Browser Console with the new object
What is next
All of the three features are the outcome of a lot of work from the
entire team. Still, I want to thank Panagiotis Astithas and Jim Blandy for the
debugger-related work and reviews, and Victor for the variables
Download a Firefox nightly
build, play with the new features until you break them. :)
Please let us know if you have any comments and report any bugs you find!
10 October 2012, 08:49
Here is a summary of the improvements we have made to the Web
Console in the latest versions of Firefox. In the new
Firefox 16 release we have added the ability to
Security Policy warnings and errors. We are also highlighting
network requests that happen over HTTP on HTTPS pages (and
vice-versa), and we did more output performance fine-tuning.
In the new Firefox Beta we have moved the Web
Console UI into its own
<iframe> - which gives
us better flexibility for upcoming work we will do. We changed the
UI to match the developer tools theme and we made objects you pass
console.log() inspectable. For example, if you call
console.log(document) you can click
also received a number of improvements. Last, but not least, now
you can zoom in/out the text in the Web Console - just press
Ctrl-- / Ctrl-+. The default font size should
also match your system's font size settings.
In the new Firefox Aurora release we landed a big
chunk of work that makes the Web Console remotable - we now make
use of the Remote
Debugging Protocol. This means you will be soon able to connect
Web Console instances to your B2G, Fennec or other Firefox for
desktop browser instances. We currently lack UI to allow you to do
this, but we are working on it. This work also paves the way to a
Global Console that could replace the Error Console, some
At the end of September the developer tools team had a
meetup in London. There I had the chance to
demo the Web Console client connected to a B2G
In the above screenshot you can see the Web Console client running
in a local Firefox for desktop build while connected to a local
build of B2G
Desktop running Gaia. You can see network logging, object
inspection, network request/response information and script errors
coming from B2G.
To learn more about the Web Console remoting capabilities see
768096 and the
wiki page on MDN. To follow the progress
with B2G integration see bug
What is next? We are going to complete work on B2G
integration, improve the way Web Console output works, and we will
probably add a Global Console. We also plan to improve the user
experience of the object inspector and the network panel.
19 August 2012, 09:20
A quick post to point fellow mozillians and users of Ruby on Rails to a useful gem made by
a friend of mine, Dennis: BrowserID (Persona)
authentication support for Devise. Thank you Dennis for your
6 June 2012, 03:35
For the Aurora update that's happening this week we have some major
changes under the hood for the Web Console.
Async Web Console
Work on making the Web Console UI async, decoupled from all the
error and network listeners, started in July last year (bug
673148). Even if it took almost one year to get this bug fixed,
I worked on these patches for about 3 months (loosely summing up
the total days of work spent on this specific bug).
Back in those months we strongly pushed for various developer
tools to land and get enabled by default in Firefox. I've been
working a lot on the source editor which was needed for the Style
Editor, the JS debugger and Scratchpad. Work on the Web Console was
on and off.
There was modest to good progress for the Web Console async
work until around September - October when Mozilla's electrolysis
project was re-prioritized. The initial work on the patch started
out with the goal of making the Web Console ready for e10s. When
priorities changed, I went back to source editor work which was
higher priority at that point.
In January - February a really brave and courageous contributor,
Sonny Piers, took the huge patch and rebased it. His efforts were
commendable given the size and complexity of the work that was
going on. Thank you Sonny!
In March I resumed work and I strongly focused on completing
the async patches. Last week the last patch landed in the nightly
builds of Firefox.
What changed? Most of the Web Console was
implemented in a single file,
HUDService.jsm. It had
everything - from UI code to all the error and network listeners
and stuff for the
window.console API. We have now
broken that code into separate scripts with the goal to leave
HUDService.jsm as the script that implements only the
UI. The new
HUDService-content.js script implements
all the listeners, all the "backend stuff". The UI code must no
longer directly access the content window and objects from the
Why? This work allows us to move to the remote
debug protocol and to have the Web Console UI connect to your
Firefox Mobile or B2G device where all the error and network
listeners are instanced. This work paves the way to a remotable Web
The added benefit is that the async-ness had some modest
performance benefits to content scripts (pages) that used the
window.console API - a call to any method no longer
had to wait for the Web Console UI parts to update.
In the future other Firefox components and extensions can build
different UIs on top of the data collected by the
- Focus, focus and focus! Given big projects one must not try to
do everything else.
- Do not underestimate the time it takes to polish working code,
to make it ready for review. I had working code in
September-October, but getting it "done" took quite more.
- Make sure your manager is aware there's a ton of work to do on
your project. There's high temptation to be nice and be helpful and
do a lot of other work in between. ;)
Aggressively split your work into smaller chunks.
- Be lazy - avoid doing work you don't need to do for the given
Thanks go to Rob Campbell, Dave Camp, Felipe Gomez, Ms2ger, Joe
Walker, Sonny Piers and everyone else who contributed to getting
these patches to be ready to land.
Building on top of the async Web Console work we've also made some
really nice output performance improvements (bug
722685). In bug
746869 Boris Zbarsky analyzed the performance issues in our
code and he made a number of valuable suggestions on how we can
make it faster. Thank you Boris!
Our first attempt to make the Web Console output faster has landed
in Firefox. Let's go straight for the numbers:
Opera 12 (post-beta, latest snapshot, with "cutting-edge"
Chromium 18 (beta):
- Simple string: 21 ms
- Interpolation: 11 ms
- Simple string: 66 ms
- Interpolation: 68 ms
Performance in content pages is very good. However, display
performance is actually poor. First run is fast. Subsequent runs
take far more. The web inspector tool UI is frozen for many seconds
when the second and third runs happen. Content process separation
helps a lot. Even if Web Inspector's display is frozen, web pages
continue to run smoothly.
Firefox 13 (without the async patches):
Firefox 15 nightly (with the async patches landed):
Firefox 15 Aurora (with the performance patch landed):
- Simple string: 50 ms
- Interpolated string: 48 ms
- Simple string: 51 ms
- Interpolated string: 48 ms
For comparison: do note that 1000
dump() calls take
around 10-20 ms in Firefox. (
dump() is a dumb method
we use to output messages to STDOUT.)
Having the Web Console open or closed no longer directly impacts
console API calls. Now the UI no longer freezes and results show up
I tried with 5000 calls and we now do better than Opera's Dragonfly
and Chrome's Web Inspector - in terms of UI updates. Still, console
API calls finish faster, for some reason, in those two browsers.
Please do note that I used the simple
test attached to bug
722685 for testing. These numbers are not meant to be
"scientific" or anything like that - they are based on my machine
We will continue to do further work in improving the output
761257). At this point we still need to avoid doing some
unneeded work when a lot of messages end up in the queue to be
displayed. We also need to better balance how often and how many
messages we display during "heavy fire" - during the execution of
content scripts that invoke the console API methods many, many
times for an extended period of time.
We have plans to move the Web Console UI into its own
<iframe>, change the UI to match the other
developer tools theme, add the option to move the UI into a real
window, make a global console that could replace the Error Console
and, obviously, switch to the remote debug protocol so you can use
the Web Console with remote Firefox instances. All this and many
other improvements, of course!
You may wonder "when?" and the answer to that is that all the
improvements will come gradually when we get to implement them.
File bugs, find regressions and let us know what you like and
dislike! Thank you!
13 March 2012, 05:40
This week we will make the merges for new Aurora, beta and stable
releases. This is always great news for us: we get more of the
stuff we worked on released to our users.
In the new Firefox stable release (version 11) we
have important performance improvements for handling very long
lines in the source editor, fixes for CSS syntax highlighting and
more. For example, users on Linux can now select text to copy to
the primary X11 buffers and they can middle click to paste.
The new Firefox beta release (version 12) adds
support for find
(Ctrl-F) and jump to
line (Ctrl-J), including other smaller fixes.
The new Aurora release (Firefox 13 alpha). This
release marks important changes and it includes a number of patches
from awesome contributors! The list:
684445 - added a default context menu. This is now used in the
700893 - added API for tracking the saved/unsaved state of the
editor. This code is now used by Scratchpad which had its own
tracking for the saved state.
debugger we are working on). Stepping
support is also coming very soon (Firefox 14).
717373 - removed the
<textarea> fallback. We
now only support the Orion-based source editor (blog
post by Rob).
- Updated the Orion integration, included a number of fixes for
the read only mode, context menus, selection, undo/redo and more.
Our awesome contributors did:
703692 - added support for the focus/blur events.
721324 - themes can now change the code syntax highlighting
725388 - expose the Orion
events. This is going to be used by the JS Debugger.
725618 - added keyboard shortcuts to move lines up and down.
729480 - jump to line can now vertically align the target line:
top, center and bottom, and this can include an offset so N lines
at the top/bottom are always visible. This feature is now used by
the style inspector to link to sheets in the style editor.
Thanks to all the contributors for their awesome work!
Other exciting news: Eric Shepherd, the "documentation overlord",
is writing the
source editor documentation. For now the wiki page is a work in
progress, but the results are already looking great! Eric will also
write a guide on how to use the source editor. Thank you Eric!
We hope you like the work we are doing! Comments, suggestions for
improvements and patches are always welcome!