Appium 1.5 is primarily a technical rearchitecture of the Appium open source mobile automation framework. As the project grew from infancy through to 1.0 and beyond, the core team did their best to keep the code organized, to keep it easy for new contributors to come to the project, and to fix bugs and add features in a timely fashion. However, as is the case with many software projects, the time came when despite their best efforts, Appium's fundamental architecture was working against the project.
Given the relatively stable nature of the project in the 1.4.x series, it was a good time to invest in the future velocity of Appium's development. The Appium 1.5 rewrite had the following goals:
- Take a hard look at the current code organization and reconceptualize the relationships between different subsections of Appium with an eye to making distinctions clearer and concerns more separate.
- Leverage the NPM ecosystem's best practices and break Appium up into packages based on responsibility, maintenance, etc..., whenever appropriate.
- Standardize subprocess management. Appium is basically a combination API server and subprocess manager (we manage instruments, uiautomator, chromedriver, selendroid, etc...), and so standardizing subprocess management makes the code cleaner and more readable throughout the project.
- Abstract common driver behavior: Appium's IOS support and Android support really derive from the same common interface, so it was important to factor that interface out to reduce duplication of work and boilerplate across Appium's different drivers.
- Clean up the build process so that Appium is not using a handful of different build tools in different situations. Ensure the project is running CI at the subpackage level to save time when releasing Appium.
- Create a more friendly architectural environment for new devs to contribute to Appium. Make sure that one type of change needs to happen in one place and that READMEs abound.
- ...and many more very specific technical goals. For more information on how Appium is now put together from a developer perspective, see the developer's overview72.
Importantly, one goal was to not add new features. In essence, Appium 1.5 should work exactly the same as Appium 1.4.16, while being brand new under the hood. A few tweaks were made here and there. As a result of the rewrite, various long-standing bugs to do with session handling were fixed, a number of server arguments were deprecated, and the ability to launch an Android intent via uri was added. Finally, check out the Sauce Labs Appium Bootcamp to learn how to write great Appium tests from scratch.