|
|
|
| Author |
Message |
drwr
Posts: 8004 Location: Glendale, CA
 |
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.
David |
|
castironpi
Posts: 247
 |
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
 |
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  |
|
castironpi
Posts: 247
 |
| 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
 |
Jobbs take some lessons of management with Gates?  |
|
rdb pro-rsoft
Posts: 5836 Location: Netherlands
 |
| Does this also apply to frozen Python applications? Technically, that doesn't contain actual Python code, just CPython bytecode. |
|
treeform
 Posts: 2027 Location: Seattle
 |
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
 |
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
 |
| 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
 |
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
 |
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
 |
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
 |
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
 |
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
 |
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
 |
-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
 |
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
 |
| 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
 |
Right, I'm also assuming it doesn't restrict Panda/C++ development. Though it's not 100% clear.
David |
|
tallmystcarpet
 Posts: 216
 |
| 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
 |
| 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
 |
The Windows 7 EULA reads,
"Thou shalt not have any browser before Internet Explorer." |
|
Bradamante
 Posts: 194 Location: Germany
 |
| 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
 |
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
 |
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
 |
| Bradamante wrote: | | Apple gets special treatment for this kind of behavior. |
I don't see it  |
|
|
|
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
| | |