Things become much more complicated then first impression when you try to really explain something. For example I went to a football game with a group of Chinese grad students and they asked me how a team can score points. I thought to myself this is easy, and began to explain the rules.
1. Touchdowns are worth 7 points... err they are worth 6 points technically
2. After a touchdown the scoring team can decide to kick the ball through the uprights for 1 point
3. The scoring team can decide to run another regular play and if they enter the end-zone again on that 1 play they get 2 points.
4. Fields goals are 3 points and are scored when the team on offense can kick the ball through the uprights.
5. The defense can score points if they can tackle an offensive player in the end-zone while they are holding the football. The defensive team then gets 2 points and gets the ball kicked to them on the following play instead of the normal system where the scoring team kicks the ball to the other team.
6. If the defense can steal the ball and run into the end-zone they are facing then it is a touchdown and rule 2 and 3 apply.
By the end of this discussion they were more confused then when we started. So when you say how hard can it be to explain how to store a file questions like.
1. How to delete?
2. How to rename?
3. How to create folders or other organizational structures?
4. How to move items between organizational structures?
5. How to copy an item already in storage?
6. How to download multiple files?
7. Can security be set or changed?
8. Oh yeah and how to I upload a file in the first place?
The more precision you apply to a discussion the more complicated they tend to get. Just like a touchdown is 7 points is easier to understand, upload a file is easy too.
Apple wants it's products to be unique and have different capabilities compared to other companies products. In fact Apple is famous for having unique features and exploiting that fact till the competition catches up. If Apple spends tons of money making a new feature for the iPhone or iPad like a new hardware 3D accelerator and release it to their developer community, they would want to see this special ability used in the software created for their product. If a significant portion of the developer community uses Flash or a Flash translation layer to make their programs , then Apple is at the whims of Adobe if they decide to support the new feature. Adobe might say hmmm only the new iPhone ultra 2000 has the 3D accelerator system, and it would cost us money to develop for it, but the majority of phones do not have this feature we should probably just skip it. Then when consumers compare the new Android phone and the new iPhone they will say "hey these things work exactly the same for the programs I want to run" This might be good for Adobe, and the cheaper non-3D accelerated phones, but it would be devastating for Apple. You do not want your developers coding to the lowest common denominator in terms of functionality and features. You want the developer to exploit your strengths in the products they make.
It is masked but always present. I don't know who built to it. It came before the first kernel.