PodSearch

Developing Perspective

#136: The iOS 7 Conundrum.

 

00:00:00 ◼   ► Hello, and welcome to Developing Perspective. Developing Perspective is a podcast discussing

00:00:04 ◼   ► news of note for iOS development, Apple and the like. I'm your host, David Smith. I'm

00:00:08 ◼   ► an independent iOS and Mac developer based in Herne, Virginia. This is show number 136.

00:00:13 ◼   ► Today is Friday, August 2nd, 2013. Developing Perspective is never longer than 15 minutes,

00:00:18 ◼   ► so let's get going.

00:00:19 ◼   ► All right, so I want to talk about today is a conundrum that I'm facing that I thought

00:00:25 ◼   ► would be an interesting thing to just kind of ramble on a bit about. So, you know, coming

00:00:29 ◼   ► this fall, iOS seven is going to be launching, no surprise. But as a result, you know, I'm

00:00:35 ◼   ► in the process now I'm sort of fully committed on to iOS seven, you know, upgraded upgraded

00:00:39 ◼   ► my main carry iPhone to iOS seven, you know, I'm burning my ships and, you know, heading

00:00:44 ◼   ► off into, you know, the great unknown, and focusing in pretty much exclusively these

00:00:50 ◼   ► days on iOS 7 updates and compatibility and all those types of things. And so I'm kind

00:00:57 ◼   ► of in this funny place. And it's kind of this been an interesting kind of conundrum that

00:01:00 ◼   ► I've been working through, where coming fresh out of WWDC, probably was that about a month

00:01:05 ◼   ► ago, or two months ago, wow. The, you know, you kind of come, you come out of WWDC, all

00:01:13 ◼   ► excited about the new stuff, all crazy, everything's exciting and new. And you sit down. You're

00:01:20 ◼   ► You're like, yeah, you know, I'm going

00:01:21 ◼   ► to throw away all my old stuff.

00:01:22 ◼   ► I'm going to rebuild all the new stuff.

00:01:24 ◼   ► It's so cool.

00:01:25 ◼   ► It's so exciting.

00:01:26 ◼   ► And you quickly realize or sort of come to find,

00:01:30 ◼   ► then maybe some of the new stuff isn't quite as shiny

00:01:33 ◼   ► as you thought it would be.

00:01:34 ◼   ► Some of it is.

00:01:34 ◼   ► Some of it's not.

00:01:36 ◼   ► You realize that some of the things will do--

00:01:39 ◼   ► they'll do some half of what you thought they would do.

00:01:42 ◼   ► Sometimes they'll do more.

00:01:43 ◼   ► They'll do different things.

00:01:44 ◼   ► The actual just reality of sitting down with real APIs

00:01:47 ◼   ► and playing with them and using them

00:01:48 ◼   ► is different than sitting and watching someone talking about it on a stage.

00:01:53 ◼   ► And so you kind of sit down, you kind of start really understanding what's changed.

00:01:57 ◼   ► And typically this is for the best.

00:01:59 ◼   ► I found that the more I get to understand something, the more you can really get the

00:02:04 ◼   ► purpose behind it and what the intention and goals were, rather than just the high-level

00:02:11 ◼   ► descriptions of things.

00:02:12 ◼   ► And it's exciting, and you kind of get going.

00:02:15 ◼   ► And then you kind of hit the point where you're like, "Well, okay.

00:02:17 ◼   ► I kind of know what I'm doing.

00:02:19 ◼   ► And I think I mentioned this in two or three episodes ago,

00:02:21 ◼   ► where I sat down and I took one of my old apps, Simplegram,

00:02:24 ◼   ► and I re-implemented it with all iOS 7 stuff

00:02:27 ◼   ► to try and make sure I really understood the technologies,

00:02:30 ◼   ► understood how the new networking stuff works,

00:02:32 ◼   ► how all that UI stuff goes, and really got a good grasp on it.

00:02:36 ◼   ► And I did that, so I got pretty good sense.

