Apple forbids Python on the iPhone/iPad

Panda3D Forum Index -> General Discussion Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
drwr


Posts: 8004
Location: Glendale, CA

PostPosted: Fri Apr 09, 2010 8:00 pm    Post subject: Apple forbids Python on the iPhone/iPad Reply with quote
If you've been following the latest Apple chatter on the blogosphere, you've surely seen this:

http://www.appleinsider.com/articles/10/04/08/apples_iphone_4_sdk_license_bans_flash_java_mono_apps.html

This surprising new restriction not only definitively bars Flash apps, compiled or otherwise, from appearing on the iPhone/iPad, it will also disallow Panda apps written in Python. I suppose C++ Panda apps are still tolerated, but good grief.

This specific restriction on the language a developer is allowed to use is outrageous. Time will tell if this restriction holds up. Sad

David
castironpi


Posts: 247

PostPosted: Sat Apr 10, 2010 12:31 am    Post subject: Reply with quote
By my reading, the prior verision prohibited this too, by the "private APIs" clause.

Original, according to the link:
Quote:
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.


You could "macro" a Python program entirely into C, but the "original" would still be in Python.

I observe they make no attempt to enforce it with the machine, only the law.

Why would you want to be a control freak?
Mindblighter


Posts: 69
Location: Finland

PostPosted: Sat Apr 10, 2010 1:24 am    Post subject: Reply with quote
This is actually pretty typical Apple behavior. They're attempting to stomp multiplatform developing so that devs will have to make their apps for iPhone alone and this maneuver is just about the closest to that goal they can get. Sad, but not surprising Crying or Very sad
castironpi


Posts: 247

PostPosted: Sat Apr 10, 2010 1:43 am    Post subject: Reply with quote
I would think that behavior would be so unattractive that they would lose all their customers. Why would you develop for Apple when you could develop for *everything else*? Sunken costs, people, come!
texugo


Posts: 142

PostPosted: Sat Apr 10, 2010 1:53 am    Post subject: Reply with quote
Jobbs take some lessons of management with Gates? Laughing
rdb
pro-rsoft

Posts: 5836
Location: Netherlands

PostPosted: Sat Apr 10, 2010 6:27 am    Post subject: Reply with quote
Does this also apply to frozen Python applications? Technically, that doesn't contain actual Python code, just CPython bytecode.
treeform


Posts: 2027
Location: Seattle

PostPosted: Sat Apr 10, 2010 7:42 am    Post subject: Reply with quote
I think this turns into an interesting human/non human thing.

So I write a game in python. Then have rdb translate it to C++ on the iphone. I guess thats ok? Why? But what if we replace rdb with freeze? Now thats not ok?

I think so, I would argue that rule actually bars all apps even the ones written in C,C++,ObjC,Js.

Say I write an app in the shower. I don't have the source but the idea and how the data structures look like and UX. The I translate this "mind app" to either c,c++,ObjC or JS. I use the editor, debuggers (just like i used freeze before). I cant use it on the iphone os 4.0.

I don't think i can write iphone apps because i cant dream in objectiveC.


Needless to say i am not buying any thing apple again.
_________________
Panda3d IRC irc://irc.freenode.net/panda3d | BUGs https://bugs.launchpad.net/panda3d
My MMORTS game: http://aff2aw.com
GitHub: http://github.com/treeform | Twitter: http://twitter.com/treeform
castironpi


Posts: 247

PostPosted: Sat Apr 10, 2010 8:15 am    Post subject: Reply with quote
No treeform, your shower app is still OK; it is still "originally written" in C++/etc; even though it did exist in human thought prior.

But your rdb translation is not.

However, if someone else wrote it before you in a forbidden language, then it was "originally written" in *that*, so then it's not OK again.

However, you *might* argue that its original "form" was human thought, *not written*, so therefore it is not originally written *at all*. This may have been treeform's shower example's point, I couldn't tell.

Does "originally written in C" mean:
    - In C in its original form, or
    - In C in its first-ever written form
?

New version:
Quote:
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).


Incidentally, your JavaScript can't compile and directly link against the Document APIs. And I think "ever again" is a little harsh; 10 years down the line Apple could get religion and be ok again.... that is, *lose* religion.
drwr


Posts: 8004
Location: Glendale, CA

PostPosted: Sat Apr 10, 2010 9:56 am    Post subject: Reply with quote
castironpi wrote:
By my reading, the prior verision prohibited this too, by the "private APIs" clause.

