WebIDE lands in Firefox Nightly
hacks.mozilla.org
hacks.mozilla.org
As I've said elsewhere, a lot of kids still assume that programming is essentially "magic" done by professionals and they implicitly assume there is no way to getting started at their education level (This is especially true if their parents are non-technical, as mine were). All the resources in the world may exist, but they may not be obvious unless you look for them. When I was a kid I assumed that programmers were all professionals with a billion years of training and their own special equipment. Today I know the only difference between a programmer and a yet-to-be-programmer kid are bigger feet and a coffee addiction, the computers are the very same. But I didn't know that back then - I wish someone told me.
I think it is extremely healthy to have the lowest bar possible to go from "Hey I like that" to "Can I do that? Can I make it myself?" Putting an IDE inside the browser, having no other dependencies between viewing web-pages and making web-pages is an incredible first step.
I await the day any kid asks "How do I make my own webpages?" and we can answer "You've already got everything you need, just press F12."
There's an art to making seemingly insurmountable things appear doable, like becoming a programmer if you have no programmer role models, and I think we should give it more attention. The web makes it easier than ever, and while a bundled IDE isn't going to be the Geocities or Bob Ross equivalent, it's definitely the next step in reducing the friction of getting started.
Bravo, Firefox team.
What do you do when you run into a kid holding an iPad?
http://twolivesleft.com/Codea/
And then I'll tell him that with just a Mac (which he might already own) and a $100 dollar subscription, he can program and even sell iPad apps worldwide, to a market of half a billion people.
People seem to forget how, in those 80s computers, to get a compiler (besides the built-in BASIC one) you usually paid lots of money. And that a worldwide distribution network for your apps, with automatic payment handling et al was also out of the question. As was an SDK even 10% as complete as Cocoa Touch or the Android one.
I... um, it's a first step we took 17 years ago, didn't we? http://en.wikipedia.org/wiki/Netscape_Composer
http://www.jwz.org/doc/groupware.html
Anyone who doesn't think the Netscape ship sank is probably too young to remember pre-Firefox (or too close to events to be objective); but the fact that the ship was salvaged from near the bottom of the ocean doesn't change the fact that it did sink.
I totally agree that browsers should allow editing. Even if you are not authorized to PUT the page back to the server, it would still be useful to be able to edit before you print or save the page locally.
I really have no idea why we were robbed of this capability! It was probably just laziness from the people who wrote mainstream browser and httpd implementations.
For example, the day I discovered that they sell surveilance cameras in regular electronics stores, I was very surprised. Up until then, I had thought that only special kinds of highly trained professionals even knew how to get them and that the whole thing was a giant unified system that cost close to infinite amounts of money.
Small correction: they'll ask "How do I make my own apps?"
And the answer will be the same.
I think the best way to start writing webpages is with a text editor - which almost any OS out there will already have, and that IDEs are like calculators - they're a great help when you already know what you're doing, but not ideal for starting out learning.
That said, if this makes it to the stable release channel it would be a big (and positive) change of direction for Mozilla, who have had a history of removing power-user-oriented features (and most developers probably started out as power users.) I remember a thread on HN (might've been about Australis?) in which others were wondering whether they would eventually remove the "View Source" function.
Do you see audio mixing/mastering or video editing software being bundled with media players? Or do you see word processors/TeX IDEs bundled with PDF viewers? No, because you wanted to play your Black Sabbath .mp3, or read a .pdf scientific paper.
If you wanted to record your Black Sabbath tribute band and produce the recording, you'd get a digital audio workstation. If you wanted to write your own scientific paper, you'd get a TeX bundle. If you wanted to develop web apps, you'd want to download an IDE. Not use a web browser.
A vast, vast majority of people downloading Firefox wants to just look at damn web pages. The ones who want to make them are welcome to get dedicated software. Developers of that separate program for web dev could then go crazy and add a lot of features that wouldn't be possible so easily if it was bundled in a browser. Everyone wins.
So why this? No one is being done a favor by bundling a web IDE with a browser. A bullshit token reason like "it's easier for novices" will not qualify.
Why shouldn't all systems be programmable?
What I'm saying is that you do and will for a long time need a degree of technical expertise to develop webpages. The gap is shrinking, but will exist for at least quite some time. I'm not being an elitist, just real. The technical expertise needed to browse even the most complex websites versus the one needed to put together even the simplest ones is far smaller. Why would putting this Web IDE into an add-on ever accent the border between creation and consumption?
It's good to have software with a single responsibility. All other things equal, Mozilla's Firefox division can maintain a web browser without an IDE better than they can a browser with an IDE. If Mozilla was to develop an IDE, it would be easier to split it into a separate piece of software (say an add-on) and dedicate another, different development team to work on it. That would be another program with a single responsibility.
This is vaguely reminiscent of the Unix way, and I'm very respectable of it, for the main reason that it's aligned with my personal philosophy (KISS), but also because it was able to create and sustain such a big community founded on openness and contributions and not driven by profit margins and managers in suits.
This is simply wrong. I was writing web pages with very little technical ability starting way back in 1996 because view source was built in and not an add-on and that made it easy to learn without any technical expertise. Today the web platform is richer and so it makes good sense for the view source of today to also be richer.
Today, even if browsers don't have "View Source", you can search Google for "how to make web sites", and a zillion results would pop up. It's not a roadblock.
My point is, even if IE didn't include that toolbar button, I would've started up FrontPage on my computer sooner or later. It was just a matter of timing and a string of coincidences. Some other string of coincidences could've led me there, too. I say that the argument "some people would tinker and by moving the IDE into an add-on wouldn't let them tinker enough" is pretty weak. If you're curious about something, you tend not to get stopped by things such as that: that curiosity drives you to poke around incrementally until you either find what you're looking for or fuck up the computer (well, at the time, this was something I was prone to doing often because I loved messing with Windows' system files :)
You simply assert that it would be easier for Mozilla if they split it into a separate piece of software.
I see no specific reason to accept this as true, and you have not provided any.
I also think that including dev tools and even an IDE like this in a browser are fundamentally different from including a mail or calendar client in a browser.
No, and that's a problem. Do you see programming languages shipped with every computer? No, but that's how it used to be. Most shipped with BASIC while Unix shipped with C. I guess Macs come with Python, but just CLI no IDE - not even idle. Is there some reason not to ship development tools? Do you not want the curious to have ready access to dig in and understand the stuff they use every day?
I can imagine quite a few 'web apps' that won't try to actively obfuscate how their client app operates. In those cases having browser-based development tools makes it much easier to tinker with and inspect the app...
We should be splitting software into smaller components, and let the user choose what they need. There's no need to pander to lazy or unwilling-to-learn users by barfing up all they need into a single binary, thereby adding stuff most of the people won't ever use.
Could another advantage of coupling browsers with development tools be that it makes it logistically easier to maintain 'parity' between the browser and its development tools? Or is that not how these things are done?
Edit: I see my question has been addressed elsewhere (https://news.ycombinator.com/item?id=7933515)
I like when software is doing one single thing, and is great at doing that one single thing. With Firefox needing to address a lot of problems to stay on par with Chrome, the last thing it needs is more cruft to worry about in the browser itself.
More and mroe macs are being sold with SSD's, and installing Xcode uses a good 4-5 gigs (+1GB per platform in documentation). That's a good enough reason for me to not install it when I don't need it.
Yeah, pretty much.
Combine offshoring with the baffling obsession some programmers have with teaching EVERYONE their trade and you can expect compensation levels to plummet in the coming years.
I could just as easily envision an army of cheap, self-taught "programmers" making applications held together with spit and glue and causing a race to the bottom in the industry (see the residential construction industry for an example of this).
The "baffling" obsession might come from the fact that many programmers realize that basic programming knowledge is the coming equivalent of literacy. And that they'd never be in the position they're in now if generations of CS people hadn't freely shared what they learned.
Java used to be bundled too out of the box, but Apple has deprecated their JVM. Of course Oracle has up to date JDK for OS X now.
Really getting compilers and dev tools for Unix OSes is trivially easy. Almost everything is free if not open source.
1: https://support.mozilla.org/en-US/kb/profile-manager-create-...
2: about:config?filter=.enabled
Now Mozilla are busy rebuilding an html-authoring tool and packing it into the browser. I bet messaging will follow.
Messaging is already here. Except it's called the Social Service API.
For example, there are two Facebook Services. You can go (right now) to the Mozilla Social Service Activations Portal, select Facebook Share, and click "Activate now":
https://activations.cdn.mozilla.net/en-US/facebook.html [Requires a Facebook account]
There used to also be a Facebook Messenger Service, but that appears to be gone for some reason:
https://support.mozilla.org/en-US/kb/how-does-facebook-messe...
There's developer documentation here:
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/So...
As an example, some companies have a single source tree with every project. Why the hell would they do that? Make 100 repos on github is better - you know which repo is which repo. Maintenance and usage headache.
> A vast, vast majority of people downloading Firefox wants to just look at damn web pages.
So why bundle dev tools in the first place? Remove dev tools will definitely slim firefox's size and memory footprint. Forget about error logging (null them); if you are developer just install addon so you can pipe the errors. That's better! Lightweight browser for the rest of the non-developer user! Win!
Of course that won't work for Mozilla. They are not interested in maintain two separate set of builds. I am not going to do that for my software either. It's a lot of work.
> If you wanted to develop web apps, you'd want to download an IDE. Not use a web browser.v
Nope. I can do this with Word, python -m SimpleHTTPServer, and a web browser to write code, test code and see code in live action. Why I don't do that and use an IDE or vim? Because of convenience.
Firefox has a feature called scratchpad. See [1], and the point is that you can experiment your javascript code without having to squeeze your code into the console. It also reduces the headache of copy-paste code back and forth between console and some other places (you can't save your console code, so where do you get the code? Some file!)
I wrote one add-on and the workflow is awful. See [2]. I wish I could write add-on in scratchpad without having to repeat those steps and can see error immediately by a click on scratchpad. Maybe scratchpad has this feature I am not aware of...
The point is, I hate to switch back and forth between the browser, my vim terminal and the web console.
[1]: https://blog.mozilla.org/devtools/2011/08/15/introducing-scr...
[2]: https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Ge...
> A bullshit token reason like "it's easier for novices" will not qualify.
No this is not bullshit, because developers are users and some users turn into developers BECAUSE they poke around tools available to them.
Wait, what is Word being used for, in this process?
And by moving the web IDE to a separate add-on, we make it unavailable to them?
It's just more easily available. That's a huge difference. You have a web browser, you ask yourself, "how do I create webpages?" Then you maybe Google how to do it, and the answer says "it's in Firefox, just press F12", or "get this Firefox add-on, and then press F12". The difference is negligible.
If someone was to stumble across some HTML via "View Source", the result would be essentially the same as above. If someone opened the web IDE out of curiosity, she would still need to know how to use it. Tinkering only gets you so far, it's a combination of tinkering and researching that makes you learn new stuff. And if you do even a modicum of research on that, you'd learn that there's an IDE in Firefox, or that there's an add-on for Firefox.
Talents show up, one way or another. How likely is it that this particular decomposition of a monolithic application into a core application and an add-on would make some talented kid never discover their passion? I'd say it's highly unlikely. But how likely it is that a huge amount of users would need to download bigger archives of the browser, or bigger updates, or suffer from some form of bloat if the IDE was included? I'd say more likely.
New developers have been emerging since the dawn of computing, without any thought given to whether or not including something would allow some kid to poke around and discover that he likes to do it. Why would it stop now?
In fact, OS bundle media player sucks because they can only play some formats. I shall say it sucks that we have so many different codec available and yet OS can only bundle a small subset of the free codec (forget about the one that are proprietary).
And you know what? This integration is done. It's in nightly. It probably won't be removed for a long time because it's a feature that has a use case. You don't have to like it, but it's in there.
I don't know about you, but sometimes the things I dislike turn out all right and I like them later because I start to use them.
Also, I own multiple copies and multiple profile of Firefox for development purpose (and testing purpose). I am not sure whether there is a global way to make add-on available across profile, but at least I don't know how and I don't want to re-install the same add-on five times a day. Minor use case but it's a use case.
Also, when I teach programming to students, I and the class can benefit from a single installation. Just need Firefox! I don't need to worry about different IDE and I can focus on showing them the result in the same browser they use to see live code and debug code. I don't use fancy IDE and I hate full blown IDE for web app.
This integration makes me happy, makes some of us happy and that's how a software is. You don't have to like this decision, but it's in there, so try it when you have a chance and you may like it.
> We’re working on a protocol adapter that will allow
> clients using the Firefox Remote Debugging Protocol –
> including the Developer Tools and WebIDE – talk to all
> mobile browsers, regardless of rendering engine or
> runtime. Our first targets are Chrome for Android and
> Safari on iOS.
My company expects all of our internal web applications to function on the executives' iPads, but they refuse to purchase Macs on which to debug issues that manifest only on mobile Safari. And since the mobile Safari developer console was disabled in iOS 6, I haven't come up with anything better than alert-based debugging techniques (Firebug Lite was broken the last time that I tried, though admittedly that was a while ago). If Mozilla truly reverse-engineers Apple's remote debugging protocol it would be a godsend for us.(And if I'm just an idiot who's overlooking some simple way of debugging mobile Safari, please let me know.)
Peeved, but not surprised, given their track record.
http://developer.telerik.com/featured/a-concise-guide-to-rem...
Or, run OSX in a Windows virtual machine? You could us Safari remote debugging then.
I mean, obviously you can do it at home, but a company has to be a little more careful.
Historically, software engineers have been the minority of the worker bees in a company. As companies trend towards more and more technical folk at the bottom of the work pyramid (not just software engineers, but anyone doing highly technical work that increasingly incorporates ways of working that have been the status quo among developers), managers are going to need to be able to understand the technical side more and more.
We'll eventually reach the point where it will no longer be enough for a developer to spend inordinate amounts of time convincing the manager what the right thing is. That works for the low hanging fruit that most developers can argue for. Once most if not all of the low hanging fruit has been picked, not picking the higher hanging fruit will be as much the fault of the manager as the engineers that need to convince the manager of their importance.
There will come a time where technically competent managers become a requirement, not just a luxury.
Google did this a while ago: https://github.com/google/ios-webkit-debug-proxy It works well for connecting Chrome DevTools to Safari, automating Mobile Safari through ChromeDriver, or hooking up your iOS device to a private instance of WebPageTest.
...Or rather, it would be very useful were it not for the fact that it only appears to run on Linux and OS X, whereas my employer-granted computer is running—drumroll, please—Windows XP! And like I said, these are all internal applications, and I don't have the authority to VPN in on any computer that I please.
Ah well. Enterprise bureaucracy strikes again. :\
I will say that being able to debug pages in mobile safari directly (via Safari on a mac) makes a huge difference, so if this works even partially as well, it's worth investigating if you can get it running.
(The funniest thing is that we're not even a public company, and have no shareholders to defraud. That's right, we opt in to Sox-compliance.)
Apple is still doing well, though.
1. Most people use browsers compared to working with them for development, and
2. The additional tools just add to the package size and possibly increased resource usage (if they are running with the rest of the browser)?
Thanks in advance for the replies.
This should be a plugin like firebug.
Download size is affected, although for larger parts of the developer tools (things like firefox OS simulators and adb) we use addons. We think that tradeoff is worth the benefits - users can look under the hood (even if most of them won't), developers have quick and easy access to tools, and we don't have to worry about things like version mismatch/testing concerns/etc.
Once you start getting into complex frameworks and what have you, you start needing additional tooling, more knowledge, etc, but that's fine. The point is to start tinkering, you only need a browser. To start doing a little more than tinkering, you need a browser and a text editor (not like Sublime, like Notepad; on day 0 you don't care that much about syntax highlighting). Both of these come out-of-the-box on any computer.
That was 2004 though. Today the Web is a lot more capable because browsers are a lot more capable. Also, typical download bandwidth for consumers is a lot more capable than it was in 2004.
Most of the growth in Firefox download size since then is a result of Gecko/Web platform feature growth, not the GUI features that users interact with.
That web platform capability isn't free. It takes code to make JS dozens of times faster than it was in 2004. It takes code to add HTML5 and CSS 3 features, WebGL, WebRTC, and all of the other great stuff the Web platform includes today. That code makes the download larger.
That being said, I'd love to see another round of evaluation to see what can be trimmed or slimmed. I don't consider that the same priority it was in 2004 though.
The question is, do you want this state of affairs to be built into the design of our systems, or do you think that it would be good if, over time, a greater proportion of people are able to express themselves through code?
The web is not like other platforms where there's a hard line between people who make it and people who use it. Many people, like myself, thought of themselves as users until the web's view source made it possible for us to become content producers with no significant additional tooling.
Today, the Web is a lot more complex a platform than it was in the early 90s and so our view source and JS consoles have evolved into more capable developer tools as a result.
So in short you get a better, more extensible browser, more stability and the chance to take a look at how something you use every day works.
It's a win-win in my opinion.
I just wish that these vendors behind web browsers would put more effort on cleaning up their acts on the plugins development as well (stable and useful docs, tutorials, more tutorials, and mooooreee tutorials, sane development environment without jumping through hoops, better integration with IDEs and whatnot), not just building infrastructure upon infrastructure in which the development and deployment to the said infrastructure is PITA.
Everything that drives the UI are just functions that could just as easily be invoked from the scratch pad. If you know a bit of javascript you can write a few of your own functions to automate some common browsing tasks. And if you need even more functionality you can dig deeper and write your own libraries that seamlessly integrate into the kernel without a hitch and can be invoked from your own menus.
No plugin tom-foolery or artificial walls around the garden.
Looking forward to seeing how this develops!
I'd love to see someone give that a shot. It was really three or four people who "Firefoxed" the old Mozilla Suite and there's nothing stopping some similarly motivated group from giving it a go.
Still, I don't think they'd get nearly as far as we did back in 2002 and 2003, because Firefox is actually very trim and fit. There aren't a lot of extra features to cut and the code implementing most features is smart enough not to waste resources when not in use.
So there are three layers of compatibility we expect to see with external IDEs:
0) No integration - Open a WebIDE window with editing turned off and use it (or command line tools that drive it) to manage device connections/pushing/etc. 1) Simple integration - Most of the basic device connection management will be available through command line tools, it should be incredibly easy to drive that through editor/IDE configuration. 2) The whole nine yards: Speak a remote debugging protocol and get full control over the debuggee.
As far as the whole nine yards, you can either use remotedebug's protocol and proxies (although development seems to have trailed off there?), speak each browser's protocol natively, or maybe down the road the protocol abstraction we're working on at Mozilla.
As an aside, I'm amazed the way Mozilla have co-opted the term "Web" to mean whatever they want it to. The way they've branded all sorts of non-standard APIs in FFOS "Web" APIs to confuse people into thinking these are somehow more open than anything else is impressive.
They have the ONLY fully featured modern browser that is also free software. IMHO, it fits the "make the best browser" philosophy.
Actually, yes: http://dxr.mozilla.org/mozilla-central/source/browser/devtoo...
That's my point. It's not.
EDIT: ici: http://dxr.mozilla.org/mozilla-central/source/browser/devtoo...
As a meta-discussion, <vbox> is just a fancy way of saying:
div { display: -moz-box; -moz-box-orient: vertical; }
...which is the old flexbox implementation. But I digress :)
edit: link to the MDN article about `display: box`: https://developer.mozilla.org/en-US/docs/Web/CSS/box-orient