shaver
(Disclosure: I start at FB next week, though I don't have any inside info on this.)
Do you actually believe the things you're saying? I'm struggling here.
(StopBadware actually doesn't flag sites at all.)
I apologize.
"Sale (Sell) (Sold) (Seller) – shall mean any sale, rental, lease, license, copying, transfer, reproduction, Transmission, or other form of distribution of an AVC Product or the Transmission by any means of AVC Video either directly or through a chain of distribution."
This is consistent with the discussions I've been party to with the MPEG-LA directly.
Edited to add: I would very much appreciate a reference to MPEG-LA saying the things you indicate in your comment. It would be very interesting to be able to point to those statements, in a number of ways.
The patches linked from the github README aren't necessary to run the transpiled version that was in the demo -- it's a memory optimization that's being used in the tuned-for-JS version.
As regards derpiness: it lets content distributors decide to pay for H.264, if they want, exactly, and paves the way for other codecs to be deployed by such distributors as well. It also runs the codec in a managed environment -- format decoders are often very fertile territory for exploitable bugs, since they are pretty much by definition all about pointer math and byte-poking. But the initial intent, when they decided a week ago to try it, was to push the envelope of JS performance such that we find new ways to extend said envelope.
As far as applications, it will let content providers who want to ship H.264 and pay the license fees do so without requiring all browser developers to pay such fees. (For Firefox it would be a meaningful portion of Mozilla's engineering budget.)
And it's a pretty compelling demo, IMO, of the fact that we're not done with JS performance yet, and that people don't need to be running to Dart or NaCl or other rip-and-replace technologies in order to get great perf. There's a lot of opportunity for even better performance on the engine side as well as the library side: they started a week ago with emscripten, Closure and the libstagefright C sources...
We’re currently aiming at mobile/tablet devices rather than a notebook form factor. We’re looking to expose all device capabilities such that infrastructure like phone dialers can be built with Web APIs, and not only “high level” apps like word processors and presentation software. We also want to provide a stack that's open down as far as we can, and not just the browser-like top layer.
That's the whole point. The web wasn't quite ready to subsume PDF, until people went and tried to do it, found the pieces that were missing, and got them added.
We expect and hope that we're going to hit a ton of things that don't work today, and that we'll have to make them work and get a standardized API and so forth. I think that's a better way to proceed than to make speculative sky-APIs on standards mailing lists.
We are exactly targetting mobile devices (handsets and tablets), because we agree with your assessment of where things are headed, and because that's where the app action mostly is today. (We want to solve the app-store-for-web problem too, but that's another project.)
This isn't just about the web apps you have today. It's about having your contacts manager, camera, gallery, dialer, SMS app, GPS-integrated maps, launcher etc. be hackable using web tech. That work will help on desktop as well, since many of those pieces are on desktop/laptop machines -- if you write OS-specific code to get to them, and you're allowed by the OS to interpose your version of it.
Maybe you're right, maybe it's a fool's errand. We think it will help the web grow in powerful ways, and make important internet technology be accessible to more user-focused customization, so we're going to try it. That's basically what we do.
(Does MSRC ever make the worth it/not worth it call? I thought they just analyzed the security side, and didn't make the product decisions.)
But the argument I read from MSRC wasn't about the capabilities of the system when working as intended, it was about weaknesses in OEM/IHV drivers causing unintended behaviour that is qualitatively harder to fix than bugs in the drivers for hardware H.264 decoding. I haven't yet found a way that HLSL/XNA is more robust than GLSL/WebGL, and I've been in threads about those shader models for quite a while now. Of note, perhaps, is that on Windows we compile GLSL into HLSL and then effect bytecode (with Microsoft's compiler) and feed it through Direct3D. It's a very very similar pipeline.
The claim is that driver blacklisting hasn't been used to address recent vulnerabilities, but...the recent vulnerabilities have had nothing whatsoever to do with problems in a driver.
WebGL absolutely needs care taken from a security perspective, as do video and RTC capabilities, new network protocols, and support for unicode. (The "text-display facilities" I mention were some OS-supplied ones that crashed out if given the right -- wrong -- sequence of characters to display.) Especially in light of the impending support in SL5, I don't think MSFT has made a case that this facility is actually as world-ending as they make it sound. I believe that WebGL can be secured, and am disappointed that MSFT is throwing up their hands and saying "can't be done! all gonna die!" about WebGL while they've obviously invested to the point of comfort in the equivalent SL5 APIs. On Windows, in fact, we map GL to D3D and use the same shader-compilation and API pipeline as SL5.
Advice and input from Microsoft on this would be very welcome. They know a lot about the whole (Windows) stack, though perhaps not OpenGL, and like us they had to deal with driver and D2D bugs while accelerating the 2D portions of their browser. But if they're going to raise security concerns about things, a conversation rather than a blog-post broadside would probably contribute more to the security of the web.
(People point at the Context IS bug reports, but they had nothing to do with access to fragile driver code or unsuspecting hardware. They were origin-management problems in the spec, and a straight up C-pointer-mgmt-claims-more-toes bug in our implementation.)
For a while (3.5 and 3.6, I think), Linux distributors shipped 64-bit builds of Firefox, which did not have JIT support. (Mozilla did not produce supported Linux-64 builds until 4.0.) Experimental Windows 64-bit builds had the same problem, but most people even on 64-bit Windows would use the 32-bit version. Linux distributors would also build Firefox to ease their package management, rather than to optimize startup speed, so again if using a distro Linux build you were in the penalty box.
MSVC also has PGO support which we still can't get working properly on gcc, and which used to make a very substantial difference in JS performance, and still makes a small one. Add to that the PIC register overhead, and that we had to compile with frame pointer on Linux for some time until we added CFI support to the crash reporting software, and there were lots of places where the toolchain just didn't keep up.
Animated performance tests are likely to be slower on Linux than on Windows due to graphics differences rather than the underlying JS performance. In fact, one of the ways that we generally tell if something is JS-related or not in initial triage is whether it's cross-platform or different on different OSes.
Windows is where most of our users are, but most of our developers are still on OS X I think. After that is probably Linux, but it's a close call. More are moving to Windows, mostly to be closer to the dominant user experience. Linux generally suffers most in the graphical department, due to the...variable quality of available drivers. compiz itself has an extensive blacklist of drivers, and that's coming from the distros themselves! I don't think anyone can reliably get Linux video driver bugs fixed, and we've been waging a battle against Linux graphics stack performance problems for some time ourselves.
(One major performance issue for us is theme drawing and using stock icons and doing other "be a good Linux desktop citizen" stuff. Chrome went the other way, doing their own thing and not having to load icons synchronously, or re-initialize the font system on startup, or do all form-widget drawing through gdk-indirection-slowtown. I think it's clear at this point that we erred in listening to what the Linux faithful told us they wanted, and we should have listened to our instincts.)
On Android our JS performance is pretty great, even though the native toolchain isn't exactly fantastic. That's probably the most important Linux platform in the world right now.
It'll be interesting to test Kroc's thesis, though: if he's right that RSS will be harmed a lot by Firefox removing the RSS icon, then hits to the RSS stream from Firefox UAs should change trend-line between 3.6.x and 4. I look forward to such a follow-up, it would be interesting data!
Platform engineers: the native-code guts of Firefox, you could work on things ranging from network protocols to scripting performance, 3D graphics to parallelism, performance tuning to debugging and instrumentation. And you get to deliver new web capabilities to about half a billion people. Want to make contentEditable not suck? Want to fix the CSS layout model so people don't miss tables? Want to make Flash and Silverlight sweat more bullets? Us too.
Firefox engineers: 2011 is going to be a very exciting year for Firefox, and we have lots of ambitious work planned. There is lots systems work as we move to a multi-process model, as well as lots of "app logic" and more traditional front-end stuff. Client-side web skills map well, and we want to make them map even better; you can help with that too.
Web developer tools: we're going to be significantly increasing our investment in developer tools, to improve the web development experience dramatically. Package up the complexities of the web platform and make it grokkable to everyone from a grade-schooler to jeresig.
Engineering management: we need more people who know how to make developers successful and satisfied, and get joy out of doing it. Our engineering organization spans the globe, has a scope as broad as the web itself, and competes against the biggest software companies in the world.
Developer infrastructure: we run a large software operation on open source tools, and want to make everything from crash reporting to bugzilla to mercurial to the build system work better. Take the hard information problems of software development, make web apps and other tools to help understand and solve them. If you have partially automated your breakfast routine, and want to play with some pretty large-scale data, this could be a lot of fun.
Security: program management and penetration testing both. Your purview is security at the full breadth of the web.
Web development, apps big and small: top-25 web properties (without ads), software update systems for 420M+ users, demos for new web technologies, crash analytics systems backed by dozens of Hadoop nodes.
Mozilla is a non-profit organization chartered to improve the web. We pay competitive salaries, have great benefits, and work in the open. Wake up every morning glad you get to do the right thing!
I hope my daughter grows up in a world with a few more Neil Frasers.