
Hello Opera 12 - Juha
http://my.opera.com/ODIN/blog/hello-opera-12
======
kevingadd
From testing out my demos in Opera Next over the past few months, I've been
really impressed with the quality of their JS runtime and the UI.
Unfortunately, their hardware-accelerated canvas support doesn't really keep
up and their WebGL is outright broken - it looks like they went so far as to
disable both by default in 12, a disappointment to be sure - and they still
have serious issues with HTML5 audio (to the point of causing hangs/crashes).

Given that my only real exposure to Opera is from trying to ensure my stuff
runs well in it, it's easy to get the impression that everything about Opera
is broken. I wish they had a public bug tracker so it was easier to tell which
things are known issues, which things have known workarounds, and which things
I should file bugs about.

In particular, the audio issues are a point of frustration: At present, if you
test the latest builds of Firefox, Chrome, Safari, Opera and Internet
Explorer, Firefox is the _only one_ that actually has low-latency, functioning
support for <audio> that doesn't crash or hang. It's ridiculous. Chrome at
least has a custom webkit-only API you can use to get working audio, but the
rest of the browsers are just flat out broken. And in each browser's case,
they've had multiple versions to fix basic issues (limits on how many sounds
you can load in a single page context; broken events and APIs; absurdly long
playback delays, etc). Oh, and Firefox still doesn't support the loop
attribute. :|

~~~
kombine
This is just an indicator that we need a proper native development
environment. Devs who embrace new web technologies like WebGL, <audio> or
<video> forget that those are just Javascript bindings to the technologies
developed in C/C++. Can we please have native code instead, so developer
controls the underlying system without having to rely on the wits of browser
makers? Google Native Client is a step in the right direction.

~~~
azakai
> This is just an indicator that we need a proper native development
> environment. Devs who embrace new web technologies like WebGL, <audio> or
> <video> forget that those are just Javascript bindings to the technologies
> developed in C/C++.

That is technically true, but what is the point? The bindings can make things
better, or they can make things worse. WebGL, for example, covers over a lot
of issues with OpenGL (security and convenience), making the web version very
nice to use.

> Can we please have native code instead, so developer controls the underlying
> system without having to rely on the wits of browser makers? Google Native
> Client is a step in the right direction.

Native code is by definition non-portable.

NaCl in a partial attempt at portability adds bindings of its own to native
APIs. Ask people developing for it, like any environment it has bugs and
issues.

There is no simple solution here.

~~~
kombine
> That is technically true, but what is the point? The bindings can make
> things better, or they can make things worse. WebGL, for example, covers
> over a lot of issues with OpenGL (security and convenience), making the web
> version very nice to use.

Last time I tried WebGL version of Quake3 on my machine which had the hi-end
AMD graphics card at that time, it ran at less than 100FPS. For a game that's
10 years old that is a very poor result. The reason why I said bindings is
because I want a language powerful enough to implement any technology I want
_in_ that language.

> There is no simple solution here.

Of course it's not simple. It doesn't mean it's not possible. Microsoft's
WinRT is another example of coming closer to the native code apps.

~~~
azakai
> Last time I tried WebGL version of Quake3 on my machine which had the hi-end
> AMD graphics card at that time, it ran at less than 100FPS. For a game
> that's 10 years old that is a very poor result.

The Quake II port was extremely unoptimized in how it was performed. It's not
a good benchmark of anything.

> Microsoft's WinRT is another example of coming closer to the native code
> apps.

What about just actual Android C++ apps, as an example of native code apps..?

------
ilaksh
Why don't they enable WebGL by default?

I don't see why more people don't realize, WebGL is a prime Microsoft threat
and the key to moving away from the MS Windows monopoly. That's why Microsoft
has done so much work to try to scare people away from WebGL (by sponsoring
'security research' and creating FUD content on Wikipedia (seriously, look at
the history of that article, the person who created the whole 'security'
section on WebGL has an ip that originates right next to Microsoft
headquarters, and the 'security research' is done by a Microsoft shop)).

What the Opera, Webkit/Safari/Chrome, Mozilla teams should focus on is getting
mouse capture and WebGL uniformly supported and turned on across browsers and
one or two well-hyped and playable 3d first person games. Any industry player
who has money and wants to oppose Microsoft should put money behind big WebGL
game releases and hype for such.

