Skip to content

Commit 0015e4f

Browse files
committed
add initial TLP application for the Appium project
1 parent b55084e commit 0015e4f

File tree

1 file changed

+182
-0
lines changed

1 file changed

+182
-0
lines changed

Applications/Appium-TLP.md

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
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

Comments
 (0)