STARTING ANOPEN SOURCE PROJECT:
0 TO 100,000 USERSAN EX-‐MICROSOFTEE ACCIDENTALLY CREATESA WILDLY POPULAR OPEN SOURCE PROJECT
ABOUT THE SPEAKER
Dan Cuellar• BS in Computer Science from Carnegie Mellon• Creator of Appium• Head of Software Testing at FOODit• Previously at Microsoft, Zoosk, and Shazam
WHAT IS APPIUM
• An implementation of the Selenium JSON-‐wire protocol that controls native and hybrid iOS and Android application• The most popular open source mobile functional testing framework
APPIUM PHILOSOPHY• Use standardized and sanctioned APIs and techniques
• Code in the language of your choice• Java, C#, Python, Ruby, Objective-‐C, node.js, PHP, and more
• Do not modify the application under test
• Keep it free and open source
HOW DOES IT WORK?UIAutomation / UIAutomator
AppiumServer
Test Script
JSON-‐Wire Protocol Request
JSON-‐Wire Protocol Response
HTTP
GETTING THE WORD OUT• Answered almost every forum question for the 1st year of the project• Answered most StackOverflowquestions• Spoke at any conference that would have us• Stated our mission and philosophy• Talked to companies that were interested• Utilized Twitter and social media
LOSING CONTROL IS A GOOD SIGN• One day a website and twitter account showed up• Android support was added• The code was ported to another language• I lost commit privileges on the repo (briefly)• My conference proposal was rejected because,unbeknownst to me, two other people had alreadysubmittedAppiumtalks at the same conference
SCALABILITY• Eventually, you won’t be able to answer every question
• Other people will have learned from reading the forums and the community can answer
• You won’t be able to test or scrutinize every commit• Unit tests are your friend
• You won’t know the what’s on anymore• Draft good release note• Keep detailed commit messages
STARTING AN OPEN SOURCE PROJECTTHE WRONG WAY
• Use proprietary technologies• Share the code via email• Provide no documentation• Do not post slides• Respond to issues via private communication
THE RIGHT WAY• Use open technologies• Post code on GitHub• Write documentation• Use Slideshare& YouTube• Post responses on forums
CONFLICT• Agreeing to a philosophy and/or mission beforehand is helpful• There is no rigid chain of command to resolve disputes
• Conflict is best kept out in the open• This leads to debate which results in better decisions• Transparent decision making leads to better end-‐user understanding
• Sometimes whoever writes the code make the decision• People may have opinions but aren’t willing to code the solution
WHEN PEACE IS NOT AN OPTION• Losing contributors is bad, but not the end of the world
• Unless they leave the open source community, their work is still shared with everyone
• Multiple projects doing the same thing isn’t necessarily a bad thing• Choice and competition brings about innovation• Having options is good for end-‐users
In the end, the most awesome thing will win
BY THE NUMBERS
In the last 2 ½ years• Over 2,000 Stars, 1,500 Forks on GitHub• Over 100 Contributors and 5,000 commits• Over 150,000 downloads of Appium 1.0• Over 3,000 issues closed
HOW DOES IT WORK?• Calibrate the robot to map points in the physical world to points on a device screen• Run an app on the device with Appium that can tell you what coordinates are being touched
• Touch three places on the device and record the physical and device-‐centric coordinates
• Build a matrix to translate any point between the two systems
• Intercept touch actions with the AppiumServer and send them to the robot
WHY DID APPIUM SUCCEED?• From Day 1, There Was a Clear Philosophy and Vision• We were as inclusive as possible, which led to an active community• We supported as many languages and platforms as possible• We based our tool on an existing tool people were already familiar with• We made decisions designed to build an active community
• We put a whole lot of work into it• We went to any and every conference that would have us• We answered almost every forum post the 1st year or so
PERSONAL TAKEAWAY“Life can be much broader once you discover one simple fact: Everything around you that you call life was made up by people that were no smarter than you and you can change it, you can influence it, you can build your own things that other people can use.
Once you learn that, you'll never be the same again.”
-‐Steve Jobs