The traditional reading of the "private API's" clause is that it refers to private, undocumented API's within Apple's libraries, not to third-party software that is linked in. The first developers on the iPhone were hackers who discovered and advertised all sorts of undocumented API's that Apple would prefer people didn't use.

Up until this latest license revision, it has always been an option to ship Python code by bundling it all up within a self-contained application that can be compiled by Xcode--this is, after all, how Adobe had been planning to work around the Flash restriction. Until now.

rdb wrote:
Does this also apply to frozen Python applications? Technically, that doesn't contain actual Python code, just CPython bytecode.

Clearly the clause does apply to frozen Python applications, because the clause is not restricting the form of the code, but its origin. Only applications that are "originally written" in C, C++, or Objective-C are allowed.

treeform and castironpi bring up the excellent philosophical objections to this overly broad restriction. We could argue for days over precisely what constitutes "originally written". But none of this matters, because this definition won't get tested in a court of law: Apple is the sole dictator over what software is released in the app store, and they get to decide whether your software was "originally written" in one of their approved languages or not.

Whether you can hope to slip one over on them and translate Python code into C/C++ anyway, to be compiled by Xcode, is also kind of beside the point. This activity is expressly forbidden, and even if they couldn't detect it, on some level it's not legitimate, and we therefore couldn't advertise that we had a solution for delivering Python applications on the iPhone.

castironpi wrote:
I would think that behavior would be so unattractive that they would lose all their customers. Why would you develop for Apple when you could develop for *everything else*? Sunken costs, people, come!

Apple is taking the double-or-nothing gamble: they are forcing developers to develop either only for the iPhone, or only for everything else. They are hoping that they have enough mindshare in this space by now that most developers will decide it's better to sit on the iPhone side of the fence.

It's exactly the gamble that worked out so well for Microsoft in the 90's. And I fear that Apple might be right, and it will work out for them too, as evil as it is.

David
croxis


Posts: 322
Location: Portland, OR

PostPosted: Sat Apr 10, 2010 10:10 am    Post subject: Reply with quote
And people thought Microsoft was a bad, evil monopoly. Apple is sometimes even worse.
_________________
David - Proud to be saving the world sense 1984
skeptic


Posts: 47

PostPosted: Sat Apr 10, 2010 10:17 am    Post subject: Reply with quote
I wasn't going to say this for fear of heading in an offensive anti-apple direction.. But this is my biggest reason for thinking Android phones > iPhones. Not python specifically, but the general closed vs open mindset.

It does bring up a question I've been wondering about. Do current smart phones, ie the Droid/iPhone, have enough power and resources to run smallish panda3d apps?
ThomasEgi


Posts: 1811
Location: Germany,Koblenz

PostPosted: Sat Apr 10, 2010 10:25 am    Post subject: Reply with quote
most modern smartphone processors have enough processing power to run an entire desktop OS. their 3d-acceleration might not be compareable to a modern gforce. but it's still good enough to run a wide range of games. the tegra chips which are now starting to find their way into those devices are especially intresting.
_________________
rig: dell inspiron 1720; ubuntu 9.10_64 ;panda 1.7.0
may a catgirl be with you. nyaan nyan~~ ^.^
castironpi


Posts: 247

PostPosted: Sat Apr 10, 2010 10:46 am    Post subject: Reply with quote
What are Apple's motives?

Microsoft lets you write "other programs", programs in other languages or with other APIs, for computers its OS runs on.

Apple does too.

Just not its phones. So why phones?

Also: Can you link with someone else's library, if they're both in C? Would that count as an "other API"? Or does all your code have to be your own?

It reminds me of the movies, where the pet has to choose between the boy and his master.

Lastly, I believe your code can also be in JavaScript, it just can't directly link against the Documented APIs.

We, the consumers, are a party to every sale Apple makes. So why do we keep them in business, if they act like this? If you could put one company out of business first, would it be MS or Apple?

Quote:
Apple is the sole dictator.


Then why is there a EULA at all, or whatever it is?
Gogg


Posts: 427

PostPosted: Sat Apr 10, 2010 12:48 pm    Post subject: Reply with quote
Just in case I can shed some light on this... I happen to be in the iphone developer program. After reading their docs and fighting my way in the community forums for quite some time I'm very familiar with their line of thought. They have always been obsessed with memory usage. That's why they didn't allow multitasking in the first place, so that the user doesn't have dozens of apps running in the background. That way he/she only has one, and when you switch app, you free all the memory allocation cause the app dies.

