|
| 1 | +## Appium + Node Foundation = <3 |
| 2 | + |
| 3 | +This document serves as the application for the [Appium](https://appium.io) |
| 4 | +open source mobile automation tool to join the Node Foundation as a [Top-Level |
| 5 | +Project](https://github.com/nodejs/TSC/blob/master/Project-Lifecycle.md#top-level-project-and-working-group-requirements). |
| 6 | + |
| 7 | +### Introduction to the Appium Project |
| 8 | + |
| 9 | +Appium is a Node.js server that exposes a REST API used for automating mobile |
| 10 | +applications (native, hybrid, and web) on iOS, Android, and more (Windows Phone |
| 11 | +coming soon). The most common reason someone would want to automate a mobile |
| 12 | +application is to test it, and Appium has become the world's most popular |
| 13 | +open-source mobile testing tool. Testers use Appium via a client library |
| 14 | +written in the tester's preferred language (thus differentiating Appium from |
| 15 | +other testing tools---it is language-agnostic). Happily, the API that Appium |
| 16 | +exposes is simply an extension of the API used for |
| 17 | +[Selenium](https://seleniumhq.org), the extremely popular browser automation |
| 18 | +tool, and so clients are easy to come by. |
| 19 | + |
| 20 | +Over the last few years of its existence, Appium has grown from a small entrant |
| 21 | +in the mobile testing space to the standard in mobile automation, used by many |
| 22 | +of the world's largest companies as part of their mobile CI, and offered as |
| 23 | +part of cloud testing offerings from Sauce Labs, Amazon.com, Testdroid, |
| 24 | +Perfecto Mobile, and others. Given its wide appeal to non-Node.js users, but |
| 25 | +its adoption of the very latest in Node.js technologies (recently entirely |
| 26 | +rewritten in ES2015), we believe that Appium is an excellent candidate for |
| 27 | +adoption into the Node Foundation as a top-level project. The time has come for |
| 28 | +Appium to formally grow up as an open source project, and Node.js leads the |
| 29 | +pack in open source organization and governance. We want to take advantage of |
| 30 | +this accumulated wisdom and join forces with the Node Foundation for a better |
| 31 | +future for our project. |
| 32 | + |
| 33 | +### History of the Appium Project |
| 34 | + |
| 35 | +Appium's story is well-outlined on [the project's history |
| 36 | +page](http://appium.io/history.html?lang=en). Most recently, we have completely |
| 37 | +rewritten the project in ES2015 + `async/await` with the goal of making the |
| 38 | +project easier to understand, more modular, and more friendly, especially for |
| 39 | +new contributors. |
| 40 | + |
| 41 | +### Scope of the Appium Project |
| 42 | + |
| 43 | +The Appium project's purpose is to make testing apps easier. That means a few |
| 44 | +things for us: |
| 45 | + |
| 46 | +* Use a standard automation API that everyone is already familiar with. |
| 47 | +* Allow users to write test scripts in any language. |
| 48 | +* As far as possible, don't modify the app in order to test it. |
| 49 | +* Appium should be open source! Community > technology. |
| 50 | + |
| 51 | +We chose the Selenium WebDriver [JSON Wire |
| 52 | +Protocol](https://code.google.com/p/selenium/wiki/JsonWireProtocol) (JSONWP) as |
| 53 | +our foundational API (this is soon going to be superseded by the |
| 54 | +[WebDriver](https://www.w3.org/TR/webdriver/) Standard, a W3C draft, but the |
| 55 | +differences are fairly minor). Our goal is thus to provide a translation layer |
| 56 | +between fundamental automation technologies (like those Apple and Google |
| 57 | +provide for automating iOS and Android apps) and the JSONWP, so that users can |
| 58 | +write test scripts for any platform taking advantage of the awesome HTTP |
| 59 | +architecture of the JSONWP API. |
| 60 | + |
| 61 | +For now Appium's platform support includes iOS and Android mobile devices, but |
| 62 | +the future is wide open---we want to build a giant ecosystem of Appium |
| 63 | +"drivers" that add support for automating whatever the apps of tomorrow look |
| 64 | +like. And we want to do all of this in Node.js (except for when we are forced |
| 65 | +to write some other language to connect to another technology, as when we use |
| 66 | +Java in Android's UiAutomator context). |
| 67 | + |
| 68 | +In terms of the scope of the Appium TLP's responsibilities specifically, they |
| 69 | +basically include all aspects of running the Appium open source project. This |
| 70 | +includes: |
| 71 | + |
| 72 | +* Setting the project roadmap |
| 73 | +* Setting release dates |
| 74 | +* Managing the development process, the style guide and code quality |
| 75 | +* Helping contributors with pull requests |
| 76 | +* Determining who can become a committer or a TC member |
| 77 | +* Maintaining infrastructure necessary for the community to operate well, e.g., the GitHub project, our discussion forum, any mailing lists or Slack channels, etc... |
| 78 | +* Maintaining technical infrastructure (CI, for example) |
| 79 | +* General project management for specific endeavors |
| 80 | +* Mediating technical conflicts that may arise |
| 81 | +* Handling conduct violations and ensuring the community remains healthy |
| 82 | +* Organizing and accepting corporate sponsorship |
| 83 | + |
| 84 | +Essentially, the Appium TLP is more or less the Appium project itself--the goal |
| 85 | +is for the project as a whole to come under the umbrella of the Node |
| 86 | +Foundation; of course this scope of responsibility does not extend to Appium's |
| 87 | +use specifically or in general, forks, people giving talks at meetups or |
| 88 | +conferences, or other kinds of community self-organization (though we may want |
| 89 | +to officially recognize or support meetups or conferences). |
| 90 | + |
| 91 | +### User Base, Community, and Ecosystem |
| 92 | + |
| 93 | +* Basic stats (via GitHub) across the Appium org, as of 1/2016: |
| 94 | + * Over 160 unique contributors |
| 95 | + * Over 90 releases |
| 96 | + * Over 8,000 commits |
| 97 | + * Over 3,200 issues closed |
| 98 | + * Over 2,000 pull requests merged |
| 99 | + * Over 3,000 stars |
| 100 | + * Over 1,900 forks |
| 101 | +* Usage stats: |
| 102 | + * Over 20,000 NPM downloads of the Appium server in the last month (10/2015). Appium is not an NPM dependency of other projects so this number refers to it being used in an end-user scenario. |
| 103 | + * New versions of the Appium.app GUI wrapper are downloaded on the order of ~500/day ([source](https://bitbucket.org/appium/appium.app/downloads/)) |
| 104 | + * Supported Appium clients exist in 6 languages and these are downloaded frequently as well |
| 105 | +* Appium has several regularly-occurring meetups around the world, organized independently by community members: |
| 106 | + * [San Francisco, USA](http://www.meetup.com/Appium-SF/) |
| 107 | + * [London, UK](http://www.meetup.com/Appium-London/) |
| 108 | + * [New York City, USA](http://www.meetup.com/Appium-New-York/) |
| 109 | + * [Bangalore, IN](http://www.meetup.com/Bangalore-Appium-Meetup/) |
| 110 | +* An [Appium Book](https://www.packtpub.com/application-development/appium-essentials) has been written and published. |
| 111 | +* Many tools have been created and maintained by the community, for example a desktop app [GUI](https://github.com/appium/appium-dot-app) wrapper for the server, or a [REPL](https://github.com/Jonahss/AppiumRepl). |
| 112 | +* Many highly-viewed tutorials have been created by the community, even on commercial e-learning sites (like [this one on Udemy](https://www.udemy.com/appium-selendroid-tutorials/)). |
| 113 | +* Dozens of conference talks have been given at conferences and meetups around the world, for example at [LXJS 2013](https://www.youtube.com/watch?v=zsbNVkayYRQ). |
| 114 | +* Appium has become an integral part of many testers' careers. For example, [indeed.com](http://www.indeed.co.uk/jobs?q=appium&l=London) [searches](http://www.indeed.com/jobs?limit=10&as_not=&sort=&jt=all&as_any=&l=San+Francisco%2C+CA&fromage=any&as_cmp=&psf=advsrch&as_phr=&as_ttl=&st=&salary=&as_and=appium&radius=50) for SF, CA and London, UK each show > 100 open jobs with "appium" in the job requirements. |
| 115 | + |
| 116 | +### Contribution Process |
| 117 | + |
| 118 | +Our |
| 119 | +[CONTRIBUTING.md](https://github.com/appium/appium/blob/master/CONTRIBUTING.md) |
| 120 | +formalizes the various kinds of contributions and the processes necessary for |
| 121 | +each. More contribution resources are available: |
| 122 | + |
| 123 | +* [Style Guide](https://github.com/appium/appium/blob/master/docs/en/contributing-to-appium/style-guide-2.0.md) |
| 124 | +* [Developer's Overview](https://github.com/appium/appium/blob/1.5/docs/en/contributing-to-appium/developers-overview.md) |
| 125 | +* [Run-down of Appium packages and organization](https://github.com/appium/appium/blob/1.5/docs/en/contributing-to-appium/appium-packages.md) |
| 126 | +* [How to run Appium from source](https://github.com/appium/appium/blob/master/docs/en/contributing-to-appium/appium-from-source.md) |
| 127 | + |
| 128 | + |
| 129 | +### Governance Process |
| 130 | + |
| 131 | +* Our project's roles and procedures are documented on our [GOVERNANCE.md](https://github.com/appium/appium/blob/1.5/GOVERNANCE.md). |
| 132 | + |
| 133 | +### Organizational Tools |
| 134 | + |
| 135 | +* Website: [appium.io](http://appium.io) |
| 136 | +* [Docs](http://appium.io/slate/en/master) (Jekyll + Slate) |
| 137 | +* Source code management: [GitHub](https://github.com/appium/appium) |
| 138 | + * Appium is split up into dozens of smaller repos and operates as an independent GitHub organization |
| 139 | +* Issue tracking: [GitHub](https://github.com/appium/appium/issues) |
| 140 | +* Milestone tracking: [GitHub](https://github.com/appium/appium/milestones) |
| 141 | +* Releases: [GitHub](https://github.com/appium/appium/releases) and [NPM](https://npmjs.org/package/appium) |
| 142 | +* User discussion forums: [discuss.appium.io](https://discuss.appium.io) |
| 143 | +* User chat: [gitter.im/appium](https://gitter.im/orgs/appium/rooms) (#appium on Freenode is mostly abandoned) |
| 144 | +* Developer/contributor chat: [appium.slack.com](https://appium.slack.com) |
| 145 | +* Developer mailing list: [[email protected]](https://groups.google.com/forum/#!forum/appium-developers) |
| 146 | + |
| 147 | +### Intellectual Property and Other Assets |
| 148 | + |
| 149 | +Appium does not currently have any registered trademarks. We own/manage the |
| 150 | +[appium.io](https://appium.io) domain name. We also have a logomark. |
| 151 | + |
| 152 | +### Initial Technical Committee Members |
| 153 | + |
| 154 | +The Appium TC will initially consist of: |
| 155 | + |
| 156 | +|Name|GitHub profile|Company|Location| |
| 157 | +|----|--------------|-------|--------| |
| 158 | +|Jonathan Lipps|[@jlipps](https://github.com/jlipps)|Sauce Labs|San Francisco, USA| |
| 159 | +|Matthew Edwards|[@bootstraponline](https://github.com/bootstraponline)|InStructure|Boston, USA| |
| 160 | +|Dan Cuellar|[@penguinho](https://github.com/penguinho)|FOODit, Inc.|London, UK| |
| 161 | +|Dan Doveralba|[@dandoveralba](https://github.com/dandoveralba)|FitBit|San Francisco, USA| |
| 162 | + |
| 163 | +### Initial Working Groups |
| 164 | + |
| 165 | +Initially, Appium will only need one working group, responsible for Appium's |
| 166 | +continued development and supporting the various needs of the community. |
| 167 | +Eventually we will want to consider adding working groups based on the |
| 168 | +underlying automation technology (e.g., one group to manage direction for iOS |
| 169 | +testing, another for Android testing, etc...). As the time becomes ripe for |
| 170 | +large Appium community events (conferences, etc...), we will likely also want |
| 171 | +a working group to plan and run such events. |
| 172 | + |
| 173 | +### Important Documents |
| 174 | + |
| 175 | +* [Code of Conduct](https://github.com/appium/appium/blob/master/CONDUCT.md) |
| 176 | +* [License](https://github.com/appium/appium/blob/master/LICENSE) |
| 177 | +* [CLA](https://docs.google.com/forms/d/1lOfXRw_0VCk7gYzjj4WLetGu7yelDVo5LWh0z7pGftE/viewform) (copyright will be transferred to Node/Linux Foundation when appropriate) |
| 178 | + |
| 179 | + |
| 180 | +### TODO |
| 181 | + |
| 182 | +* some of the linked documents are linked to the `1.5` branch since that is where development is currently taking place. Soon we will rename 1.5 to master so we will need to update this document with that change. |
0 commit comments