
PhantomJS: Stepping down as maintainer - wfunction
https://groups.google.com/forum/#!topic/phantomjs/9aI5d-LDuNE
======
franciscop
IMO it'd be a really smart move for Google to hire Vitaly to help with the
launching of this feature and things around it. He has done a great job with
PhantomJS.

Even an _acquisition_ [1] of PhantomJS would totally make sense, then let him
keep working on it but based on headless Chrome and with real resources.

[1] Careful how you spin it for this route, learn from TJ/Express
[https://medium.com/@tjholowaychuk/strongloop-
express-40b8bcb...](https://medium.com/@tjholowaychuk/strongloop-
express-40b8bcb8e5af)

~~~
krzyk
Could you elaborate on the TJ/Express? The post you provided looks like the
last one of series of events.

~~~
franciscop
Yes, there was some controversy in the Node.js world because he sold the
project of Express to StrongLoop just as he was leaving for Go. I think it was
totally a problem on how things were communicated and that he had really a
good intention. What didn't help much though is that StrongLoop then left the
project unattended so the main person contributing to it (Doug Wilson) wasn't
even acknowledged.

So if an open source project is being sold:

\- Make sure everyone knows it's because it'll be better handled and not
because of the money.

\- At least get a decent amount of money! According to TJ it was half a month
worth of money.

\- If you are the company buying it don't leave it unattended afterwards.

Anyway, now TJ is surely remembered with a lot of gratitude in the Node.js
community and I'm so happy he helped it grow so much!

