It seems there’s some doubt as to whether Marzipan will be here this WWDC – in light of these rumors along with murmers of a new delcarative UI framework, we dive into what it could mean for writing cross platform apps.
If I switch it between on and off, I get an audio spike like it records this little click because it’s got an on-off button on the top. I don’t know I don’t know whether it’s dead or there’s just something wrong with how I’ve got it set up or what. I just tried it on a different machine, same thing. If I record and turn it up I can hear very very faintly it’s really bizarre
Well maybe that’s just Skype making it sound, making your good mic sound not very good when we’re over Skype but when we put the recording together we get the benefit of your mic if you see what I mean. Have to see how it shakes out in the edit! That’s quite annoying because that’s quite a lot of money for the mic isn’t it?
Alrighty so this week we’re going to talk about marzipan again, or rather the the potential lack of marzipan as the echo-chamber seems to be suggesting in the last few days.
I guess where this is all coming from, John Gruber put out a piece about the fact that marzipan might not be coming this WWDC. So I thought maybe we could sort of unpack that a little bit and explore it see what you think. I know you’ve got some thoughts about UI in general at the moment so it could be a good time to talk about it all. I suppose before we dive right in, I suppose we should just very quickly summarize the article. So it seems John says he’s heard from firsthand/secondhand sources, the sources seem to be consistent with each other, so it seems like what you say might actually be true, as opposed to kind of the apple rumor mill going crazy like it sometimes does. So the general gist is the name marzipan it may have been codenamed marzipan at one point but the people he spoke to didn’t really know it as that. Apparently there are people in Apple that know about the project who only heard about the name marzipan when Mark Gurman first reported on it which I suppose is a bit weird
It’s a bit weird. I suppose then the next major thing from the article is that it’s like a declarative control API rather than what we have today. I think in the article it references what we have now, is considered procedural some people say it’s imperative, is that another way of saying they’ve described what we currently have versus declarative
I mean the gist I take from it is that what we have today is really specific you know you are talking about this object it’s got these constraints, this size, and when you do that you are specifying absolutely exactly how it is supposed to look, either through code or very interface builder, whereas the difference of a declarative one is that you’re saying this is a thing and these are the attributes of the thing go ahead and render it on your side
So like when you say in HTML I want to build a form but I wanted to have two text fields and one text area, Chrome/Safari/Firefox each go off and kind of look at your description of that form. you know by the HTML that you’ve written. and then draws it on the screen. Which I guess is why you kind of get differences between the browsers because they kind of interpret things in different ways perhaps. Yeah, and then I suppose the final thing from the article was it’s not coming in 2018 so I mean that’s kind of set off a chain a chain of responses, I think I’ve kind of seen on Twitter people being like ‘oh you know what are we going to see at WWDC?’. So, yeah a little bit sad I suppose – y’know if we believe this to be true – that it’s not going to come this year
I think it will be quite a shame actually if it’s not coming, or at least we don’t see some sort of indications of what is coming, because there’s a potential there for people to sort of hold fire in terms of like Mac development. For example you might choose if you were thinking about sort of bringing an app, like I’ve been thinking from iOS across to Mac OS, then you’d be holding fire, you know that that might be a project that you just wait until next year or kind of just go a different route on it or something
Yeah that’s possible I suppose. I don’t know, I mean I see a lot of people being like you know ‘what’s gonna be left at WWDC?’, ‘what are they gonna show us?’, and then I start thinking back to things like Swift, I mean we didn’t even know -or I certainly didn’t know Swift was coming until they put the slide up on stage. I mean yeah, hardware that leaks all the time but then when you think about the hardware there’s such a huge, huge, supply chain and such like a logistical effort worldwide to get these pretty devices in our hands every year that we all crave, and that chain is in its nature, it’s going to be prone to weaknesses in terms of its its ability to leak I suppose. But when it comes to software I feel like they’ve got more of a like a home-field advantage, in that they can really keep things under wraps if they want to. I mean sure there was a lot of kind of sort of theorizing of a new language, you know the successor to Objective-C but I don’t think anyone had a clue that it was going to be Swift I certainly didn’t know. Either I was completely unaware of all the rumors and missed it all by chance
I mean the most I remember hearing about beforehand was sort of some debates about what sort of extensions to Objective C could be going on. You know what’s going to come in sort of the next bump and update to Objective C itself. Rather than oh there there’s this brand new language, it’s going to completely change everything we do. Yeah that was definitely quite a surprise and I totally agree really there’s a possibility that we might be surprised in June with a number of things, that just don’t kind of register in the same way as we’ve been imagining marzipan to be. For example you know it could be something completely left field that’s got nothing to do with with convergence or how you display UI or that sort of thing, you know there could be something completely different that lands in June that just completely steals the show, and you know that’s what everybody wants to talk about, and get into and all of this just sort of looks a bit kinda like moot I guess in light of that. It’s totally possible for something like that happen
Kindof like what was it, only 2 or 3 months before the iPhone 10 launched, you know podcasts everywhere/rumor sites everywhere were still saying maybe there’s gonna be a fingerprint scanner under the glass or on the back or something but like now we look back on that and think what were we thinking?
Yeah, I guess I’m still looking ahead to WWDC with some optimism and an open mind. The fact that some people are saying that some of the things we thought we might get are no longer coming, in a way that kind of excites me because the way I’m seeing it right now, either we get something cool that we weren’t expecting like you just said. Which would be cool or we get the thing that we were already excited about, i.e marzipan which would be cool, or we get like a Snow Leopard year which frankly wouldn’t be the worst thing
If we’re to believe the rumor mill lately, specifically marzipan/arm-based macs, the timeline sort of all sort of point to 2019. Let’s say the rumors are true that marzipan isn’t coming this year, but it’s coming next year that’s 2019.
ARM macs starting in 2020 so maybe an announcement in 2019 wouldn’t be the worst thing so developers can start preparing for the transition. That’s going to be a pretty busy WWDC that year and if that means we get a Snow Leopard year this year, fine. There’s been a lot of software quality rumors, software quality complaints going around certainly in the last 12 months. So maybe that wouldn’t be the worst thing if Apple just sort of took their foot off the gas in terms of new impressive features and just double down on quality and just kind of chilled out a little bit on the new features. Probably some people will complain, but then you can’t please all the people all the time
No not at all. I mean I’d be happy from a development perspective just to sort of see kind of the further rounding out of the transition to Swift. You know certain parts of the the SDK and the old API kind of being updated just that bit further. I mean there are still sort of NZ this and NS that kind of objects that we refer to. It’s not that they’re bad things to work with there’s a lot known territory with things like you know for example NSAttributedString and it’s a known quantity, and that’s great. But I still kind of feel with some of these things that they could be tweaked that bit further to sort of be better for programming Swift with. If this is a year that we get loads of those sort of things coming in, nstead of like ‘oh it’s brand new features, it’s this, we’re going over here now everybody jump aboard!’, you know then a that would be a place to be. A sort of clearing house and a kind of getting everything as neat as possible I guess before a big transition that would make sense too
Yeah I mean marzipan and all the ARM-based mac rumors, they’re both going to be big deals I think. So yeah a year kind of get your house in order might not be the worst thing, because if marzipan is going to be this kind of declarative UI framework it’s going to shake things up quite a lot isn’t it?
I mean I still sort of feel today like there are some quite big gaps really in terms of how UI is designed for iOS. I sort of feel like well storyboardsand Xibs and interface builder that gives me one way of working with things, but then it’s totally possible to describe things programmatically and that’s that’s almost a completely different paradigm after a point. And yet the two are working on the same objects, the same components, and sort of switching gears between those two different sort of types of approaches to UI design is quite a clunky thing
Yeah, yeah… So at PaperKite we program UI using SnapKit and do everything programmatically and that just reaps a lot of benefits for us as a company and as a team. So I’ve kind of transitioned over the last ten months or so, to completely doing everything programmatic and with SnapKit as a library to sort of make constraint declaration easier that’s quite cool. It gives you lots of benefits in terms of when you’re using version control. I don’t know if you know this but like version control and storyboards they don’t really get on, because the the hashes and things like that are describing the objects within the storyboard themselves, they can change just by sort of tweaking and editing something and hitting save, and you get a completely different version of the storyboard file. When you’re working on a team and one person updates one bit, one person updates another bit, and you’re in separate branches and then you try and like merge the two together you get conflicts you just can’t resolve
Yeah, it’s a mess. So from that perspective, everything I do outside of PaperKite I’ve started to do programmatically as well so some of my personal projects are kind of going that way because that just makes my my mental gear shift less far away really y’know
But I had an idea for something I wanted to make, a piece of UI that mimics something that the App Store does in terms of like you’ve got an image at the top of the screen, and it’s in a ScrollView essentially, it’s part of a ScrollView presented piece of content. You’ve got a vertical flow going on so everything sort of lays out below this image and can go off the bottom of the screen so you can scroll down. As you do so the the image itself kind of follows your scrolling movements, the image gets a little bit bigger it sort tweaks up to the size and zooms out a little bit, and then as you scroll the other way it kind of hits a lower limit and then scrolls up and off the off the page. I don’t know if that kind of describes it very well verbally but but anyway …
OK so, doing something like that straight off bat programmatically for me is still quite hard. There’s a lot to think about there I’ve got to lay things out, draw things out on paper even, and kind of figure out well okay I want this to do that that to that so that means this is got to be here and here, and then I can kind of go off and encode it. But it’ll take a few go-rounds of develop-it/run it/check it, this thing doesn’t work tweak this bit go back again, and just the sheer hell of it I thought well okay let’s let’s boot it up a blank project open up the storyboards and just do it in interface builder. let’s let’s see if I can you know make make the constraints work that way. And I did! You know this it was absolutely not beyond me to do, and the idea just sort of flowed straight out of my head and straight onto the screen. Within like 20 minutes I was bouncing this thing around on my phone and going ‘oh this looks really cool’, and so I had that kind of moment with it of like well that was really quick. I could still have got there programmatically that’s not the issue, you know the same knowledge that I have the same kind of idea that I had to do it in interface builder I could have done with code, but I was aware that it probably would have taken me a little bit longer and perhaps a couple more iterations to get everything spot-on. So that led me to thinking what I’d really love is just being able to lay it out in interface builder and then you know like right click and it just turns it into SnapKit based constraints or something, you know that I could then go and tweak and change or do whatever. I really wish it was that easy to sort of swap between the sort of two ways of working with constraints and UI and setup and at the moment it just isn’t so
Almost like when you’re dealing with like a plist in the GUI that they give you, but then you can quickly switch into XML. You can sort of like quickly switch from all the nice drop-downs and the plus buttons and then back again that kind of thing and you can switch into code
Yeah, exactly. So I wish interface builder and storyboards and all of that was that easy. I mean one thing I need to call out here is storyboards as they are today give you a view of view controllers that is very much based on the storyboard is managing the flow as well as it’s managing the UI, you know so you’ve got your your root view controller and it is a navigation controller or whatever you want to make the top level one be. And then you add your content to that, and everything sort of flows from there. Potentially you can offload to another storyboard, that’s something you can do as well, but the interface builder document itself the storyboard is defining the flow as well as the UI, and I don’t think that’s something I would would ever really trust to a storyboard again because I quite like defining my flow between my viewcontrollers via code. You know these days I use things like coordinator patterns to sort of do the the linkage between different view controllers. So I really am specifically just after that thing that sort of lets me design the constraints and design the UI itself for the view, but I don’t want any of the rest I don’t care about the the flow or that side of stuff I’m quite happy to do that programmatically. So yeah I guess actually this sort of update to the marzipan rumor and this is kind of view of the declarative control API if that is really what’s going on, for me that could be the thing that I’m after you know?
It could be the thing that I’m after you know. Yeah, I mean if it could just be as easy as you you write something in code and then you right click and it opens up an interface builder or sort of vice versa I’d be very happy you know I mean I don’t mind if we lose like like I say the flow the storyboards presents all that there’s some other way of kind of stitching together these these view documents in so that sort of flow you know maybe you can still drag drag and drop them into into interface spilled or something like that but it’s that being able to go from one view to the other so from the programmatic to the visualization and vice-versa that would be so powerful and this is the thing that I think is really missing
I think it does make a lot of sense, now the more I’ve been mulling over this some kind of declarative approach. Because to me when I think about iOS, and Mac OS there’s a very stark contrast between the two of them. So using like what we have now which I guess you could call an imperative approach you tell the system exactly how you want everything to be and it goes and does it, with Mac OS being so fundamentally different in its approach when you sort of contrast it with iOS. Initially when I heard about marzipan I thought oh cool I can just make a Mac version of my iOS app and it won’t be too much work. But when you actually think about it in detail the thought of making a cross-platform app with the tools we currently have, when I started to kind of flash the idea in my head. It’s like wow that’s going to give me quite a lot of work, just because the two systems are so so different. When you think about iOS the input method it’s designed for is designed to be imprecise you’ve got these kind of you know big fat fingers that are put on the screen, Whereas the Mac has a pointer which is very precise and that can support things like hover state, and iOS doesn’t do that. An iOS device is for the most part, compared to like big iMacs and big Mac books, quite limited in their screen real estate. They need to have big tap targets, the Mac doesn’t, so I think about having to accommodate all of this with the tools we currently have, that makes the prospect of writing a cross-platform app quite daunting. Now if you start thinking about it in terms of a declarative approach, you’re in more of a situation where you’re describing what you want the UI to be and then the system goes off and creates it. Which made me wonder if that solution were to be in place in the form of marzipan, whatever that ends up being, potentially that could give Apple the ability to kind of take away a lot of that heavy lifting from us as developers at a framework level by doing a lot of the legwork for us by kind of creating a UI that’s suitable for each platform based on the description we’ve given it if I’m making sense?
So I wonder if it could you know what in a way, abstract a lot of the fundamental differences away between the systems between Mac OS and iOS from us as developers. To kind of make it easier to make an app that can span both platforms which are at their core very very different platforms. Which, I think could be quite a cool solution as long as obviously we can still get under the hood and tweak stuff and provide stuff where we want to. Because it might be you know, apples kind of default behavior… take a table view, a collection view as an example you kind of say I would like a table view and it goes off and makes an iOS flavor of it and it goes off and makes a Mac flavor of it. But then if when it comes to the Mac we want to make it different in a way, override stuff as developers we can kind of get in
I think you totally want that kind of level of fine-tuning, because I could immediately sort of see, well if you want a specific sort of design or whatever then you’re gonna need something that lets you go that next level down and sort of starts, say well actually we want to specify this to behave in this way on this platform, or you know we want the colors in this position to be a certain way, or whatever it is. I can sort of think that the sort fancy of designs that some applications have we would really need that sort of level of control
I can imagine a few people being kind of worried you know, okay well if Apple is going to be dictating all of this does that mean that we can’t sort of make beautiful designs anymore, you know, we’ve got to work within their constraints quite a lot? I don’t think that’ll be the case. I think they’ll find the balance if this is something that’s coming through, and I guess maybe actually that we will see some of beginnings of this this year and maybe that those beginnings are actually about getting people in that kind of headspace that they’re going to need to be. Sort of thinking about how they bring their designs across, you know because that’s probably part of the biggest kind of knock-on effect of this sort of thing. It’s not just about developers, it’s not just about how you’re going to program it and wire it up. Its about the building blocks and the the creative tools themselves that designers are going to have available to them as well for designing our UIs and all of that because that’s such a big deal now
They’re kind of like, come on guys, like nudging us in this direction, like ‘this is the way you’re gonna need to go we can’t tell you why yet’, you know obviously they’re not gonna tell you about the new big phones but you know nudge nudge nudge and then eventually the big phones come out. ‘Oh right of course, now we get it!’ so yeah I wouldn’t be surprised if we see updates to Xcode or interface builder or all that kind of stuff, that while it doesn’t necessarily confirm the existence of our marizpan whatever is we could get some very very strong clues this year if we don’t get the full-blown announcement
Okay we’ll call that a wrap, if you’ve enjoyed today’s show it’d be great if you could leave us a review on iTunes or if you could and leave us a recommendation in Overcast by hitting that star button that will help us reach even more like-minded people. Also we have our Slack channel we’d love to invite you to join, our hope is it can be a really great place for fellow developers to come and hang, out if you’d like to join just leave us a message on twitter @ WFRPodcast and we’ll get you signed up. So, Dave before we run off, where can people find you?