You get that working across browsers and push that and things like Google
Docs, EditGrid, ethercalc, Zoho Creator, LibreOffice etc. and you will see
WebGL games starting to take down PC games sales and Office alternatives
hurting Windows/Office sales.

Anyway, please give the people in charge of those programs and funds a link to
this explanation if you know anyone like that.

~~~
daeken
For background, I write a _lot_ of WebGL demos, I work for Mozilla on gfx
optimizations (WebGL and otherwise) for the Boot2Gecko project. I also worked
at Matasano Security previously, doing WebGL security research. As such, I
tend to think that I'm pretty unbiased in this regard -- or perhaps biased
towards WebGL, since I love it and want to see it everywhere. So with all that
said, your characterization of MS's security claims as "FUD" are complete and
utter bullshit. WebGL has a substantial attack surface in the browser (large
API dealing with many issues from cross-origin restrictions to handling buffer
locking and texture sharing, shader verification and translation, not to
mention all the code required to actually make this stuff fast, which is what
I work on), and it's only the tip of the iceberg that is the 3d stack.

Below the browser you have the userland driver components, which do things
like further shader verification and initial stages of the compilation,
validating index buffers, and simplifying the command stream. Below that you
have the kernel components, which largely trust the userspace to have done
their job properly, then do things like compile shaders for the specific
hardware and put things into the proper form to send it off to the GPU, as
well as handling synchronization and locking and all that. Then below that,
you have a massively complex piece of hardware that under most circumstances
is fully able to touch every single bit of your system memory (thanks, DMA),
and _that_ doesn't care one bit about security; it assumes that everything
coming from the kernel is 100% safe and intentional. If you tell it to copy
memory from point A to B, it will do it without complaining. Meaning if you
wanted to, say, write over kernel memory from a buffer in the browser...

So let's look at what needs to happen to get ring0 (kernel mode) access from
WebGL: 1) get your payload through/around validation in the browser, using
available APIs, 2) get through/around userland validation OR attack the
optimization/compilation steps that occur at that layer, 3) potentially attack
optimization/compilation steps that happen in the kernel component --
optional, since this layer may not be your target, 4) GPU does your work for
you.

At most, you're talking 3 layers to compromise. Compare to real-world
vulnerabilities against other parts of the browser (see also: Pinkie Pie)
where you're involving dozens of steps, and suddenly this doesn't look too
difficult. The tough part is that it requires a significant amount of domain
specific knowledge, but I'm certainly not the only one with it.

WebGL, as awesome as it is, _is_ a security risk. It's one caused primarily by
the fact that GPU vendors have never had to care about security along these
lines before. It will be solved eventually, but it's damn sure not solved now.

~~~
ilaksh
How many examples of this type of "just 3 layers" compromise have we actually
ever seen being used as an "attack"? How many is that compared to the number
of known attacks against browsers using non WebGL-related technologies?

Did you actually see the specific 'security' concerns that that MS shop put
out? Part of it was a laughable demo of an 'attack' that actually did not
compromise anything, and looked like a mock-up that would be used in a movie.
Whether there are potential security concerns or not, the actual 'concerns'
that MS and that company raised were definitely FUD.

~~~
daeken
I haven't seen any real-world attacks using WebGL yet; we probably won't for a
couple years, since it's still very new technology and there's a _lot_ to
learn to be able to do even basic research there.

And have you seen them?
[http://blogs.technet.com/b/srd/archive/2011/06/16/webgl-
cons...](http://blogs.technet.com/b/srd/archive/2011/06/16/webgl-considered-
harmful.aspx) Let's go over the points together:

> Browser support for WebGL directly exposes hardware functionality to the web
> in a way that we consider to be overly permissive

The WebGL API -- outside of bounds checking and shader validation/translation
-- is a direct conversion of the EGL API. This makes getting your data
(legitimate or not) into the lower levels very easy. That cuts both ways, as I
detailed.

> Browser support for WebGL security servicing responsibility relies too
> heavily on third parties to secure the web experience

Read: The security of WebGL depends on GPU driver vendors, who write
_terrible_ code. This point is well known by anyone who's worked on enough 3D
code, or even just tried to fix graphics bugs in games by doing the driver
update dance.

