Appium has been around in one form or another since 2012. It’s been under the direction of various individuals and organizations, and it’s even been implemented in 3 different programming languages! Welcome to more than you ever wanted to know about how Appium got to be what is it today…
Dan Cuellar was the Test Manager at Zoosk in 2011, when he encountered a problem. The length of the test passes on the iOS product was getting out of hand. Less testing was an option, but would come with additional risk, especially with it taking several days to get patches through the iOS App Store Review process. He thought back to his days working on websites and realized automation was the answer.
Unsatisfied with the existing options, Dan asked his manager for some additional time to see if he could find a better way. He spent 2 weeks poking and prodding around to see if there was a way to use approved Apple technologies to automate an iOS application. The first implementation he tried used AppleScript to send messages to Mac UI elements using the OS X accessibility APIs. This worked to some degree, but would never work on real devices, not to mention other drawbacks.
So he thought, what if I could get the UIAutomation framework to run in real
time like an interpreter? He looked into it and he determined that all he would
need to do is find a way to receive, execute, and reply to commands from within
executing shell commands he was able to
cat sequentially ordered text files
to receive commands,
eval() the output to execute them, and write them back
to disk with
python. He then prepared code in C# that implemented the
iOSAuto is born.
Dan was selected to speak at Selenium Conference 2012 in London about an entirely different topic. As part of his presentation he showed off iOS Automation using Selenium syntax to demontrate writing platform-agnostic tests that use separate platform-specific page objects with a common interface. To his surprise, the cool test architecture would take a backseat to the spectacle of iOS tests running like WebDriver tests. Several people suggested that he give a lightning talk later in the conference to explain exactly how it worked.
On the second day of the conference, Dan stepped up on stage to give the lightning talk. Jason Huggins, co-creator of Selenium, moderated the lightning talks. Dan experienced technical difficulties getting his presentation to load, and Jason nearly had to move on to the next lightning talk. At the last moment, the screen turned on and Dan jumped into his presentation. He explained the details of his implementation and how it worked, begged for contributors, and in five minutes it was over. The crowd applauded politely, and he left the stage.
Four months after the Selenium Conference, Jason called Dan. Jason had been working on iOS testing support for a client at Sauce Labs. Jason remembered Dan’s lightning talk and thought the project might be useful to Jason’s work, but Dan’s source code was not public. Jason asked Dan to meet up. Later that week, Dan met Jason in a bar in San Francisco and showed him the source code for iOS Auto.
A long-time open source advocate, Jason encouraged Dan to release his code under an open source license. In August, Dan released the source code on GitHub in C#. Jason encouraged Dan to change the language to make the project more appealing to potential contributors. Dan uploaded a new version in Python. In September, Jason added a web server and began to implement the WebDriver wire protocol over HTTP, making iOS Auto scriptable from any Selenium WebDriver client library in any language.
Jason decided that the project should be presented at the Mobile Testing Summit in November, but suggested that the project get a new name first. Many ideas were thrown out and they settled on AppleCart. A day later, while he was perusing some of Apple’s guideance on copyright and trademarks, Jason noticed that under the section of examples for names Apple would defend its trademarks against, the first example was “AppleCart”. He called Dan and informed him of the situation, and they brainstormed for a bit before Jason hit the jackpot. Appium… Selenium for Apps.
In just a few days, the team leveraged the existing work on Appium and had a new version of Appium with as much functionality as the previous Python version. The foundation had been laid for Appium’s basic architecture, and we have been successfully building on it since. A few weeks into this sprint, Jonathan Lipps was formally designated project lead and he began to strategize how to get more people from the community involved with Appium’s development.
Ultimately, Jonathan decided that getting Appium in front of as many developers at conferences and meetups was the best way to attract users and contributions. Appium in its new incarnation was debuted at the Google Test Automation Conference 2013. Later in 2013, Appium was presented at conferences and meetups all around the US, as well as in England, Poland, Portugal, and Australia. Notably, Jonathan had Appium perform as instruments in a band and Dan Cuellar put together a fun Appium video montage for Selenium Conference.
But during all these presentations and conferences, the project continued to develop. Early in 2013 we released Android and Selendroid support, making Appium the first truly cross-platform automation framework. The project also continued to attract users and contributors, and by the end of 2013 we’d already had well over 1,000 commits.
Appium began to grow and mature significantly. In May 2014, we released Appium 1.0, which stood as a milestone in Appium’s development. Appium was given various awards and became the most popular open-source cross-platform mobile automation framework. Stability improved, bugs were prioritized and fixed, and features added. Sauce Labs increased the number of developers it donated to working on Appium, but the entire community stayed involved in guiding the project and contributing to it, and project governance continued to happen in the open, on public mailing lists and GitHub’s issue tracker.
In late 2016, Sauce Labs donated Appium as a project to the JS Foundation, in order to cement for the world Sauce’s commitment that Appium remain open source. The JS Foundation is a non-profit open source stewardship organization which takes responsibility for holding the copyright for open source projects, as well as ensuring they have a long and successful tenure in the community. As a result of our move to a non-profit foundation, we hope that the door will open even more widely for new contributors, either as individuals or representing one of the many companies which now have an interest in seeing Appium move forward.
We look forward to many more years of seeing Appium provide incredible value as a mobile automation tool and an essential part of every company’s mobile CI process.