00:02:38 ◼   ► And you sit down, and you're like, OK, well,

00:02:40 ◼   ► I'm going to work through my apps,

00:02:41 ◼   ► kind of methodically go along.

00:02:42 ◼   ► And I'm in a bit of a slightly unique situation

00:02:44 ◼   ► that I actually have multiple apps that I

00:02:46 ◼   ► need to do this with.

00:02:47 ◼   ► But typically, the process would be the same.

00:02:49 ◼   ► It's like, what do you do to your current app?

00:02:53 ◼   ► You can do basic compatibility, sort

00:02:55 ◼   ► of like the first level of working on something,

00:02:57 ◼   ► which just make it work.

00:02:58 ◼   ► So make it so that it doesn't crash.

00:03:00 ◼   ► Make sure that it looks reasonable,

00:03:02 ◼   ► that there aren't any strange UI glitches, those kinds of issues.

00:03:05 ◼   ► And that's just sort of like a bare minimum.

00:03:09 ◼   ► If you're not doing that, you're not really

00:03:11 ◼   ► taking care of your app.

00:03:12 ◼   ► Then you get starting to get into more complicated things

00:03:14 ◼   ► and exactly what you're going to do.

00:03:15 ◼   ► You're going to go whole hog and go iOS 7 only and just

00:03:21 ◼   ► take advantage of all the new UI and the new technologies.

00:03:24 ◼   ► You're going to try and straddle multiple releases

00:03:28 ◼   ► in terms of compatibility.

00:03:29 ◼   ► You're going to go-- I think right now, the oldest you can

00:03:31 ◼   ► go is 4.3, I think, is the earliest iOS version

00:03:36 ◼   ► that you can support.

00:03:37 ◼   ► You're going to go 4.3 through 7.0.

00:03:41 ◼   ► Are you going to go 6 to 7, 5 to 7?

00:03:44 ◼   ► there's a lot of choices.

00:03:47 ◼   ► And it puts you in kind of a strange place,

00:03:49 ◼   ► and especially even if you're making a new app.

00:03:51 ◼   ► So I'm working right now on an app-- PodWrangler

00:03:55 ◼   ► is the working title anyway-- which

00:03:57 ◼   ► is the podcast client for FeedWrangler,

00:03:59 ◼   ► which I've mentioned before that I'm working on.

00:04:01 ◼   ► And it's kind of a weird thing because it's a new app,

00:04:03 ◼   ► but it's also an old app.

00:04:05 ◼   ► Because I've built a pod catcher before,

00:04:07 ◼   ► so I kind of have a very rich parts bin

00:04:09 ◼   ► that I'm drawing on to make sure I've

00:04:11 ◼   ► solved all the problems before.

00:04:13 ◼   ► So I'm just taking it in and bringing it

00:04:14 ◼   ► for in a more modern way.

00:04:16 ◼   ► But it's still going to be a new app onto the store.

00:04:19 ◼   ► And so what do I do in terms of showing people this app,

00:04:25 ◼   ► showing people what to expect when I do that?

00:04:30 ◼   ► Will they expect it to be an iOS 6 app?

00:04:32 ◼   ► Will they expect it to be an iOS 7 app?

00:04:34 ◼   ► If it's an iOS 7 app-- and this is the crux of the conundrum

00:04:37 ◼   ► that I kind of want to elaborate on.

00:04:39 ◼   ► If it's an iOS 7 app only, then I

00:04:41 ◼   ► can't release it until probably the end of September. Somewhere around there. No, no

00:04:48 ◼   ► one really knows for sure, depending on which rumor site you trust. I you know, the gold

00:04:52 ◼   ► master for iOS seven will come out either in early September or mid September. I think

00:04:57 ◼   ► mid my gut says mid September is the likely one, but we'll see. I think right now I'm

00:05:02 ◼   ► you know, like I'm basing a lot of my planning on probably the second the second Monday in

00:05:08 ◼   ► September as kind of my goal for making sure all my stuff is

00:05:10 ◼   ► ready for Goldmaster, which is about five weeks from now.