> Problematic system DoS scenarios

For the vast majority of GPUs, there's no way to set timeouts on rendering or
shader execution, so DoSes are just downright trivial. This will be the first
thing to get better, with the various robustness extensions that are coming.

All in all, I have absolutely no issues with what MS released on the subject.

~~~
ilaksh
"This makes getting your data (legitimate or not) into the lower levels very
easy."

Bullshit. Completely unsubstantiated.

The browsers themselves are what are actually being compromised in reality,
Microsoft by far more than others. The WebGL exploits are just theoretical.
Every browser vendor is a third party.

Big fucking deal, somebody makes your browser or system freeze up.. like that
is a new thing that you can't do with a browser or with Internet Explorer?
Freezing the system isn't that easy to do with WebGL and depends on the
specific setup of that machine. That's not a security concern, thats just a
potential inconvenience.

I don't give a fuck what you dumbasses think, this is obviously Microsoft FUD.
But its just another example of the sort of idiotic rationalizations that
normally support the status quo.

------
demetris
Opera 12 is the first third-party web browser for Windows to offer an official
64-bit version. (Neither Firefox nor Chrome have official 64-bit versions for
Windows. And I think Safari for Windows doesn’t have one either.)

Does this translate to any substantial improvements in speed? Does anyone here
know of any benchmarks?

~~~
rieter
64-bit is not really useful for browsers with multi-process architecture like
Chrome. It is very unlikely that a single tab will need 64-bit address space.

~~~
bzbarsky
Except once you have enought tabs Chrome starts putting multiple tabs in a
single process. The cutoff seems to be somewhere in the low double digits. And
at that point, you can in fact start running out of address space (not to be
confused with running out of memory) without too much trouble, especially
because system libraries on 64-bit OSes have a tendency to be mmap-happy,
since they think they have lots of address space to work with.

