Since 2006, Jonathan “Wolf” Rentzsch has organised the popular and successful C4 developer conference for independent Mac software developers. In a blog post published yesterday, Rentzsch announced that due to Apple’s infamous section 3.3.1 in the iPhone developer agreement, the C4 conference will not return this year.
In his blog post, Rentzsch explains that as a developer, he wants to write the best possible software. From the top-down, he wants his software to be exceptionally easy to use. From the bottom-up, however, he craves better tools to build software. While he found a lot of people in the Mac community who cared about the top-down aspect of software development, he found that the bottom-up part got neglected.
“C4 was billed as a Mac indie conference, but at its core C4 was a computer science conference,” he explains, “I believed the best way to move software forward was to inform Apple programmers about better ways to build software – to infect the best top-downer minds with fertile discontent. My hope was that developers would care primarily about user experience yet also be passionate about utilizing lingual and tooling advances. C4 was my attempt to push on the Apple community from the bottom-up.”
He takes the lack of outcry over section 3.3.1 as meaning C4 did not have the impact he had hoped for. “With resistance to Section 3.3.1 so scattershot and meek, it’s become clear that I haven’t made the impact I wanted with C4,” he writes, “It’s also clear my interests and the Apple programming community’s interests are farther apart than I had hoped.”
While his frustration is certainly understandable, it’s also a bit weird. C4 has always been a Mac developers’ conference, and as Brent Simmons, C4 regular, notes, there’s no App Store on the Mac and no ridiculous restrictions from Cupertino. “C4 began as a Mac conference, and it could remain a Mac conference,” Simmons notes, “I’ve been to every single one, and I’d love to go again. They’ve been hugely valuable to me.”
This is really sad news for those who attended C4, those who loved to organise it, and those who learned something valuable from it.
At some point or another, a programmer will have to decide if she wants to develop a library herself and spend her time debugging it or acquiring an already tested library that is freely available or by buying one.
Section 3.3.1 of Apple SDK will force all programmers to develop their own libraries wasting a lot of resources making creation of complicated applications unnecessarily difficult.
Apple fans may chear apple banning any application using intermediate libraries because they dont like flash but this move has unintended consequences and it will hurt the sofistication of application on the app store.
I’m sorry, but this is complete bullshit. Any third party library written in C, C++ or Obj-C can be used. Based on other apps I think you can even use libraries that aren’t written in those three languages, but have bindings to them as long as the library themselves don’t make any direct Cocoa calls. Not 100% sure on this, but some apps use scripting languages internally for example.
It just prevents cross compiling tools. Writing in a language that isn’t C, C++ or Obj-C that calls the Cocoa libraries.
Edited 2010-05-13 04:03 UTC
please re-read the section, let me quote it for you:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
I understand the part in bold as meaning any use of third party library is not allowed as that will mean linking against symbols not coming from apple.
Any use of third party library that uses documented API will mean indirectly linking against apple’s documented API.
Apple does not want to loose control of their runtime and it is reasonable to assume they will not allow wide use of any third party library regardless of how it was build.
Apple first banned flash container because it is a runtime from adobe they can not control, they later modified the SDK agreement and ban adobe CS5 because it will allow developers to use API not from apple, what make you think apple will allow mass usage of any library written in objective-C not from them?
The restriction opens a lot of crazy questions, which you’d think would have easy common sense answers, but the whole thing itself is a bit crazy. So I’m not sure of anything anymore.
What is the difference between a first party library and a third party one? Just the provider??
Furthermore if all libraries not developed by apple are banned, just what is a library? Can’t I just write a gazillion functions inside a single file ?
Isn’t using the preprocessor a violation of the restriction? #defines do not define run time behaviour, but rather a separate language that is not c, c++, or objective c.
I can’t answer any of the above, because it would force me to try and make sense of a senseless restriction and my head would explode. And anyone can reply with their interpretation of it, but I still won’t believe its legit. Its like the x/0. But I do know the restriction is going to end up killing, and I do mean KILLING apple if they strictly enforce it and the trend of selling more android handsets continues.
And note the qualifying clause given as an example of what kind of libraries they are referring too. They’re not talking about things like Three20, they’re talking about things that try to make the iPhone look like some other platform, or some generic device. Things like QT, GTK, etc. Portability libraries designed to enable multi-platform development.
They want people to code for the iPhone, not something else or “everything else”.
Back in the day, a friend of mine took the Mac Toolbox, basically the bulk of Inside Mac, and wrote it as a C library so that his company could write Mac software and port it, at the source code level, to a PC. This is the kind of thing Apple is trying to avoid, someone writing a library that lets you compile, for example, Win32 code and end up with an iPhone app.
And the intent has been clear from every discussion about it including from The Steve himself.
And if Microsoft took the same stance, then the abomination that is iTunes would not be permitted to run on Windows.
How well would that go over? And what about QuickTime and Safari. They import the OSX look-n-feel into Windows.
Tying the application layer to the OS layer is wrong. The OS should be irrelevant, and developers should be able to use whatever framework works best for them.
Users should be free to choose or reject those applications based on whatever works best for them.
OS makers should not be making either decision for either party.
How on earth did you reach that conclusion? Quite the logical leap…
Third-party frameworks, such as Three20 and cocos2d for iPhone, compile and directly link against the Documented APIs. MonoTouch and Flash CS5 do not. Let’s not get carried away here.
Yes they do, but the use of such libraries to access apple’s API is, indirectly using apple’s API through a third party and this indirect use is written as not being allowed.
Do you think apple will allow mass adoption of any objective-C library not coming from them?
let say i decide to write a very popular iphone specific library that only use published API that allow programmers to do “cool” things with less code, do you think apple will allow the use of my library? i guess it will depend on how popular i am or my library is ..they will definately ban it if it comes from google, or microsoft or any large organization.
Any user of my library will be using apple’s API indirectly through me, taking a bit of a control away from apple and apple wont allow it and the wording of the agreement currently doesnt allow it.
This is crazy talk. Of course people could use your hypothetical framework. What you’re proposing is basically what Three20 is.
You talk about reading this section carefully. Let’s actually do that…
“3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).”
I think you’re struggling with the second sentence. As written, the second sentence can be broken in two and keep it’s meaning:
1. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine.
2. Only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs.
Now, think about your argument again. There is NO problem with using C/C++/Objective-C frameworks in your own C/C++/Objective-C app that don’t make private API calls. You’re making too much of this.
Edited 2010-05-13 18:53 UTC
My argument says there is NO problem with using C/C++/Objective-C.
My argument says there is a problem with indirectly linking against Documented API through a third party library.
Can you make a comment about the direct/indirect linking to the API part of my argument?This is the critical part of my argument. why did you not talk about your second point?
Do you think apple will approve of mass adoption of any third party library if the library is written in apple approved languages using apple approved API with apple approved tools on an apple approved device and the library can only be used on apple approved devices?
Edited 2010-05-13 19:24 UTC
Of course. If I use Flash CS5 to build an iPhone app binary, I have indirectly linked to the Documented APIs using an unsupported language.
If I code my app in supported language and use all supported language frameworks, nothing in my project has indirectly linked to the Documented APIs. The fact that I use third-party libraries is irrelevant. As long as I and my third-party friends play by the rules, we’re all OK as a package. You’re completely misinterpreting this “direct/indirect” linking thing.
BTW, 3.3.1 says NOTHING about third-party libraries. Translation and compatibility layers are different animals.
This is not difficult to understand. And there’s no point in arguing further. This is non-issue for 99.99% of iPhone developers.
The fact that you used a third party library is critical. It means the third party library sits btw you and apple and you better hope the library doesnt get popular because apple will surely change the agreement to specifically ban it.
Apple has control issue and will ban anything that will sit btw them and developers
They banned flash containers because flash is a scriptable runtime environment they cant control.
Adobe created CS5 making their tools export to native code going around the ban on scriptable runtime and apple change the language banning it because developers will start depending on stuff not from apple.
It is all about control of the API developers target when developing for the iphone.
If third part libraries are allowed now, then their best hope of maintaining that status is for them not to get too popular and developers not to get too attached to them.
Irrelevant, really ?
“Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs”
Third-parties libraries and frameworks == private APIs.
Try again.
Wow… So if 99.99% of people in your vicinity agreed with killing your child because it screams too loud, you’d gladly bring him to them ?
Almost every single idea in the industry world originates from 1-6 guys. Far less than .01% of human population. Say that those ideas are irrelevant when they aren’t widespread *yet* basically means killing innovation completely…
Edited 2010-05-13 20:17 UTC
This is dead wrong. Private APIs are those not documented by Apple in the offical SDK documentation, hence the term “Documented APIs” you see everywhere. So long as neither you nor your third-party library make such API calls, everything is A-OK and, yes, the fact that you’re using a third-pary library is irrelevant.
Apps have been rejected because of developers using undocumented API calls for a long time now and it’s nothing new.
Edited 2010-05-13 20:25 UTC
Then what about “translation or compatibility layer or tool” ?
“Tool” is an extremely vague term. It might include hand-crafted libraries, unless Apple uses some obscure definition of it which I don’t know of.
.. there’s always the Linux conference to go to… 😉
Companies like Apple, Oracle, etc, have to realize that when they act like asses for pure business reasons, they risk demotivating people beyond the initial focus of change/problem/whatever. Eg.: iPhone’s section 3.3.1 got the C4’s organizer demotivated enough to drop the *Mac* conference.
The environment simply becomes less fun to work in and people stop caring about it.
Never heard of it before.
Sounds more like a stunt to get more attendees?
Such articles as this serve nothing.
You will never bring light to the minds of macfags, as they have their exalting faces so far up the apple logos ass that they will not see sense, unless it was the iTurd evacuated by the iGod Steve himself’s bowels of ill-logic, in a cleanly PR’d declaration of disdain.
Articles like this serve as nothing but a reminder of how doomed the human race is, every time a sheep bounces out of their corral to bleat vapid defense in the great turtle-necked profit’s honor.
Even more so, am I the only one that has noticed the count of plants that such topics attract?
I hope that I am not.
Stop wasting our time – Your’s and ours’.
Edited 2010-05-13 10:40 UTC
Don’t count on it. Apple went positively evil only very recently (this year), so I bet there will at least be *some* PR backlash. The “counterculture” appeal Apple may have had previously is to vanish soon, at least.
So you don’t count overpriced and non-standard 30-pins connectors, computer-screen bundle, and forced use of iTunes as something deeply ugly ? Imo, Apple started to look very bad around the year where Jobs came back. Too bad this company needs a leader like him to act efficiently…
Edited 2010-05-13 16:49 UTC
I don’t see why he has to victimize the developers by canceling the show just because he does not agree with some clause in an Apple document.
You could actually turn that around:
I don’t see why Apple has to victimize developers simply because they felt like adding another clause to their document.
To quote the article:
Translation: he’s disappointed in the Apple developer community, which he (probably) thought to be cooler than they turned out to be. If you put a lot of time to something you think to be a worthwhile cause and get badly disappointed, you tend to make decisions like this.
Nice to see at least someone in the Apple community has some spine left.
Seems more of an ego issue (obviously a top-down Apple influence). The reasoning to not hold the conference seems weak given that a large portion of the conference would have covered desktop applications. Does anyone know how many people attended the conference?
I’ll just quote Chris Foresman from Ars:
“Then you missed the point of what he was trying to say—his gripes are far from a tantrum, and it was Wolf’s ball to take home in the first place. Wolf “brought his ball to the playgorund,” so to speak, by organizing and running C4 largely by himself. Doing so required a large amount of passion that just wasn’t there anymore. I know he has had his doubts in the past about continuing with C4, but this latest bit was enough to tip the scales.
Effectively your criticism is nothing but meaningless whining unless you are willing to bring your own ball to the playground, and pull off what Wolf did and organize your own conference.”
http://arstechnica.com/apple/news/2010/05/c4-indie-dev-conference-a…
Sure, kudos to Wolf for organizing the conference, and it’s absolutely his right to decide what happens with the conference. But a Mac conference being called off by iPhone’s policy raises a few questions. Mac still remains a great platform to develop for.