00:05:15 ◼   ► And the interesting thing is five weeks

00:05:16 ◼   ► is not a long, long time.

00:05:18 ◼   ► And it could be longer than that.

00:05:20 ◼   ► But if your app is potentially going to be ready before then,

00:05:25 ◼   ► is it wiser to release it early and make it iOS 6 and iOS 7

00:05:30 ◼   ► compatible, or wait until the GM?

00:05:33 ◼   ► And the interesting thing about this,

00:05:35 ◼   ► as I've kind of struggled and wrestled

00:05:37 ◼   ► with this over the last couple of days is I think that the reality is the difference

00:05:42 ◼   ► there has more to do with the marketing constraints and market timing issues rather than necessarily

00:05:52 ◼   ► the technological reasons.

00:05:56 ◼   ► I've actually found that having iOS 6 and iOS 7 live happily together isn't too bad.

00:06:02 ◼   ► You know, there's a few changes you have to do in how you structure your application,

00:06:06 ◼   ► of which are good anyway, in terms of you just need to componentize enough of the parts

00:06:14 ◼   ► that are slightly different on both platforms so that you just have a few if statements

00:06:18 ◼   ► and they're in one place and you have one file.

00:06:21 ◼   ► And it works pretty well.

00:06:22 ◼   ► And so far I've been pretty happy with that.

00:06:23 ◼   ► And what I found is, so in my case, I'm a slightly unique situation, again, where I

00:06:29 ◼   ► I know that there's going to be a lot of activity on the day

00:06:33 ◼   ► that the GM ships for iOS 7.

00:06:36 ◼   ► And the question is, would I get lost in that

00:06:40 ◼   ► if I launched on day one?

00:06:43 ◼   ► I'm pretty confident that I could be ready on day one.

00:06:45 ◼   ► If not, I think I'll probably have

00:06:46 ◼   ► a good beta version of my podcast client

00:06:49 ◼   ► within about a week or so.

00:06:51 ◼   ► And so I could probably launch middle of August,

00:06:55 ◼   ► which is interesting in that--

00:06:59 ◼   ► And there's not a lot of apps that typically launch in the middle of August.

00:07:02 ◼   ► I think most people are working on iOS 7.

00:07:04 ◼   ► And so you kind of have an opportunity to stand out, to be interesting,

00:07:07 ◼   ► to be unique, to be distinctive.

00:07:10 ◼   ► Whereas if you launch on when iOS 7 first comes out, you're one of thousands,

00:07:16 ◼   ► or one of hundreds, or one of dozens of apps that are going to be updated

00:07:19 ◼   ► and have big updates, big releases, are all

00:07:21 ◼   ► going to be vying for media attention at the same time.

00:07:24 ◼   ► In some ways, it's almost like I think I should be better off waiting

00:07:27 ◼   ► and launching in, say, October, if I'm-- it's like launch

00:07:32 ◼   ► in August or launch in October, because launching in September

00:07:35 ◼   ► is kind of going to be kind of tricky.

00:07:37 ◼   ► I know, for example, in my specific industry,

00:07:40 ◼   ► I know that Instacast and PocketCast,

00:07:43 ◼   ► which are two of the biggest sort of players in this thing,

00:07:45 ◼   ► are working on big iOS 7 updates.

00:07:47 ◼   ► And they're expecting to launch iOS 7

00:07:50 ◼   ► when the iOS 7 update comes out.

00:07:51 ◼   ► And so if I do that, I'm going to be at least one of three apps

00:07:55 ◼   ► that would be launching on that day that could do exactly

00:07:57 ◼   ► the same thing.

00:07:58 ◼   ► And that's kind of awkward.

00:07:59 ◼   ► And so I'm trying to avoid that and go back and forth.

00:08:03 ◼   ► And I think the upside of this kind of marketing pressure

00:08:07 ◼   ► is that I think what I'm going to end up doing

00:08:09 ◼   ► is supporting iOS 6 and probably trying to launch early, which

