But many of their customers aren't. Lot of them have no budget (or will) for complete rewrite. And if you force them (or just make them believe you may do it) they will complain and it means bad press, in a very competitive market. It may not be something Apple can afford.
> What if they just 'did it right'
You can't "did it right" without support of large amount of users, regardless of the money. The definition of "right" in programming languages is "works for users". And to get users onboard, you have make sacrifices.
> A lot of people want to make apps for iPhone and ObjC is not in their vocab.
And even more has existing apps to maintain. Tradeoffs have to be made.
> great docs, examples that are clear and well marked in terms of versions, all new APIs for Swift, left in beta for longer, and made mostly backwards compatible changes
All those things will come. If you want them, wait for them. Being early adopter has its cons.
"Lot of them have no budget (or will) for complete rewrite. "
I don't mean they should force people onto Swift. I mean that Swift, should be totally independent of ObjC, so that customers, if they choose to use it are not dependent on it.
Also - Apple could feasibly provide a 'lib/bridge' - just as Android can use C++ code as well, if you want to use it.
I think Apple could surely commit to keeping ObjC around for quite some time - maybe 4 years official support, and then maybe 8 years on the devices, but with no more documentation/support.
"All those things will come. If you want them, wait for them."
I don't agree - this is 'doing it wrong'. It's been out for years. This is way past 'early adoption'.
'Doing it right' means that it is easy for new and old developers. Right now - it's hard.
Doing Swift 'right':
1) Make Swift a clean break, get rid of some of the more obscure things that make it difficult. Get rid of relationship to ObjC.
2) Detailed docs, tons of examples. Examples for every single class, every single attribute. 100% of functionality should be 'explainable by example'.
3) Beta for 1 year, then production.
4) No backwards-incompatible changes after out of beta. (Easier said than done).
5) Docs, examples etc that clearly demarcate versioning.
6) Tons of support on Stack Exchange: dedicated staff to simply monitoring, answering, clarifying issues just on Stack Exchange.
7) 'Free Support and Training' for anyone who wants it and who can make it to a major city, i.e. NYC Jan 1-5 or 'weekend course' for anyone who registers. Free. Once every few months. At least 100 Engineers just doing training, and going into dev/studios companies to help them with stuff.
8) Free online courses, for newbs, and those coming from other languages, and Objc.
They made Swift a little too complicated, and left devs hanging in the dark on so many issues.
> I don't mean they should force people onto Swift. I mean that Swift, should be totally independent of ObjC
If you will not provide seamless integration, you will seriously limit amount of people who migrate. There are other problems here too: what should library authors do? Write two versions?
> It's been out for years. This is way past 'early adoption'.
Looking at all programming languages I've ever used, getting out of this childhood period always took years. Sure, Apple could do better job perhaps in many aspects, but it really takes a very long time to get a language and stdlib to usable shape.
>Make Swift a clean break, get rid of some of the more obscure things that make it difficult.
If you make a clean break, you limit amount of your users. Without users, you can't tell what obscure things are difficult for those who didn't opt in.
I agree with all those beta periods, stability guarantees, docs and training. I am now appreciating more how well those things work in Rust.
"If you will not provide seamless integration, you will seriously limit amount of people who migrate. "
I don't agree at all.
Tons of people are 'starting out' on Swift - moreover - if Swift were done a little better - it would actually be used on other platforms, etc. - as opposed to an 'iPhone only' type thing.
New projects start all the time.
Major re-factors and re-writes happen all the time.
Second - I do not believe that the premise of: "well I can switch some of my code to Swift, but keep most of my libs on ObjC" - is reasonable. This is a minority case.
And of course - as I said - they could have provided access to ObjC libraries through an interface exactly as Android does.
You want to use 'legacy C++ code' on Android? You can do it. It's just not so clean, but you can do it. The same should have been provided for Swift-ObjC
So - companies who don't want to migrate - can stick to ObjC for a few more years.
The rest can switch over.
"If you make a clean break, you limit amount of your users."
Again I don't agree at all. Node.js has more developers than Swift. With Apple backing it (i.e. 'making it good' - but also making it 'the basis for iPhone) - they could have had an incredible number of users.
There's no reason that Swift couldn't have been used in internal-alpha for a while, then external beta for a while - then then have a 'solid v1'.
AS you say - many languages were 'around for a long time' - but they have also been stable for a long time!
Java for example, did not do anything at the .lang level that was not backwards compatible. The only non-backwards compatible bit was java AWT, which they replaced with Swing. But even AWT is still supported!
So, there's no excuse for rapid rollout of versions that are incompatible with one another, no excuses for huge gaps in documentation etc..
But many of their customers aren't. Lot of them have no budget (or will) for complete rewrite. And if you force them (or just make them believe you may do it) they will complain and it means bad press, in a very competitive market. It may not be something Apple can afford.
> What if they just 'did it right'
You can't "did it right" without support of large amount of users, regardless of the money. The definition of "right" in programming languages is "works for users". And to get users onboard, you have make sacrifices.
> A lot of people want to make apps for iPhone and ObjC is not in their vocab.
And even more has existing apps to maintain. Tradeoffs have to be made.
> great docs, examples that are clear and well marked in terms of versions, all new APIs for Swift, left in beta for longer, and made mostly backwards compatible changes
All those things will come. If you want them, wait for them. Being early adopter has its cons.