So I'm pretty sure they are banning python now because they are gonna enable multitasking, and they probably don't want scripted languages because they are associated with a bigger memory footprint. RAM has always been an obsession for them. I still think it's silly but I bet this is the reason. Other reason could be security, a full interpreter running on the machine means millions of lines of code relying on private apis, it's much more harder to secure the platform to prevent heap/buffer overflows leading to jailbreak this way. Also, maybe to overcome their fears of multitasking leading to freezes, they are gonna have some advanced memory management system with priority, scheduling, quotas, or something like that, and this would only be enforceable if nobody is using private apis (and if you use python you are using private apis indirectly).

Also, while I'm pretty sure one of these three (or several of them) are the technical justification, nobody can say if it's a genuine move or if they are just using it as an excuse to suppress other languages and consolidate their toolchain (or both.) Just like the technical justification for no multitasking is to prevent memory exhaustion, but it could just be so that nobody implements a skype daemon that can permanently be listening for incoming calls, etc.
_________________
My Panda3D stuff: http://gogg.p3dp.com/
drwr


Posts: 8004
Location: Glendale, CA

PostPosted: Sat Apr 10, 2010 9:04 pm    Post subject: Reply with quote
I don't buy that. If resource utilization (memory or otherwise) were the issue, that wouldn't preclude the use of any particular language. Sure, you could argue that some languages are less resource-efficient than others, on average; but that has nothing to do with whether any one particular application is sufficiently resource-efficient.

If Apple were only worried that no apps exceeded a certain memory usage, they would make that the restriction, not the language the app was written in.

Also, security doesn't make sense as an argument either. We're talking about userspace apps here. What difference does it make from a security standpoint if a portion of the code in my application happens to implement a Python interpreter? From Apple's point of view, it's all foreign code, whether I wrote it or Guido did. Python doesn't have access to any part of the OS that my own Objective-C code doesn't.

Similarly, I've heard (many) people argue that the motivation is to ensure a certain minimum quality for iPhone apps. Again, this doesn't make sense: although it might be arguably true that the average Flash-developed game (for instance) is of lower quality than the average custom-developed game, it's unreasonable to assert that all Flash-developed games are of insufficient quality to allow on the iPhone. If individual app quality were the issue, they would simply require a minimum level of quality on a per-app basis (and, in fact, they already do this, as many a frustrated developer can attest).

Also, remember that this license restriction is not a technical restriction: it doesn't say anything about the nature of the resulting code. All it restricts is the app's original language, regardless of any post-processing or language translation that might have been applied to produce the final result. As treeform and castironpi argued above, the "original language" isn't even possible to quantify technically.

I can see no rational technical explanation for this license change. But it is perfectly reasonable from a business point of view, as an attempt to dominate the market.

David
castironpi


Posts: 247

PostPosted: Sat Apr 10, 2010 9:27 pm    Post subject: Reply with quote
-1 new license.
-1 proposed explanations.
-.5 good business*

In games of iterated cooperation and dominance, when the length of the game is known, it makes sense to defect on the last move, and therefore the second-to-last. In our intuition, this isn't transitive to the first move, but the expected best move deteriorates.

When the length is not known, e.g. the game has a fraction chance of ending each turn, the asymptotes do not deteriorate.

-1 Apple's outlook-- they are thinking too short-term, too mortal.
-1 Doing business companies with bad outlooks.
Bradamante


Posts: 194
Location: Germany

PostPosted: Mon Apr 12, 2010 9:57 am    Post subject: Reply with quote
They want to restrict developers to the iPhone SDK instead of making Flash CS5 a valid alternative programing platform. And Adobe deserves punishment. Their application bundling policy for example. Taking ages for bringing their apps to Cocoa. Apple-Adobe relations have been better, but long gone is the DTP niche Apple felt comfortable in for way too long. Over are the days where whenever Apple introduced new hardware some Adobe exec had to endorse it. Flash has done a lot for Adobe, what did Adobe do for Flash? Flash on OS X is slow, instable and insecure. YouTube 1080p videos are unwatchable right now. 90+% of crashes on OS X are Flash-related. Flash in general and Flash/JavaScript (browser)games are the scourge of the internet. So I perfectly understand Apple if they don't want Flash on the iPhone or the iPad.

