Good morning, everyone. Good morning all. Can you hear me at the back? If you can, a
I apologise. Yes, the dog is Matlida Virginia Woof, named after the Roald Dahl character,
Matilda, and Virginia Woof because there's no time for a bad pun! Thank you very much
for the introduction, Marcus. I'm SHS96C on Twitter. It looks like my password. Never
mind! And I am the lead of the Selenium project, and I've been since, oh, we pushed Selenium
1 like a million years ago. So I'm here to talk to you about Selenium and the State of
the Union and how the project is going. We call this talk the State of the Union because
a long time ago there was a Selenium project and the WebDriver project, and we merged the
two of them, and that was Selenium 2 and it seemed amusing on the first day when we were
talking about the first presentation to talk about the State of the Union, and, well, it's
never the wrong time for a bad joke, right! So, let's kick things off. The Deoxyribonucleic
acid - I didn't know if I was going to say that. It's good. DNA, and the rest of you
may know it, it's a double helix structure composed of molecules of guanine, adenine,
and thiamine arranged along a sugar phosphate backbone which is hydrophilic, the pairs in
the middle hydrophobic, which is why it does that structure. Today, we know what it is
for and what it looks like. Even if I hadn't written that at the top, you would have seen
that and known it instantly, right? It's familiar to us. We are casual about throwing the name
around. We talk about the "DNA of our companies" and bits and pieces. We are careless with
our knowledge. It's one of those things we know. We've always known it. But we haven't
always known it. It's been a long time, right? So DNA. Let me take you back to the Cavendish
Laboratory in Cambridge in 1953. And these two gentlemen, Crick and Watson. When we talk
about the discovery of DNA these are the two names we remember. They published their first
articles in 1953 describing the structure of DNA to the world and this is a photo of
their original model, and you can see something very like it in the Science Museum if you
hang around in London after the conference. That's kind of interesting, right? Those are
the two names we think of when we think of DNA. But there's one name that often gets
left out. That's the name of Rosalind Franklin. So the initial model proposed by Crick and
Watson placed the DNA on the outside. The thing that attracted water was on the inside
and the thing that rejected water was on the outside. That's clearly nonsense if you know
anything about molecular chemistry - clearly nonsense, right? Rosalind Franklin was a very
accomplished X-ray crystallographer, laughed and said they were wrong, and, being a lady,
they ignored her. This photo here is known as "Photo 51" and this is the key to cracking
the puzzle of DNA. Like Rosalind Franklin took the BEST photographer ever of the DNA
crystal using X-ray s, and it was this photo and the measurements she took from it that
allowed Watson and Crick to solve the problem of DNA and discover it. Now, there is considerable
controversy around her involvement. Many people say she was cheated of the credit that she
deserved for having made such a fundamental contribution to the discovery of it. There
are arguments that she should have been awarded the Nobel Prize, along with Crick and Watson
for their discovery of DNA. Sadly, she died very young, four years before the Nobel Prize
was awarded for the discovery, and they don't tend to do posthumous awards, but the way
they got that data is kind of shifty. If you ever want to see a bit of a murder mystery
in the world of science, just read up on the history of the discovery of DNA. It's fascinating
stuff. So DNA - don't worry, I'm coming to Selenium! It will happen eventually! But I
do like a little bit of a nerd-out first thing in the morning. That's what we need. We all
have had coffee, right? We're getting the brains going and we are thinking. After 1953,
pieces fell into place pretty quickly. We know now that, within each human, there are
46 chromosomes packaged into the cell's nucleus, right, arranged into 23 pairs, composed of
about 6 billion base pairs, all coiled tightly together. If you stretched the DNA from one
cell all the way out, it would be about two metres long. Your body is composed of billions
of these things. If you put all of the DNA in all of your cells together, it will be
about twice the diameter of the solar system. That's enormous, right? Packaged in that DNA
is the genotype that represents the organisation. Each of us unique? Anyone here not unique?
I'm checking. I expect a Monty Python, "I'm not! " There you go. In the back! All of us
are unique, and our genotype describe us, and there's epigenetics, and all sorts of
things, but our genotypes describe the fundamentals of who we are, and we share a lot in common,
right? We don't look alike. You can't see someone's genotype but we can see the phenotype
which is the physical expression of their genetic characteristics. It describes physical
form and how an organism develops. Father and son, mother and daughter, two siblings
share 50 per cent of their DNA but they lookalike because their genotypes lead to similar phenotypes,
right? So there is obviously an analogy that I'm going to draw here: some of you may be
ahead of me. I see some nodding in the audience. Thank you. Which leads us to punctuated evolution.
If you look at the fossil records, and you go back in time, you don't see a smooth change
in genotype. You see one form being present and suddenly, it snaps, and you get a second
form, and it snaps, and you get a third form. Why does that happen? That happens because
we accumulate changes in the genotype and we do experiments, and the genotypes that
are leading to changes that are less advantageous, don't succeed evolution ly, and the ones that
you do see all over the place, and that leads to a change in form and leads to a change
in the fossil record. So, the theory of punctuated evolution applied to testing web browsers.
We began way back when, actually not only with hand-crafted JS. We had browser simulators,
we had things written in Java, .NET, Python, or Ruby, that simulated a browser, and, back
in the day, that was good, right? This hand-crafted approach. It kind of worked really well, and
people were relatively happy with it. Or at least not so wildly unhappy that they realised
they were in pain. And then, Jason Huggins and some of the original contributors came
up with what is known as Selenium core. There was a Cambrianic explosion of what happened,
loads of testing frameworks for Selenium. Selenium was one of them. There was Windmill,
Wattier, some of the original evolutionary approaches of, "How do we do this?" Selenium
was the one that caught on. The problem was Selenium was trapped in the JavaScript sandbox.
What we needed to do was accumulate more changes in the genotype, to try some more experiments,
and then we had a change in the phenotype when we had the Selenium WebDriver, and WebDriver
binds closely to the core of the browser and now is, in fact, part of the browser we the
W3C process. It's tied tightly to the thing that we use every day. And so we must, by
definition, have reached the galaxy brain moment, except we haven't because none of
us are really doing unit testing. Like one of the arguments that we have all the time,
people up to me and say, "Selenium test is slow." I say, "How many have you got?" With
a big cheesy smile on their faces. 200! Run in fear! I tell people they should have one,
because if you ever say things with nuance, people say, "I don't understand that." So
just one. A minimal number. So this is punctuated evolution. Clearly, genes are the source code
of our project, the phenotype are the things that you download and which you report bugs
on. It is a very stretched and tortured analogy. And there are some lessons we can learn from
this stretched and tortured analogy. The first one is that progress isn't constant, or doesn't
appear to be constant. I'm wearing the T-shirt of SeleniumConf we had in Japan in April months
ago. We released the alpha 1 in Japan, and we have only just released alpha 3, and, if
you were to take a look at the APIs offered by alpha 1 and alpha 3, basically the same.
Like we have the relative locators that have appeared recently, and that's kind of nice,
but, from a user's point of view, there hasn't really been much change. We haven't seen the
leap in functionality that we know is coming. Why is that? Because our genotype, the source
code of the project, is accumulating more and more changes as we try to get things sorted
out. If you followed the commit history of the project, you will have seen a massive
clean-up in our build process and how we do things, you'll have seen us shift tooling
around like nobody's business. We've completely revamped our build process. It's faster, more
efficient, easier to use. You never see that. You should not ever see that unless you're
contributing, right? You don't care about it. But what we are doing is we are making
the project fitter and healthier, and ready for the next stage in its evolution. Another
thing we can learn from the story of DNA and the discovery is that we can learn from each
other. Crick and Watson would not have solved the problem of DNA and its structure without
the information from Rosalind Franklin. Somebody would have got there eventually. It's inevitable
there was a huge amount of research going on at the time. I think Paul Ing in the US
was also frantically looking for, and may have beaten Watson and Crick if he hadn't
gone and done a tour of the US rather than coming to Cambridge. He had that option. But
we can learn from each other. There's so much to learn. If you take a look at the Selenium
source tree, we have this thing in it called the JavaScript Atoms. These are common pieces
of functionality that are shared by all of the browser implementations, and the atoms
came from the original JavaScript code, but not just Selenium's original JavaScript code,
there was some from Selenium Core, some from internal frameworks that I was working out
at Google, some from other projects - windmill code, I'm sure. There is some that we had
written ourselves in WebDriver, right? The idea of tight binding to a browser that a
WebDriver personifies and embodies, that wasn't unique. Bret Pettichord had beaten us to it,
bound tightly to the commentator faces of internet explorer. For those of you who don't
know, Windows is based on a set of com which is a method for emulating in C, and it works
really well. IE is not so much a web browser but a com objects on top of each other wearing
a trench coat and pretending to be a web browser. Jim is in the front saying, "It's true!" It's
funny but it's true. That idea, that came from Wattier. Relative locators, the new feature
we shipped in alpha 3, that is not unique. The first project I saw that in was Sahi,
and Tyco have an implementation of them, and more and more are appearing. One of the things
we discussed at the W3C T pack meeting is the idea of bidirectional communication from
the browser and the test to your local code, right? We could land it and say we invented
this thing but that would not be true. We did not invent it. What we have done is learn
from each other, right? So there is nothing new under the sun. The thing that is original
is how you mix these things together, and how you present them to the world. One things
that we really should do is give credit to people, right? Ideas are cheap. Implementation
is super hard. I'm sure we all have ideas of how to solve problems in our neighbourhood,
or in the world around us, or in the code that we use. The number of times that someone
has come up to me and said, "Why doesn't Selenium just do this?" "Just" is a lethal world. It
means it's basically impossible. So, you know, we should say thank you. Like Jason Huggins.
Thank you to Paul Hammond, Patrick Lightbody, thank you to all the people who did the initial
work to start Selenium. Like thank you to Michael Tan and the current committers for
all the work they've done. Thank you also to Narian Ramim who started Sahi in India.
He blazed the trail of the relative locators. There are so many people who have contributed
code to releases. We have an authors file in each of our releases. You can have a look.
Hundreds of people. Phenomenal. And thank you to Puppeteer and the Chrome debugging
team. It's intensely irritating that everything is embedded down to do a bunch of new work,
but it's really exciting. The things they've showed us is that there are capabilities that
you all want to use in your testing that we should have made available and we are now
scrambling to figure out like, "How do we do that?" Without that kick, we wouldn't be
doing it, right? It's evolution in action. Something has come in. Something is changing,
modifying the genotype, the phenotype of our project to be better, and a better fit for
the problems that you have to solve, and that can only be a good thing. That can only be
a good thing, right? Yes, I hope so. Or terrible. Maybe it's the worse thing in the world. There
is one more lesson we need to take away from all of this. One important thing we need to
remember, right? And that is the state of discourse in our industry and in web testing
in general, right? Selenium got as far as it did because we worked with everyone, right?
We didn't slam the Wattier guys because it's a fight to death. Of course not. We welcomed
them with open arms, collaborated, and had a chat with them, and some of the things they
did gave us insight into how we should do things. Jason, when he was running Selenium
could have said no, don't care about this WebDriver thing, this is the right way to
go. But because we collaborated and talked, we merged the problems, we merged the projects,
and we solved the problem, right? The problem is the thing that we are trying to solve.
We don't care how we do it. It may be because I am an old, old man, with grey in my hair,
and rose-tinted glasses looked at the past, and nostalgia isn't what is used to be, but
I'm pretty sure things have got worse recently, and that worries me. There's a denial of science,
right? We've always said Selenium is a library for browser automation. And we've explored
that domain in great depth. You could have come to any SeleniumConf on any year and you
would have found talks about how to make your tests more stable and more reliable. You would
have found talks about how to make your locators absolutely rock-solid. You would have found
mechanisms for doing reporting and integrating with tool chains. You would have found ways,
patterns, to explore making tests more maintainable, right? We've spent a long time exploring this
space and laying out these ideas. And they're there for you to find. You can go out on to
the internet, quick Google and you will find Page Object, screen play pattern, mechanism
for make locators work, documentation about how you can extend the various bits and pieces,
and the other thing is we've also spent a long time encouraging you not to use the tool.
Like the reason why I got backing when I was at Google of to doing work on Selenium on
WebDriver is because one of the directors heard me talking to one of the teams and encouraging
them not to use WebDriver. It was like, "This is wrong, you're doing the wrong thing." And,
yet, you know, we reach for it, and I guess that's kind of sad, right? Because it means
that we have a reliance on gut feeling. Sad puppy, don't rely on gut feeling. It's an
important signal, right? It tells you something. But we spend a lot of time being told that
Selenium is awful. How many of you work at a company who say, "The Selenium tests are
terrible. The end-to-end pests ..." yes, ? They never pass. The end-to-end test isn't ready.
It doesn't matter. It does that. Just not true. Like, we know how to write stable tests.
We know how to write stable locators. We know how to solve a lot of these problems. I'm
not saying it's trivial - absolutely it's not, that's why we get paid to solve problems
- but we know how to do it and we know the techniques to make sure our continuous pipeline
is green. And, yet, you talk to people, they go, "It's terrible. Oh, it's awful." "Rubbish.
They're slow. I can't make it go any faster." A cheesy quote I'm sure we've seen before:
everyone is entitled to his own opinion but not his own facts." Right? Like, yes, you
can say like this thing is rubbish, but you can't - it isn't rubbish, right? You can have
that opinion, and you're welcome to hold it, but it's not necessarily backed up by the
facts on the ground. There isn't a wider metaphor about modern British politics! Although we
are terribly close to the houses of parliament, so, if you want to protest later ...! Some
examples of discourse where it's not been ideal and the lessons we can learn. The first
one from our own home: we landed relative locators. They are really nifty, right? Like
they could have been written ten years ago, because basically all they're doing is injecting
a bit of JavaScript, and the JavaScript is trivial to write. The problem is, the way
we've done it, we've added it with what we call an atom, right? The atoms weigh in. When
you compile them, they're pretty large - 44 kilobytes is the size of this particular atom.
Every time you do FindElement, off goes 44 kilobytes and back comes a response. The browser
has to process 44 kilobytes of raw compressed JavaScript. It comes back, yeah! I didn't
find anything. There are perfectly valid concerns about the amount of data that is being sent.
And one of the initial problems that people had within the project, with the relative
locators, is that it is too much data. If somebody is using Sauce Labs, this is going
to make their tests super slow. It's going to be awful, it's going to be terrible. Therefore,
relative locators are pointless. It's like wait a second. Wait a second. People have
spent - I have spent - a significant amount of time making these things work. The JavaScript
is trivial, but it's been a long time since I've written JavaScript if I had to hook it
into the compiler, flow it through, and then do the language bindings, and then I had to
think about it, popularise it, and compare it with prior art, and blah, blah, blah. Writing
a feature is a lot of hard work. The thing is, these are going to be super valuable like
talking about where something is in the page visually, it's going to be so useful to so
many of our users because so many of our users are not really deeply familiar with the internal
structure of the DOM but they can say this is clearly above that. We have lowered the
bar, we've made it simpler for people to use this tool. It's valuable. But the pushback
was, you know, pretty upsetting, I will be honest, because I have a thin skin after 20
years in open source. So the lesson that I took away is be gentle with each other. Remember
projects are made of people. When you have criticism, it's fine. Say. It's a perfectly
valid complaint to say this is an awful lot of code being sent across the wire. Can we
do something about that? The answer is yes, we're going to do something about it. We have
introduced a new feature in the W3C script pinning which should make this a lot cheaper,
right? Like we are iterating on it, and, you know, the person who complained was perfectly
correct in saying there has to be a better way of doing this, and there is. But, when
you're saying something is bad, also think about why it was written. And the person on
the other end receiving that, because it's a human being. I love this cat. In Turkey
and South Africa, advertising laws, I understand, mean that when you're doing an advert, you
can't mention your competitors, which is fascinating, right. Saying how bad other people are, which
is so much advertising you see nowadays, and so many blog posts and so many comments, thing
X is terrible, thing Y is awesome, thing X doesn't do this, thing X doesn't integrate
with that, right? There was a post recently by a company that had sponsored SeleniumConf
saying Selenium is terrible. We are breaking up with it. I was like hang on a second, none
of this is fair. None of it is right. It's appealing to gut instincts rather than actual
facts. Misrepresented someone or something to gain an edge is cynical and unhelpful.
And yet we see it all the time. What can we do instead? Build on your strengths. Explain
why your solution is better. When we're talking about some of the changes we are making, we're
not saying everything is awful because it doesn't have relative locators, we are saying,
actually, relative locators are going to be really useful. The stuff we are putting in
to make your builds, your Selenium server more traceable so you can hook it up to tools
like Honeycomb and figure out what the heck has happened once a request leaves your machine,
like, that's really good, right? And when you're talking to people, when you're encouraging
people to do things, the right thing to do is to talk about what you're proud of. Like
what makes your tool, what makes your approach, what makes your idea better? Not what makes
things worse? What makes things terrible. Because, when you do that, you're in a race
to the bottom, and literally no-one is happy. Remember, nobody sets out to do a bad job.
On this slide for those of you who are following at home or can't see, the sign says, "Turn
left" and the arrow points to the right. I am pretty sure the poor person doing the road
marking didn't set out go go, "You know what ...!" You know, they might have, because that
is hilarious! But nobody sets out to do a bad job, right? We hear talks by people from
projects such as Puppeteer and SideX, and they talk about how awful and slow - it turns
out as people use their products, as more people use Puppeteer, they're running into
the same problems we solved years ago. Right? They're adding explicit waits. I've seen so
many Stack Over flow posts saying the element is on the page but I haven't seen it yet.
When I click it, it doesn't work. Like, literally we did - there's a whole chunk of spec about
wait until the element is interactable because that's exactly the problem that you run into.
I mean, it's adorable. But it's a little bit frustrating, and the thing is, if instead
of replicating all the work we had done ten years ago, people are like here's a newing
that you can do, a new capability, and there are amazing capabilities in these talks, like,
you can hook in, like the bidirectional thing means that you can have a mutation observer
observe what is happening on the page, and oh, it's fantastic, and now I can do a weighting
that it wasn't possible to do. Like you can stub out network requests, and so you can
introduce a new mechanism for providing stability, and you could have done it using a proxy in
Selenium, and Jim has written long blog posts about that. But, you know have been , having
it wired into the tool itself is a really nice feature, right? That's fantastic. Talk
about that stuff. Because that's better, and then steal all the good stuff that we have
in our project and in the W3C spec so that, ultimately, people writing web tests can write
the best web tests they can. That would be good, right? It's not a zero-sum game what
we are doing. As a developer, you have a change of tools to use. Sometimes, it's appropriate
to use Selenium; sometimes, it's appropriate to use Jasmine; it's never propose to use
TestNG - I joke! There are cases. TestNG has the categorisation features and it would be
nice and J Unit has those out of the box. No-one tool solves every problem. Some of
them solve many problems simultaneously, and that's good. You pull the tool out of the
toolbox that is most appropriate to the problem you want to solve. That's great. You might
use Puppeteer and Selenium in your tests. Shock, horror! I don't know. You could do
all sorts of, right. It isn't a zero-sum game. It's not actually a game right? Like I think
at the first SeleniumConf Jason Huggins presented some data saying having Selenium on your CV
earned you $20,000 more every year. SeleniumConf, there are people who have built their careers
off the back of browser automation and testing. There are very successful companies that have
done this. Sauce Labs in particular, like just to pick a name out of the blue - I don't
know. Thank you for sponsoring! Richard Bradshaw tweeted recently that he's really excited
about coming here because his journey on his career path started partly at SeleniumConf.
People build their careers, right? When you are slagging something off, when you're tearing
something down, like, people have built their careers on type press, build their careers
on TestNG, and to pull something down and tear it, "I hate Java", it's petulant and
childish. So, yes, there we go. Sorry, I will stop hectoring you now. Thank you very much
for listening. Now, road map! Woo! More Selenium content. What are we doing? Quite often, I
get requests for when are you going to ship Selenium 4? Well, when it is ready. Like,
one of the nice things about being an open source project is that you ship when you're
Aldershot Town done, you don't ship to a timeline, right? But there are things that we are doing.
There are markers on the road so you can track what's happening. The first one is the alphas.
We've done alpha 3. What we need we are doing is slowly adding more capabilities and more
features, right? You may not see it, but we are merging the codebases from the odd Selenium
Grid and the old Selenium server and the old RC server, and mashing them into one relatively
attractive whole, and we are adding capabilities like distributed tracing, and we are adding
things like the relative locators, and we're doing things like switching our network stack,
and we're doing all sorts of things. User facing, the APIs, the tooling is pretty good.
If you've used it before, it continues to work. You can drop in an alpha right now and
start providing feedback provided you're just providing feedback on the client side. It
should all be good. I realise I should all open myself and what unpleasant. There are
some changes coming in IDE as well as Selenium Grid. I think Tomer is speaking at one point.
He will probably cover some of this, but Applitools have been working super hard to make sure
that the next version of IDE will be amazing, and they're moving it to Electron which is
really cool because it allows to you do the capabilities of hooking into the browser to
make recording tests a bit easier. They will post a blog and a road map soon and a design
for people to critique. They really like - like we would really like as a project, for people
to get involved. Like now is the time to go I don't like this bit, or I could change this.
IDE, Codex4 is available, but it's also available as an API for you to extend. If your favourite
language, I don't know, Elixir isn't supported, now is the time to jump in. If you're using
Selenium, files and bugs on the new features. Angie Jones did a blog post about the new
relative locators and found an issue and is going to fix that, and grid, like? I don't
know what I'm doing. CDP. Loads of changes. Once we've got the alphas out, once we've
got the basic functionality out and we think it's okay, we will do a handful of betas.
We will punish it out. We make sure that the language bindings have all the features supported.
It will be nice. It will be feature-complete so I'm expecting that beta period to be pretty
short, and then some time before Chinese new year - I'm not sure which year - we will ship
4.0. Shifting towards dawn. Now we have day light! Not a great joke, sorry. We are going
to get faster with a bit of help. Now is the time to get involved in the project because
now is the time when everything is in flux, and there are workshops on Wednesday when
we are going to cover a bunch of this stuff, so you can learn how to use the tool more
effectively but there is also fix a bug, or become a committer, and we actually fix a
bug, and we actually have had committers join us there. After we ship Selenium 4, so many
options. I am a book nerd like, I love books. And this sets my teeth on edge, because it's
like there's no way I will ever have time to read all this. There are so many options
available for us as a project, for things that could do, right? And things for you to
get involved. The raw APIs are pretty good. They're not perfect - nothing's perfect - but
it's not bad. Fit and finish is - like we need tooling to go here's an easy way to implement
the proxies, like Jim's blog post. Here's how you can make writing new locators easier.
Here's how you can do this, here's how you can do that. Like all the rough edges. Who
has a download a version of Gecko and keep them in sync? One brave person raises their
hands. Fit-and-finish. In the Java world, there's an equivalent tools everywhere. Maybe
it would be nice if they were part of the core project. New technical stack. People
have an irrational dislike of the Java virtual machine, for some inexplicable reason. Maybe
a new technical stack is what it needed. Like we will have distributed things. It will be
easy to pull out bits and pieces, rewrite it, plug it back in. Maybe that's what we
do. Documentation. Like, I will leave it at that because it makes me a little bit weepy.
Diego has been working hard to land a whole bunch of new changes. We have new docs coming,
and now is a great time to get involved with that. The cloud support, the re-architecture
of Selenium that is coming, makes it really easy to hook into AWS, Azure, whatever on-premises
solution you have. Like, it's so many options, right? And reflection s really one reflection,
right? And that's rough edges of the gateway to contribution. Like, when I started doing
open source, Joe Walms, a friend of mine, said one thing you need to do if you ever
want a successful open source project. He said make the APIs as good as they can be
because the edge of your system is the bit that is hardest to change, and then do a really
shitty implementation in the middle, and somebody will be so incensed, they will come in and
tidy it up for you, and then you have a committer, and then do it again, and again. I can assure
you the internals of Selenium were kind of shit. Jim got sucked into maintaining the
IOE driver because the C code was so appalling that, upon review, a Googler went, "How does
this even compile?" And then I've learned something about C that I never wanted to know
after spending a week trying to figure out how it worked. Jim comes along and goes, "I'm
no C++ expert but this appears to work." It's like, thank you, and ran off into the distance.
The other reflection, the other lesson is Rumi quote, raise your words, not your voice.
It's rain that grows flowers, not thunder. Don't be angry at people all the time. Don't
be furious. Don't go this is terrible, this is awful. There are so many things where,
actually, just saying, "Hey, look, have you thought about this? Can we do this? What about
this? Here is a contribution I would like to make." Very seldom do we say no to a contribution.
We sometimes say this is the kind of approach we are taking, this is the way we are going,
would you mind changing it? I don't think we've ever really said no categorically to
something. Be gentle with each other, right? Speak softly. Carry a big stick. Things WebDriver
is older than. Edge. Edgium. The new Chromium we write. That's kind of fun. Chrome. We shipped
the first version of Selenium 2 before Chrome even existed. I mean, it may have existed,
but, you know, it wasn't available to the public. I was actually one of the beta testers
of the Linux version inside Google, and I clearly remember the day when it rendered
everything upside-down. Like they did the Australian release! So, there's Chrome. Current
job. Past job. Job before that. I have had many jobs. WebDriver is older than those.
I got married after I started working on WebDriver. So, you know, WebDriver is older than that.
And people say that WebDriver is my first child, and absolutely correct, because my
son is five years younger than the project. It's kind of interesting. Kind of shapeful.
I'm very fond of him ... [Laughter]. But I shipped WebDriver first. I don't know, do
you ship babies? You know what I mean! He's adorable, by the way. I was speaking to him
this morning. He said, "Do you know what I'm doing?" He said, "Are you talking to lots
of people? " I go, "Yes. " He goes, "Oh". Thanks, son. It keeps me grounded, right?
So the first push of code that I did was 2007, 3 January, sitting on my sofa, drinking a
glass of red wine and I thought this will be done in six months. I am an engineer, I'm
standing by my estimate. It is wildly, wildly incorrect. I'm kind of tired. Right? I've
been doing this since 2006. That was the first time I wrote code that actually we shipped.
This is my puppy. This is Matilda Virginia Woof. She is so adorable! I've been doing
Selenium for a long time, right? And I'm kind of tired. And so Selenium 4 is going to be
my last release. After this, I step back, project happens. We will see what occurs.
So that's going to be fun. Fortunately - or unfortunately, it depends who you are - it
takes us time to ship anything. But Selenium 4 will be my last release. What happens afterwards?
I don't really know. It's going to be exciting, right? I do know that strange women lying
in ponds descripting swords is no basis for a system of government. You're in London,
right? I'm allowed to quote Monty Python. I couldn't find a picture of a lady raising
a sword so there is a sparkler for you. Who is going to lead project? Who is going to
figure out what we are going to do? I don't know. Like it would be nice if I had the answer.
What I do know is that there are some amazing people involved with this project, and have
been for a long time. We have an amazing steering committee. We have people with energy and
vigour throwing code in incredibly rapidly. One reason I have to step down is because
Alexi is catching me up in the number of commits, and it would be shameful if I was still meant
to be leading the project as he overtook me. I don't know what's going to happen. But the
nice thing is the things that I am really good at, starting things, and saying here
is a Brave New World - here's a brave new direction we should be heading in, here's
what we should do, like I'm a great starter, anyone who has worked with me will guarantee
tell you I am a terrible finisher, I don't dot Ts and cross Is - hang on, that's wrong.
That's exactly the point! Like, I'm terrible at this game. I'm really good at big thing,
let's do this! When we get to 80 per cent, I'm like, it works. I'm not a detail person.
Nor am I very good at fit-and-finish. Like, or documentation. I speak a lot, I tweet.
But I don't write down things very often. Because I'm not organised enough to do that.
I'm not very good at going, what will people need? I just think it's trivial when I go
I write it myself. Someone with a different mindset is probably needed. And I have one
great fear for the project which is when I joined Facebook all those years ago, and I
became super busy, the project kind of stalled for a bit, and maybe I should have stood down
then and let someone else take over. But the average length of time that somebody works
for an IT company in the Western world is somewhere between 2 and 3 years. Facebook,
there's a four-year cliff, where at four years, you get all the stock you got when you joined,
and there are people who leave straightaway, right? Attrition is super high in IT companies.
I've been working on this since 2007. There are other people who have been involved with
the project for almost as long. Jim, I think you were 2009? Alexi has been on for four
or five years now. 11 years. The other thing people will tell you is I have absolutely
no memory. Have I told you how bad my memory is? Like the people who even think of as new
on the project have been around for years, right? Like, by rights, if we were a company,
most of those people would be leaving. My great fear is that, as people go I am kind
of tired now, there won't be fresh blood coming through. JavaScript bindings, JSON, they've
got one person. IDE - both employed by Applitools and working on that because of their grace.
Like, hanging by a thread. Java bindings, Alexi and myself. Ruby is probably healthiest
- probably three people. Python - kind of dicey, right? We need help. This is your project.
Like, you've come to a conference. Clearly, you use this. We could do with a hand. So,
as I reach the end of my allotted time, in every sense of the phrase, I'm not going to
die, I'm just leaving, I'm going to ship 4 and go hey! One last thought: does anyone
remember Wild Stallions from Bill and Ted's excellent adventure. The Bill and Ted rule
is the rule we should be following and we move into the future. The Bill and Ted rule
is be excellent to each other. So I hope in this conference, and as you leave the conference
and go out and you're playing with Selenium, and working with the people around you, that
you are excellent to each other. You've been excellent to me. Thank you very much for your
time.