00:08:13 ◼   ► I think in general is also good for users in that even though

00:08:18 ◼   ► iOS 7 adoption will likely be fairly quick,

00:08:21 ◼   ► and by industry standards, like I've said often before,

00:08:25 ◼   ► I usually see about 50% in a couple of weeks, which is great.

00:08:29 ◼   ► But that still means that after two weeks, 50% of people

00:08:32 ◼   ► won't be able to use your app if you don't really support iOS 7.

00:08:36 ◼   ► And that problem gets diminished over time and so on.

00:08:39 ◼   ► But it's an interesting situation for customers

00:08:43 ◼   ► if you're intentionally reducing the size and the market

00:08:46 ◼   ► that your app can potentially address.

00:08:48 ◼   ► And so I think it's probably going

00:08:49 ◼   ► to be a good thing for me to address iOS 6 and iOS 7.

00:08:53 ◼   ► And generally, I think that's where I'm going to head.

00:08:55 ◼   ► I think I'm probably going to be staying

00:08:57 ◼   ► that way for all of my apps.

00:08:59 ◼   ► For a while, I was thinking, oh, I'll go iOS 7 only for a lot

00:09:01 ◼   ► of them.

00:09:02 ◼   ► And I think I was just kind of being lazy when

00:09:04 ◼   ► I was thinking about that.

00:09:05 ◼   ► The differences are important and significant,

00:09:07 ◼   ► and I'm kind of wrapping my hands pretty solidly

00:09:10 ◼   ► around what the changes are that I need to do.

00:09:12 ◼   ► But generally, they coexist pretty well.

00:09:14 ◼   ► There's a lot of things that aren't structural that are

00:09:16 ◼   ► changes between the two apps.

00:09:17 ◼   ► I remember when I think it was iOS 4 launched that brought

00:09:21 ◼   ► blocks into the syntax.

00:09:23 ◼   ► And I remember that being one of these things

00:09:25 ◼   ► that I really wanted to get off of iOS 3 and 3.2

00:09:28 ◼   ► as quickly as possible, because it changed how I wrote my code,

00:09:32 ◼   ► not just introduced some new APIs.

00:09:34 ◼   ► It meant that I'd do this and do networking in a different way.

00:09:37 ◼   ► It meant that I'd do some of my UI stuff in a different way.

00:09:39 ◼   ► It's kind of the thing that you just get used to.

00:09:42 ◼   ► And understanding that, at least in my experience so far,

00:09:46 ◼   ► they coexist well enough that I think ultimately

00:09:49 ◼   ► it'll be better for me from a marketing perspective

00:09:51 ◼   ► and from a customer perspective to be

00:09:53 ◼   ► able to support iOS 6 and 7.

00:09:55 ◼   ► And it also means that I have a lot of choices

00:09:57 ◼   ► about when I launch.

00:09:58 ◼   ► It's definitely a weird feeling to be

00:10:00 ◼   ► able to have something ready and not

00:10:01 ◼   ► be able to submit it for an unknown amount of time.

00:10:05 ◼   ► It could be that Apple releases the GM

00:10:07 ◼   ► and lets you submit apps starting September 1.

00:10:13 ◼   ► It could also just as easily be October 1.

00:10:15 ◼   ► And that's a very big difference in terms of time to market,

00:10:18 ◼   ► in terms of the time and energy that you have for something,

00:10:21 ◼   ► how long it's going to be sitting on a shelf.

00:10:23 ◼   ► And so I'd rather, I think, just focus on something

00:10:26 ◼   ► that I know I can do and get it done.

00:10:29 ◼   ► So anyway, that's a bit rambling, and hopefully--

00:10:31 ◼   ► but hopefully it kind of gets at this tension

00:10:35 ◼   ► that I've been struggling through.

00:10:36 ◼   ► And this is one of those topics that if you have thoughts on,

00:10:39 ◼   ► I'd really appreciate your feedback on.

00:10:42 ◼   ► It seems like this is probably the way to do it.