I mean c'mon, did you really think iPhone development was to become a marketing power horse for Panda? And for every little sensor change in the iPhone you update Panda? Which by the way is the same argument that people make regarding Flash.
I always thought that web deployment and a development tool suite are far more important. Sure it's sad to see some development effort wasted, but its obvious that this new regulation will not last long. Similar nonsense was brought down sooner or later in the past. They just brought up this wording to exclude Adobe and then they will figure out something more precise.

And oh look how Apple is bashed for this. Nobody blames Microsoft, Sony or Nintendo for dictating their development process. What's the implication here? Sony sucks because you can't deploy a Panda app on a PSP?
_________________
iMac (early 2009), Mac OS X.5.6
http://www.filefront.com/user/Bradamante
Gogg


Posts: 427

PostPosted: Tue Apr 13, 2010 10:10 am    Post subject: Reply with quote
Bradamante wrote:
And oh look how Apple is bashed for this. Nobody blames Microsoft, Sony or Nintendo for dictating their development process. What's the implication here? Sony sucks because you can't deploy a Panda app on a PSP?


I'm pretty sure you can use Panda in at least the xbox and the psp. I don't know about the wii. But maybe you know something that I don't, what do you mean exactly? And are you talking of Python or of Panda?

And while we are at it, are we assuming that this new restriction bans Panda/C++ on the iPhone? Cause I was assuming it doesn't.
_________________
My Panda3D stuff: http://gogg.p3dp.com/
drwr


Posts: 8004
Location: Glendale, CA

PostPosted: Tue Apr 13, 2010 11:53 am    Post subject: Reply with quote
Right, I'm also assuming it doesn't restrict Panda/C++ development. Though it's not 100% clear.

David
tallmystcarpet


Posts: 216

PostPosted: Wed Apr 14, 2010 3:26 am    Post subject: Reply with quote
Bradamante wrote:
And oh look how Apple is bashed for this. Nobody blames Microsoft, Sony or Nintendo for dictating their development process. What's the implication here? Sony sucks because you can't deploy a Panda app on a PSP?
Nicely said!

As a bad consumer, I do buy stuff because I need them and not because they are tendance of the day. Hoping that Apple's restrictions will disappear when a new "goldBoxGenerator" will be discovered, I'm still proud of my Imac for my artistic's projects as I'm proud of my android for phone stuffs....

On the other hand, this license may be adapted if all Iphone users must jailbreak their toy to access a great tool/soft or game which is a must in tomorrow's tendance.
Anon


Posts: 642

PostPosted: Wed Apr 14, 2010 4:11 am    Post subject: Reply with quote
Bradamante wrote:
And oh look how Apple is bashed for this. Nobody blames Microsoft, Sony or Nintendo for dictating their development process.

They give you features a,b,c,d and then remove all except a.
I don't own or am interested in developing for that device, but 'bashing' in this case I can perfectly understand. If microsoft or sony did something similar, we would think the same way, what makes you think the opposite?
castironpi


Posts: 247

PostPosted: Wed Apr 14, 2010 4:19 am    Post subject: Reply with quote
The Windows 7 EULA reads,

"Thou shalt not have any browser before Internet Explorer."
Bradamante


Posts: 194
Location: Germany

PostPosted: Wed Apr 14, 2010 8:15 pm    Post subject: Reply with quote
Gogg wrote:

I'm pretty sure you can use Panda in at least the xbox and the psp. I don't know about the wii. But maybe you know something that I don't, what do you mean exactly? And are you talking of Python or of Panda?


OK, there I was looking more informed than I am. I am not familar with the technical issues. What I am aiming at was 1) on a homebrew PSP, jailbroken iPhone or whatever platform thing might work, but that's a hobby, not a market; 2) thanks to approval processes, fees and dev kits and all that developers on all kind of platforms are restricted to certain paths.

drwr wrote:
Right, I'm also assuming it doesn't restrict Panda/C++ development. Though it's not 100% clear.

David


I am very sure that Apple is aware they're hitting the wrong people and that they're working on a new wording. Couldn't the people behind Panda, Unity or Torque - who are at least affected by the ambiguity created - write a letter to Apple about this? Apple cares about games on the platforms (ok, this argument also goes for Flash development) and also about education. With Carnegie Mellon ETC on that letter you got both.

Anon wrote:
They give you features a,b,c,d and then remove all except a.
I don't own or am interested in developing for that device, but 'bashing' in this case I can perfectly understand. If microsoft or sony did something similar, we would think the same way, what makes you think the opposite?


