Folks,
I'm tired of explaining this over and over again, in particular
because people don't bother checking the archive and/or past history.
Seems that shouting on (insert-your-favorite-social-media) is the new
trend, normal discussion on the mailing-list becomes very old
fashioned.
PhantomJS uses Qt and its QtWebKit module. QtWebKit implements WebKit
[1,2] via its Qt stacks, from graphics to network. QtWebKit was chosen
as the base for PhantomJS when I started this code ages ago [3]. It
was the best choice back then, though we are ready to move to a
different base in the future if necessary [4].
At some point PhantomJS progressed faster than Qt. Qt 4.6 to 4.7 was 9
months to prepare, and yet Qt 4.7 to 4.8 took 15 months. This and
combined with other reasons led to a decision to include a
minimalistic Qt 4.8 source in our tree [5]. Because we can't wait for
Qt 4.9, we even improved our own QtWebKit copy, from adding stack
trace to various crash fixes. Most notably of course pure headless (no
X11) on Linux [6] in PhantomJS 1.5, spring 2012 [7].
Meanwhile, Qt 4.9 never came to see the day. Nokia focused solely on
Qt 5, originally scheduled for mid 2012 [8], and that Qt development
team even later moved to Digia [9]. We are stuck with QtWebKit in Qt
4.8 (released winter 2011). That version is roughly equivalent to
something between Safari 5 and Safari 6, hence that's why it explains
the lack of Function.prototype.bind.
Fast forward to early 2013. I did an attempt to upgrade our QtWebKit
module to no avail [10]. Since Qt 5 starts to become more stable
anyway, we just decided to port to Qt 5 and get its fresher QtWebKit
[11].
Do we ever (intentionally) want to bundle outdated JavaScript
environment? Of course not, we obviously want the best for the users.
Do we ever attempt to solve the problems? A couple of times. However,
like many other things in life, sometimes our effort is not strong
enough to move the mountain.
Just as we discussed the other day (about user expectation, see [12]),
please put things in perspective. Even if what PhantomJS does is only
to consume WebKit and to add spice on top of it, it's still a lot of
work (whereas Google has hundreds of full-time engineers working on
Chrome, WebKit, and now Blink).
To this date, every single PhantomJS contributor is not a fully-paid
engineer working on the project. It is a testament (even before
crowd-funding becomes popular) that voluntary activity often can beat
corporate-sponsored agenda. Please don't let the negativity ruin the
spirit!
<3
[1]
http://ariya.ofilabs.com/2011/06/your-webkit-port-is-special-just-like-every-other-port.html
[2]
http://paulirish.com/2013/webkit-for-developers/
[3]
http://ariya.ofilabs.com/2011/01/phantomjs-minimalistic-headless-webkit-based-javascript-driven-tool.html
[4]
https://github.com/ariya/phantomjs/issues/10209
[5]
http://ariya.ofilabs.com/2012/03/the-evolution-of-phantomjs-build-workflow.html
[6]
http://ariya.ofilabs.com/2012/03/pure-headless-phantomjs-no-x11-or-xvfb.html
[7]
http://phantomjs.org/release-1.5.html
[8]
http://qt-project.org/wiki/Qt_5.0/revision/11067
[9]
http://www.digia.com/en/Home/Company/Press/2012/Digia-to-acquire-Qt-from-Nokia/
[10]
https://groups.google.com/d/msg/phantomjs/2Zb1Ryc5y8E/xOkWYRWj38AJ
[11]
https://groups.google.com/d/msg/phantomjs/z_147Zj1l58/8tEbijy1BkEJ
[12]
https://groups.google.com/d/msg/phantomjs/1BYeMxbUWHw/vqX5j-w_7OgJ
--
Ariya Hidayat,
http://ariya.ofilabs.com
http://twitter.com/ariyahidayat
http://gplus.to/ariyahidayat