I think we're better off in a world where kids don't have to install ScaryFox on their tablets to start teaching themselves how to debug web applications, and deal with all of the various forms of other-ing that tend to alienate people away from starting to learn how to understand and help build the web.
I think it's actually quite important for Mozilla to assume that of course every user deserves built-in access to a high-quality suite of tools for debugging by default.
For instance the security model for a browser should be ultra tight and protect the user from the site, but as a developer I'd want to access and modify my files directly through the inspector panel.
Another example would be the use of cache, where I want the minimum possible retention while a user would want the opposite.
As you mention, settings in the developer tools could allow a myriad of options to switch from a "user" mode to a "developer" mode. But honestly I'd understand if it happens to be easier to build two different applications, even just for keeping the "user" side code simple enough to make it easy to maintain and secure.
Then eventually bundle the two apps together if you want to keep the "tools" right next to the "viewers".
> For instance the security model for a browser should be ultra tight and protect the user from the site, but as a developer I'd want to access and modify my files directly through the inspector panel.
I don't see any inherent conflict between preventing sites from having access to the local filesystem, while having powerful local filesystem access from the browser's integrated devtools. One does not exclude the other.
> Another example would be the use of cache, where I want the minimum possible retention while a user would want the opposite.
Caching rules should be managed on the server, not the client. Properly configured servers/applications never need anyone to clear their caches explicitly. I don't see why you would need a special cache-less mode in the browser if you've set up your servers correctly.
In my view developer modes (in browser or framework) are counterproductive because they create discrepancies between how your users experience your site or app and how you experience it. Your browser should have the exact same app experience as the one your users use, so it shouldn't have any special developer-mode behavior. That doesn't mean you don't need powerful inspection tools, just that those tools should be built around that standard experience instead of altering it.
https://code.google.com/p/chromium/issues/detail?id=328026
>Another example would be the use of cache, where I want the minimum possible retention while a user would want the opposite.
Chrome Inspector -> [x] Disable cache (while DevTools is open)
I see more value for both developers and users currently because it means that in order to keep Firefox safe (for some definition of safe), the Mozilla security team also has to keep people like us--and the functionality we use--just as safe. It also means derivatives like the Tor Browser Bundle and Iceweasel might be more likely to preserve the feature set and benefit from security team's work in relation to it.
[1] https://code.google.com/p/chromium/issues/detail?id=337734
Everyone does deserve access to built-in, high-quality tools. And everyone already gets that, with all major browsers. No one is taking away the built in developer tools in Firefox, Chrome, IE, Safari, or Opera. The problem is that they're always just a little bit older than the tip of the current development branch. And that's fine for folks who are starting to teach themselves how to debug web applications. Hell, that's fine for most people, developers included.
But there's a lot of development happening in this space, and sometimes you need access to tools or features that aren't yet stable enough for wide release. So you download Firefox Nightly or Chrome Canary. And you flip on something in about:config or enable experimental web platform features in chrome://flags. And you're off to the races.
That's not dividing the web, and it's not giving different tools to developers versus users. It's trading stability for slightly faster access to new, shiny things.
With huge respect for the work that you and Mozilla have been doing in this and other areas, I can understand that there are practical reasons why this may make sense for Mozilla (and even developers) internally.
But at least from the announcement, it still sounds like Mozilla is other-ing celebrated 'builders' like us from everyday users and segmenting our means of accessing the 'new, shiny things' you mention.
But if there's a special developer-only Firefox, the dev tools in "regular" Firefox will stop getting new features, will fall out of date, stop providing value, and eventually be removed.
I see no problem in principle with Mozilla releasing a version of their browser with only very basic debugging tools. I don't think they should, but I wouldn't get indignant about it.
Is it condescending? Yes. Does it make the barrier to entry in programming higher? Yes, but considering that properly debugging a web application on a tablet seems to require a separate laptop connected at the same time (with admin privileges to install whatever crazy USB drivers), I'd say that barrier is already high enough that the kid can figure out how to download $DEVELOPER_FIREFOX.
The "I don't know what this piece of code does, but I'll run it anyway without even so much as Googling" mentality is what needs to change, if we are to have better netizens. You don't need to be an expert to know what JavaScript is and what it can do. Despite the Internet being such an easily-accessible body of knowledge, and the influence it has on our lives, it's quite disappointing that people have generally not become more knowledgeable of it and instead are mostly consumers like they were before with TV and radio.
Translate it to literacy then. Should everybody be a prolific author or an avid reader? No, it's okay if they're not. Should everybody have the option, the basic ability to? Yes, I wouldn't be surprised if it was considered a human right, or implied by human rights. It's not okay for people to be unable to read, just like poverty is not okay. And what's more, you don't need to know about the chemistry of ink or paper to be literate, just like you don't need to be able to solder a CPU from toothpicks to be computer literate. It's all a matter of degree, with no hard lines, but still, I'm not happy to give up that easily on that much.
We already accepted that making a website is too hard for "normal" users, that just everything taking place in the equivalent of malls is fine, with people hardly interacting in private or public spaces, except for a bunch of wizards in ivory towers, and that is a shame and cannot stand. Especially since the poison of planned obsolescence has already permeated anything to do with computing; if "normal" people can't create their own software and robots, it will not lead to better software and robots made by experts, it will lead to marketing departments shoveling regressing bloatware to people, ultimately. Yeah I'm exaggerating, too, this is FUD in a way, I know that... but I can't help it, this is the one thing to do with computers that really gets to me. I can live with not everybody being a programmer, but I cannot live with not every programmer wishing everybody could program. Being able to make a static website is not even a tiny subset of that, but if I can't even give up on general coding literacy, I can't even consider giving up on general web literacy.
So while it's totally silly to worry over the announcement of something when we don't even, and that will be freely available to everyone, I absolutely love that so many brought this issue up! It does give me hope. But so far, Mozilla has brought me nothing but joy, so I'm not anxious. Whatever it is, it will be open source, right? Right :D Anyone from Mozilla reading this, you guys rock.
TL;DR: I had a dream of a world where the words "developer" and "user" were out of use, just like "free citizen" as distinction to the default case of slave or woman is out of use today (well okay, those problems are also not overcome, but at least there is a consensus amongst smart people that they should be).
This isn't widening the gap between a user and a developer, since they aren't getting rid of the 'middle ground'. It's just giving the developer more breadth with a better tool.
I believe this separation will lead to the possible introduction of many cutting edge implementations on the browser/engines level(s), for experimentation, before a more general deployment to the end users, which would be quite interesting imho.
Not to mention, developing new debugging tools that the end user doesn't necessarily need to have running in the background of his browser package. This would definitely alleviate the resource consumption of existing browsers and allows the developers to have a focus on the end user experience and not worry about developer specific branches.
Developers want a lot of stuff in their face that the average user doesn't want to deal with. I can see the value of having a 'switch to development mode' button, but having something that's from-the-ground-up built for developers sounds like potentially a much nicer tool to use.
Time will tell if it's a good move on Mozilla's part, but I'm excited for the announcement.
Why is there this arrogant idea in the development world that everybody has to get into programming. If a kid wants to program (great!) she can easily download the development version. Calling it scary fox is just scaremongering. If anything getting the special development version might make her feel empowered.
Then I looked back at the comment thread and can see it has 400+ karma right now. So I suppose it worked.
Firefox is my default browser for a long time (switched briefly to Opera, but when they came with the new Chromium-version I switched back because I didn't like it) and I'm very satisfied with it. The developer tools are getting better and better, and I almost never touch Firebug anymore. Also I like Firefoxs tools more than those of Chrome, but that is a question of taste.
I think there is one thing Firefox can really make better for developers and that is addon development. I personally never developed an addon but looked briefly into it and from what I heard was that in comparison to Chrome, developing for Firefox is difficult. I hope there will be progress on this level too.
But other than that, it's basically Firefox.
I think it's great that Mozilla is exploring new territories; it may or may not turn out to be a good idea, but give them the benefit of the doubt, at the end of the day no matter how good web developers tools currently are, without experimentation there would eventually be stagnation.
If a user is reporting some bug or issue that's difficult to reproduce, I like being able to just hit F12 _on their computer_ and diagnose and debug. Sometimes I can guide the user, sometimes I do it remotely.
Having the ability to debug software like that is phenomenal.
And as for the new tool, since it also shares the Mozilla engine, it's as if you're using Firefox (+ some plugins) with regards to web behavior.
Second, please do some moonshot stuff. Please just don't give me tweaks on javascript. Yes I know js is fine for the front end guys, but more and more, deep data guys like me are having to interact with this language which leaves a lot to be desired. While I appreciate the casual, almost refreshing functional aspects of js, the rest is clearly inferior to almost everything else (not least forcing multidimensionality into this hierarchical JSON strait jacket). Here's an idea: put python numpy native into the browser, and give us expressive power for things other than dom manipulation. Or put Haskell in there. Do something meaningful. I don't want a spit-and-polished js debugger.
Chance to shine here, Mozilla, to regain the long-lost initiative. No chrome-catchup again please.
Not that those things are bad, they're just meant for a different audience.
If you want more moonshot-y stuff, emscripten, asm.js, rust, and servo are all pretty worthy of your attention. :)
No information there about what exactly it is, however. It could be not much more than regular Firefox with their WebIDE thing bundled and some UI changes.
What drives a divide is when you go build an entire ecosystem and hand it off to a cloistered priesthood. Then you make the toolchain so long and complex that you need 5 years before you even gain the first feeling of accomplishment.
When I was a kid, C++ was easy and I didn't start learning javascript until a few years ago. I also learned TI-BASIC in AP Calc, and Java (CS II-Honors) was presented at my school as harder than C++ (CS I). A lot of what is labeled difficult is very very subjective. A coworker of mine stumbled over Intro to CS/Programming because he was stuck trying to understand how to program hello world without understanding how the compiler worked first. Without a teacher to talk to, this very intelligent student could be seen as one who can't even grasp 'the basics'. I stumbled over my programming languages class because I confused the machine interpretation of Scheme, while we developed a interpreter in Scheme. I'm still confused over it.
> What drives a divide is when you go build an entire ecosystem and hand it off to a cloistered priesthood.
It's not so much that it's handed off to, it's more that people aren't very vocal about what they don't understand. This leads sort of to a 'survival of the fittest' cycle of development, on a macro scale, with the people who have a direction, at all, making important decisions, and the people who are most cautious, staring blankly in confusion. The reality is that everyone is probably missing some part of what is considered 'the basics' to someone else.
A responsive community dedicated to bringing people into development is also what lowers the barrier to entry. Students that are so afraid of their teachers and the 'scary aesthetic' of the material raises the barrier to entry. If you have someone to ask "what does this symbol mean?" or "am I thinking in the right direction, or am I making this lesson more complex than it was intended to be?" then complex and hard become more approachable (not more simple, however). Sometimes having a person reply back, "I don't know" can actually help a lot.
When I was just learning to program, I was afraid to ask questions, to talk about what I knew or thought. I don't know if many young developers struggle with that today, given how much the landscape has changed. Then I wonder, has it changed so much, or did it just take me about 15 years to become comfortable in chaos?
Just some thoughts.
(And given how unfriendly to deep linking, accessibility, archiving, and sharing these increasingly popular JS-only single-page web apps are, it would be better if more people, including the beginners, stayed with simply styled, accessible and readable, static pages.)
But yes, I would really like to have more mature and integrated developer tools.
C++ is way more user friendly than that.
It's a total disparity. I also completely disagree with the idea that "JavaScript is the new BASIC" and that every beginner should be introduced to web programming immediately, but it's better than nothing, I guess. Not that web application development isn't less of a clusterfuck than anything else. It's also far more prone to hype cycles and wheel reinvention.
It's easier to wait until a de-hyped Wikipedia entry has been written, and just read that instead.
It could be useful if there was a way of indicating what scripts are actually under development, and therefore only complaining about things the developer can fix.
It does something very similar to what you're suggesting, adding in static type information for JavaScript and giving you compiler errors if you mess things up.
For instance, when I want to debug my website I go to the dev tools within the browser I'm viewing because I know that my users are viewing the same browser (typically). Having an entirely different developer browsers makes the debugging experience less realistic. It puts you in a position where you don't truly experience what the user does but what you feel more comfortable experiencing.
I think it would be a mistake to completely remove the developer tools from the non-developer version of Firefox, but I'd also be fine using a different developer-centric browser for the majority of my development understanding that there may be small differences and edge cases that need to be tested on numerous other browsers.
One of the PM did a comment and gave as an example that they will block self-xss on Firefox, which won't be blocked on the developer version. It won't affect much but you can already see how it's affected. You will be able to run something on a browser but won't be able to do the same on another.
I seriously don't see why we need a developer version of a browser, except removing developer stuff from the real browser and/or adding different support (which will give you issue when you will move to a real browser).
I don't really agree with this part; it's going to be using the same rendering and JavaScript engine so I wouldn't expect the experience to be different at all it'll just have far better access to developer tools.
Having said that, Mozilla didn't exactly put much of any content into their blog post so I could end up being wrong.
In the vast majority of scenarios we don't think about using the same processor to experience the same thing a user does. (Certainly driver developers and other low level h/w people will occasionally run into h/w bugs but they're in a very niche field).
Bug 1008435 - [e10s] Port the built-in Gecko profiler to e10s https://bugzilla.mozilla.org/show_bug.cgi?id=1008435
Bug 974832 - WebGL EXT_disjoint_timer_query may now be implemented https://bugzilla.mozilla.org/show_bug.cgi?id=974832
You can check this article that shows editing LESS and SASS inside the browser and saving it to the original location on your HD:
https://hacks.mozilla.org/2014/02/live-editing-sass-and-less...
Firefox has lots of awesome devtools but people still think in terms of Firebug and haven't noticed all the new goodies.
Menu -> Developer -> Style Editor, edit a stylesheet (or add / import a new one), then click "save" in the left panel. Done!
More info: https://developer.mozilla.org/en-US/docs/Tools/Style_Editor
The idea is awesome tho, using lots of different tools which doesn't communicate/integrate with each other is a huge blow to productivity.
Even their etherpads/sprint sheets/team chat logs are public. Not necessarily saying the bug SHOULD be public, just thought it was intriguing. Makes me wonder what other - if any - bugs are private (excluding security ones of course).
I'm asking because two Firefox devtools people sit in my office, so if you have feedback, I can forward it.
In Chrome's console I like that I simply can write the function name and press enter to see it's source. In Firefox I have to write "String(functionname)". That's only a minor thing. The best thing would be to get the function source expandable inline similar to what you can do with objects in Chrome's console. There should also be a link that lets you jump to the definition of the function in the JavaScript source.
There is no resource tab in Firefox. Basically I want exactly the resource tab from Chrome, with a list of all loaded images, scripts, styles etc., grouped by their origin. I want to see and be able to edit/remove all cookies, local storage, session storage etc.
You can't select a certain iframe as the context of the console, which makes it completely useless when you have to debug iframe based widgets.
I just had the case where the debugger statement starts the debugger but it did not focus on the source line where it occurs, because the debugger request the script again instead of showing the already loaded resource and the script was generated as a response to a POST request.
I don't use Firefox for debugging anymore (unless it's a Firefox specific bug I have to fix) so I don't quite remember the next bit: There where some kind of big annoyances concerning debugging and exceptions which are caught anyway. I could not get it to "halt on exception" but not on those that are caught.
That's all I can think of right now, but I'm sure I forgot something.
But granted, it is always getting better. Maybe some day it is as good as the Chrome Inspector. There is one point where it (or Firefox) is better: Error messages. They are much less cryptic and show the source line of the error. It says things along the lines of "in foo.bar foo has no method bar" instead of "undefined is not a function". Also a rethrown exception retains the original source line, which is very useful.
Firefox's font inspector is nice. I hadn't had a use for it yet, but I can imagine to have one some day.
In course of writing this comment I looked at the Firefox development tools again and a lot of things got indeed much better since the last time I looked.
OT: There are also a lot of things that annoy me about Chrome: Since many month now Linux integration got extremely worse. They dropped gtk for their own thing and screwed up big time in doing so. Context menus look totally alien and have no shadow, tooltips (title attribute) look alien and are no real windows (they get cropped, which makes them useless in certain contexts), there are lots of graphical glitches, e.g. when dragging stuff (white bg of the dragged image/text and for the drop marker arrow in the tab bar) and the scrollbars got the brain dead Windows behavior that not even IE uses anymore. IE implemented it's own scrollbars, apparently. Other scrollbars in Windows (and in Chrome) jump around and stop working when you drag the scrollbar and move the mouse an unknown invisible distance from the scrollbar. Oh and dragging tabs got unusable bad in Chrome. It's a complete disaster. The tabs aren't transparent but full sized when you drag them and you can't drag them down so the bottom border of the window gets outside of the screen, which makes it impossible to drag a tab to a different window that is located down in relation to the window you ripped the tab out of. And sometimes tabs move at an offset form where you grabbed them. WTF? There was a time where Chrome looked less of an alien under Linux than Firefox. Not anymore. Firefox didn't get any better, Chrome got much worse. At least you can use the mouse wheel on the tabs. That is something it does better than Firefox. And the tab size handling when closing tabs one after another. But enough of that.
foo.addEventListener("mousemove", function (event) { console.log(this,event); })
It's only a few characters more than: monitorEvents(foo,"mousemove")If you have an idea, submit (or upvote) it there. It will get seen by the right people.
Unless they incorporate tiled views from different rendering engines. That would be awesome.
But we need markup and scripting languages dedicated to developers...
When Mozilla releases this, which is at least remotely intriguing, many are quick to find small deleterious criticisms.
The fact of the matter is that they are not removing the earlier dev-tools and nobody is forcing anybody to migrate to it. They are just trying to make another tool to help people. Honestly, if you put these arguments in any other context, either software or real life, they sound absolutely ridiculous.
This paradox is similar to creating a new microcomputer only for hackers (Apple I/II) which in turns allows them to develop cool stuff on it (Visicalc) which in turn makes it the standard for all users.
Developer tools have strictly no influence on this, and the multi-process version of Firefox is currently being tested. I don't remember whether there is an ETA.
JavaScript speed is not what needs to be worked on currently. Render speed is.
The DevTools team is really interested in that type of feedback...
Like canning WebSQL for spurious reasons and forcing people to use a half-baked spec like IndexedDB instead? As much as I applaud most of what Mozilla has done to further the interests of the open web it's hard to forget how profoundly they sabotaged the development of the browser as an application platform with this particular piece of political NIH grandstanding.
I agree that IndexedDB is awful and WebSQL was much better, but go shout at the W3C, not Mozilla.
With something like SQLite, I think it's fine to take a super mature platform and retroactively extract a specification from it (while 99% of the people just keep the original implementation), than to start with a crap spec and try to make it mature.
IndexDB set the state of offline storage back, meanwhile Android and iOS developers are using SQLite or equivalents.
Lest this particular piece of villainy be forgotten: https://hacks.mozilla.org/2010/06/beyond-html5-database-apis...
The way to implement WebSQL is to copy SQLite 3.1.9. That is not exactly a baked specification, that is the kind of crap companies used to pull to make unimplementable "standards" for everyone who doesn't license their code and doing that a few times over a decade would make w3c compliant browsers pretty crappy.
SQLite is public domain, there's no need to license it.
Sometimes worse is a better, and insisting on standards process purity in this case I think harmed developers and didn't help the Web at all. There was nothing wrong with SQLite from a licensing standpoint, and everyone could have used it, and reverse engineered a spec later.