00:10:44 ◼   ► I mean, I think even though if you're building a new app,

00:10:47 ◼   ► going iOS 7 only can be nice.

00:10:49 ◼   ► Unless that app, I think, is doing something

00:10:52 ◼   ► that is really only possible on iOS 7.

00:10:55 ◼   ► You're taking advantage of a totally new framework

00:10:59 ◼   ► or architecture or something like that.

00:11:01 ◼   ► It really probably makes sense to pull back and to stick

00:11:05 ◼   ► and to be 6.1 and 7 compatible.

00:11:08 ◼   ► And so far, like I said, that's not

00:11:09 ◼   ► been as bad as I would have thought

00:11:10 ◼   ► it would be initially.

00:11:11 ◼   ► I played around with a lot of the stuff,

00:11:13 ◼   ► and it's very easy to compartmentalize

00:11:14 ◼   ► because a lot of the way that it works is just different.

00:11:17 ◼   ► And this certainly also helps if you have a very native app,

00:11:19 ◼   ► something with a native look and feel that

00:11:21 ◼   ► tends to just migrate fairly well between things.

00:11:26 ◼   ► Because if you have a totally custom UI,

00:11:29 ◼   ► obviously it's more complicated, because then you

00:11:31 ◼   ► need to be supporting these two things in two places,

00:11:34 ◼   ► or make your iOS 6 look like iOS 7, which isn't actually

00:11:37 ◼   ► too hard, because iOS 7 is so minimal.

00:11:40 ◼   ► So a lot of it's just turning off stuff.

00:11:42 ◼   ► But that's kind of what I'm doing.

00:11:44 ◼   ► And it's just going pretty well.

00:11:46 ◼   ► And this is another thing I think I'll follow up on.

00:11:48 ◼   ► Just something I think I said last time,

00:11:50 ◼   ► that just the experience of building something

00:11:54 ◼   ► that you've done before is quite powerful.

00:11:57 ◼   ► And I love-- this is a part that I think I was also

00:11:59 ◼   ► talking about in the last couple episodes,

00:12:01 ◼   ► about kind of being a little down, a little hard

00:12:02 ◼   ► to get motivated right in the middle of this kind

00:12:04 ◼   ► of this doldrums where you're off the WWDC high,

00:12:07 ◼   ► but just not quite crunch time.

00:12:09 ◼   ► The thing that's kind of been able to really excite me

00:12:11 ◼   ► and get me motivated again is to be

00:12:13 ◼   ► able to be solving interesting problems.

00:12:14 ◼   ► And this is the best part of having solved a lot of problems

00:12:17 ◼   ► and by having a lot of toy apps and having

00:12:19 ◼   ► a lot of solutions that you like and trust for a lot of problems

00:12:22 ◼   ► so you can solve the really interesting ones

00:12:24 ◼   ► and be iterating on the cool stuff

00:12:26 ◼   ► rather than on the grunt work underneath, which has been fun.

00:12:29 ◼   ► So pod wrangler's going well.

00:12:30 ◼   ► I think it should come out, like I said, hopefully

00:12:33 ◼   ► probably in about three weeks.

00:12:34 ◼   ► That's kind of my goal is kind of late August

00:12:37 ◼   ► to be launching, which will be kind of fun.

00:12:38 ◼   ► And I'll have some interesting things

00:12:40 ◼   ► that I'm going to be doing in terms of the-- I guess

00:12:44 ◼   ► that are monetizing it that I think

00:12:45 ◼   ► will be interesting to talk about on the show,

00:12:47 ◼   ► but I'll touch on those as I get closer.

00:12:49 ◼   ► Otherwise, I think that's it for today's show.

00:12:51 ◼   ► As always, if you have questions, comments, concerns,

00:12:53 ◼   ► I'm on Twitter @_davidsmith.

00:12:55 ◼   ► You can email me, david@developingperspective.com.

00:12:57 ◼   ► Otherwise, we have a great weekend.

00:12:59 ◼   ► Happy coding, and I will talk to you next week.