Tuesday, August 7, 2012

A Critique of the Apple Indie Developer Community

Kenneth Ballenegger:

We have many computing devices; Macs, iPhones, and iPads, and we want to be able to pick up any of them and have access to our data. They need to sync instantly and effortlessly. This means that they require a backend web software component. This means running and maintaining servers. Writing code in a foreign programming language and dealing with a wholly new class of problems. (How do you scale your backend software? Which language / platform / framework do you use? At which point do you re-architect for a distributed system? Wait, this shit runs on Linux?)

This is one thing that, from an outside perspective, Microsoft seems to have done rather well. For more than ten years, it’s been shipping a unified framework (.NET) and language (C#) for Web and desktop programming. NeXT had WebObjects/EOF and Objective-C, then it moved WebObjects to Java and added the Cocoa-Java bridge on the desktop, and we know how that went.

2 Comments RSS · Twitter

Until maybe five years ago, Microsoft didn't do this well except entirely by accident. C# (and by C# I mean C#/VB) is the language of choice for web development using their tools and they don't have any concurrent competing solutions. What they do have are sub frameworks in ASP.NET: the horrible Web Forms that imagines that the web is just like a desktop computer (which is actually exactly the idea of WebObjects), the in fact very nice although not completely spotless ASP.NET MVC which is basically Rails with types, hold the data layer, ASP.NET Web API which handles small conventional REST services and now Web Pages which is some sort of PHP equivalent although without the horror of that particular language and that particular environment.

C# is available for desktop programming and it's what I use when I write Windows desktop programs, but here it's in classic Microsoft land: a sea of new acronyms every few years where nothing gets deprecated and there are C++ and C alternatives and nothing quite lines up for a comparison (except now Metro).

I am actually fine working with Objective-C for the app and C# or Ruby for the server. I would say that it's a happy confluence that some people can write all ends of their app ecosystem in the same language, not that it should be a goal for all languages. C# with Microsoft, Java with Oracle, C with being the lingua franca and maybe JavaScript now with node.js can pull it off, but I'd rather people like in the article would learn both to understand the web and to seek out new languages and environments that they can be productive in even if they're not the same as their primary platform.

This nicely echoes Jonathan Rentzsch’s lament when he released C4 that developers in the Apple world are paying too little attention to languages and tooling.

Leave a Comment