------
ricksta
Kinda off topic, but Opera Mini and Opera Mobile for Android is vastly
superior in terms of smoothness compare to all other available browsers. It is
very noticeable especially if the page is heavy. A good test is to load this
page
[http://www.html5rocks.com/en/tutorials/internals/howbrowsers...](http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/)
on your Android in different browser and test the responsiveness.

~~~
Osiris
I use Opera Mobile exclusively on Android. Pages load faster and zooming with
fit text to screen works really well.

My one frustration is that when launching a web page from another app it
always opens a new tab so I end up with 10 tabs open and have to close them
all every so often.

------
Spittie
I really like Opera. I've used it for months, but every time i just come back
to Firefox. One big problem (for me) it's their release cycle. I know that
many people hate the fast releases of Firefox and Chrome, but this way i get
new features sooner than Opera. Another problem are addons. I'm an heavy
Scriptish/Stylish user, and there aren't equivalents for those in Opera. I
know that i can enable the userscript folder and copy scripts here, but I'm
honestly too lazy to do it, and loading CSS through javascript is just not
fast enough. Then there are the nitpicks. For example, on Firefox/Chrome
"right click > search on google" open a new tab, on Opera it load Google in
the current tab. Or, on Firefox/Chrome middle-clicking on the back button open
the previous page in a new tab. On Opera this just doesn't work (at least,
until Opera 11.64 - I haven't tried Opera 12 yet). And Opera is not
opensource. While it's not a so big deal for me, i prefer to use opensource
applications when i can.

There are also features that i would love to see on Firefox. Tab Stacking is
awesome, way better than Panorama. I really like also how Opera put the tab
bar on the left, I find it better than Tree Style Tab.

I'll try the new version later, but i doubt that the new features will be
worth a switch for me.

~~~
Tomis02
> For example, on Firefox/Chrome "right click > search on google" open a new
> tab, on Opera it load Google in the current tab.

In Opera Ctrl+Click opens a new tab, Ctrl+Shift+Click opens a new tab in the
background. It's not a new feature. Learn to play your class. ;)

~~~
adamtulinius
Nice trick. I use Opera as well, and didn't know about this.

However, i can't think of any other software where modifier keys makes a
difference in context-menus, so i really wouldn't blame people for not
knowing.

~~~
Tomis02
I'm not blaming people for now knowing, Opera has so many cool features it's
hard to become fully aware of them. To be honest I don't remember how I found
out about this one. In Opera (and other browsers) you can use modifier keys
when clicking links, so it kind of makes sense to use this in context menus as
well.

Opera is always surprising. Did you know you have mouse gestures (such as
'close') in menus such as preferences? It blew my mind.

------
ishansharma
Opera is still not getting some basic features right and that is costing them
users.

I remember asking for a feature in forums in days of Opera 11.00. The feature
was something that every browser has: "Remembering contents of a text field."
For example, when I enter my email address once in a website and then come
back another day and write first letter of my email id, it is displayed in a
dropdown. But Opera outright refused to even consider.

Now, they lack a good full screen mode and drag and drop support in GMail, two
real deal breakers for me. I tried Opera 12 for less than 12 min and sent it
back to dark corners of my HD!

Goodbye Opera 12.

~~~
JohannL
Opera has an inbuilt IMAP client... which I admittedly never use, but between
that and Thunderbird, why would you even want to use webmail? Of course it
should still work, even though it's silly, but you also "should" not even
notice that it doesn't, is what I'm saying. Certainly if you imply your time
is so precious, heh.

And what is wrong with F11?

~~~
ishansharma
F11: As far as I know, there's no way to make address/tab bar visible in full
screen mode.

I prefer the way Safari does it. When I take cursor to top, address and tab
bar are shown!

~~~
Freaky
It's quite possible with .ini editing or some custom buttons:
[http://my.opera.com/Tamil/blog/full-screen-mode-with-
toolbar...](http://my.opera.com/Tamil/blog/full-screen-mode-with-toolbars-in-
opera)

------
simonmales
No one has mentioned that Opera 12 is the first GA browser (I believe) to
support WebRTC. Basically you don't need to flash anymore to access devices
such as webcams and microphones.

I built a really simple site to see how this all works. It will fall back to
flash if you don't have WebRTC support which includes Google Chrome Canary and
now Opera 12.

<http://gotcaption.com/p/39>

------
nuttendorfer
They really improved the responsiveness, it feels as responsive as Chrome now.

Here's more if you are interested:
[http://my.opera.com/desktopteam/blog/2012/06/14/twelve-
under...](http://my.opera.com/desktopteam/blog/2012/06/14/twelve-under-the-
hood-improvements-in-opera-12)

------
dsirijus
I extensively test my webs manually on basically all relevant browsers, up to
few old versions, and on different OS' and devices.

My conclusion is that Chrome on Windows 7 is by far the most 'snappy' and
Firefox on any OS most 'dev friendly' (even though Chrome is coming along that
way very nicely).

That being said, Opera on mobile is very fine, but I still prefer using
whatever stock browser is on particular device. Everything else is a little
buggy.

What I found lacking in any of the browsers is the developer friendliness on
mobile devices. Anyone has any recommendations on that?

~~~
maggit
Unfortunately, I cannot claim that I have tried it, but I know Opera supports
remote debugging. You get to run Dragonfly on your desktop and debug
whatever's running in Opera Mobile on your device.

There seems to be documentation here:
<http://www.opera.com/dragonfly/documentation/remote/>

------
samstokes
One reason this is a big deal: Opera now supports CORS [1]. Until now, it was
the only significant browser that didn't. (Even IE did, albeit - of course -
in its own special way.)

[1] <http://en.wikipedia.org/wiki/Cross-origin_resource_sharing> \- secure
cross-domain AJAX without hacks like JSONP, so you can do POST requests, set
headers, etc.

------
cmelbye
I don't know why I would ever switch from Chrome or Safari to Opera. On a Mac,
Opera still has text rendering issues (<http://imgur.com/a/9bK1j>), scrolling
stutters, and there's a noticeable difference in page load speed (Opera is
much slower than Chrome, at least on my computer).

~~~
ernesth
> Opera is much slower than Chrome, at least on my computer

It is the contrary on my computer: chrome is painfully slow, whereas firefox
is OK and opera is faster. I guess opera is not the best for everyone.

~~~
aw3c2
same here, I would also be very unhappy without opera's instant
backward/forward navigation.