I am not sure if I understand you correctly. But I would say Apple gets special treatment for this kind of behavior.

1) People still can't stand that Apple - similar to Google - is "evil", that is, behaving capitalist in a capitalist world. It was Apple's marketing that pretended otherwise. Sure Apple's history is different, sure some people at Apple honestly care, but as a corporation in a once in a lifetime early market? No chance. 1997 is forgiven, but not forgotten.

2) For other companies you would not get that kind of backlash since people are used to Sony and Microsoft being "evil". I don't see a 360 or PS3 as an open platform, even though services like XBLA provide a low end way of deployment. And the most extreme example, people praise Nintendo for their restrictive handling of third parties, because they "understand the market", refering to their learning from the video games industry crash. I guess Nintendo is perceived the least "evil".

And I guess that the "evil" argument is besides the point in the current Apple case. In the end they didn't do it to lock Adobe out but because "user experience" is their holy grail and they feared apps coming from Flash would be sub-par. Now they're also saying it has something to do with Apples multitasking technology, so maybe in the end it's all for technical reasons.

3) I would also speculate that there's a deeper underlying hatred against anything Apple. I am a Mac user for a while now, and whenever Apple has released whatever product, it has been ridiculed to death by the (it seems) hard core Windows crowd. I could run down history about this to no end. More recently, when the iPhone was originally announced it was laughed upon for not allowing real app development, just web-based apps. When the SDK came some made the argument, that developers would not learn Objective-C to program on a over-priced, small user numbers platform. I would argue that Apple customers do not show that kind of aggression. When Vista came out the harshest criticism it had came from XP users. I mean Apples own "Get A Mac" comparison marketing was relatively friendly, same for anti-Zune reactions.
_________________
iMac (early 2009), Mac OS X.5.6
http://www.filefront.com/user/Bradamante
hobbit


Posts: 79
Location: USA

PostPosted: Wed Apr 14, 2010 9:17 pm    Post subject: Reply with quote
I am not so happy that Apple has decided that python is not acceptable to program with, but I can always learn yet another language and use it. I am concerned about what it says about having to have it originally created on one of the pre-approved languages.
Quote:
.... Applications must be originally written in Objective-C, C, C++, or JavaScript..


If I am reading this right this means that I can't port anything I made in python to one of the pre-approved languages, or am I wrong?

Is any one looking into seeing if panda with C++ can be used? I would really like to do some iphone dev using a game engine I already know.
Gogg


Posts: 427

PostPosted: Wed Apr 14, 2010 11:33 pm    Post subject: Reply with quote
David, if you aren't already on it, could Disney somehow get confirmation from Apple on Panda/C++'s legality? I don't think it would be hard considering the relationship, though it may take time for Apple to make their mind on this. (I'm pretty sure they didn't have 3d engines in mind when making this policy, these don't have standard GUI elements and the "usability" justification doesn't apply.)

In the meantime, I'm pretty sure that it's allowed:

This is the controversial clause:

Code:

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).


Panda/C++ is not:
- An "intermediary translation layer", since there's only one compilation step to produce the final output. "Compilation" here including any form of lexical or semantic analysis of instructions in order to translate them to another form of code.
- A "compatibility layer". A panda app has no practical use other than being a Panda app, so there's no compatibility goal to achieve, like say: getting a pre-existing standalone flash app to run on the iPhone. The difference is subtle, so to clarify: in the flash case you would be making an app that used to run on browsers compatible with the iPhone application environment. On the other hand Panda intrinsically supports any ARM platform by its own nature.
- A "tool". Again, everything is built once, so no tools involved, in the traditional sense of "tool".

But those are exempli gratia so let's look at the broad requirements:

- "Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine." A Panda/C++ app fulfills "written in C++", so check.

- "Only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs." Both Panda and the application code are written in C++, so check.

So personally, I'm positive Panda/C++ is in the clear. However, I would like very much to have official confirmation like others.
_________________
My Panda3D stuff: http://gogg.p3dp.com/
Anon


Posts: 642

PostPosted: Thu Apr 15, 2010 4:55 am    Post subject: Reply with quote
Bradamante wrote:
Apple gets special treatment for this kind of behavior.

I don't see it Confused
Display posts from previous:   
Post new topic   Reply to topic    Panda3D Forum Index -> General Discussion All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group