Dry Ark and Open Source

Current ControlFloor

ControlFloor at this time is closed-source. Portions of it have been readable source in the past ( see below ), but the current code that composes all the portions of ControlFloor is not.

We intend to make parts of ControlFloor open source or readable source in the future as use of CF becomes established and we can ensure that doing so will not harm Dry Ark profitability.

Go-iOS and Daniel Paulus

Dry Ark has cooperated with Daniel Paulus since before go-ios was released as open source. We were the primary sponsor of go-ios at the start before other major device farms began sponsoring and contributing to the work.

During the initial creation of go-ios, we created a similar project of our own call iosif, written in C. We shared our research to Daniel to assist in figuring out some portions of the underlying iOS usb protocol.

We continue to cooperate with Daniel and share information back and forth, in order to push the open source interactions with iOS devices over USB to be as open and documented as possible.

OpenSTF / DeviceFarmer / WebDriverAgent

ControlFloor was created initially in late 2020. It was designed as a full replacement for using hacky modifications to OpenSTF / DeviceFarmer.

Our founder, David Helkowski, worked on OpenSTF while supporting T-Mobile internal usage of OpenSTF with iOS devices from 2019 to 2020. That work was released as open source. At the time, HeadSpin owned and controlled OpenSTF fully. It was attempted to contribute the open source iOS support created into OpenSTF, but HeadSpin refused to accept the changes.

As a result of HeadSpin refusing to accept iOS support contributions, the community forked OpenSTF away from HeadSpin control, rebranding partially under the name DeviceFarmer.

Initially ControlFloor was released as readable source under the Anti-Corruption license. The WebDriverAgent modifications used initially to add iOS support to DeviceFarmer were further developed and released as ControlFloorAgent. The existing available readable source ControlFloorAgent is, therefore, a derivative work of WebDriverAgent.

WebDriverAgent was found to be deficient in many ways, and we rewrote CFA from the ground up. The current CFA used by ControlFloor is not a derivative work of WDA, and is only similar conceptually as a wrapper around XCTest functionality provided by Apple.

DeviceFarmer iOS support exists in a variety of incarnations by different groups, but the "official" support for iOS in DeviceFarmer remains the code written for T-Mobile. Ownership / maintenance of this iOS support was donated some years ago to DeviceFarmer, but the community failed to maintain it. As a result, Dry Ark requested and is once again the official maintainers of DeviceFarmer iOS support.

Our support is, though, minimal, and there remains a lot of work to do to make it easy to bring up a DeviceFarmer instance with iOS functionality. This will be solved in the future, but Dry Ark currently is focused on supporting our own product, ControlFloor, primarily. This situation is suboptimal, as we are now effectively blockers to open source iOS farm development using DeviceFarmer, but this is unintentional and a result of inability to spend time and effort on the project, not of unwillingness to do so.


Originally ControlFloor used a fork of WebDriverAgent to enable dynamic calls to Apple XCUITest functionality. WDA was found to be deficient as it was very complex and difficult to maintain. It was/is based off a very old dump of the Apple XCUITest API. The virtual UI object cache within WDA causes a number of bugs that cannot be solved without ripping it out entirely. The currently released readable source ControlFloorAgent was an attempt to fix the problems within WDA, but ultimately we decided to create an entirely new ControlFloorAgent from the ground up with completely fresh code based on years of learning.

The new CFA that is used by ControlFloor is not open source at this time. We would like to eventually release it as open source to enable the improvements to be used more broadly by the community, but the advancements we have made are non-trivial and a foundational part of the ControlFloor offering. Dry Ark is, therefore, keeping CFA closed source until we can ensure an ongoing revenue stream to keep Dry Ark alive as a company. Once we are convinced that releasing CFA as open source can be done and Dry Ark can still live on in that state, we will do so.


Having worked with the WebDriver API and XCTest wrapper technology for a number of years, we have come to the conclusion that WebDriver is not well-suited to being used to automate iOS. As a result, we abandoned support of the WebDriver API. ControlFloor does not use WebDriver concepts or API.


Dry Ark has had some limited discussion with key personell involved with the Appium project and its maintenance of WebDriverAgent. The goal of those discussions was to determine if Appium is willing to monetarily support the ControlFloorAgent that we created in exchanged for placing it in open source. The response we got was an absolute no. We were told that we are free to contribute CFA to open source and the community to help Appium, but that essentially nothing would be done in return for us.

As a result of this, Dry Ark's position is that Appium will be a dead technology for the automation of iOS devices in the future, and we are moving forward with replacing Appium entirely when it comes to iOS devices with our own technology. We intent to give that technology away freely once we can safely do so and still have a profitable company.

Dry Ary is opposed to some aspects of how Appium is run. One of the crucial ones is not contributing the methodology for dumping UI structure via injection into apps. This method is relatively obvious, and we will be sharing that information ourselves as we develop it and offer it within ControlFloor. We believe also that the reason the WebDriverAgent inspector functionality was removed from WDA by Appium was in order to attempt to prevent it from competing with the Appium Inspector. That is against the spirit of open source.

Video App

The open source modifications made to OpenSTF included code to pull video frames from iOS devices in a variety of different ways. That code remains freely available and the community is welcome to continue using and developing it as desired.

The current closed source Video App used within ControlFloor is similar to the Upload Broadcast Extension method of pulling video that is freely available, but it is rewritten and improved in a variety of ways. While Dry Ark has no plans to release the source to the Video App currently used, we welcome contributions and advancements by the community to the existing open source projects that we released.

Dry Ark Open Source Commitment

Dry Ark exists as a company due to the knowledge shared with us by the open source community. Without many open source projects studying the internals of Apple software, we would not have been able to learn and create the product that we offer. We will always be thankful for those in the community being brave enough to openly and freely share research and advancements in iOS automation technologies.

Our current offering is not open source, but that in no way changes our belief that open source is crucially important. We believe that knowledge of Apple internals such as APIs and techniques for overcoming artifical Apple restrictions should be freely shared even if the exact code to do so is not shared.

As a result, we are happy to explain how ControlFloor and it's internals function, even if we don't freely give away our implementations. Should anyone wish to learn more about how things work we are happy to share, because such sharing is important for the community.

Apple Cooperation

We have tried many times to reach out to Apple to discuss the legal and contractural implications of how Apple device automation in device farms is done.

Apple has in all cases refused to respond to us in any official capacity.

We have always been and will remain to be of the position that we are happy to comply with whatever direction and requests Apple has of us in how our software works in automating Apple devices.

Apple: Contact us. You owe it to the community to resolve the questions.