~~~
Osiris
Awesome feature. I hate that other browsers ask you to resubmit a form when
navigating back. Opera just shows you the cached page that it bad before.
Combining that with the mouse flip gesture, browsing is a breeze. In Chrome
you have to click BACK or use BACKSPACE (or a mouse with a dedicated nav
button). In Opera, I click the right then the left mouse buttons and I'm back
at the previous page. Alternate to go back forward.

------
arkitaip
A word of warning: this update erased the persistent storage data for all
sites. So if you're using plugins or if a particular site is using persistent
storage, this will cause issues.

------
zxzwa
I'm a opera user and I was excited to see this news! So I've downloaded the
12th version and went on to test it in the shining page. But it says that my
browser is not supported? <http://www.shinydemos.com/touch-tracker/> \-- Your
browser doesn’t support all required features: Touch Events.

Anyone has the same issue?

~~~
Tomis02
If I'm not mistaken, "touch events" is a feature for tablets or mobiles.
<https://developer.mozilla.org/en/DOM/Touch_events> It will probably not be
included soon for the desktop version of Opera.

------
kidproquo
Anyone else having issues with iGoogle? I had it working in 11.6 by
identifying as IE, since it would just show a blank page when identifying as
Opera/Firefox.

Now, with 12.0, identifying as Opera/Firefox still shows a blank page and
identifying as IE just shows the widget headers and no feeds.

------
rolleiflex
I just wish they'd forgo the use of that cramped sans-serif header typeface.
It looks like somebody just outlined and compressed it horizontally in
Illustrator—awful.

------
alanh
My connection sucks. Have they fixed this?
<http://jsfiddle.net/alanhogan/twCXt/>

~~~
rplnt
Not sure what you mean now? I'm still on older Opera (11.61) and the checkbox
is resized.

~~~
alanh
But it does not look checked, right? One should be checked. Also, clicking it
has no (visual) effect (though it will toggle the checked attribute in the
DOM). It’s a truly terrible bug, and a strong argument that Opera should not
use -webkit- properties like transform until it can actually handle them.

I reported it a couple months ago and have not received any follow-up at all.

~~~
rplnt
It is checked and checking it works as well (11.64 at home now). But as other
comment pointed out, it looks ugly. I tried FF 9 - same as Opera - works and
is ugly. In Chrome 19 it does not work at all (i.e. the checkbox is small).

So it got fixed. And I don't think they do follow-up unless they need you to
reproduce the bug or something.

~~~
alanh
Are you on Windows? I eventually tried in Opera 12 and it does not seem to be
fixed.

Now I’m not sure why you say it doesn’t work in Chrome at all. Because at
least on my platform (OS X), it does, and it looks beautiful and hi-res.

------
siodine
For me, the most important missing feature is tab lazy loading -- without that
my usecase is impossible (hundreds of tabs).

~~~
rplnt
I only use about hundred tabs (not hundreds) but I find Opera best in this
regard - mostly because memory usage, stability (as opposed to chrome) and
capability of the UI to handle that many tabs while being usable. The thing
is, I don't turn the browser off. Maybe once a month to install Windows
updates.

There's an ugly workaround though - start Opera without internet connection
and then reload tabs as needed.

~~~
siodine
FF has lazy loading. Options->General->Don't load tabs until selected.

------
kakaroto_BR
I cant use Opera in home because the lack of a xmarks addon to sync my
bookmarks with my firefox at work, it's a pity.

~~~
rplnt
Use Opera at work as well :)

------
philippK
I'm disappointed that they still don't seem to support the file API in JS :/

------
ekianjo
Still no ARM version available, by the way ? Or has this changed?

------
ekianjo
So now Opera also features extensions ?

~~~
grotos
Extensions were introduced in 11 version almost two years ago.

Now Opera is ditching widgets and unite to focus on extenions.

~~~
ekianjo
I just read that on their main page. Are they getting a lot of support from
developpers for extensions ?

~~~
Tomis02
Pretty much. What do you need?

------
hmans
Hello.

~~~
nosse
My reaction exactly. Just installed it like always before and no fuss about
anything.

------
gcb
The scroll/codex analogy is cute but doesn't hold up.

Sure hope the page based css goes to the limbo.

------
halayli
Anybody home?

