I remember the good old days of software distribution for mobile phones, when having an "app" on your phone meant you had to scour the depths of the internet to find and download the app that you wanted -- most of which were written in Java and built for specific groups of devices. For a developer, distributing your software meant hosting downloads and instruction guides on your own website, or partnering up with a distributor like Handango in hopes of better exposure. Fast forward to today, where the App Store has opened the doors for independent developers and installing apps on your device is as simple as tapping a button. Well, at least installing regular apps from the App Store is simple; installing beta versions of an app that is not quite ready for prime-time is usually more complex and reminiscent of the antiquated installs of yore. That is, until now.

Enter TestFlight, a very interesting project with a simple goal: to make distributing and installing beta versions of apps as simple as tapping a button. In short, and to coin a phrase that is often synonymous with Apple products in general, "it just works." TestFlight is one of those rare utilities that is able to evoke a feeling of magic when you first use it. This feeling is not just because it does exactly what it advertises, or because the process is so simple, but because it does all of this just by loading a simple web page from your device.

Sound interesting? Read on to find out how TestFlight is making the testing process better for everyone.
Before we dive in any further here, let's put in some perspective. Let's say I'm developing a game, and I'd like you to try it out for me and provide some feedback. Well, in order to try the game out, you'd have to be able to install it, right? You might ask how you're going to do that if it's not available on the App Store yet, and that's a very good question. Part of the way the App Store works is by validating that each app downloaded is signed with a digital certificate, which is issued to each developer when they apply to Apple's iOS Developer Program.

This allows the device to be sure that the app being installed actually came from the App Store, and that it is authorized to be installed on the device. In order to allow developers to distribute builds of their apps for testing purposes, Apple allows the developer to send the app's "package" directly to a limited number of people, along with a special file called a Provisioning Profile, which provides information about the app, the developer, and also contains a list of specific devices that the package may be installed on. To build this profile, the developer must obtain a unique identifier code, called a UDID, for each device that is going to be used in testing, which usually requires the tester to follow instructions or download an app to locate this information. Once the tester receives the package, they must then drag both the package and the profile into iTunes, and then connect their device and sync it. Any updates to the app require this process to be repeated, and there are often errors and other problems that cause headaches for both the tester and the developer.

So, how does TestFlight solve this, you ask? First, it starts by helping the developer to get organized. When logged in to the TestFlight dashboard, the developer is immediately presented with the ability to build up "teams" of testers and developers, as well as distribution lists to control access to different builds of the app.

TestFlight Dashboard

Going back to our scenario from earlier, if I want to invite you to test my game, all I have to do is click the Invite a teammate button, enter in your email address and click send. You would then check your email from your device, and you'd see a link asking you to sign up to test my app. Tap the link, fill out some basic info (such as your name and the password you'd like to use for TestFlight), and then you're automatically prompted to accept and install TestFlight's profile. Once the profile is installed, I would go back to my dashboard and see that you're now listed under my team of testers, and the information about your device (including the UDID required for the profile I mentioned earlier) has already been provided to me, without you having to do any extra digging.

Devices are automatically shown for each tester

From there, I can easily take that information and put it into the profile, and I can be confident that it's correct since it's coming directly from the device -- no chance of copy and paste errors or getting the wrong ID for the wrong device, since the device type, OS version and ID are all kept together. Even better, though, is the next step: sending you the app. The days of dragging builds into iTunes and syncing are over -- I just upload the build, confirm which testers I want to receive it, and TestFlight will take care of notifying you that the build is ready, along with letting you download and install it with just a single tap. The process feels so simple and streamlined, it seems like it's how Apple should have developed it to begin with.

Ironically, TestFlight itself is also in beta right now, though it's hard to tell. The website is very nicely done, with a lot of attention to detail and plenty of images and hints to help you along -- it looks very well polished. Installation goes off without a hitch and even drops a nice little TestFlight icon on your home screen so that you can quickly access your builds. The site is also smart enough to let you know when there is a problem with an upload or anything else that might cause headaches down the road. Overall, it's a very promising service, and it's free for iOS developers who are distributing on the App Store.

This article was originally published on Tuaw.
Apple countersues S3 Graphics in patent dispute