Skip to content

Commit

Permalink
add initial TLP application for the Appium project
Browse files Browse the repository at this point in the history
  • Loading branch information
jlipps committed Jan 21, 2016
1 parent b55084e commit 44277d5
Showing 1 changed file with 182 additions and 0 deletions.
182 changes: 182 additions & 0 deletions Applications/Appium-TLP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
## Appium + Node Foundation = <3

This document serves as the application for the [Appium](https://appium.io)
open source mobile automation tool to join the Node Foundation as a [Top-Level
Project](https://github.com/nodejs/TSC/blob/master/Project-Lifecycle.md#top-level-project-and-working-group-requirements).

### Introduction to the Appium Project

Appium is a Node.js server that exposes a REST API used for automating mobile
applications (native, hybrid, and web) on iOS, Android, and more (Windows Phone
coming soon). The most common reason someone would want to automate a mobile
application is to test it, and Appium has become the world's most popular
open-source mobile testing tool. Testers use Appium via a client library
written in the tester's preferred language (thus differentiating Appium from
other testing tools---it is language-agnostic). Happily, the API that Appium
exposes is simply an extension of the API used for
[Selenium](https://seleniumhq.org), the extremely popular browser automation
tool, and so clients are easy to come by.

Over the last few years of its existence, Appium has grown from a small entrant
in the mobile testing space to the standard in mobile automation, used by many
of the world's largest companies as part of their mobile CI, and offered as
part of cloud testing offerings from Sauce Labs, Amazon.com, Testdroid,
Perfecto Mobile, and others. Given its wide appeal to non-Node.js users, but
its adoption of the very latest in Node.js technologies (recently entirely
rewritten in ES2015), we believe that Appium is an excellent candidate for
adoption into the Node Foundation as a top-level project. The time has come for
Appium to formally grow up as an open source project, and Node.js leads the
pack in open source organization and governance. We want to take advantage of
this accumulated wisdom and join forces with the Node Foundation for a better
future for our project.

### History of the Appium Project

Appium's story is well-outlined on [the project's history
page](http://appium.io/history.html?lang=en). Most recently, we have completely
rewritten the project in ES2015 + `async/await` with the goal of making the
project easier to understand, more modular, and more friendly, especially for
new contributors.

### Scope of the Appium Project

The Appium project's purpose is to make testing apps easier. That means a few
things for us:

* Use a standard automation API that everyone is already familiar with.
* Allow users to write test scripts in any language.
* As far as possible, don't modify the app in order to test it.
* Appium should be open source! Community > technology.

We chose the Selenium WebDriver [JSON Wire
Protocol](https://code.google.com/p/selenium/wiki/JsonWireProtocol) (JSONWP) as
our foundational API (this is soon going to be superseded by the
[WebDriver](https://www.w3.org/TR/webdriver/) Standard, a W3C draft, but the
differences are fairly minor). Our goal is thus to provide a translation layer
between fundamental automation technologies (like those Apple and Google
provide for automating iOS and Android apps) and the JSONWP, so that users can
write test scripts for any platform taking advantage of the awesome HTTP
architecture of the JSONWP API.

For now Appium's platform support includes iOS and Android mobile devices, but
the future is wide open---we want to build a giant ecosystem of Appium
"drivers" that add support for automating whatever the apps of tomorrow look
like. And we want to do all of this in Node.js (except for when we are forced
to write some other language to connect to another technology, as when we use
Java in Android's UiAutomator context).

In terms of the scope of the Appium TLP's responsibilities specifically, they
basically include all aspects of running the Appium open source project. This
includes:

* Setting the project roadmap
* Setting release dates
* Managing the development process, the style guide and code quality
* Helping contributors with pull requests
* Determining who can become a committer or a TC member
* Maintaining infrastructure necessary for the community to operate well, e.g., the GitHub project, our discussion forum, any mailing lists or Slack channels, etc...
* Maintaining technical infrastructure (CI, for example)
* General project management for specific endeavors
* Mediating technical conflicts that may arise
* Handling conduct violations and ensuring the community remains healthy
* Organizing and accepting corporate sponsorship

Essentially, the Appium TLP is more or less the Appium project itself--the goal
is for the project as a whole to come under the umbrella of the Node
Foundation; of course this scope of responsibility does not extend to Appium's
use specifically or in general, forks, people giving talks at meetups or
conferences, or other kinds of community self-organization (though we may want
to officially recognize or support meetups or conferences).

### User Base, Community, and Ecosystem

* Basic stats (via GitHub) across the Appium org, as of 1/2016:
* Over 160 unique contributors
* Over 90 releases
* Over 8,000 commits
* Over 3,200 issues closed
* Over 2,000 pull requests merged
* Over 3,000 stars
* Over 1,900 forks
* Usage stats:
* 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.
* New versions of the Appium.app GUI wrapper are downloaded on the order of ~500/day ([source](https://bitbucket.org/appium/appium.app/downloads/))
* Supported Appium clients exist in 6 languages and these are downloaded frequently as well
* Appium has several regularly-occurring meetups around the world, organized independently by community members:
* [San Francisco, USA](http://www.meetup.com/Appium-SF/)
* [London, UK](http://www.meetup.com/Appium-London/)
* [New York City, USA](http://www.meetup.com/Appium-New-York/)
* [Bangalore, IN](http://www.meetup.com/Bangalore-Appium-Meetup/)
* An [Appium Book](https://www.packtpub.com/application-development/appium-essentials) has been written and published.
* 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).
* 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/)).
* 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).
* 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.

### Contribution Process

Our
[CONTRIBUTING.md](https://github.com/appium/appium/blob/master/CONTRIBUTING.md)
formalizes the various kinds of contributions and the processes necessary for
each. More contribution resources are available:

* [Style Guide](https://github.com/appium/appium/blob/master/docs/en/contributing-to-appium/style-guide-2.0.md)
* [Developer's Overview](https://github.com/appium/appium/blob/1.5/docs/en/contributing-to-appium/developers-overview.md)
* [Run-down of Appium packages and organization](https://github.com/appium/appium/blob/1.5/docs/en/contributing-to-appium/appium-packages.md)
* [How to run Appium from source](https://github.com/appium/appium/blob/master/docs/en/contributing-to-appium/appium-from-source.md)


### Governance Process

* Our project's roles and procedures are documented on our [GOVERNANCE.md](https://github.com/appium/appium/blob/1.5/GOVERNANCE.md).

### Organizational Tools

* Website: [appium.io](http://appium.io)
* [Docs](http://appium.io/slate/en/master) (Jekyll + Slate)
* Source code management: [GitHub](https://github.com/appium/appium)
* Appium is split up into dozens of smaller repos and operates as an independent GitHub organization
* Issue tracking: [GitHub](https://github.com/appium/appium/issues)
* Milestone tracking: [GitHub](https://github.com/appium/appium/milestones)
* Releases: [GitHub](https://github.com/appium/appium/releases) and [NPM](https://npmjs.org/package/appium)
* User discussion forums: [discuss.appium.io](https://discuss.appium.io)
* User chat: [gitter.im/appium](https://gitter.im/orgs/appium/rooms) (#appium on Freenode is mostly abandoned)
* Developer/contributor chat: [appium.slack.com](https://appium.slack.com)
* Developer mailing list: [appium-developers@googlegroups.com](https://groups.google.com/forum/#!forum/appium-developers)

### Intellectual Property and Other Assets

Appium does not currently have any registered trademarks. We own/manage the
[appium.io](https://appium.io) domain name. We also have a logomark.

### Initial Technical Committee Members

The Appium TC will initially consist of:

|Name|GitHub profile|Company|Location|
|----|--------------|-------|--------|
|Jonathan Lipps|[@jlipps](https://github.com/jlipps)|Sauce Labs|San Francisco, USA|
|Matthew Edwards|[@bootstraponline](https://github.com/bootstraponline)|Instructure, Inc.|Salt Lake City, UT|
|Dan Cuellar|[@penguinho](https://github.com/penguinho)|FOODit, Inc.|London, UK|
|Dan Doveralba|[@dandoveralba](https://github.com/dandoveralba)|FitBit|San Francisco, USA|

### Initial Working Groups

Initially, Appium will only need one working group, responsible for Appium's
continued development and supporting the various needs of the community.
Eventually we will want to consider adding working groups based on the
underlying automation technology (e.g., one group to manage direction for iOS
testing, another for Android testing, etc...). As the time becomes ripe for
large Appium community events (conferences, etc...), we will likely also want
a working group to plan and run such events.

### Important Documents

* [Code of Conduct](https://github.com/appium/appium/blob/master/CONDUCT.md)
* [License](https://github.com/appium/appium/blob/master/LICENSE)
* [CLA](https://docs.google.com/forms/d/1lOfXRw_0VCk7gYzjj4WLetGu7yelDVo5LWh0z7pGftE/viewform) (copyright will be transferred to Node/Linux Foundation when appropriate)


### TODO

* 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 comments on commit 44277d5

Please sign in to comment.