This is all better explained here (and read the comments for TJ opinion):
[http://thefullstack.xyz/history-express-javascript-
framework...](http://thefullstack.xyz/history-express-javascript-framework/)

------
d--b
Wow, I'm very impressed. At this stage it is a very wise decision to step down
and to focus onto something else, rather than to hold on to a project that
will eventually disappear. It takes a lot of courage to move on from a project
that had to be maintained for several years and that had such a reach.

We can only be thankful for all the good work that went into PhantomJS, and
wish the maintainers the best of luck in their next endeavors.

Cheers!

~~~
moxious
He says in his message it's been a slog for some time, looks like a good time
to be done with it. Open source is great, we all like it, but demanding unpaid
jobs can get old, too.

~~~
yebyen
And it makes sense. You want Chrome in your tests if your users are using
Chrome. Very few (if any) of your users will ever visit your app with a
headless PhantomJS browser, so it's not a platform that you should go out of
your way to support.

I've been using Selenium Driver with Chrome in xvfb for my headless testing
needs, and I've used PhantomJS for some automation things in the past where it
was great, but since I switched I really haven't looked back!

I had things breaking subtly that I couldn't fix, and they did not manifest as
problems in the Chrome browser or Selenium. I still don't know what was wrong,
I just know that my Rails app won't pass its JavaScript functional tests if I
use PhantomJS. When I did the evaluation of 3 test drivers, I found that the
one with the actual browser in it was the one that worked most reliably.

~~~
moogly
Thanks so much to the PhantomJS maintainer for his hard work over the years!
To me, it feels like his decision is the correct one here.

After we realised that we hadn't seen a "one-browser" bug for 2 years in our
massive angularjs app, we got rid of all browsers but PhantomJS in our karma
suite. PhantomJS' slowness, lagging-behind in webstandards and just my general
gut feeling (these facts above made me question the point in running
JavaScript tests in an actual browser at all) made me port our karma test
suite to jest w/ jsdom and haven't been happier since we, years prior, got rid
of our gnarly Selenium test suite that caught 0 bugs but was the major cause
for maintenance headache.

~~~
forgotpwtomain
> After we realised that we hadn't seen a "one-browser" bug for 2 years in our
> massive angularjs app

Really? When I was writing JavaScript I thought I'd hit one ~ once a month. As
a matter of fact I hit a v8 bug just yesterday which apparently doesn't
support /Etc/GMT[-+][0-9]{0,2} timezones.

------
avaer
Open source software has to be one of the least efficient markets out there.

If you sum up the very real value PhantomJS has delivered to very real
companies over the last several years, napkin math tells me we wouldn't have
the project being abandoned for being a "bloody hell" to work on.

~~~
azernik
It's a classic "public good" \- an economic activity whose benefits are
impractical or unworthwhile to deny to those who don't pay. Things like
emergency services, last-mile road infrastructure, and environmental
protection work. A special-case of positive externalities. These are a classic
example used by economists of a natural place for government in the economy.

~~~
IshKebab
Which makes me wonder why governments don't give more grants for writing open
source code.

They do it for research, which is another thing that would otherwise probably
not pay for itself.

I guess if they started doing it a lot of commercial companies would complain
to them about the competition.

~~~
earthboundkid
I think that in the US, we've been fighting for some long about how much to
cut government, the idea of proposing to create a new category of spending
just doesn't occur to Democrats. The closest they can come to imagining
something new is free college (which is the same what we have now [free high
school, college scholarships] but more so) and free daycare (which is like
free preschool but younger).

~~~
mobilefriendly
You're kind of in a bubble, there is a lot of U.S. government support for open
source and most agencies use it. See [https://code.gov](https://code.gov) for
a starting point. There's never going to be a huge multi-billion dollar grant
program because it is unfair to closed-source companies (who pay taxes) but
you are imagining a debate or hangup that doesn't exist.

~~~
misingnoglic
Why is it unfair? Those companies presumably charge for their software, and
maybe will be incentivised to go open source.

~~~
paulddraper
It's unfair because those companies can't extract their required funding at
gunpoint.

------
hpaavola
Also Firefox will get headless mode in few releases
[https://bugzilla.mozilla.org/show_bug.cgi?id=1338004](https://bugzilla.mozilla.org/show_bug.cgi?id=1338004)

~~~
corford
And while people wait, you can already do a 'poor mans' headless Firefox
thanks to SlimerJS and xvfb.

Phantomjs is less resource heavy if you're constantly spooling up and down
lots of instances but I prefer SlimerJS w/ Firefox since it lets you keep up
to date with a modern version of Firefox (rather than relying on sporadic
QTWebkit updates from Phantomjs).

If you're using Casperjs, SlimerJS is virtually a drop in replacement for
Phantomjs (though I worry about how long/well Casperjs will continue to be
maintained).

~~~
kozhevnikov
One can use Xvfb to run normal Chrome as well (with few gotchas like --no-
sandbox, --disable-gpu and dep on dbus-x11). A test I'm working on at the
moment takes 28 seconds in PhantonJS and 6 in Chrome under Docker and Xvfb.

~~~
vaviloff
Very interesting comparison! Could you write a note on your experience
somewhere?

------
askmike
Though a collaboration between the two projects might not be out of the
question: [https://groups.google.com/d/msg/phantomjs-
dev/S-mEBwuSgKQ/PQ...](https://groups.google.com/d/msg/phantomjs-
dev/S-mEBwuSgKQ/PQdE1A5FAwAJ)

~~~
make3
google should hire him

------
z3t4
> I even bought the Mac for that!

I did too, then found out you also needed a dev license for users being able
to run your app. Supporting Mac/OSX is damn expensive if your app is free.

~~~
Cthulhu_
For iOS development I believe they got rid of that requirement, you can
develop iOS apps (at least) using a personal dev account; only when you want
to go to the app store do they ask for the license fee.

~~~
tokenizerrr
How do I do this without buying dedicated hardware?

~~~
j_s
Illegaly (virtualization) or in the cloud.

------
Globz
PhantomJS enabled us at the time to bootstrap a big project at work where at
the end workflow the app had to turn HTML orders to PDF on the fly, eventually
we moved to WKHTMLTOPDF ([https://wkhtmltopdf.org/](https://wkhtmltopdf.org/))
which is much less hungry with resources but nonetheless PhantomJS played a
huge role during the early days of the project and was easy to setup. If I
remember correctly the only down side was to find the correct format for our
HTML template so PhantomJS would render proper page break and repeat the
header for super long orders.

I can understand why stepping down is the right decision, maintaining such
project by himself is an amazing feat on its own and even more when it proves
to be useful for so many companies. Sadly when it becomes your second job you
might always be on the lookout for a clean exit and such opportunity just
became a reality.

Good luck in your future projects Vitaly!

~~~
neebz
We have used PhantomJS and WKHTMLTOPDF both. Phantomjs hogs a lot of resources
but is very good when you want print large PDFs (500+ pages). WKHTMLTOPDF
struggles with larger HTMLs.

~~~
chrisber
checkout
[https://github.com/arachnys/athenapdf](https://github.com/arachnys/athenapdf).
Its based on electron.

------
Doctor_Fegg
> Chrome is faster and more stable than PhantomJS. And it doesn't eat memory
> like crazy.

Wait, can someone tell me where to download this doesn't-eat-memory-like-crazy
version of Chrome? Activity Monitor is showing me 2GB of Chrome processes
right now and that's even with The Great Suspender having paused almost all my
tabs.

~~~
yebyen
I saw a trick where you can run Chrome and give it less memory, and it uses
less memory. This is done using cgroups.

The blog post is somewhat old[1] and not in sync with the version that is in
Git[2], you might find a way to do this without Docker (I was using an old
version of Docker and kernel that couldn't get it to work. But I need the old
version of Docker for reasons.)

Chrome will aggressively consume any memory you give it (up to a point?) to
"make your browsing experience better" somehow. You're not wrong. But there is
modern technology that can make it better. If you have a fast SSD, then Chrome
can still use Swap to make your experience better. The later version in the
Dockerfile linked on Git also leverages swapaccount with the seccomp setting.

This may be one great use of Docker for people that wouldn't yet have been
convinced to use Docker for any serious reason.

[1]: [https://blog.jessfraz.com/post/docker-containers-on-the-
desk...](https://blog.jessfraz.com/post/docker-containers-on-the-
desktop/#5-chrome) [2]:
[https://github.com/jessfraz/dockerfiles/blob/master/chrome/s...](https://github.com/jessfraz/dockerfiles/blob/master/chrome/stable/Dockerfile)

~~~
tayo42
You can just use cgroups on their own without docker

~~~
tyingq
I would guess ulimit -v might work as well, so you may not even need cgroups.

~~~
yebyen
Hah! Something new is also something old. Thanks for that.

But won't you run into issues with child processes, of which Chrome tends to
spawn a zillion? (I'm reading that each one gets its own limit under
ulimit...)

And potentially get your browser killed when it hits the limit? I haven't
tested this and I don't really know how ulimit works, but I think it's a less
effective solution than the cgroups for at least one reason.

~~~
tyingq
Yes, it is per process, so it would only limit memory-per-tab. I believe you
get the "aw snap" window in chrome if it hits the limit.

------
tempodox
Wow, that was a quick reaction.

Thanks to the maintainers for all the good work!

To me, it's always a sad occasion to see diversity diminished. Nothing against
Chromium, but I hope it won't be the one browser to rule them all. It's always
good to have alternatives.

~~~
gus_massa
They know since June about the project. This is an interesting conversation:

[https://groups.google.com/forum/#!topic/phantomjs-
dev/S-mEBw...](https://groups.google.com/forum/#!topic/phantomjs-
dev/S-mEBwuSgKQ)

( posted by askmike in
[https://news.ycombinator.com/item?id=14105613](https://news.ycombinator.com/item?id=14105613)
)

------
mrfusion
Naive question here. What makes headless mode so difficult?

~~~
pavlov
It's a very good question. One might imagine that the browser renders
everything into a buffer at some point, and you could simply ask the engine to
give you a pointer to that data.

The reality is very different. WebKit/Blink rendering is intimately tied with
the graphics system of each platform, in particular through the use of native
widgets and native window system compositors.

For example, on the Mac, a lot of compositing within the browser window is
done using Core Animation layers. This is a really good idea for performance,
because it leverages the work done by Apple to improve their GUI performance.

The downside is that capturing the output becomes very tricky when the browser
doesn't do the final compositing. Previously this didn't really matter because
99.99% of browser rendering is for end users and they don't need to capture
the output (or if they do, they would just use platform GUI functionality like
screen capture).

An increasing demand for headless rendering has effectively forced browser
engine teams to rethink some of the internal APIs so that a pipeline can be
built to capture the final rendering.

------
tal_berzniz
Thank you for PhantomJS! Been using it for testing, generating PDFs and
screenshot.

~~~
amelius
Yes, thanks PhantomJS!

I'm wondering, are there any examples out there for generating screenshots on
headless Chrome?

~~~
throwaway2016a
From the docs it sounds like it is largely compatible with Selenium
[https://chromium.googlesource.com/chromium/src/+/lkgr/headle...](https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md)

If that is true, the takeScreenshot() should work as normal hopefully.

~~~
veidr
I can confirm that. Here's an example of how we take screenshots when
automated tests fail, using Selenium + Chrome:

[https://gist.github.com/masonmark/2332c1238a2fa70b5e4fcfffdc...](https://gist.github.com/masonmark/2332c1238a2fa70b5e4fcfffdcd76ca3)

------
JepZ
I am happy for the guy as he seems to be able to let go without letting
anybody down (which seems to be important to him). At the same time, it is sad
when people have such a pressure for something they probably started as a fun
project.

------
bigato
Question for those of you more involved with such headless tasks. Do you think
that chromium and firefox supporting headless will induce a surge in bots
crawling the open web from now on?

~~~
heipei
Right off the bat: No. The reason for that is that crawling using a proper
browser (i.e. Chrome) is a lot more resource-intensive than using a dedicated
tool which only gets the top resource and maybe tries to parse some additional
resources. With these kinds of tools you're limited by available bandwidth and
IO speeds if you want to store things. If you're looking at a browser, you'll
be limited more by things like memory consumption and CPU time, so you'd need
a bigger box or more of them to drive the same amount of traffic. There is
also not the same amount of ready made applications which take care of
crawling, storing and maybe even indexing your data, so not something you can
do without actually implementing a lot of things yourself.

Of course, that is only talking about wide-scale scanning. If you're only
looking to scrape a single target, for whatever reason, then having an
instrumented headless browser will greatly simplify things. Headless Chrome
should be more efficient than running it in a (virtual) framebuffer. Plus the
whole setup for a powerful crawler is reduced to "install Chrome, start it,
point $crawler at the API endpoint". My guess is that we might see turnkey
crawling / automation tools appear where you supply a list of URLs and the
library + Chrome does the rest. Then, browser-based large scale scanning will
be within everyone's reach, only limited by their resources.

Background: I created [https://urlscan.io](https://urlscan.io) which will
simply visit a website and record HTTP interactions (annotating the resources
with some helpful meta data). I've been preaching the power of headless
instrumented browsers for the better part of a year now ;)

------
kyriakos
With chrome headless we still need an api like phantomjs or slimerjs to have
the same functionality.

------
malinens
My colleague from automatic testing says that phantomjs actually is much more
stable than chrome...

~~~
onion2k
That's true, but in my experience the instability of Chrome comes from opening
and closing it's windows repeatedly as a large test suite often does -
occasionally it doesn't seem to like opening a new instance while another is
closing. Headless mode should resolve that problem.

~~~
holtalanm
There was also the issue a few years ago (last time I wrote automated scripts)
where the Chrome driver for Selenium would go too fast for the browser to keep
up, causing false failures.

I had to implement a "wait between actions" feature to handle it, while
Phantom had no such problems. I'm assuming this will not be an issue with
headless Chrome, since I think half of the problem was due to graphical
rendering.

------
lambduh
It's both sad to see an incredibly useful project be sunsetted and exciting
that it's no longer needed. I remember a project that used phantomjs to scrape
an old government camping site to build a compatibility layer on top.

Thank you, if you're reading.

------
tomphoolery
Good riddance! PhantomJS is a non-stop firehose of random errors and
productivity breakdowns. It's also a way better JS driver than anything else
out there. I'm glad Google is following in their footsteps and integrating
Phantom's features directly into Chrome, where it will be supported by a large
team and (hopefully) headless use of the Blink engine will be standardized so
your test integrity doesn't depend on a patch version upgrade of your
underlying JS implementation.

So, cheers to you Vitaly and anyone else who's helped make Phantom &
Poltergeist into my favorite Capybara web driver!

------
est
This is sad, phantomjs is better stripped than Chromium headless, if you ever
try to install Chromium on servers without X, it requires shit ton of
dependencies, while phantomjs was properly modified requires only minimal
library.

~~~
akx
I don't really see the problem. After all, you just install those deps once in
your Dockerfile, right? ;)

~~~
est
chromium-browser requires these

    
    
        chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra cpp
        cpp-4.8 fontconfig fontconfig-config fonts-dejavu-core hicolor-icon-theme
        libasound2 libasound2-data libatk1.0-0 libatk1.0-data libatomic1
        libavahi-client3 libavahi-common-data libavahi-common3 libcairo2
        libcloog-isl4 libcups2 libdatrie1 libdrm-intel1 libdrm-nouveau2
        libdrm-radeon1 libfile-basedir-perl libfile-desktopentry-perl
        libfile-mimeinfo-perl libfontconfig1 libfontenc1 libgdk-pixbuf2.0-0
        libgdk-pixbuf2.0-common libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa
        libgmp10 libgnome-keyring-common libgnome-keyring0 libgraphite2-3
        libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libharfbuzz0b libice6 libisl10
        libjasper1 libjbig0 libjpeg-turbo8 libjpeg8 libllvm3.4 libmpc3 libmpfr4
        libnspr4 libnss3 libnss3-nssdb libpango-1.0-0 libpangocairo-1.0-0
        libpangoft2-1.0-0 libpciaccess0 libpixman-1-0 libsm6 libspeechd2
        libthai-data libthai0 libtiff5 libtxc-dxtn-s2tc0 libx11-xcb1 libxaw7
        libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-render0
        libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcomposite1 libxcursor1
        libxdamage1 libxfixes3 libxft2 libxi6 libxinerama1 libxmu6 libxpm4
        libxrandr2 libxrender1 libxshmfence1 libxss1 libxt6 libxtst6 libxv1
        libxxf86dga1 libxxf86vm1 x11-common x11-utils x11-xserver-utils xdg-utils
    
    

phantomjs:

    
    
        fontconfig-config fonts-dejavu-core libfontconfig1 libjpeg-turbo8 libjpeg8

~~~
akx
Err, that's... simply not right. The difference isn't that dramatic.

    
    
      $ docker run -it ubuntu:16.04 sh -c 'apt-get update && apt-get install phantomjs'
        134 newly installed. After this operation, 339 MB of additional disk space will be used.
      $ docker run -it ubuntu:16.04 sh -c 'apt-get update && apt-get install chromium-browser'
        202 newly installed. After this operation, 615 MB of additional disk space will be used.

------
Hernanpm
Besides testing, my team uses phantomjs to convert pages to PDF and also to
convert javascript generated charts to images. This is sad news, I'm don't
think chrome eventually will add support for.

~~~
egeozcan
There's wkhtmltopdf[1] when you need the PDF functionality. It is licensed
with LGPL, so you can make it interop with your commercial product.

[1]: [https://wkhtmltopdf.org/](https://wkhtmltopdf.org/)

~~~
eknkc
While it's much better than PhantomJS, still causes a lot of issues. We run a
paid pet project [1] for html to pdf conversion and most of our customers have
stories beginning with PhantomJS then moving to wkhtmltopdf then finally going
for something else due to issues with both.

Headless Chrome might solve this issue once and for all though.

[1] [https://restpack.io/html2pdf](https://restpack.io/html2pdf)

~~~
egeozcan
For me the only issue was kerning with some specific fonts on windows servers.
Do you have any other examples?

------
tannhaeuser
Many thanks to the maintainer for his work. I think this isn't unexpected, and
actually encourage other unpaid maintainers to follow. Reason I'm thinking
this is that the current state of voluntary support is unsustainable anyway,
and by letting it go we maybe could make the market for dev tools economically
viable again.

------
ohitsdom
PhantomJS is a great tool, I implemented it as a PDF report generating system.
But will Chromium be able to replace it in this regard? Will Chromium have
paging features? Will it be able to repeat table headers when a table body
content extends to the next page?

~~~
jffry
I can't answer all of your questions, but this thread may interest you:
[https://news.ycombinator.com/item?id=14102248](https://news.ycombinator.com/item?id=14102248)

~~~
ohitsdom
Huge help, thank you!

------
sitepodmatt
You deserve a nobel peace prize.

I recall fondly informally introducing colleagues to chrome dev tools,
injecting jquery via a booklet, and querying the dom like xml xpath. Then
taking this headless (server-side) with almost minimal wrapping due to your
work.

Hail you and damn regexp.. :)

------
nashashmi
Anybody know how to port code from using PhantomJS to headless Chrome? I have
been using CasperJS that wraps to PhantomJS. PhantomJS had its own set of
commands. headless chrome will have to be different one way or another.

~~~
JimTheDev
I wrote a bit about how you can get started here using Node:
[https://objectpartners.com/2017/04/13/how-to-install-and-
use...](https://objectpartners.com/2017/04/13/how-to-install-and-use-headless-
chrome-on-osx/)

------
rogerwang
NW.js v0.23 will support headless with Chromium 59. I've been collecting
feature requests and sharing the plan. Please see
[https://github.com/nwjs/nw.js/issues/769#issuecomment-259867...](https://github.com/nwjs/nw.js/issues/769#issuecomment-259867271)
and
[https://github.com/nwjs/nw.js/issues/769#issuecomment-294064...](https://github.com/nwjs/nw.js/issues/769#issuecomment-294064358)

------
elchief
I found PhantomJS pretty unusable for my use-case. It always spits logs to
stdout and there's no way to change that. Filed a bug and he said "fix it
yourself"...sorry I don't know Qt.

~~~
scottydelta
As a developer, I wonder how hard can it be to disable console logging on any
project if the source code is provided.

------
logn
I maintain a web driver too (Selenium-based) and have been wondering about how
it would compare to Selenium ChromeDriver headless. Mine is built in Java and
uses Java's embedded WebKit. If anyone has feedback this is where I'm
discussing it,
[https://github.com/MachinePublishers/jBrowserDriver/issues/2...](https://github.com/MachinePublishers/jBrowserDriver/issues/273)

------
aaossa
I think is a wise decision too. As an OSS collaborator is hard to explain how
important/demanding this work is. I really understand his feeling, and I hope
that more people like him could collaborate in OSS projects. Thanks for
everything!

------
kyledrake
PhantomJS was the first thing we used for Neocities screenshots and I've
always had a special affection for this project for that reason. Neocities
really wouldn't have been possible without the ability to do screenshots.

------
eric_b
This is a great move. I appreciate what Phantom (and the maintainer) were
trying to do, but I have always loathed PhantomJS. It has never worked well.
In fact, I'd been away from it for some time, but just last night needed to
install it to run some tests and it caused massive frustration.

I pulled a Node repo that ran tests using Karma (why people use Karma is a
complete mystery to me). I pulled the repo, ran `npm install` and then `npm
test`. Sure enough Karma explodes out of the gate.

Phantom can't start. I'm on Windows 8.1. I debug for an hour, eventually
finding a magic custom binary Ariya created. I then have to copy this binary
to the `/node_modules/karma-phantom-launcher/node_modules/phantomjs2-ext/bin`
directory.

All this to run some Jasmine specs.

If Chrome headless support is really as good as "works just like Chrome
without the GUI" then I will be one happy camper.

~~~
joshuaduffy
I personally use Chrome at the moment as on larger projects PhantomJS as non
forgiving with syntax errors and tests will simply fail.

------
bluepeter
Where's Ariya in all this? He seems to have also completely abandoned
Phantom...?

------
nrook
Is there any way to donate to the PhantomJS project? This seems like a good
time to throw some money their way, in thanks for what the maintainers (mostly
Vitaly over the past few months, at least, it looks like) have done.

------
novaleaf
I run phantomjscloud.com, I guess this is the writing on the wall and I better
start building another [chrome] back end soon. Probably a name change is in
order too!

------
stretchwithme
I appreciate all the hard work.

In my last job, I used PhantomJS with highcharts to provide a web service for
generating charts. And used it with the poltergeist gem for headless testing.

------
runnr_az
Hey dude... thanks from a grateful dev in Scottsdale, AZ. Your hard work
enabled a lot of really cool stuff for us! Good luck in your future
adventures!

------
sillero
Thank you for your work Vitaly, it's truly inspiring, you've made a difference
for the community. Good luck on your next project.

------
amiga-workbench
Thanks for the work, PhantomJS made generating screenshots to show different
UI states in bulk effortless.

It has saved me days of effort over the last year.

------
gildas
Thanks Vitaly for your work! SEO4Ajax would certainly not exist without
PhantomJS. It helped us to deliver the service efficiently at the time.

Unfortunately, we had quite a few compatibility issues with it leading us to
migrate to Chrome (with xvfb) one year ago. Since then, we must confess that
we are very happy of this choice. Chrome is indeed very stable, fast and more
importantly for us, always up-to-date.

------
m4k
Have been using PhantomJS since couple of years for data scrapping. It's a
really good project.

------
frik
That's quite sad.

~~~
etatoby
It might be for the best. One of the many companies using PhantomJS to make
money could go ahead and employ Vitaly to work on the project full time.

------
redsummer
I'm curious - What is the utility of headless browsers?

Are there people who earn money by getting it to automatically fill out forms,
enter competitions etc?

~~~
wfunction
While we're on the topic, does anyone know where one might find scripts to
scrape bank statements so you don't have to download them manually every
month? (This is one thing I would find headless browsers useful for...)

~~~
pricechild
Every UK bank I've used allows some format of csv/qif/ofx export.

Are you in the US?

~~~
vidarh
They generally do. But many UK banks make it hard to _automate_ things. Either
insisting on 2FA in all cases, or having a secondary login without 2FA that
only gives very limited access.

Some way of authorising API access to read-only access to things like
statements would be fantastic, to the extent that I'd consider changing banks
over it, if you know of any UK banks that offer it.

~~~
thibaut_barrere
As well, most bank OFX/CSV exports I've dealt with are truncated in some ways
(e.g. truncated labels), which make it harder to really leverage sometimes.

------
seleniumuser
How does this news fit in with Selenium?

~~~
cookiecaper
Selenium won't really be impacted, as it's higher-level than PhantomJS.

This is also a great example of why it's smart to use Selenium or something
like it for scripting the tests. You can easily swap out for another backend
in Selenium, but if you wrote tests in pure PhantomJS, you're now stuck with a
codebase that depends on unmaintained software.

------
chatmasta
That sucks for any scraping use case. I have to imagine google has built in
some way to detect headless browser mode serverside, even if only they can
access it.

~~~
wayn3
i use phantomjs with the chrome webdriver, or whatever it may be called,
already, all the time.

if they wanted to do that, theyd already do it. this change doesnt seem to be
all that big.

