So Apple just dumped an amazing amount of new technologies on the iOS and Mac developer community. Heads were spinning and jaws were being picked up off the floor around the world as Apple proved they were innovating like never before, and if you read between the lines, laying the foundation for what appears to be an amazing lineup of new hardware later this year.
The sheer amount of new technologies, SDK’s and API’s was astounding, but the main point of interest for us was Apple’s introduction of runtime view inspection in to Xcode 6. That obviously has implications for our product Reveal and the Twitter-verse was abuzz with mentions of Reveal being ‘Sherlocked’ along with about a dozen other companies and technologies. But before I share my thoughts on Apple’s latest addition to Xcode, I’d like to fill you in on how Reveal came to be.
In 2011 on the way over to WWDC, Oliver and I started talking about runtime inspection of applications and the dynamic nature of the Objective-C runtime. We lamented the fact that games developers had such great tooling and pipelines for rapid iteration while we were still stuck in the change-compile-run workflow that’s been around for decades. There were some opensource tools that hinted at the possibilities but didn’t have the depth or polish we wanted in our own tools. We could see opportunities for making our own development workflow better and for improving the interactions between designers and developers. That led us to focus on runtime view hierarchy inspection but our vision was much more broad.
What you see today in Reveal is really just the tip of the iceberg. We had to deliver a solid foundation, and although we narrowed the scope considerably to get Reveal to market, we never compromised on quality or features we thought were necessary to make it a truly professional tool. These include the ability to collapse the view hierarchy in the outline and canvas, drilling down to see just one part of the hierarchy, accurate rendering of the hierarchy, no (or limited) side effects of linking your application with the Reveal library, navigation keyboard shortcuts, comprehensive inspectors, undo/redo and all the other polish expected of professionally developed and supported Mac OSX applications. It was clear to us from the start that basic view inspection would become commoditised, but as is always the case, it would be the care and attention to detail that elevates one product above the rest.
So that brings us to Apple’s introduction of runtime view hierarchy inspection in Xcode 6. On first inspection the similarities are obvious. Scratch the surface and you’ll find it’s much more limited. In fact the way it’s been implemented you have to pause the application in the debugger to take the snapshot and it’s read-only, meaning you can’t change anything in the view hierarchy to see it update dynamically. This is worlds apart from what Apple demonstrated with Playgrounds, which is much more in line with our thinking.
I won’t go in to a blow-by-blow comparison in this post since it might be deemed a review by Apple, suffice to say we have a test suite we use to make sure Reveal deals with all sorts of scenarios and Apple’s inspector fails at many of them. What they’ve delivered in this first version is basic and rough, but it is a beta and we expect them to fix the bugs over time. Will they invest the time, effort and resources needed to create the best runtime view hierarchy inspection tool on the market? I doubt it, and I’m literally putting my money where my mouth is.
The reality is that if we all stood back and waited for Apple to innovate we’d be beholden to their way of thinking, project schedules and priorities. Companies like JetBrains and Xamarin have shown that alternative commercial development tools can succeed despite Apple’s toolchain monoculture.
If you were impressed by what you saw from Apple and haven’t tried Reveal I’d encourage you to download it and try it out. Don’t make comparisons and assumptions based on screenshots alone. We have a 30 day trial you can download here and if you have any questions or need support, we’re available to help here.
Lastly, thank you Apple for validating that runtime view inspection is an important part of the development workflow. We’ll gladly assume the position of leader in this space.